0
|
1 |
===============================================
|
|
2 |
Python for S60 2.0.0 RELEASE NOTES, 30.10.2009
|
|
3 |
===============================================
|
|
4 |
|
|
5 |
Product Description
|
|
6 |
===================
|
|
7 |
|
|
8 |
Python for S60 (hereafter PyS60) is intended for developers looking to create
|
|
9 |
programs that use the native features and resources of the S60 phones, using the
|
|
10 |
Python programming language.
|
|
11 |
|
|
12 |
About this release
|
|
13 |
==================
|
|
14 |
|
|
15 |
This is the new 2.0.0 development release of PyS60. This release is intended
|
|
16 |
only for S60 3rd edition, S60 3rd edition FP1, S60 3rd edition FP2 and
|
|
17 |
S60 5th edition devices.
|
|
18 |
|
|
19 |
Note on versioning: The versioning scheme in PyS60 releases is such that the
|
|
20 |
releases with an even minor version (1.0.x, 1.2.x ...) are "stable" and releases
|
|
21 |
with an odd minor version (1.1.x, 1.3.x ...) are "development" releases. This is
|
|
22 |
thus a development release, meaning that it includes functionality that has not
|
|
23 |
been tested as extensively as the stable releases. This release is provided as a
|
|
24 |
preview to developers who wish to experiment with Python on S60 before the next
|
|
25 |
final stable release.
|
|
26 |
|
|
27 |
What is new when compared with PyS60 1.9.7?
|
|
28 |
-------------------------------------------
|
|
29 |
- Repeat support in 4-way directional pad
|
|
30 |
- appuifw.app.track_allocations can be set if the interpreter should track all
|
|
31 |
memory allocations and then free the memory which was not explicitly released
|
|
32 |
before application exit. To debug memory leaks in 3rd party extension
|
|
33 |
modules set the value to false.
|
|
34 |
|
|
35 |
Corrected defects:
|
|
36 |
------------------
|
|
37 |
4345 - Missing (platform) functionality on ensymble/Application packager
|
|
38 |
3935 - appuifw.Icon sample code refers to non-existing file [doc error]
|
|
39 |
|
|
40 |
What is new when compared with PyS60 1.9.6?
|
|
41 |
-------------------------------------------
|
|
42 |
- Touch support added for GLCanvas UI Control. Directional pad is displayed
|
|
43 |
by default on touch enabled devices. A sample application - gles_touch_demo.py
|
|
44 |
is added to ScriptShell which demonstrates the functionality.
|
|
45 |
|
|
46 |
- Two new APIs are added to canvas - begin_redraw and end_redraw. These can be
|
|
47 |
used to instruct the window server to enable redraw drawing on the canvas UI
|
|
48 |
control. Please refer the documentation (Section 3.1.10) for more details.
|
|
49 |
|
|
50 |
- The multi-selection listbox has been modified such that the dialog
|
|
51 |
for the option 'checkmark' now has 'Options' and 'Back' as its left and right
|
|
52 |
softkeys respectively. The 'Options' has Mark/Unmark entry that can be used
|
|
53 |
to select and de-select respectively. The 'Back' softkey returns the
|
|
54 |
current state of the listbox based on the selected items.
|
|
55 |
|
|
56 |
- 4-way directional pad support in landscape mode
|
|
57 |
|
|
58 |
- Different flavors of Scriptshell application can coexist on the device.
|
|
59 |
|
|
60 |
- Scribble application improvements:
|
|
61 |
- Performance improvements by using API's begin_redraw and end_redraw.
|
|
62 |
- The drawing area is retained between landscape and portrait
|
|
63 |
modes as the toolbar shifts to accommodate for this change.
|
|
64 |
- Pen width can be selected from a list of predefined values.
|
|
65 |
|
|
66 |
- PyS60 document is available online on maemo.garage
|
|
67 |
http://pys60.garage.maemo.org/doc/
|
|
68 |
|
|
69 |
Corrected defects:
|
|
70 |
------------------
|
|
71 |
4251 - The compression type for the dll and exe files for Python is shown
|
|
72 |
as Deflate instead of Byte-pair.
|
|
73 |
4313 - Scrollbar visible afterwards, should not be there
|
|
74 |
4338 - Multiple lisbox objects decrease scroll performance
|
|
75 |
4349 - time.mktime() taking too much time to execute
|
|
76 |
|
|
77 |
What is new when compared with PyS60 1.9.5?
|
|
78 |
-------------------------------------------
|
|
79 |
- Support for a virtual 4-way directional pad is added for Canvas and text
|
|
80 |
widgets. This D-Pad is displayed at the bottom of the screen and this
|
|
81 |
feauture is enabled by default on touch enabled devices. Currently, this is
|
|
82 |
supported only in the portrait mode and landscape support will be available
|
|
83 |
in a future release.
|
|
84 |
The 'full_max' mode is invalidated by this change and is removed in this
|
|
85 |
release.
|
|
86 |
|
|
87 |
- The modules in the base runtime is more refined and hence the size of
|
|
88 |
application SIS, created using PyS60 Application Packager is reduced.
|
|
89 |
|
|
90 |
- A new chapter is added in the PyS60 documentation (Extending and Embedding
|
|
91 |
PyS60), that is an end-to-end tutorial for creating 3rd party extention
|
|
92 |
modules and distributing them.
|
|
93 |
|
|
94 |
Corrected defects:
|
|
95 |
------------------
|
|
96 |
3223 - Floating point formatting/parsing routines on this platform are imprecise
|
|
97 |
4078 - socket.access_points() returns iapid 0 for lots of entries
|
|
98 |
4106 - Problems exiting standalone apps
|
|
99 |
4185 - Calendar module returns end time with time zone offset added to Unix time
|
|
100 |
4186 - Using rollback in calendar module returns error
|
|
101 |
4198 - Screen orientation remains landscape after exit, while device was
|
|
102 |
portrait all the time
|
|
103 |
4215 - default.py cannot load .pyc files
|
|
104 |
4216 - sys.exit() doesn't exit Python
|
|
105 |
|
|
106 |
What is new when compared with PyS60 1.9.4?
|
|
107 |
-------------------------------------------
|
|
108 |
|
|
109 |
- e32.s60_version_info is now modified to do a dynamic fetch and return of S60
|
|
110 |
version information, instead of returning the version information configured
|
|
111 |
at the compile time.
|
|
112 |
- Default heapsize for PyS60 applications is increased to 100k,4M from 4k,1M
|
|
113 |
- An option "Continue with missing dependencies" is added to packaging tool.
|
|
114 |
Enabling this option will display the missing dependencies as warnings and
|
|
115 |
continue with SIS generation. Otherwise the packaging is strict. Missing
|
|
116 |
dependencies are displayed as errors and SIS generation is aborted.
|
|
117 |
|
|
118 |
Feature requests:
|
|
119 |
-----------------
|
|
120 |
3261 - Add option to convert to bytecode before py2sis
|
|
121 |
3298 - appuifw listbox now sports a scrollbar
|
|
122 |
|
|
123 |
Corrected defects:
|
|
124 |
------------------
|
|
125 |
3228 - time.clock() does not work as expected.
|
|
126 |
3784 - Python shell file listing in reverse alphabetical order
|
|
127 |
3788 - uninstall_Python script for SDK has a leading \ in path
|
|
128 |
3934 - appuifw.Icon creates only grey boxes
|
|
129 |
3938 - Listbox scrolling off-by-one with touch
|
|
130 |
4006 - Fake selection problem when sliding quickly your fingers over a list
|
|
131 |
with two lines per raw (XM 5800)
|
|
132 |
4007 - Lists with one raw per item are generating a type_error when sliding
|
|
133 |
my finger from top to down
|
|
134 |
4013 - relates to 1.9.4. !! returns wrong S60 OS version number
|
|
135 |
4016 - ZeroDivisionError running ball.py in 1.9.4
|
|
136 |
|
|
137 |
What is new when compared with PyS60 1.9.3?
|
|
138 |
-------------------------------------------
|
|
139 |
|
|
140 |
- A single Nokia signed runtime package which can be installed on all S60 3rd ED
|
|
141 |
and above devices is available. The actual size of the runtime is ~1MB, but due
|
|
142 |
to the embedded OpenC sis and Platform Service sis, the size is increased to
|
|
143 |
2.8MB. The runtime includes only the most essential modules. The Rest of the
|
|
144 |
modules are available with the application packager tool.
|
|
145 |
|
|
146 |
- Improved version of application packager tool. The PyS60 application packager
|
|
147 |
now scans the Python application being packaged and picks up the missing
|
|
148 |
Python modules on which the application is dependent and packages them along
|
|
149 |
with the application files. Refer Chapter 7. "Module Repository" in the
|
|
150 |
PyS60 Documentation for more details.
|
|
151 |
|
|
152 |
- Easier runtime deployment: Python runtime and its dependent components can be
|
|
153 |
installed by just running any Python application packaged using 1.9.4
|
|
154 |
application packager. This feature is available only from S60 3rd edition FP2
|
|
155 |
devices onwards and also these devices should have been updated with the
|
|
156 |
latest firmware.
|
|
157 |
|
|
158 |
- Two new APIs are added to the socket module - access_points() &
|
|
159 |
set_default_access_point() which have similar functionality to the APIs
|
|
160 |
present in btsocket module.
|
|
161 |
|
|
162 |
- Two new APIs are added to e32 module - get_capabilities() and
|
|
163 |
has_capabilities(). The former can be used to get the capabilities, the
|
|
164 |
application has been signed with, and the latter to check if a given list of
|
|
165 |
capabilities is granted to the application or not.
|
|
166 |
|
|
167 |
Note: The capabilities of scriptshell are displayed on startup using the
|
|
168 |
get_capabilities() API.
|
|
169 |
|
|
170 |
- Added a new mode to appuifw.app.screen - 'full_max' which can be used to
|
|
171 |
achieve fullscreen on devices that don't have Left Soft Key and Right Soft
|
|
172 |
Key(e.g.: Nokia 5800). Setting the screen to 'full' will translate to
|
|
173 |
'large' mode on these devices.
|
|
174 |
|
|
175 |
- The prefix to the binaries of 1.9.x to support co-existence with 1.4.x
|
|
176 |
runtime, has been changed from '251_' to 'kf_'.
|
|
177 |
|
|
178 |
Corrected defects:
|
|
179 |
------------------
|
|
180 |
3368: Importing modules under application's private directory fails.
|
|
181 |
3841: socket vs. btsocket interoperability
|
|
182 |
|
|
183 |
What is new when compared with PyS60 1.9.2?
|
|
184 |
-------------------------------------------
|
|
185 |
- Touch event support is added to appuifw Canvas. An API is added to appuifw
|
|
186 |
module, touch_enabled() for checking if the device supports touch input.
|
|
187 |
|
|
188 |
- scribble application developed using PyS60 touch feature is available in the
|
|
189 |
installer.
|
|
190 |
|
|
191 |
- This release includes a new extension module, scriptext. This is an enabler for
|
|
192 |
using S60 Platform Service APIs that were introduced in the S60 5th Edition
|
|
193 |
and back ported on S60 3rd edition FP2, from Python. It supports services like
|
|
194 |
Application Manager, Calendar, Contacts, Landmarks, Location, Logging,
|
|
195 |
Messaging, Media Management, Sensors and Sys Info. Refer scriptext module
|
|
196 |
documentation for the usage and the convention for accessing the platform
|
|
197 |
Service API interfaces is subjected to change.
|
|
198 |
|
|
199 |
- Easier runtime deployment: Python runtime and its dependent components can be
|
|
200 |
installed by just running the scriptshell application that comes with 1.9.3
|
|
201 |
release. This feature is available only from S60 3rd edition FP2 devices
|
|
202 |
onwards and also these devices should have been updated with the latest
|
|
203 |
firmware. The easier runtime deployment support will be available with all
|
|
204 |
ensymble packaged applications in future releases.
|
|
205 |
|
|
206 |
- SSL support for socket is enabled
|
|
207 |
|
|
208 |
- Python core is upgraded to 2.5.4
|
|
209 |
|
|
210 |
Corrected defects:
|
|
211 |
------------------
|
|
212 |
3220: Time and strptime modules fails when the 'Z' format specifier is used
|
|
213 |
3221: Issue with non-blocking TCP socket
|
|
214 |
3229: Problem with decimal separator when the phone's locale uses a non dot decimal separator
|
|
215 |
3388: SSL Client not supported by this Python installation
|
|
216 |
3631: The packager does not remember the source directory of previous invocation
|
|
217 |
|
|
218 |
|
|
219 |
What is new when compared with PyS60 1.9.1?
|
|
220 |
-------------------------------------------
|
|
221 |
- sensor module support for accessing the sensors on the devices that have
|
|
222 |
S60 Sensor Framework libraries. This module's API compatibility between 1.9.x
|
|
223 |
versions isn't guaranteed until 2.0. It won't be broken without good reason,
|
|
224 |
but it can happen. Refer to the sensor-module-specifications.doc available
|
|
225 |
from the installer for more details.
|
|
226 |
|
|
227 |
- Reduction in the installer size!
|
|
228 |
The application packager GUI is now based on Tkinter, hence PyQt setup is
|
|
229 |
removed from the windows installer.
|
|
230 |
|
|
231 |
- The UID of PythonRuntime has changed from '0xF0201514' to '0xE0201514'
|
|
232 |
|
|
233 |
- PyS60 Application Packager is now based on ensymble 0.28
|
|
234 |
|
|
235 |
What is new when compared with PyS60 1.9.0?
|
|
236 |
-------------------------------------------
|
|
237 |
- Better interpreter startup and sis installation time!
|
|
238 |
|
|
239 |
- All the Python files in the runtime sis are compiled into .pyc files and
|
|
240 |
included in a zip file. sys.path is updated with the path of this zip file.
|
|
241 |
This reduced the interpreter startup time considerably.
|
|
242 |
|
|
243 |
- A more generic error message is displayed when trying to load an application
|
|
244 |
without the PyS60 Dependencies installed.
|
|
245 |
|
|
246 |
- Support for building just a <subsystem> is provided. Refer build, build_emu,
|
|
247 |
build_device help of setup.py
|
|
248 |
|
|
249 |
- Unlike 1.4.x, a single SDK zip contains both gcce and armv5 link libraries.
|
|
250 |
Separate SDK zips are provided for 3rdEd, 3rdEdFP1 and 3rdEdFP2.
|
|
251 |
|
|
252 |
- The default mode of ensymble py2sis command is changed to 'pycore'. All
|
|
253 |
scripts which refer to pys60 modules socket and calendar should use the new
|
|
254 |
names - btsocket and e32calendar to use the S60 functionality in pycore mode.
|
|
255 |
Also renamed "Prioritize PyS60 module library" to "1.4.x compatibility mode"
|
|
256 |
on the UI of application packager.
|
|
257 |
|
|
258 |
Corrected defects:
|
|
259 |
------------------
|
|
260 |
|
|
261 |
3230: Problems with applications packaged with console profile and PyS60 mode.
|
|
262 |
3317: N70 is included in the supported device list in the Getting Started Guide,
|
|
263 |
even though it's a 2ndEdFP2 device
|
|
264 |
|
|
265 |
What is new when compared with PyS60 1.4.5?
|
|
266 |
===========================================
|
|
267 |
|
|
268 |
- Python 2.5.1 core, with much better compliance to the standard
|
|
269 |
Python than before. Most of the modules in the standard library are
|
|
270 |
included - basically almost all that make sense on this platform and
|
|
271 |
even some that don't (for regression testing purposes). This
|
|
272 |
includes such goodies as the Expat XML parser, ftplib, smtplib,
|
|
273 |
urllib2, xmlrpclib, SimpleHTTPServer, cPickle, asyncore and
|
|
274 |
especially the much more compliant socket module. Garbage collection
|
|
275 |
is enabled, so there is no need to dismantle reference cycles
|
|
276 |
anymore.
|
|
277 |
|
|
278 |
- The 1.9.1 release improves things with the new all-in-one installer that gives
|
|
279 |
you the packaging tool with GUI and a README file, the documentation and the
|
|
280 |
SIS files needed for development on Windows platform, in a single package.
|
|
281 |
Similarly for Linux/Mac platforms, an all-in-one archive is provided that
|
|
282 |
includes all the contents provided by the installer except the GUI for the
|
|
283 |
packaging tool.
|
|
284 |
|
|
285 |
- Packaging Python applications to SIS files is much easier. The
|
|
286 |
user-friendly Ensymble tool is now the official packaging tool, and
|
|
287 |
we've made a GUI for it so packaging your application is now just a
|
|
288 |
button press away.
|
|
289 |
|
|
290 |
- The environment for SIS packaged applications is closer to the
|
|
291 |
script shell environment, since the script shell is no longer a
|
|
292 |
special case but just a regular application packaged using the
|
|
293 |
Ensymble tool. This should make testing your application easier.
|
|
294 |
|
|
295 |
- PyS60 extension modules socket and calender are renamed to btsocket and
|
|
296 |
e32calender due to the conflicting names with Python core modules. Two
|
|
297 |
packaging modes pys60 and pycore have been provided with ensymble tool to
|
|
298 |
maintain the compatibility with PyS601.4.x binaries. The existing scripts
|
|
299 |
dependent on these extension modules need not be modified if it is packaged
|
|
300 |
with pys60 mode.
|
|
301 |
|
|
302 |
- SIS packaged applications are now more robust:
|
|
303 |
|
|
304 |
- If the runtime is missing and you try to launch the application, a
|
|
305 |
human readable error message is displayed instead of the
|
|
306 |
application just failing to start, like before.
|
|
307 |
|
|
308 |
- If the application raises an exception on startup, the traceback
|
|
309 |
is printed on the screen instead of the application quitting
|
|
310 |
silently.
|
|
311 |
|
|
312 |
- The applications have a default text console just like in the
|
|
313 |
script shell environment, so printing text using the print
|
|
314 |
statement works the same way in SIS packaged apps and the script
|
|
315 |
shell.
|
|
316 |
|
|
317 |
- On 3.2 devices, access GPS out of the box without signing hassle!
|
|
318 |
Since S60 3.2 devices now permit the Location capability for
|
|
319 |
self-signed applications, that capability is now enabled by default
|
|
320 |
in the 3.2 builds.
|
|
321 |
|
|
322 |
- The UID of Python runtime and PythonScriptShell has changed.
|
|
323 |
|
|
324 |
- The script directory of PythonScriptShell is changed from C:\python
|
|
325 |
to C:\data\python\
|
|
326 |
|
|
327 |
- To support co-existence of 1.4.x and 1.9.1 Python runtimes, the binaries of
|
|
328 |
the latter version are prefixed with '251_' and the import hook in site.py is
|
|
329 |
modified to look for the renamed binary.
|
|
330 |
|
|
331 |
Known issues
|
|
332 |
============
|
|
333 |
1. Problem with decimal separator when the phone's locale uses a decimal
|
|
334 |
separator other than dot ('.')
|
|
335 |
2. time.clock() does not work as expected.
|
|
336 |
3. Exit key does not work as expected when raw_input is pending for applications
|
|
337 |
packaged using s60ui profile
|
|
338 |
4. Importing modules under application's private directory fails.
|
|
339 |
A work around for this problem is packaging the modules to a directory under
|
|
340 |
\data\python and include this directory path into sys.path before
|
|
341 |
importing the modules. Ensymlbe's --extrasdir option can be used to place
|
|
342 |
the modules under the required directory.
|
|
343 |
|
|
344 |
For example :
|
|
345 |
a)Place default.py in the directory "root\default.py"
|
|
346 |
b)Place dependent modules in "root\extras\data\python\
|
|
347 |
c)In default.py update the sys path
|
|
348 |
import sys
|
|
349 |
sys.path.append("c:\\data\\python")
|
|
350 |
d)ensymble py2sis root --extrasdir=extras
|
|
351 |
where "root" is the directory which contains default.py and "extras"
|
|
352 |
directory. "extras" directory contains the required modules under the
|
|
353 |
required directory tree.
|
|
354 |
|
|
355 |
Refer the "Known Issues" section of the Python documentation for more details.
|
|
356 |
|
|
357 |
Feedback
|
|
358 |
========
|
|
359 |
|
|
360 |
Bugs: Bug reports should be submitted via the project Python for S60 Bug
|
|
361 |
Tracker on garage.maemo.org
|
|
362 |
https://garage.maemo.org/tracker/?atid=3201&group_id=854&func=browse
|
|
363 |
|
|
364 |
Feature Requests: Feature requests should be submitted via the project
|
|
365 |
Python for S60 Feature Requests Tracker on garage.maemo.org
|
|
366 |
https://garage.maemo.org/tracker/?atid=3204&group_id=854&func=browse
|
|
367 |
|
|
368 |
Refer the "Reporting Bugs" section of the Python documentation for more details.
|
|
369 |
|
|
370 |
Changes to standard library modules:
|
|
371 |
====================================
|
|
372 |
|
|
373 |
A brief summary of changes made to Python 2.5.4 source to get it working on
|
|
374 |
Symbian:
|
|
375 |
|
|
376 |
- Changed the definition of the PyAPI_DATA and all the python header files
|
|
377 |
which used the earlier PyAPI_DATA to use its new form as DLL data export is
|
|
378 |
not supported on Symbian. A workaround is to have functions that return
|
|
379 |
pointers to the data and macros that hide the calls made to these functions.
|
|
380 |
This is enabled when the macro EXPORT_DATA_AS_FUNCTIONS is defined.
|
|
381 |
|
|
382 |
- To handle recursions causing stack overflows gracefully stack checks are done
|
|
383 |
more frequently.
|
|
384 |
|
|
385 |
- Disabled creation of byte compiled files when python modules are loaded
|
|
386 |
|
|
387 |
- On the Symbian platform a value greater than 1e49 limits the precision to 28
|
|
388 |
above which it crashes the interpreter with panic User24. Added a check so
|
|
389 |
that OverflowError is raised for values greater than 1e49 with precision
|
|
390 |
greater than 28.
|
|
391 |
|
|
392 |
- Modified python's core memory APIs so that it defines macros which can
|
|
393 |
be used to set custom malloc/realloc/free functions.
|
|
394 |
|
|
395 |
- Python regression suite tests for modules that were not supported on Symbian,
|
|
396 |
were disabled by adding a platform check in the test itself. Limits were
|
|
397 |
reduced in tests which assumed a huge stack was available and were failing
|
|
398 |
with stack overflow error.
|
|
399 |
|
|
400 |
- Implementation of the Python TLS API on top of the POSIX threads TLS API.
|
|
401 |
Also added PyThread_AtExit which provides extension modules to register their
|
|
402 |
functions which cleanup resources at thread exit.
|
|
403 |
|
|
404 |
- A new exception SymbianError is added which is used to set Symbian errors.
|
|
405 |
|
|
406 |
- dynload_shlib is modified to load the function at ordinal 1 which corresponds
|
|
407 |
to the init function (Symbian uses ordinal numbers to identify functions).
|
|
408 |
|
|
409 |
- The default file system encoding is set to 'utf-8'
|
|
410 |
|
|
411 |
- socketmodule is patched to workaround the OpenC bug related to getaddrinfo.
|
|
412 |
|
|
413 |
- A separate copy of site.py and pyconfig.h is maintained in Symbian directory
|
|
414 |
as the changes done to these files is applicable only to Symbian platform
|
|
415 |
|
|
416 |
- The classification of core python modules into builtin and PYDs is specified
|
|
417 |
in the modules.cfg file in Symbian\src. This file is parsed by
|
|
418 |
module_config_parser.py which generates and modifies the individual extension
|
|
419 |
and python dll build files. Minor changes were done to some modules' init
|
|
420 |
function and headers to facilitate building them as PYDs.
|
|
421 |
|
|
422 |
- To support co-existence of 1.4.x and 1.9.0 Python runtimes, the binaries of
|
|
423 |
the latter version are prefixed with '251_' and the import hook in site.py is
|
|
424 |
modified to look for the renamed binary.
|
|
425 |
|
|
426 |
- Python core files modsupport.c and getargs.c are patched to support va_list's
|
|
427 |
structure definition which is defined in gcce.h
|
|
428 |
|
|
429 |
|
|
430 |
Copyright (c) 2004-2009 Nokia Corporation. Nokia and Nokia Connecting People are
|
|
431 |
registered trademarks of Nokia Corporation.
|