8
IPython 0.10.2 was released April 9, 2011. This is a minor bugfix release that
9
preserves backward compatibility. At this point, all IPython development
10
resources are focused on the 0.11 series that includes a complete architectural
11
restructuring of the project as well as many new capabilities, so this is
12
likely to be the last release of the 0.10.x series. We have tried to fix all
13
major bugs in this series so that it remains a viable platform for those not
14
ready yet to transition to the 0.11 and newer codebase (since that will require
15
some porting effort, as a number of APIs have changed).
17
Thus, we are not opening a 0.10.3 active development branch yet, but if the
18
user community requires new patches and is willing to maintain/release such a
19
branch, we'll be happy to host it on the IPython github repositories.
21
Highlights of this release:
23
- The main one is the closing of github ticket #185, a major regression we had
24
in 0.10.1 where pylab mode with GTK (or gthread) was not working correctly,
25
hence plots were blocking with GTK. Since this is the default matplotlib
26
backend on Unix systems, this was a major annoyance for many users. Many
27
thanks to Paul Ivanov for helping resolve this issue.
29
- Fix IOError bug on Windows when used with -gthread.
30
- Work robustly if $HOME is missing from environment.
31
- Better POSIX support in ssh scripts (remove bash-specific idioms).
32
- Improved support for non-ascii characters in log files.
33
- Work correctly in environments where GTK can be imported but not started
34
(such as a linux text console without X11).
36
For this release we merged 24 commits, contributed by the following people
37
(please let us know if we ommitted your name and we'll gladly fix this in the
38
notes for the future):
43
* Pieter Cristiaan de Groot
49
IPython 0.10.1 was released October 11, 2010, over a year after version 0.10.
50
This is mostly a bugfix release, since after version 0.10 was released, the
51
development team's energy has been focused on the 0.11 series. We have
52
nonetheless tried to backport what fixes we could into 0.10.1, as it remains
53
the stable series that many users have in production systems they rely on.
55
Since the 0.11 series changes many APIs in backwards-incompatible ways, we are
56
willing to continue maintaining the 0.10.x series. We don't really have time
57
to actively write new code for 0.10.x, but we are happy to accept patches and
58
pull requests on the IPython `github site`_. If sufficient contributions are
59
made that improve 0.10.1, we will roll them into future releases. For this
60
purpose, we will have a branch called 0.10.2 on github, on which you can base
63
.. _github site: http://github.com/ipython
65
For this release, we applied approximately 60 commits totaling a diff of over
68
(0.10.1)amirbar[dist]> git diff --oneline rel-0.10.. | wc -l
71
Highlights of this release:
73
- The only significant new feature is that IPython's parallel computing
74
machinery now supports natively the Sun Grid Engine and LSF schedulers. This
75
work was a joint contribution from Justin Riley, Satra Ghosh and Matthieu
76
Brucher, who put a lot of work into it. We also improved traceback handling
77
in remote tasks, as well as providing better control for remote task IDs.
79
- New IPython Sphinx directive contributed by John Hunter. You can use this
80
directive to mark blocks in reSructuredText documents as containing IPython
81
syntax (including figures) and the will be executed during the build:
83
.. sourcecode:: ipython
85
In [2]: plt.figure() # ensure a fresh figure
87
@savefig psimple.png width=4in
88
In [3]: plt.plot([1,2,3])
89
Out[3]: [<matplotlib.lines.Line2D object at 0x9b74d8c>]
91
- Various fixes to the standalone ipython-wx application.
93
- We now ship internally the excellent argparse library, graciously licensed
94
under BSD terms by Steven Bethard. Now (2010) that argparse has become part
95
of Python 2.7 this will be less of an issue, but Steven's relicensing allowed
96
us to start updating IPython to using argparse well before Python 2.7. Many
99
- Robustness improvements so that IPython doesn't crash if the readline library
100
is absent (though obviously a lot of functionality that requires readline
101
will not be available).
103
- Improvements to tab completion in Emacs with Python 2.6.
105
- Logging now supports timestamps (see ``%logstart?`` for full details).
107
- A long-standing and quite annoying bug where parentheses would be added to
108
``print`` statements, under Python 2.5 and 2.6, was finally fixed.
110
- Improved handling of libreadline on Apple OSX.
112
- Fix ``reload`` method of IPython demos, which was broken.
114
- Fixes for the ipipe/ibrowse system on OSX.
116
- Fixes for Zope profile.
118
- Fix %timeit reporting when the time is longer than 1000s.
120
- Avoid lockups with ? or ?? in SunOS, due to a bug in termios.
122
- The usual assortment of miscellaneous bug fixes and small improvements.
124
The following people contributed to this release (please let us know if we
125
omitted your name and we'll gladly fix this in the notes for the future):
145
This release brings months of slow but steady development, and will be the last
146
before a major restructuring and cleanup of IPython's internals that is already
147
under way. For this reason, we hope that 0.10 will be a stable and robust
148
release so that while users adapt to some of the API changes that will come
149
with the refactoring that will become IPython 0.11, they can safely use 0.10 in
150
all existing projects with minimal changes (if any).
152
IPython 0.10 is now a medium-sized project, with roughly (as reported by David
153
Wheeler's :command:`sloccount` utility) 40750 lines of Python code, and a diff
154
between 0.9.1 and this release that contains almost 28000 lines of code and
155
documentation. Our documentation, in PDF format, is a 495-page long PDF
156
document (also available in HTML format, both generated from the same sources).
158
Many users and developers contributed code, features, bug reports and ideas to
159
this release. Please do not hesitate in contacting us if we've failed to
160
acknowledge your contribution here. In particular, for this release we have
161
contribution from the following people, a mix of new and regular names (in
162
alphabetical order by first name):
164
* Alexander Clausen: fix #341726.
165
* Brian Granger: lots of work everywhere (features, bug fixes, etc).
166
* Daniel Ashbrook: bug report on MemoryError during compilation, now fixed.
167
* Darren Dale: improvements to documentation build system, feedback, design
169
* Fernando Perez: various places.
170
* Gaël Varoquaux: core code, ipythonx GUI, design discussions, etc. Lots...
171
* John Hunter: suggestions, bug fixes, feedback.
172
* Jorgen Stenarson: work on many fronts, tests, fixes, win32 support, etc.
173
* Laurent Dufréchou: many improvements to ipython-wx standalone app.
174
* Lukasz Pankowski: prefilter, `%edit`, demo improvements.
175
* Matt Foster: TextMate support in `%edit`.
176
* Nathaniel Smith: fix #237073.
177
* Pauli Virtanen: fixes and improvements to extensions, documentation.
178
* Prabhu Ramachandran: improvements to `%timeit`.
179
* Robert Kern: several extensions.
180
* Sameer D'Costa: help on critical bug #269966.
181
* Stephan Peijnik: feedback on Debian compliance and many man pages.
182
* Steven Bethard: we are now shipping his :mod:`argparse` module.
183
* Tom Fetherston: many improvements to :mod:`IPython.demo` module.
184
* Ville Vainio: lots of work everywhere (features, bug fixes, etc).
185
* Vishal Vasta: ssh support in ipcluster.
186
* Walter Doerwald: work on the :mod:`IPython.ipipe` system.
188
Below we give an overview of new features, bug fixes and backwards-incompatible
189
changes. For a detailed account of every change made, feel free to view the
190
project log with :command:`bzr log`.
195
* New `%paste` magic automatically extracts current contents of clipboard and
196
pastes it directly, while correctly handling code that is indented or
197
prepended with `>>>` or `...` python prompt markers. A very useful new
198
feature contributed by Robert Kern.
200
* IPython 'demos', created with the :mod:`IPython.demo` module, can now be
201
created from files on disk or strings in memory. Other fixes and
202
improvements to the demo system, by Tom Fetherston.
204
* Added :func:`find_cmd` function to :mod:`IPython.platutils` module, to find
205
commands in a cross-platform manner.
207
* Many improvements and fixes to Gaël Varoquaux's :command:`ipythonx`, a
208
WX-based lightweight IPython instance that can be easily embedded in other WX
209
applications. These improvements have made it possible to now have an
210
embedded IPython in Mayavi and other tools.
212
* :class:`MultiengineClient` objects now have a :meth:`benchmark` method.
214
* The manual now includes a full set of auto-generated API documents from the
215
code sources, using Sphinx and some of our own support code. We are now
216
using the `Numpy Documentation Standard`_ for all docstrings, and we have
217
tried to update as many existing ones as possible to this format.
219
* The new :mod:`IPython.Extensions.ipy_pretty` extension by Robert Kern
220
provides configurable pretty-printing.
222
* Many improvements to the :command:`ipython-wx` standalone WX-based IPython
223
application by Laurent Dufréchou. It can optionally run in a thread, and
224
this can be toggled at runtime (allowing the loading of Matplotlib in a
225
running session without ill effects).
227
* IPython includes a copy of Steven Bethard's argparse_ in the
228
:mod:`IPython.external` package, so we can use it internally and it is also
229
available to any IPython user. By installing it in this manner, we ensure
230
zero conflicts with any system-wide installation you may already have while
231
minimizing external dependencies for new users. In IPython 0.10, We ship
232
argparse version 1.0.
234
* An improved and much more robust test suite, that runs groups of tests in
235
separate subprocesses using either Nose or Twisted's :command:`trial` runner
236
to ensure proper management of Twisted-using code. The test suite degrades
237
gracefully if optional dependencies are not available, so that the
238
:command:`iptest` command can be run with only Nose installed and nothing
239
else. We also have more and cleaner test decorators to better select tests
240
depending on runtime conditions, do setup/teardown, etc.
242
* The new ipcluster now has a fully working ssh mode that should work on
243
Linux, Unix and OS X. Thanks to Vishal Vatsa for implementing this!
245
* The wonderful TextMate editor can now be used with %edit on OS X. Thanks
246
to Matt Foster for this patch.
248
* The documentation regarding parallel uses of IPython, including MPI and PBS,
249
has been significantly updated and improved.
251
* The developer guidelines in the documentation have been updated to explain
252
our workflow using :command:`bzr` and Launchpad.
254
* Fully refactored :command:`ipcluster` command line program for starting
255
IPython clusters. This new version is a complete rewrite and 1) is fully
256
cross platform (we now use Twisted's process management), 2) has much
257
improved performance, 3) uses subcommands for different types of clusters, 4)
258
uses argparse for parsing command line options, 5) has better support for
259
starting clusters using :command:`mpirun`, 6) has experimental support for
260
starting engines using PBS. It can also reuse FURL files, by appropriately
261
passing options to its subcommands. However, this new version of ipcluster
262
should be considered a technology preview. We plan on changing the API in
263
significant ways before it is final.
265
* Full description of the security model added to the docs.
267
* cd completer: show bookmarks if no other completions are available.
269
* sh profile: easy way to give 'title' to prompt: assign to variable
270
'_prompt_title'. It looks like this::
272
[~]|1> _prompt_title = 'sudo!'
275
* %edit: If you do '%edit pasted_block', pasted_block variable gets updated
276
with new data (so repeated editing makes sense)
278
.. _Numpy Documentation Standard: http://projects.scipy.org/numpy/wiki/CodingStyleGuidelines#docstring-standard
280
.. _argparse: http://code.google.com/p/argparse/
285
* Fix #368719, removed top-level debian/ directory to make the job of Debian
288
* Fix #291143 by including man pages contributed by Stephan Peijnik from the
291
* Fix #358202, effectively a race condition, by properly synchronizing file
292
creation at cluster startup time.
294
* `%timeit` now handles correctly functions that take a long time to execute
295
even the first time, by not repeating them.
297
* Fix #239054, releasing of references after exiting.
299
* Fix #341726, thanks to Alexander Clausen.
301
* Fix #269966. This long-standing and very difficult bug (which is actually a
302
problem in Python itself) meant long-running sessions would inevitably grow
303
in memory size, often with catastrophic consequences if users had large
304
objects in their scripts. Now, using `%run` repeatedly should not cause any
305
memory leaks. Special thanks to John Hunter and Sameer D'Costa for their
308
* Fix #295371, bug in `%history`.
310
* Improved support for py2exe.
312
* Fix #270856: IPython hangs with PyGTK
314
* Fix #270998: A magic with no docstring breaks the '%magic magic'
316
* fix #271684: -c startup commands screw up raw vs. native history
318
* Numerous bugs on Windows with the new ipcluster have been fixed.
320
* The ipengine and ipcontroller scripts now handle missing furl files
321
more gracefully by giving better error messages.
323
* %rehashx: Aliases no longer contain dots. python3.0 binary
324
will create alias python30. Fixes:
325
#259716 "commands with dots in them don't work"
327
* %cpaste: %cpaste -r repeats the last pasted block.
328
The block is assigned to pasted_block even if code
331
* Bug #274067 'The code in get_home_dir is broken for py2exe' was
334
* Many other small bug fixes not listed here by number (see the bzr log for
337
Backwards incompatible changes
338
------------------------------
340
* `ipykit` and related files were unmaintained and have been removed.
342
* The :func:`IPython.genutils.doctest_reload` does not actually call
343
`reload(doctest)` anymore, as this was causing many problems with the test
344
suite. It still resets `doctest.master` to None.
346
* While we have not deliberately broken Python 2.4 compatibility, only minor
347
testing was done with Python 2.4, while 2.5 and 2.6 were fully tested. But
348
if you encounter problems with 2.4, please do report them as bugs.
350
* The :command:`ipcluster` now requires a mode argument; for example to start a
351
cluster on the local machine with 4 engines, you must now type::
353
$ ipcluster local -n 4
355
* The controller now has a ``-r`` flag that needs to be used if you want to
356
reuse existing furl files. Otherwise they are deleted (the default).
358
* Remove ipy_leo.py. You can use :command:`easy_install ipython-extension` to
359
get it. (done to decouple it from ipython release cycle)