|
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. |