PyPy 1.7 - widening the sweet spot
We're pleased to announce the 1.7 release of PyPy. As became a habit, this
release brings a lot of bugfixes and performance improvements over the 1.6
release. However, unlike the previous releases, the focus has been on widening
the "sweet spot" of PyPy. That is, classes of Python code that PyPy can greatly
speed up should be vastly improved with this release. You can download the 1.7
What is PyPy?
PyPy is a very compliant Python interpreter, almost a drop-in replacement for
CPython 2.7. It's fast (`pypy 1.7 and cpython 2.7.1`_ performance comparison)
due to its integrated tracing JIT compiler.
This release supports x86 machines running Linux 32/64, Mac OS X 32/64 or
Windows 32. Windows 64 work is ongoing, but not yet natively supported.
The main topic of this release is widening the range of code which PyPy
can greatly speed up. On average on
our benchmark suite, PyPy 1.7 is around **30%** faster than PyPy 1.6 and up
to **20 times** faster on some benchmarks.
.. _`pypy 1.7 and cpython 2.7.1`: http://speed.pypy.org
* Numerous performance improvements. There are too many examples which python
constructs now should behave faster to list them.
* Bugfixes and compatibility fixes with CPython.
* Windows fixes.
* PyPy now comes with stackless features enabled by default. However,
any loop using stackless features will interrupt the JIT for now, so no real
performance improvement for stackless-based programs. Contact pypy-dev for
info how to help on removing this restriction.
* NumPy effort in PyPy was renamed numpypy. In order to try using it, simply
import numpypy as numpy
at the beginning of your program. There is a huge progress on numpy in PyPy
since 1.6, the main feature being implementation of dtypes.
* JSON encoder (but not decoder) has been replaced with a new one. This one
is written in pure Python, but is known to outperform CPython's C extension
up to **2 times** in some cases. It's about **20 times** faster than
the one that we had in 1.6.
* The memory footprint of some of our RPython modules has been drastically
improved. This should impact any applications using for example cryptography,
* There was some progress in exposing even more CPython C API via cpyext.
Things that didn't make it, expect in 1.8 soon
There is an ongoing work, which while didn't make it to the release, is
probably worth mentioning here. This is what you should probably expect in
1.8 some time soon:
* Specialized list implementation. There is a branch that implements lists of
integers/floats/strings as compactly as array.array. This should drastically
improve performance/memory impact of some applications
* NumPy effort is progressing forward, with multi-dimensional arrays coming
* There are two brand new JIT assembler backends, notably for the PowerPC and
It's maybe worth mentioning that we're running fundraising campaigns for
NumPy effort in PyPy and for Python 3 in PyPy. In case you want to see any
of those happen faster, we urge you to donate to `numpy proposal`_ or
`py3k proposal`_. In case you want PyPy to progress, but you trust us with
the general direction, you can always donate to the `general pot`_.
.. _`numpy proposal`: http://pypy.org/numpydonate.html
.. _`py3k proposal`: http://pypy.org/py3donate.html
.. _`general pot`: http://pypy.org
I've just uploaded pypiserver 0.4.0 to the python package index.
pypiserver is a minimal PyPI compatible server. It can be used to serve
a set of packages and eggs to easy_install or pip.
pypiserver is easy to install (i.e. just easy_install pypiserver). It
doesn't have any external dependencies.
http://pypi.python.org/pypi/pypiserver/ should contain enough
information to easily get you started running your own PyPI server in a
The code is available on github: https://github.com/schmir/pypiserver
Changes in version 0.4.0
- add functionality to manage package updates
- updated documentation
- python 3 support has been added
I'm pleased to announce version 1.2.0, the first stable release of branch
1.2 of SQLObject.
What is SQLObject
SQLObject is an object-relational mapper. Your database tables are described
as classes, and rows are instances of those classes. SQLObject is meant to be
easy to use and quick to get started with.
SQLObject supports a number of backends: MySQL, PostgreSQL, SQLite,
Firebird, Sybase, MSSQL and MaxDB (also known as SAPDB).
Where is SQLObject
News and changes:
Features & Interface
* Strings are treated specially in Select to allow
Select(['id, 'name'], where='value = 42'). Update allows a string in
* ForeignKey('Table', refColumn='refcol_id') to allow ForeignKey to
point to a non-id column; the referred column must be a unique integer
* delColumn now accepts a ForeignKey's name without 'ID'.
* Support for PostgreSQL 7.* is dropped. The minimal supported version of
PostgreSQL is 8.1 now.
* Quoting rules changed for PostgreSQL: SQLObject uses E'' escape string
if the string contains characters escaped with backslash.
* A bug caused by psycopg2 recently added a new boolean not callable
autocommit attribute was fixed.
* sqlobject.__doc__ and main.__doc__ no longer contain version number.
Use sqlobject.version or version_info.
For a more complete list, please see the news:
Oleg Broytman http://phdru.name/ phd(a)phdru.name
Programmers don't die, they just GOSUB without RETURN.
Muntjac 1.0.0 has been released.
Muntjac is a web application GUI toolkit translated from Vaadin. It
is similar to desktop application GUI toolkits, but it can be used to
create dynamic, browser independent, web applications. There is no need
Muntjac is currently available under AGPL/commercial licensing terms
until some of the development costs can be recouped.
py.test 2.2.0: test marking++, parametrization++ and duration profiling
pytest-2.2.0 is a test-suite compatible release of the popular
py.test testing tool. Plugins might need upgrades. It comes
with these improvements:
* easier and more powerful parametrization of tests:
- new @pytest.mark.parametrize decorator to run tests with different arguments
- new metafunc.parametrize() API for parametrizing arguments independently
- see examples at http://pytest.org/latest/example/parametrize.html
- NOTE that parametrize() related APIs are still a bit experimental
and might change in future releases.
* improved handling of test markers and refined marking mechanism:
- "-m markexpr" option for selecting tests according to their mark
- a new "markers" ini-variable for registering test markers for your project
- the new "--strict" bails out with an error if using unregistered markers.
- see examples at http://pytest.org/latest/example/markers.html
* duration profiling: new "--duration=N" option showing the N slowest test
execution or setup/teardown calls. This is most useful if you want to
find out where your slowest test code is.
* also 2.2.0 performs more eager calling of teardown/finalizers functions
resulting in better and more accurate reporting when they fail
Besides there is the usual set of bug fixes along with a cleanup of
pytest's own test suite allowing it to run on a wider range of environments.
For general information, see extensive docs with examples here:
If you want to install or upgrade pytest you might just type::
pip install -U pytest # or
easy_install -U pytest
Thanks to Ronny Pfannschmidt, David Burns, Jeff Donner, Daniel Nouri,
Alfredo Doza and all who gave feedback or sent bug reports.
notes on incompatibility
While test suites should work unchanged you might need to upgrade plugins:
* You need a new version of the pytest-xdist plugin (1.7) for distributing
* Other plugins might need an upgrade if they implement
the ``pytest_runtest_logreport`` hook which now is called unconditionally
for the setup/teardown fixture phases of a test. You may choose to
ignore setup/teardown failures by inserting "if rep.when != 'call': return"
or something similar. Note that most code probably "just" works because
the hook was already called for failing setup/teardown phases of a test
so a plugin should have been ready to grok such reports already.
Changes between 2.1.3 and 2.2.0
- fix issue90: introduce eager tearing down of test items so that
teardown function are called earlier.
- add an all-powerful metafunc.parametrize function which allows to
parametrize test function arguments in multiple steps and therefore
from indepdenent plugins and palces.
- add a @pytest.mark.parametrize helper which allows to easily
call a test function with different argument values
- Add examples to the "parametrize" example page, including a quick port
of Test scenarios and the new parametrize function and decorator.
- introduce registration for "pytest.mark.*" helpers via ini-files
or through plugin hooks. Also introduce a "--strict" option which
will treat unregistered markers as errors
allowing to avoid typos and maintain a well described set of markers
for your test suite. See exaples at http://pytest.org/latest/mark.html
and its links.
- issue50: introduce "-m marker" option to select tests based on markers
(this is a stricter and more predictable version of '-k' in that "-m"
only matches complete markers and has more obvious rules for and/or
- new feature to help optimizing the speed of your tests:
--durations=N option for displaying N slowest test calls
and setup/teardown methods.
- fix issue87: --pastebin now works with python3
- fix issue89: --pdb with unexpected exceptions in doctest work more sensibly
- fix and cleanup pytest's own test suite to not leak FDs
- fix issue83: link to generated funcarg list
- fix issue74: pyarg module names are now checked against imp.find_module false positives
- fix compatibility with twisted/trial-11.1.0 use cases
Hideley-ho Python People!
So we've finally overcome "just-one-more-feature-itis" and decided it's
time to announce ourselves to the world. So, without further ado, but
with much pomp and fanfare, may we proudly present:
A web-based python console, development environment, and hosting
service, all rolled into one, and featuring a snake made out of Python
chevrons. Oh yes.
You can find out more from our screencasts, on the front page (be sure
to check out the alternative versions too), but in brief:
- it's a web-based console, with Pythons 2.6, 2.7, 3.2, IPython, pypy...
- it's got a syntax-highlighting web-based editor, and each user gets
500MB of storage
- and we offer FREE web hosting for WSGI apps, with sqlite or MySQL
Hmmm. Browser-based Python... What the heck is the point of that, I hear
the cynics amongst you ask. WELL:
- you can suspend and resume console sessions from any browser or PC
- you can access and run your Python code anywhere you go, without
needing to install anything - a friend's house, an internet cafe in
Thailand, your jailhouse library's computer, wherever it may be.
- you can schedule automated tasks to run on our servers, any time of
day or night, without needing to waste your own electrickery.
- and you can host and deploy web apps, without having to worry about
installing packages, configuring web servers, firewalls, or, indeed,
*paying for it*.
So come check it out! I absolutely, positively, cast-iron-guarantee
that, not only will you not be disappointed, but you will be literally*
blown away. If you're not, I hereby authorise you, without any
reservation, to tweet angrily about it.
See you soon!
* not literally.
+44 (0) 20 3051 2751
PythonAnywhere - full python dev & hosting, in your browser
17a Clerkenwell Road, London EC1M 5RD, UK
VAT No.: GB 893 5643 79
Registered in England and Wales as company number 5467329.
Registered address: 843 Finchley Road, London NW11 8NA, UK
Dear Python programmers,
I am pleased to announce version 10.2 of the data plotting software
Dislin is a high-level and easy to use plotting library for
displaying data as curves, bar graphs, pie charts, 3D-colour plots,
surfaces, contours and maps. Several output formats are supported
such as X11, VGA, OpenGL, PostScript, PDF, CGM, WMF, HPGL, TIFF, GIF,
PNG, BMP and SVG.
The software is available for the most C, Fortran 77 and Fortran 90/95
compilers. Plotting extensions for the interpreting languages Perl,
Python and Java are also supported.
Dislin is available from the site
and via FTP from the server
All Dislin distributions are free for non-commercial use. Licenses
for commercial use are available from http://www.dislin.de.
Max Planck Institute for
Solar System Research Phone: +49 5556 979-334
Max-Planck-Str. 2 Fax : +49 5556 979-240
D-37191 Katlenburg-Lindau Mail : michels(a)mps.mpg.de