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