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