Python for S60 1.9.7 is now released.
You can download the release from maemo garage
This release runs on S60 3rd edition, S60 3rd edition FP1, S60 3rd edition FP2 and S60 5th edition devices.
The release includes:
- Installer for Windows platform that includes
----- Getting started guide
----- Nocs signed PyS60 runtime sis which will work on S60 3rdEd, 3rdEdFP1, 3rdEdFP2 and 5thEd devices.
----- Two Nocs signed default capability set PythonScriptShell sis files.
----- Nocs signed high capas PythonScriptShell sis. This sis file comes with higher capabilities than self signed (SwEvent, WriteDeviceData, ReadDeviceData)
----- Unsigned developer certificate PythonScriptShell sis. This sis file can be used for Symbian signing.
----- Application packaging tool with GUI and README
- Archive for Linux/Mac platform which includes the same contents as included in Windows installer
- Separate SDK zips for 3rdEdFP1 and 3rdEdFP2. SDK zip contains both gcce and armv5 link libraries. Python 3rdEdFP2 SDK zip will work fine on S60 3rdEd and 5thEd
- OpenC SDK plugin for 3rdEd devices. This zip file needs to be extracted on top of Python 3rdEdFP2 SDK zip to get Python working on S60 3rdEd SDK.
- Python source code
- OpenSSL source code. This source code is released just to be in complaint with the terms of LGPL licensed software. This source code is
nothing to do with PyS60 software.
The PythonScriptShell packages are available in different flavors varying in the capability set.
The capability set for PythonScriptShell_1.9.6_3_0.sis is ReadUserData WriteUserData NetworkServices LocalServices UserEnvironment.
The capability set for PythonScriptShell_1.9.6_3_2 is ReadUserData WriteUserData NetworkServices LocalServices UserEnvironment Location.
The capability set for PythonScriptShell_1.9.6_high_capas.sis is LocalServices NetworkServices ReadUserData WriteUserData UserEnvironment Location SwEvent WriteDeviceData ReadDeviceData
The capability set for PythonScriptShell_1.9.6_unsigned_devcert.sis is LocalServices NetworkServices ReadUserData WriteUserData UserEnvironment Location PowerMgmt ProtServ SwEvent SurroundingsDD ReadDeviceData WriteDeviceData TrustedUI
The UID of Python runtime is 0x20022EE8.
Expectation management: THIS IS NOT A FINAL PRODUCT.
This is one of the rough releases of a code-base that has been rewritten to a large extent. Just like we did with the 1.1.x and 1.3.x
series. We want to involve you in the development and testing process so that you can point out any sharp edges and pointy bits that the releases may have.
The idea is to expose the code to early testing and gather feedback so that the final PyS60 2.0 can be solid and fulfill YOUR needs.
Now, on to what we have now - the 1.9.7 release.
On the brighter side:
- 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 improvement 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
- All the developer modules are now part of runtime package. This means that in future, if there are any fixes to these modules then, those fixes will be delivered through runtime package alone.
The applications using developer modules needs to be repackaged only once to link to the modified developer modules for getting the fixes and from then on updating the runtime alone is sufficient to get the fixes.
Since glcanvas module is modified in this release, applications using this module needs to be repacked using 1.9.7 packaging tool to link to the modified glcanvas module.
- Many defects are fixed with this release. Refer release notes for more details.
Here are some of the things that are worse in 1.9.7 when compared to 1.4.5:
- There is an additional dependency to the OpenC libraries, which must be installed for the runtime to work.
- Sadly, S60 2.x devices are not supported by the new code-base, and never will be. This is because OpenC libraries aren't available for S60 2.x.
- Binary compatibility between 1.9.x versions isn't guaranteed until 2.0. We won't break it without good reason, but it can happen.
- API compatibility of new sensor module isn't guaranteed until 2.0. We won't break it without good reason, but it can happen.
Our targets for the final 2.0 are:
- Better usability for the developer and the end user:
- Easier runtime deployment. It must be possible for a developer to package their application in a way that the end user doesn't need
to think about the runtime installation. Note that we're not saying the end user doesn't have to _install_ the runtime, we're just saying
they don't need to _think_ about it.
- Easier tools installation and SIS packaging for Python applications. Especially packaging Python applications to SIS has proved to be pretty
tough with all the dependencies you need to install. The 1.9.0 release improves things with the new all-in-one installer that gives you the
packaging tool, the documentation and the SIS files you need for development in one package. The user-friendly Ensymble tool is now official,
and there is a GUI for one-button package creation.
- Easier and more robust ways to use and distribute 3rd party extension modules with your application. Free use of third party extensions is
one of the main advantages of Python, and we want to enable and encourage that. We'll improve the Ensymble packaging tool to automatically
bundle modules not included in the base runtime into your application SIS, as well as specify how a module author can distribute their
module to other developers so that the module can be easily used.
- Integrated HTML documentation: The S60 specific documentation is now a part of the full Python documentation so you no longer need to switch
- Reliability and compliance with the standard Python. We've put effort into automatic testing on multiple target platforms as well as fixing
any noncompliance revealed by Python's own regrtest.py test suite. The compliance isn't perfect yet, but it's much better than with the old
- Quicker start-up and smaller base runtime package size than with 1.9.0.
- Selected API additions. Our previous reference to Qt support being on the roadmap was misleadingly worded and should be read with emphasis on the second part of the statement: "Schedule we can't give yet". Qt support is on the roadmap, but according to current knowledge – and in fact, knowledge at the time of 1.9.0 release - the support will not make it to 2.0, but will be delivered as an add-on later. The main thing that happens at the 2.0 release is the beginning of a binary compatibility guarantee for extensions and applications, and there is no reason to delay that because of any independent component schedules.
- Support for non-Windows platforms for things other than C++ extension development. Already preliminary support is available in 1.9.0, which
contains an all-in-one archive that gives you the packaging tool, the documentation and the SIS files.
Bug reports, patches and feature requests can be filed in mamemo garage. That's what we track regularly, not every thread in the discussion
board. If you post a bug report only in the DiBo, we might miss it.
Feature Requests: https://garage.maemo.org/tracker/?at...54&func=browse
When filing bugs, include the device you used, its firmware version (you can see this by entering *#0000# in the idle screen), the PyS60 version
and a minimal test case (if applicable).
For more details on reporting bugs refer the "Reporting Bugs" section of the Python documentation.
That's it for now. Try it out, send feedback and stay tuned for next release.
-- Python for S60 team