[IPython-dev] IPython 0.7.0.rc1, and development...
Fernando.Perez at colorado.edu
Thu Dec 29 21:30:47 CST 2005
in addition to wishing all of you a Happy New Year, I'd like to update you
with some development news, and a request for testing.
As you may have noticed, in recent days I've been trying to catch up with my
gigantic backlog. By way of apology, a large home remodeling effort has taken
far, far more time than I initially estimated, which is why for most of this
semester I hardly did anything with ipython. While we're by no means
finished, at least I now have a normal desk, a computer to work on, and some
semblance of a (half) normal place. So I am doing my best to catch up with you.
I went through all of my accumulated ipython-related mail, as well as the bug
tracker, and took care of every single bug report, feature request and patch
submission. The actual list of improvements is quite significant, to a large
extent thanks to all those of you who sent in ideas backed with patches.
Many, many thanks.
Here's a very brief list of highlights of the new things since the last
official release (0.6.15):
- Wildcard patterns in searches, supported by the %psearch magic.
Extremely useful, thanks to Jörgen Stenarson.
- Major improvements to the pdb mode. It now has tab-completion, syntax
highlighting and better stack handling. Thanks to Vivian De Smedt for this
work (double-points given that pdb has a well-deserved reputation for being
very unpleasant to work with).
- Support for input with empty lines. If you have auto-indent on, this
means that you need to either hit enter _twice_, or add/remove a space to your
last blank line, to indicate you're done entering input. These changes also
allow us to provide copy/paste of code with blank lines.
- Support for pasting multiline input even with autoindent on. The code
will look wrong on screen, but it will be stored and executed correctly
- TAB on an otherwise empty line actually inserts a tab. Convenient for
indenting (for those who don't use autoindent).
- Significant improvements for all multithreaded versions of ipython. Now,
if your threaded code raises exceptions, instead of seeing a crash report, a
normal (colored, verbose, etc.) exception is printed. Additionally, if you
have pdb on, it will activate in your threaded code. Very nice for
interactively debugging GUI programs.
- Many fixes to embedded ipython, including proper handling of globals and
- New -t and -o options to %logstart, to respectively put timestamps in
your logs, and to also log all output (tagged as #[Out]#). The default log
name is now ipython_log.py, to better reflect that logs remain valid Python
- Lightweight persistence mechanism via %store. IPython had always had
%save, to write out a group of input lines directly to a file. Now, its
%store companion stores persistently (associated with your profile, and
auto-loaded at startup) not just source, but any python variable which can be
pickled. Thanks to Matt Wilkie for the request, and ville for the patches.
- New guarantee that, if you disable autocalling, ipython will never call
getattr() on your objects. This solves problems with code that has
side-effects on attribute access. Note that TAB-completion inevitably does
call getattr(), so not all forms of side-effects can be eliminated.
- Unicode support for prompts.
- Improvements to path handling under win32. Thanks to Ville and Jorgen
for the patches.
- Improvements to pager under win32. Contributed by Alexander Belchenko.
- Demo class for interactive demos using ipython.
- %pycat magic for showing syntax-highlighted python sources
- support for download_url in setup.py, so PyPI (and setuptools) work
transparently with ipython.
- New exit/quit magics to exit, conditionally asking (%Exit/%Quit don't)
- Automatically reopen the editor if your file has a syntax error in it
(when using the %edit system).
- A large amount of internal reorganization and cleanup, to allow the code
to be more readily moved over to the chainsaw branch (see below).
- Many other small fixes and enhancements. The changelog has full details.
All of these changes are significant enough, that the new release will be
numbered 0.7.0. I would greatly appreciate testing of the release candidate I
just uploaded here:
With all these changes, I'm sure I've introduced some problems. Please let me
know (on-list) so I can fix them asap.
Next: playing with the chainsaw
Now, as I've mentioned before, the long-term development branch for ipython is
Brian Granger has been busy at work here, building from the ground up the
infrastructure for what will be IPython 1.0. Instead of trying to refactor
the current mess and stalling him while I work, we've been working on a good
design, and we will port over all the good pieces from the current codebase.
Much of my recent cleanup work has gone in that direction, so in a sense 0.7.0
is the beginning of that branch, though I don't expect it to be fully
functional for a while yet. In the meantime, I'll continue to accept patches
for trunk, as well as fixing bugs.
I have very high expectations for what we'll be able to do with this new code.
These two presentations highlight some of what we have in mind:
All the work done this summer by Robert, Tzanko and Toni will be used by this
new infrastructure, as well as providing a system to do a number of new and
interesting things. Anyone willing to work on this (experience with parallel
computing, twisted, xml or wxpython a bonus) is welcome to join in.
So I think that the future looks bright for ipython: the current system has
new and important functionality, we're making good progress on the foundations
for the new one, and I'm coding again :) Many thanks to all who have helped
so far, and Happy New Year to everybody!
More information about the IPython-dev