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