Advanced search
Log In
New Account
Home My Page Project Cloud Code Snippets Project Openings Python for S60
Summary Tracker News SCM Files

Release Name: 1.9.0

Python for S60 1.9.0 RELEASE NOTES, 24.12.2008

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 1.9.0 development series 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.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

- The 1.9.0 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

  - 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

- 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.0 Python runtimes, the binaries of 
  the latter version are prefixed with '251_' and the import hook in 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. Applications packaged with console profile and pys60 mode, cannot import 
   socket & calendar PyS60 extension modules.
4. Exit key does not work as expected when raw_input is pending for applications 
   packaged using s60ui profile

Refer the "Known Issues" section of the Python documentation for more details.


Bugs: Bug reports should be submitted via the project Python for S60 Bug 
Tracker on

Feature Requests: Feature requests should be submitted via the project 
Python for S60 Feature Requests Tracker on

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.1 source to get it working on

-  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. If a custom allocator is 
not set then it falls back to C's 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'

- socket module is patched to workaround the OpenC bug related to getaddrinfo.

- A separate copy of 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 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 is 
modified to look for the renamed binary.

Copyright (c) 2004-2008 Nokia Corporation. Nokia and Nokia Connecting People are 
registered trademarks of Nokia Corporation.


Terms of Use    Privacy Policy    Contribution Guidelines    Feedback

Powered By GForge Collaborative Development Environment