src/release_notes.txt
changeset 0 ca70ae20a155
equal deleted inserted replaced
-1:000000000000 0:ca70ae20a155
       
     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.