[ANN] Pyjamas 0.5 Web Widget Set and python-to-javascript Compiler released

Luke Kenneth Casson Leighton lkcl at lkcl.net
Wed Mar 11 22:57:43 CET 2009

This is the release of Pyjamas 0.5, a python-to-javascript
compiler with an AJAX Web Widget set, for creating python
desktop-like applications that run in all major web browsers.


Pyjamas is NOT "another AJAX framework" where the
widgets are predefined, fixed and inflexible.  Thanks to
the compiler, Pyjamas is a dynamic "framework's framework"
where developers can define their own web framework, in
Python classes and modules instead of being forced to
write code in pure Javascript.

The Pyjamas Web Widget set makes it possible for users
to develop Rich Media Applications as if they were writing
desktop applications, without having to know any Javascript,
or even very much HTML.  Developing applications using
Pyjamas is much more similar to and has far more in
common with developing PyQT4 or PyGtk2 applications than
it has with "traditional" AJAX web development.  Yet,
thanks to the applications actually running in a Web
Browser, developers get the best of both worlds.

For those people who prefer to stick to "true" Desktop
development, or who prefer to debug applications in
Python rather than rely on the debugging features of
Web Browser engines, there is the sister project,
Pyjamas-Desktop - http://pyjd.org

Pyjamas-Desktop allows the same application source code
to be run, unmodified, in both the web browser and as
a desktop application.

The 0.5 release is a significant functionality update.

Additions have been made to the core python-to-javascript
compiler such as support for exceptions (try / except), lambda,
and a debug option to track and print run-time stack traces,
in cases where the deployment of a javascript script debugger
is difficult or impossible (IE6 running under Wine).

Also, the code-generator has undergone a reorganisation,
and now has much better support for local and global
variable, function, class and module scopes.

Support for Dynamic loading of modules has been added,
where each python module now has its own javascript
(compiled) "cache" file.  This makes it possible to
share the modules across the 5 supported platforms,
bringing a dramatic reduction in the amount of compiled
javascript that is deployed.  Also, support for dynamic
module loading makes it much clearer how developers may
interact with pyjamas-compiled modules from existing
applications which already have an AJAX framework in place.

Users of previous versions of Pyjamas should note that the
UI widget classes have undergone a restructuring, reducing
the 4,000 line ui.py into 70 separate small modules.  The
reorganisation allows applications to undergo a significant
reduction in the amount of compiled javascript, by only
importing UI Modules that are needed.  Reorganisation
scripts can be found in contrib/pyjamas_0.4_0.5_upgrade/
that will help in the conversion of existing applications.

Also, to make developers' lives easier in both the testing
and deployment of pyjamas applications, buildout has been
added, along with a standard setup.py.

Finally, an experiment is included, which is the beginnings
of a way to speed up the execution of standard python,
in a similar way to Python-Psyco.

The combination of the pyjs python-to-javascript compiler
and PyV8 - http://code.google.com/p/pyv8 - becomes a JIT
compiler that supports both ARM and i386 assembler.

The use of the Google V8 JIT compiler provides a means
to dynamically load standard c-based python modules,
and the use of pyjs means that the intermediate javascript
is actually still human-readable.  These are two distinct
advantage over pypy, and the third advantage is that the
direct translation, instead of going through an intermediary
(RPython) means that the full dynamic semantics of the
python language are reflected into javascript, and still available.

Downloads are available at:

Pyjamas Book is at:

Links to other documentation is on the main site:

Development and discussion is at:

Subversion Source repository is at:

IRC Channel is:
   #pyjamas at irc.freenode.net
IRC Logs (thanks to Tim Riker) at:

More information about the Python-list mailing list