PyPy Berlin Sprint (17-22nd May 2008)
The next PyPy sprint will be in the crashed `c-base space station`_,
Berlin, Germany, Earth, Solar System. This is a fully public sprint:
newcomers (from all planets) and topics other than those proposed below
.. _`c-base space station`: http://www.c-base.org/
Goals and topics of the sprint
- work on PyPy's JIT generator: we are refactoring parts of the
compiling logic, in ways that may also allow generating better
machine code for loops (people or aliens with knowledge on
compilers and SSA, welcome)
- work on the SPy VM, PyPy's Squeak implementation, particularly the
- work on PyPy's GameBoy emulator, which also needs graphics support
- trying some large pure-Python applications or libraries on PyPy and
fixing the resulting bugs. Possibilities are Zope 3, Django and
* We are open to all sorts of other tasks during the sprint, just
Location & Accomodation
The sprint will take place in the c-base in Berlin. The address is::
To get there, take the U-Bahn or S-Bahn to the station
"Jannowitzbruecke". See here_ for a map to get to c-base from there.
.. _here: http://maps.google.com/maps?f=q&hl=en&geocode=&q=c-base+berlin&ie=UTF8&ll=5…
If you want to come, please register via by svn:
or write a mail to the pypy-sprint mailing list if you do not yet have
Of course, especially given the location, it's ok to show up even if you
didn't register. (The c-base has probably got the plans of Guido's
famous time machine anyway, so you can register last week.)
The sprint will be from 17th to 22nd of May 2008. We will start
sprinting every day at 10. An introduction will be given on the first
day, if there is interest.
I'd like to inform everybody about the immediate availability of eric
v4.1.3. This is a bug fix release.
It is available via http://www.die-offenbachs.de/eric/index.html.
What is eric?
eric is a Python IDE written using PyQt4 and QScintilla2. It comes with
all batteries included. For details please see the above link.
Porcupine Web Application Server is a Python based framework that
provides front-to-back revolutionary technologies for building modern
This release is a major breakthrough for Porcupine. The two main new
concepts introduced on the server side are the services and the web
methods. Porcupine's architecture is now based on configurable
services running over a common object database. Currently, the
supported service types include an asynchronous network server and a
scheduler used for executing Python code at predefined fixed
intervals. In the upcoming releases there are plans for new service
types to be added including persistent queues, loggers etc.
Web methods have replaced servlets completely and they are actually
smart Python decorators which allow you to add methods to content
classes dynamically (a technique also known as 'monkey-patching').
These methods become directly accessible over HTTP and they are mainly
used for serving all kinds of UIs and RPC requests.
Another major productivity enhancement is that this release no longer
requires heavy XML file editing. Thanks to web methods, the
"store.xml" is no longer used and the "config.xml" files for each
published directory can now contain smart registrations with regular
expressions matching becoming a powerful rewriting engine.
Other improvements include support for pre-processing filters, more
memory efficient object sets and type safe data types.
On the browser side QuiX has become less resource intensive by using a
pooled set of XMLHTTP objects and improved garbage collection. Last
but not least, the scroll bars bleed through issue on MacOS Firefox
browsers is now resolved.
What is Porcupine?
Porcupine online demo:
Dear all who are interested in pypar or parallel programming with Python.
I have released a new pypar version (2.1.0_49). It incorporates
- Race-condition patch from Jim Bosch
- Functionality and demo for Bsend by C Makassikis
- Deprecated obsolete functions
- Migrated Mandelbrot demos to numpy
- Fixed demo3.py for version 2 thanks to Felix Richter
I also verified that all tests and demos work on a Linux 32 bit platform.
Thanks to everyone for all the contributions and looking forward to hearing
how it goes.
We're pleased to announce the release of IronPython 2.0 Beta 2. In addition to the usual bug fixes (~25 reported on CodePlex and ~50 reported internally), this release has been partially focused on improving the performance of IronPython, in particular startup perf. Another focus of this release was improving upon our traceback support which had regressed quite a bit in 2.0B1 and had largely been broken in the 2.0 Alphas. Our traceback support should now be superior to that of IronPython 1.1!
We've also made a minor change to our packaging by adding a Microsoft.Scripting.Core.dll in addition to the Microsoft.Scripting.dll that's been around since the start of 2.0. We are doing this purely as an architectural layering cleanup. Microsoft.Scripting.Core contains DLR features that are essential to building dynamic languages. Microsoft.Scripting will contain language implementation helpers that can either be re-used (e.g., BigInts) or copied (possibly e.g., the default binder). This process is all about our work to get the DLR architecture right and shouldn't have any noticeable IronPython impact except that there's now one more DLL to include in any package.
As a consequence of the new DLL, the deprecated file IronPython2005.sln is broken. This is the last release that will include this .sln file in the source zip file. Of course the Visual Studio 2008 version of this file, IronPython.sln, still builds.
We'd like to thank everyone in the community who reported bugs on CodePlex that were fixed in this release: kevgu, oldman, christmas, brucec, scottw, fuzzyman, haibo, Seo Sanghyeon, grizlupo, J. Merrill, perhaps, antont, 05031972, Jason Ferrara, Matt Beckius, and Davy Mitchell.
You can download IronPython 2.0 Beta 2 at: http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=IronPython…
The IronPython Team
My forthcoming book:
"Programming in Python 3: A Complete Introduction to the Python
is now available from Safari Books Online. The online version contains
about half the book so far and is about six weeks behind my working
copy. It is accurate for Python 3.0 alpha 4. More text will be added
and updates made as the book and Python progress.
The book began life last year once it was clear that Python 3 was
going to come out this year. The printed version should be available
in October in the U.S.---but it will only go to press once all the
examples and snippets have been tested against Python 3.0 final, so
the date will slip if Python's release date slips.
The book is aimed at a wide audience, but assumes some programming
experience (not necessarily Python, not necessarily object-oriented).
It teaches solid procedural style programming, then builds on that to
teach solid object-oriented programming, and then goes on to more
advanced topics. But even newcomers to Python 3 should be able to
write useful (although small and basic) programs after reading chapter
There is no Python 2 coverage (except for an appendix on migration),
so as to avoid confusion and to allow the book to use Python 3 to its
Clearly Python 3 is going to change between now and September, but the
book is up to date now, and will continue to be kept up to date as
every alpha, beta, and release candidate is made available.
The table of contents, a brief overview, and some very short extracts
are available from the Safari site:
The book is being greatly benefited by feedback from several technical
reviewers, including Jasmin Blanchette, David Boddie, Georg Brandl,
Trenton Schulz, and Phil Thompson.
Mark Summerfield, Qtrac Ltd., www.qtrac.eu
<P><A HREF="http://www.qtrac.eu/py3book.html">Programming in Python 3</
A> - A new book on the Python 3 language. (02-May-08)
On behalf of the developers of the Bazaar version control system I'd
like to announce our 1.4 release, available now from
Thanks very much to all the people who contributed patches, bug reports,
suggestions and feedback for this release.
bzr 1.4 2008-04-28
This release of Bazaar includes handy improvements to the speed of log and
status, new options for several commands, improved documentation, and better
hooks, including initial code for server-side hooks. A number of bugs have
been fixed, particularly in interoperability between different formats or
different releases of Bazaar over there network. There's been substantial
internal work in both the repository and network code to enable new features
and faster performance.
* Pushing a branch in "dirstate" format (Branch5) over bzr+ssh would break
if the remote server was < version 1.2. This was due to a bug in the
RemoteRepository.get_parent_map() fallback code.
(John Arbash Meinel, Andrew Bennetts, #214894)
bzr 1.4rc2 2008-04-21
* ``bzr log -r ..X bzr://`` was failing, because it was getting a request
for ``revision_id=None`` which was not a string.
(John Arbash Meinel, #211661)
* Fixed a bug in handling ghost revisions when logging changes in a
particular file. (John Arbash Meinel, #209948)
* Fix error about "attempt to add line-delta in non-delta knit".
(Andrew Bennetts, #205156)
* Fixed performance degradation in fetching from knit repositories to
knits and packs due to parsing the entire revisions.kndx on every graph
walk iteration fixed by using the Repository.get_graph API. There was
another regression in knit => knit fetching which re-read the index for
every revision each side had in common.
(Robert Collins, John Arbash Meinel)
bzr 1.4rc1 2008-04-11
NOTES WHEN UPGRADING:
* bzr main script cannot be imported (Benjamin Peterson)
* On Linux bzr additionally looks for plugins in arch-independent site
directory. (Toshio Kuratomi)
* The ``set_rh`` branch hook is now deprecated. Please migrate
any plugins using this hook to use an alternative, e.g.
``post_change_branch_tip``. (Ian Clatworthy)
* When a plugin cannot be loaded as the file path is not a valid
python module name bzr will now strip a ``bzr_`` prefix from the
front of the suggested name, as many plugins (e.g. bzr-svn)
want to be installed without this prefix. It is a common mistake
to have a folder named "bzr-svn" for that plugin, especially
as this is what bzr branch lp:bzr-svn will give you. (James Westby,
* UniqueIntegerBugTracker now appends bug-ids instead of joining
them to the base URL. Plugins that register bug trackers may
need a trailing / added to the base URL if one is not already there.
(James Wesby, Andrew Cowie)
* Added mail-mode GNU Emacs mail package as a mail_client.
(Xavier Maillard, Bojan Nikolic)
* Added start_commit hook for mutable trees. (Jelmer Vernooij, #186422)
* ``status`` now accepts ``--no-pending`` to show the status without
listing pending merges, which speeds up the command a lot on large
histories. (James Westby, #202830)
* New ``post_change_branch_tip`` hook that is called after the
branch tip is moved but while the branch is still write-locked.
See the User Reference for signature details.
(Ian Clatworthy, James Henstridge)
* The smart protocol now has support for setting branches' revision info
directly. This should make operations like push slightly faster, and is a
step towards server-side hooks. The new request method name is
``Branch.set_last_revision_info``. (Andrew Bennetts)
* ``bzr commit --fixes`` now recognises "gnome" as a tag by default.
(James Westby, Andrew Cowie)
* ``bzr switch`` will attempt to find branches to switch to relative to the
current branch. E.g. ``bzr switch branchname`` will look for
``current_branch/../branchname``. (Robert Collins, Jelmer Vernooij,
Wouter van Heyst)
* Diff is now more specific about execute-bit changes it describes
* Fetching data over HTTP is a bit faster when urllib is used. This is done
by forcing it to recv 64k at a time when reading lines in HTTP headers,
rather than just 1 byte at a time. (Andrew Bennetts)
* Log --short and --line are much faster when -r is not specified.
* Merge is faster. We no longer check a file's existence unnecessarily
when merging the execute bit. (Aaron Bentley)
* ``bzr status`` on an explicit list of files no longer shows pending
merges, making it much faster on large trees. (John Arbash Meinel)
* The launchpad directory service now warns the user if they have not set
their launchpad login and are trying to resolve a URL using it, just
in case they want to do a write operation with it. (James Westby)
* The smart protocol client is slightly faster, because it now only queries
the server for the protocol version once per connection. Also, the HTTP
transport will now automatically probe for and use a smart server if
one is present. You can use the new ``nosmart+`` transport decorator
to get the old behaviour. (Andrew Bennetts)
* The ``version`` command takes a ``--short`` option to print just the
version number, for easier use in scripts. (Martin Pool)
* Various operations with revision specs and commands that calculate
revnos and revision ids are faster. (John A. Meinel, Aaron Bentley)
* Add ``root_client_path`` parameter to SmartWSGIApp and
SmartServerRequest. This makes it possible to publish filesystem
locations that don't exactly match URL paths. SmartServerRequest
subclasses should use the new ``translate_client_path`` and
``transport_from_client_path`` methods when dealing with paths received
from a client to take this into account. (Andrew Bennetts, #124089)
* ``bzr mv a b`` can be now used also to rename previously renamed
directories, not only files. (Lukáš Lalinský, #107967)
* ``bzr uncommit --local`` can now remove revisions from the local
branch to be symmetric with ``bzr commit --local``.
(John Arbash Meinel, #93412)
* Don't ask for a password if there is no real terminal.
(Alexander Belchenko, #69851)
* Fix a bug causing a ValueError crash in ``parse_line_delta_iter`` when
fetching revisions from a knit to pack repository or vice versa using
bzr:// (including over http or ssh).
(#208418, Andrew Bennetts, Martin Pool, Robert Collins)
* Fixed ``_get_line`` in ``bzrlib.smart.medium``, which was buggy. Also
fixed ``_get_bytes`` in the same module to use the push back buffer.
These bugs had no known impact in normal use, but were problematic for
developers working on the code, and were likely to cause real bugs sooner
or later. (Andrew Bennetts)
* Implement handling of basename parameter for DefaultMail. (James Westby)
* Incompatibility with Paramiko versions newer than 1.7.2 was fixed.
(Andrew Bennetts, #213425)
* Launchpad locations (lp: URLs) can be pulled. (Aaron Bentley, #181945)
* Merges that add files to deleted root directories complete. They
do create conflicts. (Aaron Bentley, #210092)
* vsftp's return ``550 RNFR command failed.`` supported.
(Marcus Trautwig, #129786)
* Improved documentation on send/merge relationship. (Peter Schuller)
* Minor fixes to the User Guide. (Matthew Fuller)
* Reduced the evangelism in the User Guide. (Ian Clatworthy)
* Added Integrating with Bazaar document for developers (Martin Albisetti)
* Attempting to pull data from a ghost aware repository (e.g. knits) into a
non-ghost aware repository such as weaves will now fail if there are
ghosts. (Robert Collins)
* ``KnitVersionedFile`` no longer accepts an ``access_mode`` parameter, and
now requires the ``index`` and ``access_method`` parameters to be
supplied. A compatible shim has been kept in the new function
``knit.make_file_knit``. (Robert Collins)
* Log formatters must now provide log_revision instead of show and
show_merge_revno methods. The latter had been deprecated since the 0.17
release. (James Westby)
* ``LoopbackSFTP`` is now called ``SocketAsChannelAdapter``.
* ``osutils.backup_file`` is removed. (Alexander Belchenko)
* ``Repository.get_revision_graph`` is deprecated, with no replacement
method. The method was size(history) and not desirable. (Robert Collins)
* ``revision.revision_graph`` is deprecated, with no replacement function.
The function was size(history) and not desirable. (Robert Collins)
* ``Transport.get_shared_medium`` is deprecated. Use
``Transport.get_smart_medium`` instead. (Andrew Bennetts)
* ``VersionedFile`` factories now accept a get_scope parameter rather
than using a call to ``transaction_finished``, allowing the removal of
the fixed list of versioned files per repository. (Robert Collins)
* ``VersionedFile.annotate_iter`` is deprecated. While in principle this
allowed lower memory use, all users of annotations wanted full file
annotations, and there is no storage format suitable for incremental
line-by-line annotation. (Robert Collins)
* ``VersionedFile.clone_text`` is deprecated. This performance optimisation
is no longer used - reading the content of a file that is undergoing a
file level merge to identical state on two branches is rare enough, and
not expensive enough to special case. (Robert Collins)
* ``VersionedFile.clear_cache`` and ``enable_cache`` are deprecated.
These methods added significant complexity to the ``VersionedFile``
implementation, but were only used for optimising fetches from knits -
which can be done from outside the knit layer, or via a caching
decorator. As knits are not the default format, the complexity is no
longer worth paying. (Robert Collins)
* ``VersionedFile.create_empty`` is removed. This method presupposed a
sensible mapping to a transport for individual files, but pack backed
versioned files have no such mapping. (Robert Collins)
* ``VersionedFile.get_graph`` is deprecated, with no replacement method.
The method was size(history) and not desirable. (Robert Collins)
* ``VersionedFile.get_graph_with_ghosts`` is deprecated, with no
replacement method. The method was size(history) and not desirable.
* ``VersionedFile.get_parents`` is deprecated, please use
``VersionedFile.get_parent_map``. (Robert Collins)
* ``VersionedFile.get_sha1`` is deprecated, please use
``VersionedFile.get_sha1s``. (Robert Collins)
* ``VersionedFile.has_ghost`` is now deprecated, as it is both expensive
and unused outside of a single test. (Robert Collins)
* ``VersionedFile.iter_parents`` is now deprecated in favour of
``get_parent_map`` which can be used to instantiate a Graph on a
VersionedFile. (Robert Collins)
* New -Dselftest_debug flag disables clearing of the debug flags during
tests. This is useful if you want to use e.g. -Dhpss to help debug a
failing test. Be aware that using this feature is likely to cause
spurious test failures if used with the full suite. (Andrew Bennetts)
* selftest --load-list now uses a new more agressive test loader that will
avoid loading unneeded modules and building their tests. Plugins can use
this new loader by defining a load_tests function instead of a test_suite
function. (a forthcoming patch will provide many examples on how to
* selftest --load-list now does some sanity checks regarding duplicate test
IDs and tests present in the list but not found in the actual test suite.
* Slightly more concise format for the selftest progress bar, so there's
more space to show the test name. (Martin Pool) ::
[2500/10884, 1fail, 3miss in 1m29s] test_revisionnamespaces.TestRev
* The test suite takes much less memory to run, and is a bit faster. This
is done by clearing most attributes of TestCases after running them, if
they succeeded. (Andrew Bennetts)
* Added ``_build_client_protocol`` to ``_SmartClient``. (Andrew Bennetts)
* Added basic infrastructure for automatic plugin suggestion.
* If a ``LockableFiles`` object is not explicitly unlocked (for example
because of a missing ``try/finally`` block, it will give a warning but
not automatically unlock itself. (Previously they did.) This
sometimes caused knock-on errors if for example the network connection
had already failed, and should not be relied upon by code.
(Martin Pool, #109520)
* ``make dist`` target to build a release tarball, and also
``check-dist-tarball`` and ``dist-upload-escudero``. (Martin Pool)
* The ``read_response_tuple`` method of ``SmartClientRequestProtocol*``
classes will now raise ``UnknownSmartMethod`` when appropriate, so that
callers don't need to try distinguish unknown request errors from other
errors. (Andrew Bennetts)
* ``set_make_working_trees`` is now implemented provided on all repository
implementations (Aaron Bentley)
* ``VersionedFile`` now has a new method ``get_parent_map`` which, like
``Graph.get_parent_map`` returns a dict of key:parents. (Robert Collins)
PyOhio, the first annual Python programming mini-conference for Ohio and
surrounding areas will take place Saturday, July 26, in Columbus, Ohio. The
conference is free of change and will include scheduled presentations,
Lighting Talks and unconference-style Open Spaces.
You can read more about the conference at http://pyohio.org
PyOhio invites all interested people to present scheduled talks. All
presentations are expected to last 40 minutes with a 10 minute
question-and-answer period. PyOhio will accept abstracts covering any area
of Python programming. A classroom area with computers will also be
available for possible hands-on sessions.
All presentations proposals should submit abstracts no longer than 500 words
in length. Abstracts must include the title, summary of the presentation,
the expertise level targeted, and a brief description of the area of Python
programming it relates to.
All proposals should be emailed to <cfp(a)pyohio.org> for review.
The submission deadline will be June 1, 2008. Accepted proposals will be
notified by July 1.
If you have trouble submitting a proposal, or have specific questions about
proposals please email Mat Kovach <matkovach(a)gmail.com> or call at
*** PyOhio 2008 * Columbus * July 26, 2008 * pyohio.org ***