diff -r 000000000000 -r ca70ae20a155 src/release_notes.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/release_notes.txt Tue Feb 16 10:07:05 2010 +0530 @@ -0,0 +1,431 @@ +=============================================== +Python for S60 2.0.0 RELEASE NOTES, 30.10.2009 +=============================================== + +Product Description +=================== + +Python for S60 (hereafter PyS60) is intended for developers looking to create +programs that use the native features and resources of the S60 phones, using the +Python programming language. + +About this release +================== + +This is the new 2.0.0 development release of PyS60. This release is intended +only for S60 3rd edition, S60 3rd edition FP1, S60 3rd edition FP2 and +S60 5th edition devices. + +Note on versioning: The versioning scheme in PyS60 releases is such that the +releases with an even minor version (1.0.x, 1.2.x ...) are "stable" and releases +with an odd minor version (1.1.x, 1.3.x ...) are "development" releases. This is +thus a development release, meaning that it includes functionality that has not +been tested as extensively as the stable releases. This release is provided as a +preview to developers who wish to experiment with Python on S60 before the next +final stable release. + +What is new when compared with PyS60 1.9.7? +------------------------------------------- +- Repeat support in 4-way directional pad +- appuifw.app.track_allocations can be set if the interpreter should track all + memory allocations and then free the memory which was not explicitly released + before application exit. To debug memory leaks in 3rd party extension + modules set the value to false. + +Corrected defects: +------------------ +4345 - Missing (platform) functionality on ensymble/Application packager +3935 - appuifw.Icon sample code refers to non-existing file [doc error] + +What is new when compared with PyS60 1.9.6? +------------------------------------------- +- Touch support added for GLCanvas UI Control. Directional pad is displayed + by default on touch enabled devices. A sample application - gles_touch_demo.py + is added to ScriptShell which demonstrates the functionality. + +- Two new APIs are added to canvas - begin_redraw and end_redraw. These can be + used to instruct the window server to enable redraw drawing on the canvas UI + control. Please refer the documentation (Section 3.1.10) for more details. + +- The multi-selection listbox has been modified such that the dialog + for the option 'checkmark' now has 'Options' and 'Back' as its left and right + softkeys respectively. The 'Options' has Mark/Unmark entry that can be used + to select and de-select respectively. The 'Back' softkey returns the + current state of the listbox based on the selected items. + +- 4-way directional pad support in landscape mode + +- Different flavors of Scriptshell application can coexist on the device. + +- Scribble application improvements: + - Performance improvements by using API's begin_redraw and end_redraw. + - The drawing area is retained between landscape and portrait + modes as the toolbar shifts to accommodate for this change. + - Pen width can be selected from a list of predefined values. + +- PyS60 document is available online on maemo.garage + http://pys60.garage.maemo.org/doc/ + +Corrected defects: +------------------ +4251 - The compression type for the dll and exe files for Python is shown + as Deflate instead of Byte-pair. +4313 - Scrollbar visible afterwards, should not be there +4338 - Multiple lisbox objects decrease scroll performance +4349 - time.mktime() taking too much time to execute + +What is new when compared with PyS60 1.9.5? +------------------------------------------- +- Support for a virtual 4-way directional pad is added for Canvas and text + widgets. This D-Pad is displayed at the bottom of the screen and this + feauture is enabled by default on touch enabled devices. Currently, this is + supported only in the portrait mode and landscape support will be available + in a future release. + The 'full_max' mode is invalidated by this change and is removed in this + release. + +- The modules in the base runtime is more refined and hence the size of + application SIS, created using PyS60 Application Packager is reduced. + +- A new chapter is added in the PyS60 documentation (Extending and Embedding + PyS60), that is an end-to-end tutorial for creating 3rd party extention + modules and distributing them. + +Corrected defects: +------------------ +3223 - Floating point formatting/parsing routines on this platform are imprecise +4078 - socket.access_points() returns iapid 0 for lots of entries +4106 - Problems exiting standalone apps +4185 - Calendar module returns end time with time zone offset added to Unix time +4186 - Using rollback in calendar module returns error +4198 - Screen orientation remains landscape after exit, while device was + portrait all the time +4215 - default.py cannot load .pyc files +4216 - sys.exit() doesn't exit Python + +What is new when compared with PyS60 1.9.4? +------------------------------------------- + +- e32.s60_version_info is now modified to do a dynamic fetch and return of S60 + version information, instead of returning the version information configured + at the compile time. +- Default heapsize for PyS60 applications is increased to 100k,4M from 4k,1M +- An option "Continue with missing dependencies" is added to packaging tool. + Enabling this option will display the missing dependencies as warnings and + continue with SIS generation. Otherwise the packaging is strict. Missing + dependencies are displayed as errors and SIS generation is aborted. + +Feature requests: +----------------- +3261 - Add option to convert to bytecode before py2sis +3298 - appuifw listbox now sports a scrollbar + +Corrected defects: +------------------ +3228 - time.clock() does not work as expected. +3784 - Python shell file listing in reverse alphabetical order +3788 - uninstall_Python script for SDK has a leading \ in path +3934 - appuifw.Icon creates only grey boxes +3938 - Listbox scrolling off-by-one with touch +4006 - Fake selection problem when sliding quickly your fingers over a list + with two lines per raw (XM 5800) +4007 - Lists with one raw per item are generating a type_error when sliding + my finger from top to down +4013 - relates to 1.9.4. !! returns wrong S60 OS version number +4016 - ZeroDivisionError running ball.py in 1.9.4 + +What is new when compared with PyS60 1.9.3? +------------------------------------------- + +- A single Nokia signed runtime package which can be installed on all S60 3rd ED + and above devices is available. The actual size of the runtime is ~1MB, but due + to the embedded OpenC sis and Platform Service sis, the size is increased to + 2.8MB. The runtime includes only the most essential modules. The Rest of the + modules are available with the application packager tool. + +- Improved version of application packager tool. The PyS60 application packager + now scans the Python application being packaged and picks up the missing + Python modules on which the application is dependent and packages them along + with the application files. Refer Chapter 7. "Module Repository" in the + PyS60 Documentation for more details. + +- Easier runtime deployment: Python runtime and its dependent components can be + installed by just running any Python application packaged using 1.9.4 + application packager. This feature is available only from S60 3rd edition FP2 + devices onwards and also these devices should have been updated with the + latest firmware. + +- Two new APIs are added to the socket module - access_points() & + set_default_access_point() which have similar functionality to the APIs + present in btsocket module. + +- Two new APIs are added to e32 module - get_capabilities() and + has_capabilities(). The former can be used to get the capabilities, the + application has been signed with, and the latter to check if a given list of + capabilities is granted to the application or not. + + Note: The capabilities of scriptshell are displayed on startup using the + get_capabilities() API. + +- Added a new mode to appuifw.app.screen - 'full_max' which can be used to + achieve fullscreen on devices that don't have Left Soft Key and Right Soft + Key(e.g.: Nokia 5800). Setting the screen to 'full' will translate to + 'large' mode on these devices. + +- The prefix to the binaries of 1.9.x to support co-existence with 1.4.x + runtime, has been changed from '251_' to 'kf_'. + +Corrected defects: +------------------ +3368: Importing modules under application's private directory fails. +3841: socket vs. btsocket interoperability + +What is new when compared with PyS60 1.9.2? +------------------------------------------- +- Touch event support is added to appuifw Canvas. An API is added to appuifw + module, touch_enabled() for checking if the device supports touch input. + +- scribble application developed using PyS60 touch feature is available in the + installer. + +- This release includes a new extension module, scriptext. This is an enabler for + using S60 Platform Service APIs that were introduced in the S60 5th Edition + and back ported on S60 3rd edition FP2, from Python. It supports services like + Application Manager, Calendar, Contacts, Landmarks, Location, Logging, + Messaging, Media Management, Sensors and Sys Info. Refer scriptext module + documentation for the usage and the convention for accessing the platform + Service API interfaces is subjected to change. + +- Easier runtime deployment: Python runtime and its dependent components can be + installed by just running the scriptshell application that comes with 1.9.3 + release. This feature is available only from S60 3rd edition FP2 devices + onwards and also these devices should have been updated with the latest + firmware. The easier runtime deployment support will be available with all + ensymble packaged applications in future releases. + +- SSL support for socket is enabled + +- Python core is upgraded to 2.5.4 + +Corrected defects: +------------------ +3220: Time and strptime modules fails when the 'Z' format specifier is used +3221: Issue with non-blocking TCP socket +3229: Problem with decimal separator when the phone's locale uses a non dot decimal separator +3388: SSL Client not supported by this Python installation +3631: The packager does not remember the source directory of previous invocation + + +What is new when compared with PyS60 1.9.1? +------------------------------------------- +- sensor module support for accessing the sensors on the devices that have + S60 Sensor Framework libraries. This module's API compatibility between 1.9.x + versions isn't guaranteed until 2.0. It won't be broken without good reason, + but it can happen. Refer to the sensor-module-specifications.doc available + from the installer for more details. + +- Reduction in the installer size! + The application packager GUI is now based on Tkinter, hence PyQt setup is + removed from the windows installer. + +- The UID of PythonRuntime has changed from '0xF0201514' to '0xE0201514' + +- PyS60 Application Packager is now based on ensymble 0.28 + +What is new when compared with PyS60 1.9.0? +------------------------------------------- +- Better interpreter startup and sis installation time! + +- All the Python files in the runtime sis are compiled into .pyc files and + included in a zip file. sys.path is updated with the path of this zip file. + This reduced the interpreter startup time considerably. + +- A more generic error message is displayed when trying to load an application + without the PyS60 Dependencies installed. + +- Support for building just a is provided. Refer build, build_emu, + build_device help of setup.py + +- Unlike 1.4.x, a single SDK zip contains both gcce and armv5 link libraries. + Separate SDK zips are provided for 3rdEd, 3rdEdFP1 and 3rdEdFP2. + +- The default mode of ensymble py2sis command is changed to 'pycore'. All + scripts which refer to pys60 modules socket and calendar should use the new + names - btsocket and e32calendar to use the S60 functionality in pycore mode. + Also renamed "Prioritize PyS60 module library" to "1.4.x compatibility mode" + on the UI of application packager. + +Corrected defects: +------------------ + +3230: Problems with applications packaged with console profile and PyS60 mode. +3317: N70 is included in the supported device list in the Getting Started Guide, + even though it's a 2ndEdFP2 device + +What is new when compared with PyS60 1.4.5? +=========================================== + +- Python 2.5.1 core, with much better compliance to the standard + Python than before. Most of the modules in the standard library are + included - basically almost all that make sense on this platform and + even some that don't (for regression testing purposes). This + includes such goodies as the Expat XML parser, ftplib, smtplib, + urllib2, xmlrpclib, SimpleHTTPServer, cPickle, asyncore and + especially the much more compliant socket module. Garbage collection + is enabled, so there is no need to dismantle reference cycles + anymore. + +- The 1.9.1 release improves things with the new all-in-one installer that gives + you the packaging tool with GUI and a README file, the documentation and the + SIS files needed for development on Windows platform, in a single package. + Similarly for Linux/Mac platforms, an all-in-one archive is provided that + includes all the contents provided by the installer except the GUI for the + packaging tool. + +- Packaging Python applications to SIS files is much easier. The + user-friendly Ensymble tool is now the official packaging tool, and + we've made a GUI for it so packaging your application is now just a + button press away. + +- The environment for SIS packaged applications is closer to the + script shell environment, since the script shell is no longer a + special case but just a regular application packaged using the + Ensymble tool. This should make testing your application easier. + +- PyS60 extension modules socket and calender are renamed to btsocket and + e32calender due to the conflicting names with Python core modules. Two + packaging modes pys60 and pycore have been provided with ensymble tool to + maintain the compatibility with PyS601.4.x binaries. The existing scripts + dependent on these extension modules need not be modified if it is packaged + with pys60 mode. + +- SIS packaged applications are now more robust: + + - If the runtime is missing and you try to launch the application, a + human readable error message is displayed instead of the + application just failing to start, like before. + + - If the application raises an exception on startup, the traceback + is printed on the screen instead of the application quitting + silently. + + - The applications have a default text console just like in the + script shell environment, so printing text using the print + statement works the same way in SIS packaged apps and the script + shell. + +- On 3.2 devices, access GPS out of the box without signing hassle! + Since S60 3.2 devices now permit the Location capability for + self-signed applications, that capability is now enabled by default + in the 3.2 builds. + +- The UID of Python runtime and PythonScriptShell has changed. + +- The script directory of PythonScriptShell is changed from C:\python + to C:\data\python\ + +- To support co-existence of 1.4.x and 1.9.1 Python runtimes, the binaries of + the latter version are prefixed with '251_' and the import hook in site.py is + modified to look for the renamed binary. + +Known issues +============ +1. Problem with decimal separator when the phone's locale uses a decimal + separator other than dot ('.') +2. time.clock() does not work as expected. +3. Exit key does not work as expected when raw_input is pending for applications + packaged using s60ui profile +4. Importing modules under application's private directory fails. + A work around for this problem is packaging the modules to a directory under + \data\python and include this directory path into sys.path before + importing the modules. Ensymlbe's --extrasdir option can be used to place + the modules under the required directory. + + For example : + a)Place default.py in the directory "root\default.py" + b)Place dependent modules in "root\extras\data\python\ + c)In default.py update the sys path + import sys + sys.path.append("c:\\data\\python") + d)ensymble py2sis root --extrasdir=extras + where "root" is the directory which contains default.py and "extras" + directory. "extras" directory contains the required modules under the + required directory tree. + +Refer the "Known Issues" section of the Python documentation for more details. + +Feedback +======== + +Bugs: Bug reports should be submitted via the project Python for S60 Bug +Tracker on garage.maemo.org +https://garage.maemo.org/tracker/?atid=3201&group_id=854&func=browse + +Feature Requests: Feature requests should be submitted via the project +Python for S60 Feature Requests Tracker on garage.maemo.org +https://garage.maemo.org/tracker/?atid=3204&group_id=854&func=browse + +Refer the "Reporting Bugs" section of the Python documentation for more details. + +Changes to standard library modules: +==================================== + +A brief summary of changes made to Python 2.5.4 source to get it working on +Symbian: + +- Changed the definition of the PyAPI_DATA and all the python header files + which used the earlier PyAPI_DATA to use its new form as DLL data export is + not supported on Symbian. A workaround is to have functions that return + pointers to the data and macros that hide the calls made to these functions. + This is enabled when the macro EXPORT_DATA_AS_FUNCTIONS is defined. + +- To handle recursions causing stack overflows gracefully stack checks are done + more frequently. + +- Disabled creation of byte compiled files when python modules are loaded + +- On the Symbian platform a value greater than 1e49 limits the precision to 28 + above which it crashes the interpreter with panic User24. Added a check so + that OverflowError is raised for values greater than 1e49 with precision + greater than 28. + +- Modified python's core memory APIs so that it defines macros which can + be used to set custom malloc/realloc/free functions. + +- Python regression suite tests for modules that were not supported on Symbian, + were disabled by adding a platform check in the test itself. Limits were + reduced in tests which assumed a huge stack was available and were failing + with stack overflow error. + +- Implementation of the Python TLS API on top of the POSIX threads TLS API. + Also added PyThread_AtExit which provides extension modules to register their + functions which cleanup resources at thread exit. + +- A new exception SymbianError is added which is used to set Symbian errors. + +- dynload_shlib is modified to load the function at ordinal 1 which corresponds + to the init function (Symbian uses ordinal numbers to identify functions). + +- The default file system encoding is set to 'utf-8' + +- socketmodule is patched to workaround the OpenC bug related to getaddrinfo. + +- A separate copy of site.py and pyconfig.h is maintained in Symbian directory + as the changes done to these files is applicable only to Symbian platform + +- The classification of core python modules into builtin and PYDs is specified + in the modules.cfg file in Symbian\src. This file is parsed by + module_config_parser.py which generates and modifies the individual extension + and python dll build files. Minor changes were done to some modules' init + function and headers to facilitate building them as PYDs. + +- To support co-existence of 1.4.x and 1.9.0 Python runtimes, the binaries of + the latter version are prefixed with '251_' and the import hook in site.py is + modified to look for the renamed binary. + +- Python core files modsupport.c and getargs.c are patched to support va_list's + structure definition which is defined in gcce.h + + +Copyright (c) 2004-2009 Nokia Corporation. Nokia and Nokia Connecting People are +registered trademarks of Nokia Corporation.