##// END OF EJS Templates
Add missing credit to John Hunter in 0.10.1 release notes
Fernando Perez -
Show More
@@ -1,640 +1,641 b''
1 .. Developers should add in this file, during each release cycle, information
1 .. Developers should add in this file, during each release cycle, information
2 .. about important changes they've made, in a summary format that's meant for
2 .. about important changes they've made, in a summary format that's meant for
3 .. end users. For each release we normally have three sections: features, bug
3 .. end users. For each release we normally have three sections: features, bug
4 .. fixes and api breakage.
4 .. fixes and api breakage.
5 .. Please remember to credit the authors of the contributions by name,
5 .. Please remember to credit the authors of the contributions by name,
6 .. especially when they are new users or developers who do not regularly
6 .. especially when they are new users or developers who do not regularly
7 .. participate in IPython's development.
7 .. participate in IPython's development.
8
8
9 .. _changes:
9 .. _changes:
10
10
11 ==========
11 ==========
12 What's new
12 What's new
13 ==========
13 ==========
14
14
15 Release 0.10.1
15 Release 0.10.1
16 ==============
16 ==============
17
17
18 IPython 0.10.1 was released October 11, 2010, over a year after version 0.10.
18 IPython 0.10.1 was released October 11, 2010, over a year after version 0.10.
19 This is mostly a bugfix release, since after version 0.10 was released, the
19 This is mostly a bugfix release, since after version 0.10 was released, the
20 development team's energy has been focused on the 0.11 series. We have
20 development team's energy has been focused on the 0.11 series. We have
21 nonetheless tried to backport what fixes we could into 0.10.1, as it remains
21 nonetheless tried to backport what fixes we could into 0.10.1, as it remains
22 the stable series that many users have in production systems they rely on.
22 the stable series that many users have in production systems they rely on.
23
23
24 Since the 0.11 series changes many APIs in backwards-incompatible ways, we are
24 Since the 0.11 series changes many APIs in backwards-incompatible ways, we are
25 willing to continue maintaining the 0.10.x series. We don't really have time
25 willing to continue maintaining the 0.10.x series. We don't really have time
26 to actively write new code for 0.10.x, but we are happy to accept patches and
26 to actively write new code for 0.10.x, but we are happy to accept patches and
27 pull requests on the IPython `github site`_. If sufficient contributions are
27 pull requests on the IPython `github site`_. If sufficient contributions are
28 made that improve 0.10.1, we will roll them into future releases. For this
28 made that improve 0.10.1, we will roll them into future releases. For this
29 purpose, we will have a branch called 0.10.2 on github, on which you can base
29 purpose, we will have a branch called 0.10.2 on github, on which you can base
30 your contributions.
30 your contributions.
31
31
32 .. _github site: http://github.com/ipython
32 .. _github site: http://github.com/ipython
33
33
34 For this release, we applied approximately 60 commits totaling a diff of over
34 For this release, we applied approximately 60 commits totaling a diff of over
35 7000 lines::
35 7000 lines::
36
36
37 (0.10.1)amirbar[dist]> git diff --oneline rel-0.10.. | wc -l
37 (0.10.1)amirbar[dist]> git diff --oneline rel-0.10.. | wc -l
38 7296
38 7296
39
39
40 Highlights of this release:
40 Highlights of this release:
41
41
42 - The only significant new feature is that IPython's parallel computing
42 - The only significant new feature is that IPython's parallel computing
43 machinery now supports natively the Sun Grid Engine and LSF schedulers. This
43 machinery now supports natively the Sun Grid Engine and LSF schedulers. This
44 work was a joint contribution from Justin Riley, Satra Ghosh and Matthieu
44 work was a joint contribution from Justin Riley, Satra Ghosh and Matthieu
45 Brucher, who put a lot of work into it. We also improved traceback handling
45 Brucher, who put a lot of work into it. We also improved traceback handling
46 in remote tasks, as well as providing better control for remote task IDs.
46 in remote tasks, as well as providing better control for remote task IDs.
47
47
48 - New IPython Sphinx directive. You can use this directive to mark blocks in
48 - New IPython Sphinx directive contributed by John Hunter. You can use this
49 reSructuredText documents as containig IPython syntax (including figures) and
49 directive to mark blocks in reSructuredText documents as containig IPython
50 the will be executed during the build::
50 syntax (including figures) and the will be executed during the build::
51
51
52 .. ipython::
52 .. ipython::
53
53
54 In [2]: plt.figure() # ensure a fresh figure
54 In [2]: plt.figure() # ensure a fresh figure
55
55
56 @savefig psimple.png width=4in
56 @savefig psimple.png width=4in
57 In [3]: plt.plot([1,2,3])
57 In [3]: plt.plot([1,2,3])
58 Out[3]: [<matplotlib.lines.Line2D object at 0x9b74d8c>]
58 Out[3]: [<matplotlib.lines.Line2D object at 0x9b74d8c>]
59
59
60 - Various fixes to the standalone ipython-wx application.
60 - Various fixes to the standalone ipython-wx application.
61
61
62 - We now ship internally the excellent argparse library, graciously licensed
62 - We now ship internally the excellent argparse library, graciously licensed
63 under BSD terms by Steven Bethard. Now (2010) that argparse has become part
63 under BSD terms by Steven Bethard. Now (2010) that argparse has become part
64 of Python 2.7 this will be less of an issue, but Steven's relicensing allowed
64 of Python 2.7 this will be less of an issue, but Steven's relicensing allowed
65 us to start updating IPython to using argparse well before Python 2.7. Many
65 us to start updating IPython to using argparse well before Python 2.7. Many
66 thanks!
66 thanks!
67
67
68 - Robustness improvements so that IPython doesn't crash if the readline library
68 - Robustness improvements so that IPython doesn't crash if the readline library
69 is absent (though obviously a lot of functionality that requires readline
69 is absent (though obviously a lot of functionality that requires readline
70 will not be available).
70 will not be available).
71
71
72 - Improvements to tab completion in Emacs with Python 2.6.
72 - Improvements to tab completion in Emacs with Python 2.6.
73
73
74 - Logging now supports timestamps (see ``%logstart?`` for full details).
74 - Logging now supports timestamps (see ``%logstart?`` for full details).
75
75
76 - A long-standing and quite annoying bug where parentheses would be added to
76 - A long-standing and quite annoying bug where parentheses would be added to
77 ``print`` statements, under Python 2.5 and 2.6, was finally fixed.
77 ``print`` statements, under Python 2.5 and 2.6, was finally fixed.
78
78
79 - Improved handling of libreadline on Apple OSX.
79 - Improved handling of libreadline on Apple OSX.
80
80
81 - Fix ``reload`` method of IPython demos, which was broken.
81 - Fix ``reload`` method of IPython demos, which was broken.
82
82
83 - Fixes for the ipipe/ibrowse system on OSX.
83 - Fixes for the ipipe/ibrowse system on OSX.
84
84
85 - Fixes for Zope profile.
85 - Fixes for Zope profile.
86
86
87 - Fix %timeit reporting when the time is longer than 1000s.
87 - Fix %timeit reporting when the time is longer than 1000s.
88
88
89 - Avoid lockups with ? or ?? in SunOS, due to a bug in termios.
89 - Avoid lockups with ? or ?? in SunOS, due to a bug in termios.
90
90
91 - The usual assortment of miscellaneous bug fixes and small improvements.
91 - The usual assortment of miscellaneous bug fixes and small improvements.
92
92
93 The following people contributed to this release (please let us know if we
93 The following people contributed to this release (please let us know if we
94 ommitted your name and we'll gladly fix this in the notes for the future):
94 ommitted your name and we'll gladly fix this in the notes for the future):
95
95
96 * Beni Cherniavsky
96 * Beni Cherniavsky
97 * Boyd Waters.
97 * Boyd Waters.
98 * David Warde-Farley
98 * David Warde-Farley
99 * Fernando Perez
99 * Fernando Perez
100 * GΓΆkhan Sever
100 * GΓΆkhan Sever
101 * John Hunter
101 * Justin Riley
102 * Justin Riley
102 * Kiorky
103 * Kiorky
103 * Laurent Dufrechou
104 * Laurent Dufrechou
104 * Mark E. Smith
105 * Mark E. Smith
105 * Matthieu Brucher
106 * Matthieu Brucher
106 * Satrajit Ghosh
107 * Satrajit Ghosh
107 * Sebastian Busch
108 * Sebastian Busch
108 * VΓ‘clav Ε milauer
109 * VΓ‘clav Ε milauer
109
110
110
111
111 Release 0.10
112 Release 0.10
112 ============
113 ============
113
114
114 This release brings months of slow but steady development, and will be the last
115 This release brings months of slow but steady development, and will be the last
115 before a major restructuring and cleanup of IPython's internals that is already
116 before a major restructuring and cleanup of IPython's internals that is already
116 under way. For this reason, we hope that 0.10 will be a stable and robust
117 under way. For this reason, we hope that 0.10 will be a stable and robust
117 release so that while users adapt to some of the API changes that will come
118 release so that while users adapt to some of the API changes that will come
118 with the refactoring that will become IPython 0.11, they can safely use 0.10 in
119 with the refactoring that will become IPython 0.11, they can safely use 0.10 in
119 all existing projects with minimal changes (if any).
120 all existing projects with minimal changes (if any).
120
121
121 IPython 0.10 is now a medium-sized project, with roughly (as reported by David
122 IPython 0.10 is now a medium-sized project, with roughly (as reported by David
122 Wheeler's :command:`sloccount` utility) 40750 lines of Python code, and a diff
123 Wheeler's :command:`sloccount` utility) 40750 lines of Python code, and a diff
123 between 0.9.1 and this release that contains almost 28000 lines of code and
124 between 0.9.1 and this release that contains almost 28000 lines of code and
124 documentation. Our documentation, in PDF format, is a 495-page long PDF
125 documentation. Our documentation, in PDF format, is a 495-page long PDF
125 document (also available in HTML format, both generated from the same sources).
126 document (also available in HTML format, both generated from the same sources).
126
127
127 Many users and developers contributed code, features, bug reports and ideas to
128 Many users and developers contributed code, features, bug reports and ideas to
128 this release. Please do not hesitate in contacting us if we've failed to
129 this release. Please do not hesitate in contacting us if we've failed to
129 acknowledge your contribution here. In particular, for this release we have
130 acknowledge your contribution here. In particular, for this release we have
130 contribution from the following people, a mix of new and regular names (in
131 contribution from the following people, a mix of new and regular names (in
131 alphabetical order by first name):
132 alphabetical order by first name):
132
133
133 * Alexander Clausen: fix #341726.
134 * Alexander Clausen: fix #341726.
134 * Brian Granger: lots of work everywhere (features, bug fixes, etc).
135 * Brian Granger: lots of work everywhere (features, bug fixes, etc).
135 * Daniel Ashbrook: bug report on MemoryError during compilation, now fixed.
136 * Daniel Ashbrook: bug report on MemoryError during compilation, now fixed.
136 * Darren Dale: improvements to documentation build system, feedback, design
137 * Darren Dale: improvements to documentation build system, feedback, design
137 ideas.
138 ideas.
138 * Fernando Perez: various places.
139 * Fernando Perez: various places.
139 * GaΓ«l Varoquaux: core code, ipythonx GUI, design discussions, etc. Lots...
140 * GaΓ«l Varoquaux: core code, ipythonx GUI, design discussions, etc. Lots...
140 * John Hunter: suggestions, bug fixes, feedback.
141 * John Hunter: suggestions, bug fixes, feedback.
141 * Jorgen Stenarson: work on many fronts, tests, fixes, win32 support, etc.
142 * Jorgen Stenarson: work on many fronts, tests, fixes, win32 support, etc.
142 * Laurent DufrΓ©chou: many improvements to ipython-wx standalone app.
143 * Laurent DufrΓ©chou: many improvements to ipython-wx standalone app.
143 * Lukasz Pankowski: prefilter, `%edit`, demo improvements.
144 * Lukasz Pankowski: prefilter, `%edit`, demo improvements.
144 * Matt Foster: TextMate support in `%edit`.
145 * Matt Foster: TextMate support in `%edit`.
145 * Nathaniel Smith: fix #237073.
146 * Nathaniel Smith: fix #237073.
146 * Pauli Virtanen: fixes and improvements to extensions, documentation.
147 * Pauli Virtanen: fixes and improvements to extensions, documentation.
147 * Prabhu Ramachandran: improvements to `%timeit`.
148 * Prabhu Ramachandran: improvements to `%timeit`.
148 * Robert Kern: several extensions.
149 * Robert Kern: several extensions.
149 * Sameer D'Costa: help on critical bug #269966.
150 * Sameer D'Costa: help on critical bug #269966.
150 * Stephan Peijnik: feedback on Debian compliance and many man pages.
151 * Stephan Peijnik: feedback on Debian compliance and many man pages.
151 * Steven Bethard: we are now shipping his :mod:`argparse` module.
152 * Steven Bethard: we are now shipping his :mod:`argparse` module.
152 * Tom Fetherston: many improvements to :mod:`IPython.demo` module.
153 * Tom Fetherston: many improvements to :mod:`IPython.demo` module.
153 * Ville Vainio: lots of work everywhere (features, bug fixes, etc).
154 * Ville Vainio: lots of work everywhere (features, bug fixes, etc).
154 * Vishal Vasta: ssh support in ipcluster.
155 * Vishal Vasta: ssh support in ipcluster.
155 * Walter Doerwald: work on the :mod:`IPython.ipipe` system.
156 * Walter Doerwald: work on the :mod:`IPython.ipipe` system.
156
157
157 Below we give an overview of new features, bug fixes and backwards-incompatible
158 Below we give an overview of new features, bug fixes and backwards-incompatible
158 changes. For a detailed account of every change made, feel free to view the
159 changes. For a detailed account of every change made, feel free to view the
159 project log with :command:`bzr log`.
160 project log with :command:`bzr log`.
160
161
161 New features
162 New features
162 ------------
163 ------------
163
164
164 * New `%paste` magic automatically extracts current contents of clipboard and
165 * New `%paste` magic automatically extracts current contents of clipboard and
165 pastes it directly, while correctly handling code that is indented or
166 pastes it directly, while correctly handling code that is indented or
166 prepended with `>>>` or `...` python prompt markers. A very useful new
167 prepended with `>>>` or `...` python prompt markers. A very useful new
167 feature contributed by Robert Kern.
168 feature contributed by Robert Kern.
168
169
169 * IPython 'demos', created with the :mod:`IPython.demo` module, can now be
170 * IPython 'demos', created with the :mod:`IPython.demo` module, can now be
170 created from files on disk or strings in memory. Other fixes and
171 created from files on disk or strings in memory. Other fixes and
171 improvements to the demo system, by Tom Fetherston.
172 improvements to the demo system, by Tom Fetherston.
172
173
173 * Added :func:`find_cmd` function to :mod:`IPython.platutils` module, to find
174 * Added :func:`find_cmd` function to :mod:`IPython.platutils` module, to find
174 commands in a cross-platform manner.
175 commands in a cross-platform manner.
175
176
176 * Many improvements and fixes to GaΓ«l Varoquaux's :command:`ipythonx`, a
177 * Many improvements and fixes to GaΓ«l Varoquaux's :command:`ipythonx`, a
177 WX-based lightweight IPython instance that can be easily embedded in other WX
178 WX-based lightweight IPython instance that can be easily embedded in other WX
178 applications. These improvements have made it possible to now have an
179 applications. These improvements have made it possible to now have an
179 embedded IPython in Mayavi and other tools.
180 embedded IPython in Mayavi and other tools.
180
181
181 * :class:`MultiengineClient` objects now have a :meth:`benchmark` method.
182 * :class:`MultiengineClient` objects now have a :meth:`benchmark` method.
182
183
183 * The manual now includes a full set of auto-generated API documents from the
184 * The manual now includes a full set of auto-generated API documents from the
184 code sources, using Sphinx and some of our own support code. We are now
185 code sources, using Sphinx and some of our own support code. We are now
185 using the `Numpy Documentation Standard`_ for all docstrings, and we have
186 using the `Numpy Documentation Standard`_ for all docstrings, and we have
186 tried to update as many existing ones as possible to this format.
187 tried to update as many existing ones as possible to this format.
187
188
188 * The new :mod:`IPython.Extensions.ipy_pretty` extension by Robert Kern
189 * The new :mod:`IPython.Extensions.ipy_pretty` extension by Robert Kern
189 provides configurable pretty-printing.
190 provides configurable pretty-printing.
190
191
191 * Many improvements to the :command:`ipython-wx` standalone WX-based IPython
192 * Many improvements to the :command:`ipython-wx` standalone WX-based IPython
192 application by Laurent DufrΓ©chou. It can optionally run in a thread, and
193 application by Laurent DufrΓ©chou. It can optionally run in a thread, and
193 this can be toggled at runtime (allowing the loading of Matplotlib in a
194 this can be toggled at runtime (allowing the loading of Matplotlib in a
194 running session without ill effects).
195 running session without ill effects).
195
196
196 * IPython includes a copy of Steven Bethard's argparse_ in the
197 * IPython includes a copy of Steven Bethard's argparse_ in the
197 :mod:`IPython.external` package, so we can use it internally and it is also
198 :mod:`IPython.external` package, so we can use it internally and it is also
198 available to any IPython user. By installing it in this manner, we ensure
199 available to any IPython user. By installing it in this manner, we ensure
199 zero conflicts with any system-wide installation you may already have while
200 zero conflicts with any system-wide installation you may already have while
200 minimizing external dependencies for new users. In IPython 0.10, We ship
201 minimizing external dependencies for new users. In IPython 0.10, We ship
201 argparse version 1.0.
202 argparse version 1.0.
202
203
203 * An improved and much more robust test suite, that runs groups of tests in
204 * An improved and much more robust test suite, that runs groups of tests in
204 separate subprocesses using either Nose or Twisted's :command:`trial` runner
205 separate subprocesses using either Nose or Twisted's :command:`trial` runner
205 to ensure proper management of Twisted-using code. The test suite degrades
206 to ensure proper management of Twisted-using code. The test suite degrades
206 gracefully if optional dependencies are not available, so that the
207 gracefully if optional dependencies are not available, so that the
207 :command:`iptest` command can be run with only Nose installed and nothing
208 :command:`iptest` command can be run with only Nose installed and nothing
208 else. We also have more and cleaner test decorators to better select tests
209 else. We also have more and cleaner test decorators to better select tests
209 depending on runtime conditions, do setup/teardown, etc.
210 depending on runtime conditions, do setup/teardown, etc.
210
211
211 * The new ipcluster now has a fully working ssh mode that should work on
212 * The new ipcluster now has a fully working ssh mode that should work on
212 Linux, Unix and OS X. Thanks to Vishal Vatsa for implementing this!
213 Linux, Unix and OS X. Thanks to Vishal Vatsa for implementing this!
213
214
214 * The wonderful TextMate editor can now be used with %edit on OS X. Thanks
215 * The wonderful TextMate editor can now be used with %edit on OS X. Thanks
215 to Matt Foster for this patch.
216 to Matt Foster for this patch.
216
217
217 * The documentation regarding parallel uses of IPython, including MPI and PBS,
218 * The documentation regarding parallel uses of IPython, including MPI and PBS,
218 has been significantly updated and improved.
219 has been significantly updated and improved.
219
220
220 * The developer guidelines in the documentation have been updated to explain
221 * The developer guidelines in the documentation have been updated to explain
221 our workflow using :command:`bzr` and Launchpad.
222 our workflow using :command:`bzr` and Launchpad.
222
223
223 * Fully refactored :command:`ipcluster` command line program for starting
224 * Fully refactored :command:`ipcluster` command line program for starting
224 IPython clusters. This new version is a complete rewrite and 1) is fully
225 IPython clusters. This new version is a complete rewrite and 1) is fully
225 cross platform (we now use Twisted's process management), 2) has much
226 cross platform (we now use Twisted's process management), 2) has much
226 improved performance, 3) uses subcommands for different types of clusters, 4)
227 improved performance, 3) uses subcommands for different types of clusters, 4)
227 uses argparse for parsing command line options, 5) has better support for
228 uses argparse for parsing command line options, 5) has better support for
228 starting clusters using :command:`mpirun`, 6) has experimental support for
229 starting clusters using :command:`mpirun`, 6) has experimental support for
229 starting engines using PBS. It can also reuse FURL files, by appropriately
230 starting engines using PBS. It can also reuse FURL files, by appropriately
230 passing options to its subcommands. However, this new version of ipcluster
231 passing options to its subcommands. However, this new version of ipcluster
231 should be considered a technology preview. We plan on changing the API in
232 should be considered a technology preview. We plan on changing the API in
232 significant ways before it is final.
233 significant ways before it is final.
233
234
234 * Full description of the security model added to the docs.
235 * Full description of the security model added to the docs.
235
236
236 * cd completer: show bookmarks if no other completions are available.
237 * cd completer: show bookmarks if no other completions are available.
237
238
238 * sh profile: easy way to give 'title' to prompt: assign to variable
239 * sh profile: easy way to give 'title' to prompt: assign to variable
239 '_prompt_title'. It looks like this::
240 '_prompt_title'. It looks like this::
240
241
241 [~]|1> _prompt_title = 'sudo!'
242 [~]|1> _prompt_title = 'sudo!'
242 sudo![~]|2>
243 sudo![~]|2>
243
244
244 * %edit: If you do '%edit pasted_block', pasted_block variable gets updated
245 * %edit: If you do '%edit pasted_block', pasted_block variable gets updated
245 with new data (so repeated editing makes sense)
246 with new data (so repeated editing makes sense)
246
247
247 .. _Numpy Documentation Standard: http://projects.scipy.org/numpy/wiki/CodingStyleGuidelines#docstring-standard
248 .. _Numpy Documentation Standard: http://projects.scipy.org/numpy/wiki/CodingStyleGuidelines#docstring-standard
248
249
249 .. _argparse: http://code.google.com/p/argparse/
250 .. _argparse: http://code.google.com/p/argparse/
250
251
251 Bug fixes
252 Bug fixes
252 ---------
253 ---------
253
254
254 * Fix #368719, removed top-level debian/ directory to make the job of Debian
255 * Fix #368719, removed top-level debian/ directory to make the job of Debian
255 packagers easier.
256 packagers easier.
256
257
257 * Fix #291143 by including man pages contributed by Stephan Peijnik from the
258 * Fix #291143 by including man pages contributed by Stephan Peijnik from the
258 Debian project.
259 Debian project.
259
260
260 * Fix #358202, effectively a race condition, by properly synchronizing file
261 * Fix #358202, effectively a race condition, by properly synchronizing file
261 creation at cluster startup time.
262 creation at cluster startup time.
262
263
263 * `%timeit` now handles correctly functions that take a long time to execute
264 * `%timeit` now handles correctly functions that take a long time to execute
264 even the first time, by not repeating them.
265 even the first time, by not repeating them.
265
266
266 * Fix #239054, releasing of references after exiting.
267 * Fix #239054, releasing of references after exiting.
267
268
268 * Fix #341726, thanks to Alexander Clausen.
269 * Fix #341726, thanks to Alexander Clausen.
269
270
270 * Fix #269966. This long-standing and very difficult bug (which is actually a
271 * Fix #269966. This long-standing and very difficult bug (which is actually a
271 problem in Python itself) meant long-running sessions would inevitably grow
272 problem in Python itself) meant long-running sessions would inevitably grow
272 in memory size, often with catastrophic consequences if users had large
273 in memory size, often with catastrophic consequences if users had large
273 objects in their scripts. Now, using `%run` repeatedly should not cause any
274 objects in their scripts. Now, using `%run` repeatedly should not cause any
274 memory leaks. Special thanks to John Hunter and Sameer D'Costa for their
275 memory leaks. Special thanks to John Hunter and Sameer D'Costa for their
275 help with this bug.
276 help with this bug.
276
277
277 * Fix #295371, bug in `%history`.
278 * Fix #295371, bug in `%history`.
278
279
279 * Improved support for py2exe.
280 * Improved support for py2exe.
280
281
281 * Fix #270856: IPython hangs with PyGTK
282 * Fix #270856: IPython hangs with PyGTK
282
283
283 * Fix #270998: A magic with no docstring breaks the '%magic magic'
284 * Fix #270998: A magic with no docstring breaks the '%magic magic'
284
285
285 * fix #271684: -c startup commands screw up raw vs. native history
286 * fix #271684: -c startup commands screw up raw vs. native history
286
287
287 * Numerous bugs on Windows with the new ipcluster have been fixed.
288 * Numerous bugs on Windows with the new ipcluster have been fixed.
288
289
289 * The ipengine and ipcontroller scripts now handle missing furl files
290 * The ipengine and ipcontroller scripts now handle missing furl files
290 more gracefully by giving better error messages.
291 more gracefully by giving better error messages.
291
292
292 * %rehashx: Aliases no longer contain dots. python3.0 binary
293 * %rehashx: Aliases no longer contain dots. python3.0 binary
293 will create alias python30. Fixes:
294 will create alias python30. Fixes:
294 #259716 "commands with dots in them don't work"
295 #259716 "commands with dots in them don't work"
295
296
296 * %cpaste: %cpaste -r repeats the last pasted block.
297 * %cpaste: %cpaste -r repeats the last pasted block.
297 The block is assigned to pasted_block even if code
298 The block is assigned to pasted_block even if code
298 raises exception.
299 raises exception.
299
300
300 * Bug #274067 'The code in get_home_dir is broken for py2exe' was
301 * Bug #274067 'The code in get_home_dir is broken for py2exe' was
301 fixed.
302 fixed.
302
303
303 * Many other small bug fixes not listed here by number (see the bzr log for
304 * Many other small bug fixes not listed here by number (see the bzr log for
304 more info).
305 more info).
305
306
306 Backwards incompatible changes
307 Backwards incompatible changes
307 ------------------------------
308 ------------------------------
308
309
309 * `ipykit` and related files were unmaintained and have been removed.
310 * `ipykit` and related files were unmaintained and have been removed.
310
311
311 * The :func:`IPython.genutils.doctest_reload` does not actually call
312 * The :func:`IPython.genutils.doctest_reload` does not actually call
312 `reload(doctest)` anymore, as this was causing many problems with the test
313 `reload(doctest)` anymore, as this was causing many problems with the test
313 suite. It still resets `doctest.master` to None.
314 suite. It still resets `doctest.master` to None.
314
315
315 * While we have not deliberately broken Python 2.4 compatibility, only minor
316 * While we have not deliberately broken Python 2.4 compatibility, only minor
316 testing was done with Python 2.4, while 2.5 and 2.6 were fully tested. But
317 testing was done with Python 2.4, while 2.5 and 2.6 were fully tested. But
317 if you encounter problems with 2.4, please do report them as bugs.
318 if you encounter problems with 2.4, please do report them as bugs.
318
319
319 * The :command:`ipcluster` now requires a mode argument; for example to start a
320 * The :command:`ipcluster` now requires a mode argument; for example to start a
320 cluster on the local machine with 4 engines, you must now type::
321 cluster on the local machine with 4 engines, you must now type::
321
322
322 $ ipcluster local -n 4
323 $ ipcluster local -n 4
323
324
324 * The controller now has a ``-r`` flag that needs to be used if you want to
325 * The controller now has a ``-r`` flag that needs to be used if you want to
325 reuse existing furl files. Otherwise they are deleted (the default).
326 reuse existing furl files. Otherwise they are deleted (the default).
326
327
327 * Remove ipy_leo.py. You can use :command:`easy_install ipython-extension` to
328 * Remove ipy_leo.py. You can use :command:`easy_install ipython-extension` to
328 get it. (done to decouple it from ipython release cycle)
329 get it. (done to decouple it from ipython release cycle)
329
330
330
331
331 Release 0.9.1
332 Release 0.9.1
332 =============
333 =============
333
334
334 This release was quickly made to restore compatibility with Python 2.4, which
335 This release was quickly made to restore compatibility with Python 2.4, which
335 version 0.9 accidentally broke. No new features were introduced, other than
336 version 0.9 accidentally broke. No new features were introduced, other than
336 some additional testing support for internal use.
337 some additional testing support for internal use.
337
338
338
339
339 Release 0.9
340 Release 0.9
340 ===========
341 ===========
341
342
342 New features
343 New features
343 ------------
344 ------------
344
345
345 * All furl files and security certificates are now put in a read-only
346 * All furl files and security certificates are now put in a read-only
346 directory named ~./ipython/security.
347 directory named ~./ipython/security.
347
348
348 * A single function :func:`get_ipython_dir`, in :mod:`IPython.genutils` that
349 * A single function :func:`get_ipython_dir`, in :mod:`IPython.genutils` that
349 determines the user's IPython directory in a robust manner.
350 determines the user's IPython directory in a robust manner.
350
351
351 * Laurent's WX application has been given a top-level script called
352 * Laurent's WX application has been given a top-level script called
352 ipython-wx, and it has received numerous fixes. We expect this code to be
353 ipython-wx, and it has received numerous fixes. We expect this code to be
353 architecturally better integrated with Gael's WX 'ipython widget' over the
354 architecturally better integrated with Gael's WX 'ipython widget' over the
354 next few releases.
355 next few releases.
355
356
356 * The Editor synchronization work by Vivian De Smedt has been merged in. This
357 * The Editor synchronization work by Vivian De Smedt has been merged in. This
357 code adds a number of new editor hooks to synchronize with editors under
358 code adds a number of new editor hooks to synchronize with editors under
358 Windows.
359 Windows.
359
360
360 * A new, still experimental but highly functional, WX shell by Gael Varoquaux.
361 * A new, still experimental but highly functional, WX shell by Gael Varoquaux.
361 This work was sponsored by Enthought, and while it's still very new, it is
362 This work was sponsored by Enthought, and while it's still very new, it is
362 based on a more cleanly organized arhictecture of the various IPython
363 based on a more cleanly organized arhictecture of the various IPython
363 components. We will continue to develop this over the next few releases as a
364 components. We will continue to develop this over the next few releases as a
364 model for GUI components that use IPython.
365 model for GUI components that use IPython.
365
366
366 * Another GUI frontend, Cocoa based (Cocoa is the OSX native GUI framework),
367 * Another GUI frontend, Cocoa based (Cocoa is the OSX native GUI framework),
367 authored by Barry Wark. Currently the WX and the Cocoa ones have slightly
368 authored by Barry Wark. Currently the WX and the Cocoa ones have slightly
368 different internal organizations, but the whole team is working on finding
369 different internal organizations, but the whole team is working on finding
369 what the right abstraction points are for a unified codebase.
370 what the right abstraction points are for a unified codebase.
370
371
371 * As part of the frontend work, Barry Wark also implemented an experimental
372 * As part of the frontend work, Barry Wark also implemented an experimental
372 event notification system that various ipython components can use. In the
373 event notification system that various ipython components can use. In the
373 next release the implications and use patterns of this system regarding the
374 next release the implications and use patterns of this system regarding the
374 various GUI options will be worked out.
375 various GUI options will be worked out.
375
376
376 * IPython finally has a full test system, that can test docstrings with
377 * IPython finally has a full test system, that can test docstrings with
377 IPython-specific functionality. There are still a few pieces missing for it
378 IPython-specific functionality. There are still a few pieces missing for it
378 to be widely accessible to all users (so they can run the test suite at any
379 to be widely accessible to all users (so they can run the test suite at any
379 time and report problems), but it now works for the developers. We are
380 time and report problems), but it now works for the developers. We are
380 working hard on continuing to improve it, as this was probably IPython's
381 working hard on continuing to improve it, as this was probably IPython's
381 major Achilles heel (the lack of proper test coverage made it effectively
382 major Achilles heel (the lack of proper test coverage made it effectively
382 impossible to do large-scale refactoring). The full test suite can now
383 impossible to do large-scale refactoring). The full test suite can now
383 be run using the :command:`iptest` command line program.
384 be run using the :command:`iptest` command line program.
384
385
385 * The notion of a task has been completely reworked. An `ITask` interface has
386 * The notion of a task has been completely reworked. An `ITask` interface has
386 been created. This interface defines the methods that tasks need to
387 been created. This interface defines the methods that tasks need to
387 implement. These methods are now responsible for things like submitting
388 implement. These methods are now responsible for things like submitting
388 tasks and processing results. There are two basic task types:
389 tasks and processing results. There are two basic task types:
389 :class:`IPython.kernel.task.StringTask` (this is the old `Task` object, but
390 :class:`IPython.kernel.task.StringTask` (this is the old `Task` object, but
390 renamed) and the new :class:`IPython.kernel.task.MapTask`, which is based on
391 renamed) and the new :class:`IPython.kernel.task.MapTask`, which is based on
391 a function.
392 a function.
392
393
393 * A new interface, :class:`IPython.kernel.mapper.IMapper` has been defined to
394 * A new interface, :class:`IPython.kernel.mapper.IMapper` has been defined to
394 standardize the idea of a `map` method. This interface has a single `map`
395 standardize the idea of a `map` method. This interface has a single `map`
395 method that has the same syntax as the built-in `map`. We have also defined
396 method that has the same syntax as the built-in `map`. We have also defined
396 a `mapper` factory interface that creates objects that implement
397 a `mapper` factory interface that creates objects that implement
397 :class:`IPython.kernel.mapper.IMapper` for different controllers. Both the
398 :class:`IPython.kernel.mapper.IMapper` for different controllers. Both the
398 multiengine and task controller now have mapping capabilties.
399 multiengine and task controller now have mapping capabilties.
399
400
400 * The parallel function capabilities have been reworks. The major changes are
401 * The parallel function capabilities have been reworks. The major changes are
401 that i) there is now an `@parallel` magic that creates parallel functions,
402 that i) there is now an `@parallel` magic that creates parallel functions,
402 ii) the syntax for mulitple variable follows that of `map`, iii) both the
403 ii) the syntax for mulitple variable follows that of `map`, iii) both the
403 multiengine and task controller now have a parallel function implementation.
404 multiengine and task controller now have a parallel function implementation.
404
405
405 * All of the parallel computing capabilities from `ipython1-dev` have been
406 * All of the parallel computing capabilities from `ipython1-dev` have been
406 merged into IPython proper. This resulted in the following new subpackages:
407 merged into IPython proper. This resulted in the following new subpackages:
407 :mod:`IPython.kernel`, :mod:`IPython.kernel.core`, :mod:`IPython.config`,
408 :mod:`IPython.kernel`, :mod:`IPython.kernel.core`, :mod:`IPython.config`,
408 :mod:`IPython.tools` and :mod:`IPython.testing`.
409 :mod:`IPython.tools` and :mod:`IPython.testing`.
409
410
410 * As part of merging in the `ipython1-dev` stuff, the `setup.py` script and
411 * As part of merging in the `ipython1-dev` stuff, the `setup.py` script and
411 friends have been completely refactored. Now we are checking for
412 friends have been completely refactored. Now we are checking for
412 dependencies using the approach that matplotlib uses.
413 dependencies using the approach that matplotlib uses.
413
414
414 * The documentation has been completely reorganized to accept the
415 * The documentation has been completely reorganized to accept the
415 documentation from `ipython1-dev`.
416 documentation from `ipython1-dev`.
416
417
417 * We have switched to using Foolscap for all of our network protocols in
418 * We have switched to using Foolscap for all of our network protocols in
418 :mod:`IPython.kernel`. This gives us secure connections that are both
419 :mod:`IPython.kernel`. This gives us secure connections that are both
419 encrypted and authenticated.
420 encrypted and authenticated.
420
421
421 * We have a brand new `COPYING.txt` files that describes the IPython license
422 * We have a brand new `COPYING.txt` files that describes the IPython license
422 and copyright. The biggest change is that we are putting "The IPython
423 and copyright. The biggest change is that we are putting "The IPython
423 Development Team" as the copyright holder. We give more details about
424 Development Team" as the copyright holder. We give more details about
424 exactly what this means in this file. All developer should read this and use
425 exactly what this means in this file. All developer should read this and use
425 the new banner in all IPython source code files.
426 the new banner in all IPython source code files.
426
427
427 * sh profile: ./foo runs foo as system command, no need to do !./foo anymore
428 * sh profile: ./foo runs foo as system command, no need to do !./foo anymore
428
429
429 * String lists now support ``sort(field, nums = True)`` method (to easily sort
430 * String lists now support ``sort(field, nums = True)`` method (to easily sort
430 system command output). Try it with ``a = !ls -l ; a.sort(1, nums=1)``.
431 system command output). Try it with ``a = !ls -l ; a.sort(1, nums=1)``.
431
432
432 * '%cpaste foo' now assigns the pasted block as string list, instead of string
433 * '%cpaste foo' now assigns the pasted block as string list, instead of string
433
434
434 * The ipcluster script now run by default with no security. This is done
435 * The ipcluster script now run by default with no security. This is done
435 because the main usage of the script is for starting things on localhost.
436 because the main usage of the script is for starting things on localhost.
436 Eventually when ipcluster is able to start things on other hosts, we will put
437 Eventually when ipcluster is able to start things on other hosts, we will put
437 security back.
438 security back.
438
439
439 * 'cd --foo' searches directory history for string foo, and jumps to that dir.
440 * 'cd --foo' searches directory history for string foo, and jumps to that dir.
440 Last part of dir name is checked first. If no matches for that are found,
441 Last part of dir name is checked first. If no matches for that are found,
441 look at the whole path.
442 look at the whole path.
442
443
443
444
444 Bug fixes
445 Bug fixes
445 ---------
446 ---------
446
447
447 * The Windows installer has been fixed. Now all IPython scripts have ``.bat``
448 * The Windows installer has been fixed. Now all IPython scripts have ``.bat``
448 versions created. Also, the Start Menu shortcuts have been updated.
449 versions created. Also, the Start Menu shortcuts have been updated.
449
450
450 * The colors escapes in the multiengine client are now turned off on win32 as
451 * The colors escapes in the multiengine client are now turned off on win32 as
451 they don't print correctly.
452 they don't print correctly.
452
453
453 * The :mod:`IPython.kernel.scripts.ipengine` script was exec'ing
454 * The :mod:`IPython.kernel.scripts.ipengine` script was exec'ing
454 mpi_import_statement incorrectly, which was leading the engine to crash when
455 mpi_import_statement incorrectly, which was leading the engine to crash when
455 mpi was enabled.
456 mpi was enabled.
456
457
457 * A few subpackages had missing ``__init__.py`` files.
458 * A few subpackages had missing ``__init__.py`` files.
458
459
459 * The documentation is only created if Sphinx is found. Previously, the
460 * The documentation is only created if Sphinx is found. Previously, the
460 ``setup.py`` script would fail if it was missing.
461 ``setup.py`` script would fail if it was missing.
461
462
462 * Greedy ``cd`` completion has been disabled again (it was enabled in 0.8.4) as
463 * Greedy ``cd`` completion has been disabled again (it was enabled in 0.8.4) as
463 it caused problems on certain platforms.
464 it caused problems on certain platforms.
464
465
465
466
466 Backwards incompatible changes
467 Backwards incompatible changes
467 ------------------------------
468 ------------------------------
468
469
469 * The ``clusterfile`` options of the :command:`ipcluster` command has been
470 * The ``clusterfile`` options of the :command:`ipcluster` command has been
470 removed as it was not working and it will be replaced soon by something much
471 removed as it was not working and it will be replaced soon by something much
471 more robust.
472 more robust.
472
473
473 * The :mod:`IPython.kernel` configuration now properly find the user's
474 * The :mod:`IPython.kernel` configuration now properly find the user's
474 IPython directory.
475 IPython directory.
475
476
476 * In ipapi, the :func:`make_user_ns` function has been replaced with
477 * In ipapi, the :func:`make_user_ns` function has been replaced with
477 :func:`make_user_namespaces`, to support dict subclasses in namespace
478 :func:`make_user_namespaces`, to support dict subclasses in namespace
478 creation.
479 creation.
479
480
480 * :class:`IPython.kernel.client.Task` has been renamed
481 * :class:`IPython.kernel.client.Task` has been renamed
481 :class:`IPython.kernel.client.StringTask` to make way for new task types.
482 :class:`IPython.kernel.client.StringTask` to make way for new task types.
482
483
483 * The keyword argument `style` has been renamed `dist` in `scatter`, `gather`
484 * The keyword argument `style` has been renamed `dist` in `scatter`, `gather`
484 and `map`.
485 and `map`.
485
486
486 * Renamed the values that the rename `dist` keyword argument can have from
487 * Renamed the values that the rename `dist` keyword argument can have from
487 `'basic'` to `'b'`.
488 `'basic'` to `'b'`.
488
489
489 * IPython has a larger set of dependencies if you want all of its capabilities.
490 * IPython has a larger set of dependencies if you want all of its capabilities.
490 See the `setup.py` script for details.
491 See the `setup.py` script for details.
491
492
492 * The constructors for :class:`IPython.kernel.client.MultiEngineClient` and
493 * The constructors for :class:`IPython.kernel.client.MultiEngineClient` and
493 :class:`IPython.kernel.client.TaskClient` no longer take the (ip,port) tuple.
494 :class:`IPython.kernel.client.TaskClient` no longer take the (ip,port) tuple.
494 Instead they take the filename of a file that contains the FURL for that
495 Instead they take the filename of a file that contains the FURL for that
495 client. If the FURL file is in your IPYTHONDIR, it will be found automatically
496 client. If the FURL file is in your IPYTHONDIR, it will be found automatically
496 and the constructor can be left empty.
497 and the constructor can be left empty.
497
498
498 * The asynchronous clients in :mod:`IPython.kernel.asyncclient` are now created
499 * The asynchronous clients in :mod:`IPython.kernel.asyncclient` are now created
499 using the factory functions :func:`get_multiengine_client` and
500 using the factory functions :func:`get_multiengine_client` and
500 :func:`get_task_client`. These return a `Deferred` to the actual client.
501 :func:`get_task_client`. These return a `Deferred` to the actual client.
501
502
502 * The command line options to `ipcontroller` and `ipengine` have changed to
503 * The command line options to `ipcontroller` and `ipengine` have changed to
503 reflect the new Foolscap network protocol and the FURL files. Please see the
504 reflect the new Foolscap network protocol and the FURL files. Please see the
504 help for these scripts for details.
505 help for these scripts for details.
505
506
506 * The configuration files for the kernel have changed because of the Foolscap
507 * The configuration files for the kernel have changed because of the Foolscap
507 stuff. If you were using custom config files before, you should delete them
508 stuff. If you were using custom config files before, you should delete them
508 and regenerate new ones.
509 and regenerate new ones.
509
510
510 Changes merged in from IPython1
511 Changes merged in from IPython1
511 -------------------------------
512 -------------------------------
512
513
513 New features
514 New features
514 ............
515 ............
515
516
516 * Much improved ``setup.py`` and ``setupegg.py`` scripts. Because Twisted and
517 * Much improved ``setup.py`` and ``setupegg.py`` scripts. Because Twisted and
517 zope.interface are now easy installable, we can declare them as dependencies
518 zope.interface are now easy installable, we can declare them as dependencies
518 in our setupegg.py script.
519 in our setupegg.py script.
519
520
520 * IPython is now compatible with Twisted 2.5.0 and 8.x.
521 * IPython is now compatible with Twisted 2.5.0 and 8.x.
521
522
522 * Added a new example of how to use :mod:`ipython1.kernel.asynclient`.
523 * Added a new example of how to use :mod:`ipython1.kernel.asynclient`.
523
524
524 * Initial draft of a process daemon in :mod:`ipython1.daemon`. This has not
525 * Initial draft of a process daemon in :mod:`ipython1.daemon`. This has not
525 been merged into IPython and is still in `ipython1-dev`.
526 been merged into IPython and is still in `ipython1-dev`.
526
527
527 * The ``TaskController`` now has methods for getting the queue status.
528 * The ``TaskController`` now has methods for getting the queue status.
528
529
529 * The ``TaskResult`` objects not have information about how long the task
530 * The ``TaskResult`` objects not have information about how long the task
530 took to run.
531 took to run.
531
532
532 * We are attaching additional attributes to exceptions ``(_ipython_*)`` that
533 * We are attaching additional attributes to exceptions ``(_ipython_*)`` that
533 we use to carry additional info around.
534 we use to carry additional info around.
534
535
535 * New top-level module :mod:`asyncclient` that has asynchronous versions (that
536 * New top-level module :mod:`asyncclient` that has asynchronous versions (that
536 return deferreds) of the client classes. This is designed to users who want
537 return deferreds) of the client classes. This is designed to users who want
537 to run their own Twisted reactor.
538 to run their own Twisted reactor.
538
539
539 * All the clients in :mod:`client` are now based on Twisted. This is done by
540 * All the clients in :mod:`client` are now based on Twisted. This is done by
540 running the Twisted reactor in a separate thread and using the
541 running the Twisted reactor in a separate thread and using the
541 :func:`blockingCallFromThread` function that is in recent versions of Twisted.
542 :func:`blockingCallFromThread` function that is in recent versions of Twisted.
542
543
543 * Functions can now be pushed/pulled to/from engines using
544 * Functions can now be pushed/pulled to/from engines using
544 :meth:`MultiEngineClient.push_function` and
545 :meth:`MultiEngineClient.push_function` and
545 :meth:`MultiEngineClient.pull_function`.
546 :meth:`MultiEngineClient.pull_function`.
546
547
547 * Gather/scatter are now implemented in the client to reduce the work load
548 * Gather/scatter are now implemented in the client to reduce the work load
548 of the controller and improve performance.
549 of the controller and improve performance.
549
550
550 * Complete rewrite of the IPython docuementation. All of the documentation
551 * Complete rewrite of the IPython docuementation. All of the documentation
551 from the IPython website has been moved into docs/source as restructured
552 from the IPython website has been moved into docs/source as restructured
552 text documents. PDF and HTML documentation are being generated using
553 text documents. PDF and HTML documentation are being generated using
553 Sphinx.
554 Sphinx.
554
555
555 * New developer oriented documentation: development guidelines and roadmap.
556 * New developer oriented documentation: development guidelines and roadmap.
556
557
557 * Traditional ``ChangeLog`` has been changed to a more useful ``changes.txt``
558 * Traditional ``ChangeLog`` has been changed to a more useful ``changes.txt``
558 file that is organized by release and is meant to provide something more
559 file that is organized by release and is meant to provide something more
559 relevant for users.
560 relevant for users.
560
561
561 Bug fixes
562 Bug fixes
562 .........
563 .........
563
564
564 * Created a proper ``MANIFEST.in`` file to create source distributions.
565 * Created a proper ``MANIFEST.in`` file to create source distributions.
565
566
566 * Fixed a bug in the ``MultiEngine`` interface. Previously, multi-engine
567 * Fixed a bug in the ``MultiEngine`` interface. Previously, multi-engine
567 actions were being collected with a :class:`DeferredList` with
568 actions were being collected with a :class:`DeferredList` with
568 ``fireononeerrback=1``. This meant that methods were returning
569 ``fireononeerrback=1``. This meant that methods were returning
569 before all engines had given their results. This was causing extremely odd
570 before all engines had given their results. This was causing extremely odd
570 bugs in certain cases. To fix this problem, we have 1) set
571 bugs in certain cases. To fix this problem, we have 1) set
571 ``fireononeerrback=0`` to make sure all results (or exceptions) are in
572 ``fireononeerrback=0`` to make sure all results (or exceptions) are in
572 before returning and 2) introduced a :exc:`CompositeError` exception
573 before returning and 2) introduced a :exc:`CompositeError` exception
573 that wraps all of the engine exceptions. This is a huge change as it means
574 that wraps all of the engine exceptions. This is a huge change as it means
574 that users will have to catch :exc:`CompositeError` rather than the actual
575 that users will have to catch :exc:`CompositeError` rather than the actual
575 exception.
576 exception.
576
577
577 Backwards incompatible changes
578 Backwards incompatible changes
578 ..............................
579 ..............................
579
580
580 * All names have been renamed to conform to the lowercase_with_underscore
581 * All names have been renamed to conform to the lowercase_with_underscore
581 convention. This will require users to change references to all names like
582 convention. This will require users to change references to all names like
582 ``queueStatus`` to ``queue_status``.
583 ``queueStatus`` to ``queue_status``.
583
584
584 * Previously, methods like :meth:`MultiEngineClient.push` and
585 * Previously, methods like :meth:`MultiEngineClient.push` and
585 :meth:`MultiEngineClient.push` used ``*args`` and ``**kwargs``. This was
586 :meth:`MultiEngineClient.push` used ``*args`` and ``**kwargs``. This was
586 becoming a problem as we weren't able to introduce new keyword arguments into
587 becoming a problem as we weren't able to introduce new keyword arguments into
587 the API. Now these methods simple take a dict or sequence. This has also
588 the API. Now these methods simple take a dict or sequence. This has also
588 allowed us to get rid of the ``*All`` methods like :meth:`pushAll` and
589 allowed us to get rid of the ``*All`` methods like :meth:`pushAll` and
589 :meth:`pullAll`. These things are now handled with the ``targets`` keyword
590 :meth:`pullAll`. These things are now handled with the ``targets`` keyword
590 argument that defaults to ``'all'``.
591 argument that defaults to ``'all'``.
591
592
592 * The :attr:`MultiEngineClient.magicTargets` has been renamed to
593 * The :attr:`MultiEngineClient.magicTargets` has been renamed to
593 :attr:`MultiEngineClient.targets`.
594 :attr:`MultiEngineClient.targets`.
594
595
595 * All methods in the MultiEngine interface now accept the optional keyword
596 * All methods in the MultiEngine interface now accept the optional keyword
596 argument ``block``.
597 argument ``block``.
597
598
598 * Renamed :class:`RemoteController` to :class:`MultiEngineClient` and
599 * Renamed :class:`RemoteController` to :class:`MultiEngineClient` and
599 :class:`TaskController` to :class:`TaskClient`.
600 :class:`TaskController` to :class:`TaskClient`.
600
601
601 * Renamed the top-level module from :mod:`api` to :mod:`client`.
602 * Renamed the top-level module from :mod:`api` to :mod:`client`.
602
603
603 * Most methods in the multiengine interface now raise a :exc:`CompositeError`
604 * Most methods in the multiengine interface now raise a :exc:`CompositeError`
604 exception that wraps the user's exceptions, rather than just raising the raw
605 exception that wraps the user's exceptions, rather than just raising the raw
605 user's exception.
606 user's exception.
606
607
607 * Changed the ``setupNS`` and ``resultNames`` in the ``Task`` class to ``push``
608 * Changed the ``setupNS`` and ``resultNames`` in the ``Task`` class to ``push``
608 and ``pull``.
609 and ``pull``.
609
610
610
611
611 Release 0.8.4
612 Release 0.8.4
612 =============
613 =============
613
614
614 This was a quick release to fix an unfortunate bug that slipped into the 0.8.3
615 This was a quick release to fix an unfortunate bug that slipped into the 0.8.3
615 release. The ``--twisted`` option was disabled, as it turned out to be broken
616 release. The ``--twisted`` option was disabled, as it turned out to be broken
616 across several platforms.
617 across several platforms.
617
618
618
619
619 Release 0.8.3
620 Release 0.8.3
620 =============
621 =============
621
622
622 * pydb is now disabled by default (due to %run -d problems). You can enable
623 * pydb is now disabled by default (due to %run -d problems). You can enable
623 it by passing -pydb command line argument to IPython. Note that setting
624 it by passing -pydb command line argument to IPython. Note that setting
624 it in config file won't work.
625 it in config file won't work.
625
626
626
627
627 Release 0.8.2
628 Release 0.8.2
628 =============
629 =============
629
630
630 * %pushd/%popd behave differently; now "pushd /foo" pushes CURRENT directory
631 * %pushd/%popd behave differently; now "pushd /foo" pushes CURRENT directory
631 and jumps to /foo. The current behaviour is closer to the documented
632 and jumps to /foo. The current behaviour is closer to the documented
632 behaviour, and should not trip anyone.
633 behaviour, and should not trip anyone.
633
634
634
635
635 Older releases
636 Older releases
636 ==============
637 ==============
637
638
638 Changes in earlier releases of IPython are described in the older file
639 Changes in earlier releases of IPython are described in the older file
639 ``ChangeLog``. Please refer to this document for details.
640 ``ChangeLog``. Please refer to this document for details.
640
641
General Comments 0
You need to be logged in to leave comments. Login now