##// END OF EJS Templates
Improve what's new document, closer to release form...
Fernando Perez -
Show More
@@ -1,90 +1,100 b''
1 ===============
2 0.11 Series
3 ===============
1 =============
2 0.11 Series
3 =============
4 4
5 5 Release 0.11
6 6 ============
7 7
8 IPython 0.11 is a *major* overhaul of IPython, two years in the making. Most of
9 the code base has been rewritten or at least reorganized, breaking backward compatibility
10 with several APIs in previous versions. It is the first major release in two years, and
11 probably the most significant change to IPython since its inception.
12 As a result of the significant changes, we do plan to have a relatively quick
13 succession of releases, as people discover new bugs and regressions.
8 IPython 0.11 is a *major* overhaul of IPython, two years in the making. Most
9 of the code base has been rewritten or at least reorganized, breaking backward
10 compatibility with several APIs in previous versions. It is the first major
11 release in two years, and probably the most significant change to IPython since
12 its inception. We plan to have a relatively quick succession of releases, as
13 people discover new bugs and regressions. Once we iron out any significant
14 bugs in this process and settle down the new APIs, this series will become
15 IPython 1.0. We encourage feedback now on the core APIs, which we hope to
16 maintain stable during the 1.0 series.
14 17
18 Chris Fonnesbeck recently wrote an `excellent post`_ that highlights some of
19 the core new features, with examples and screenshots. We encourage you
20 to read it as it provides a great high-level overview that complements the
21 detailed feature breakdown in this document.
15 22
16 Authors
17 -------
23 .. _excellent post: http://stronginference.com/weblog/2011/7/15/innovations-in-ipython.html
18 24
19 Many users and developers contributed code, features, bug reports and ideas to
20 this release. Please do not hesitate in contacting us if we've failed to
21 acknowledge your contribution here. In particular, for this release we have
22 contribution from the following people, a mix of new and regular names (in
23 alphabetical order by first name):
25 A quick summary of the major changes (see below for details):
24 26
27 * *Standalone Qt console*: a new rich console has been added to IPython, started
28 with `ipython qtconsole`. In this application we have tried to retain the
29 feel of a terminal for fast and efficient workflows, while adding many
30 features that a plain text terminal simply can not support, such as inline
31 figures, full multiline editing with syntax highlighting, tooltips for
32 function calls and much more.
25 33
26 * Andy Wilson <wilson.andrew.j+github-at-gmail.com>
27 * Aenugu Sai Kiran Reddy <saikrn08-at-gmail.com>
28 * Antonio Cuni <antocuni>
29 * Barry Wark <barrywark-at-gmail.com>
30 * Beetoju Anuradha <anu.beethoju-at-gmail.com>
31 * Brad Reisfeld
32 * Brian Granger <ellisonbg-at-gmail.com>
33 * Cody Precord
34 * Darren Dale <dsdale24-at-gmail.com>
35 * Dav Clark <davclark-at-berkeley.edu>
36 * David Warde-Farley <wardefar-at-iro.umontreal.ca>
37 * Eric Firing <efiring-at-hawaii.edu>
38 * Erik Tollerud <erik.tollerud-at-gmail.com>
39 * Evan Patterson <ejpatters-at-gmail.com>
40 * Fernando Perez <Fernando.Perez-at-berkeley.edu>
41 * Gael Varoquaux <gael.varoquaux-at-normalesup.org>
42 * Gerardo <muzgash-at-Muzpelheim>
43 * Jason Grout <jason.grout-at-drake.edu>
44 * Jens Hedegaard Nielsen <jenshnielsen-at-gmail.com>
45 * Justin Riley <justin.t.riley-at-gmail.com>
46 * Jörgen Stenarson <jorgen.stenarson-at-bostream.nu>
47 * Kiorky
48 * Laurent Dufrechou <laurent.dufrechou-at-gmail.com>
49 * Luis Pedro Coelho <luis-at-luispedro.org>
50 * Mani chandra <mchandra-at-iitk.ac.in>
51 * Mark E. Smith
52 * Mark Voorhies <mark.voorhies-at-ucsf.edu>
53 * Martin Spacek <git-at-mspacek.mm.st>
54 * Michael Droettboom <mdroe-at-stsci.edu>
55 * Min RK <benjaminrk-at-gmail.com>
56 * Nick Tarleton <nick-at-quixey.com>
57 * Nicolas Rougier <Nicolas.rougier-at-inria.fr>
58 * Omar Andres Zapata Mesa <andresete.chaos-at-gmail.com>
59 * Paul Ivanov <pivanov314-at-gmail.com>
60 * Pauli Virtanen <pauli.virtanen-at-iki.fi>
61 * Prabhu Ramachandran
62 * Ramana <sramana9-at-gmail.com>
63 * Robert Kern <robert.kern-at-gmail.com>
64 * Sathesh Chandra <satheshchandra88-at-gmail.com>
65 * Satrajit Ghosh <satra-at-mit.edu>
66 * Sebastian Busch
67 * Stefan van der Walt <bzr-at-mentat.za.net>
68 * Stephan Peijnik <debian-at-sp.or.at>
69 * Steven Bethard
70 * Thomas Kluyver <takowl-at-gmail.com>
71 * Thomas Spura <tomspur-at-fedoraproject.org>
72 * Tom Fetherston <tfetherston-at-aol.com>
73 * Tom MacWright
74 * Ville M. Vainio <vivainio-at-gmail.com>
75 * Vishal Vatsa <vishal.vatsa-at-gmail.com>
76 * Vishnu S G <sgvishnu777-at-gmail.com>
77 * Walter Doerwald <walter-at-livinglogic.de>
78 * dan.milstein
79 * muzuiget <muzuiget-at-gmail.com>
80 * tzanko
81 * vankayala sowjanya <hai.sowjanya-at-gmail.com>
34 * *High-level parallel computing with ZeroMQ*. Using the same architecture that
35 our Qt console is based on, we have completely rewritten our high-level
36 parallel computing machinery that in prior versions used the Twisted
37 networking framework. While this change will require users to update their
38 codes, the improvements in performance, memory control and internal
39 consistency across our codebase convinced us it was a price worth paying. We
40 have tried to explain how to best proceed with this update, and will be happy
41 to answer questions that may arise.
82 42
83 .. note::
43 * *New model for GUI/plotting support in the terminal*. Now instead of the
44 various `-Xthread` flags we had before, GUI support is provided without the
45 use of any threads, by directly integrating GUI event loops with Python's
46 `PyOS_InputHook` API. A new command-line flag `--gui` controls GUI support,
47 and it can also be enabled after IPython startup via the new `%gui` magic.
84 48
85 This list was generated with the output of
86 ``git log dev-0.11 HEAD --format='* %aN <%aE>' | sed 's/@/\-at\-/' | sed 's/<>//' | sort -u``
87 after some cleanup. If you should be on this list, please add yourself.
49 * *A two-process architecture.* The Qt console is the first example of using a
50 new model that splits IPython between a kernel process where code is executed
51 and a client that handles user interaction. We plan on also providing
52 terminal and web-browser based clients using this infrastructure in future
53 releases. This model allows multiple clients to interact with an IPython
54 process through a well-documented protocol using the ZeroMQ networking
55 library.
56
57 * *Refactoring.* the entire codebase has been refactored, in order to make it
58 more modular and easier to contribute to. IPython has traditionally been a
59 hard project to participate because the old codebase was very monolithic. We
60 hope this (ongoing) restructuring will make it easier for new developers to
61 join us.
62
63 * *Improved unicode support*. We closed many bugs related to unicode input.
64
65 * *Python 3*. IPython now runs on Python 3.x.
66
67 * *New profile model*. Profiles are now directories that contain all relevant
68 infromation for that session, and thus better isolate IPython use-cases.
69
70 * *SQLite storage for history*. All history is now stored in a SQLite database,
71 providing support for multiple simultaneous sessions that won't clobber each
72 other as well as the ability to perform queries on all stored data.
73
74 * *New configuration system*. All parts of IPython are now configured via a
75 mechanism inspired by the Enthought Traits library. Any configurable
76 element can have its attributes set either via files that now use real
77 Python syntax or from the command-line.
78
79
80 Over 60 separate authors have contributed to this release, see :ref:`below
81 <credits>` for a full list.
82
83
84 Plotting and GUI support in the terminal
85 ----------------------------------------
86
87 blah
88
89
90 Qt Console
91 ----------
92
93 blah
94
95
96 High-level parallel computing with ZeroMQ
97 -----------------------------------------
88 98
89 99
90 100 Refactoring
@@ -139,15 +149,16 b' working.'
139 149 Unicode
140 150 -------
141 151
142 Entering non-ascii characters in unicode literals (``u"€ø"``) now works properly
143 on all platforms. However, entering these in byte/string literals (``"€ø"``)
144 will not work as expected on Windows (or any platform where the terminal encoding
145 is not UTF-8, as it typically is for Linux & Mac OS X). You can use escape sequences
146 (``"\xe9\x82"``) to get bytes above 128, or use unicode literals and encode
147 them. This is a limitation of Python 2 which we cannot easily work around.
152 Entering non-ascii characters in unicode literals (``u"€ø"``) now works
153 properly on all platforms. However, entering these in byte/string literals
154 (``"€ø"``) will not work as expected on Windows (or any platform where the
155 terminal encoding is not UTF-8, as it typically is for Linux & Mac OS X). You
156 can use escape sequences (``"\xe9\x82"``) to get bytes above 128, or use
157 unicode literals and encode them. This is a limitation of Python 2 which we
158 cannot easily work around.
148 159
149 New features
150 ------------
160 Additional new features
161 -----------------------
151 162
152 163 * Added ``Bytes`` traitlet, removing ``Str``. All 'string' traitlets should
153 164 either be ``Unicode`` if a real string, or ``Bytes`` if a C-string. This
@@ -185,10 +196,10 b' New features'
185 196 configuration system :ref:`documentation <config_index>` for more details.
186 197
187 198 * The :class:`~IPython.core.interactiveshell.InteractiveShell` class is now a
188 :class:`~IPython.config.configurable.Configurable` subclass and has traitlets that
189 determine the defaults and runtime environment. The ``__init__`` method has
190 also been refactored so this class can be instantiated and run without the
191 old :mod:`ipmaker` module.
199 :class:`~IPython.config.configurable.Configurable` subclass and has traitlets
200 that determine the defaults and runtime environment. The ``__init__`` method
201 has also been refactored so this class can be instantiated and run without
202 the old :mod:`ipmaker` module.
192 203
193 204 * The methods of :class:`~IPython.core.interactiveshell.InteractiveShell` have
194 205 been organized into sections to make it easier to turn more sections
@@ -208,18 +219,15 b' New features'
208 219 strings like ``foo.bar.Bar`` to the actual class.
209 220
210 221 * Completely refactored the :mod:`IPython.core.prefilter` module into
211 :class:`~IPython.config.configurable.Configurable` subclasses. Added a new layer
212 into the prefilter system, called "transformations" that all new prefilter
213 logic should use (rather than the older "checker/handler" approach).
222 :class:`~IPython.config.configurable.Configurable` subclasses. Added a new
223 layer into the prefilter system, called "transformations" that all new
224 prefilter logic should use (rather than the older "checker/handler"
225 approach).
214 226
215 227 * Aliases are now components (:mod:`IPython.core.alias`).
216 228
217 * We are now using an internally shipped version of
218 :mod:`~IPython.external.argparse` to parse command line options for
219 :command:`ipython`.
220
221 229 * New top level :func:`~IPython.frontend.terminal.embed.embed` function that can
222 be called to embed IPython at any place in user's code. One the first call it
230 be called to embed IPython at any place in user's code. On the first call it
223 231 will create an :class:`~IPython.frontend.terminal.embed.InteractiveShellEmbed`
224 232 instance and call it. In later calls, it just calls the previously created
225 233 :class:`~IPython.frontend.terminal.embed.InteractiveShellEmbed`.
@@ -263,13 +271,14 b' New features'
263 271
264 272 * :mod:`IPython.utils.ipstruct` has been refactored to be a subclass of
265 273 dict. It also now has full docstrings and doctests.
266 * Created a Trait's like implementation in :mod:`IPython.utils.traitlets`.
267 This is a pure Python, lightweight version of a library that is similar to
268 :mod:`enthought.traits`. We are using this for validation, defaults and
269 notification in our new component system. Although it is not API compatible
270 with :mod:`enthought.traits`, we plan on moving in this direction so that
271 eventually our implementation could be replaced by a (yet to exist) pure
272 Python version of :mod:`enthought.traits`.
274
275 * Created a Traits like implementation in :mod:`IPython.utils.traitlets`. This
276 is a pure Python, lightweight version of a library that is similar to
277 Enthought's Traits project, but has no dependencies on Enthought's code. We
278 are using this for validation, defaults and notification in our new component
279 system. Although it is not 100% API compatible with Enthought's Traits, we
280 plan on moving in this direction so that eventually our implementation could
281 be replaced by a (yet to exist) pure Python version of Enthought Traits.
273 282
274 283 * Added a new module :mod:`IPython.lib.inputhook` to manage the integration
275 284 with GUI event loops using `PyOS_InputHook`. See the docstrings in this
@@ -362,10 +371,9 b' Backwards incompatible changes'
362 371 * :mod:`Extensions` has been moved to :mod:`extensions` and all existing
363 372 extensions have been moved to either :mod:`IPython.quarantine` or
364 373 :mod:`IPython.deathrow`. :mod:`IPython.quarantine` contains modules that we
365 plan on keeping but that need to be updated. :mod:`IPython.deathrow`
366 contains modules that are either dead or that should be maintained as third
367 party libraries. More details about this can be found :ref:`here
368 <module_reorg>`.
374 plan on keeping but that need to be updated. :mod:`IPython.deathrow` contains
375 modules that are either dead or that should be maintained as third party
376 libraries. More details about this can be found :ref:`here <module_reorg>`.
369 377
370 378 * Previous IPython GUIs in :mod:`IPython.frontend` and :mod:`IPython.gui` are
371 379 likely broken, and have been removed to :mod:`IPython.deathrow` because of the
@@ -375,17 +383,167 b' Backwards incompatible changes'
375 383 Known Regressions
376 384 -----------------
377 385
378 We do our best to improve IPython, but there are some known regressions in 0.11 relative
379 to 0.10.2.
386 We do our best to improve IPython, but there are some known regressions in 0.11
387 relative to 0.10.2. First of all, there are features that have yet to be
388 ported to the new APIs, and in order to ensure that all of the installed code
389 runs for our users, we have moved them to two separate directories in the
390 source distribution, `quarantine` and `deathrow`. Finally, we have some other
391 miscellaneous regressions that we hope to fix as soon as possible. We now
392 describe all of these in more detail.
393
394 Quarantine
395 ~~~~~~~~~~
396
397 These are tools and extensions that we consider relatively easy to update to
398 the new classes and APIs, but that we simply haven't had time for. Any user
399 who is interested in one of these is encouraged to help us by porting it and
400 submitting a pull request on our `development site`_.
401
402 .. _development site:: http://github.com/ipython/ipython
403
404 Currently, the quarantine directory contains::
405
406 clearcmd.py ipy_fsops.py ipy_signals.py
407 envpersist.py ipy_gnuglobal.py ipy_synchronize_with.py
408 ext_rescapture.py ipy_greedycompleter.py ipy_system_conf.py
409 InterpreterExec.py ipy_jot.py ipy_which.py
410 ipy_app_completers.py ipy_lookfor.py ipy_winpdb.py
411 ipy_autoreload.py ipy_profile_doctest.py ipy_workdir.py
412 ipy_completers.py ipy_pydb.py jobctrl.py
413 ipy_editors.py ipy_rehashdir.py ledit.py
414 ipy_exportdb.py ipy_render.py pspersistence.py
415 ipy_extutil.py ipy_server.py win32clip.py
416
417 Deathrow
418 ~~~~~~~~
419
420 These packages may be harder to update or make most sense as third-party
421 libraries. Some of them are completely obsolete and have been already replaced
422 by better functionality (we simply haven't had the time to carefully weed them
423 out so they are kept here for now). Others simply require fixes to code that
424 the current core team may not be familiar with. If a tool you were used to is
425 included here, we encourage you to contact the dev list and we can discuss
426 whether it makes sense to keep it in IPython (if it can be maintained).
427
428 Currently, the deathrow directory contains::
429
430 astyle.py ipy_defaults.py ipy_vimserver.py
431 dtutils.py ipy_kitcfg.py numeric_formats.py
432 Gnuplot2.py ipy_legacy.py numutils.py
433 GnuplotInteractive.py ipy_p4.py outputtrap.py
434 GnuplotRuntime.py ipy_profile_none.py PhysicalQInput.py
435 ibrowse.py ipy_profile_numpy.py PhysicalQInteractive.py
436 igrid.py ipy_profile_scipy.py quitter.py*
437 ipipe.py ipy_profile_sh.py scitedirector.py
438 iplib.py ipy_profile_zope.py Shell.py
439 ipy_constants.py ipy_traits_completer.py twshell.py
440
441
442 Other
443 ~~~~~
444
445 * The machinery that adds functionality to the 'sh' profile for using IPython
446 as your system shell has not been updated to use the new APIs. As a result,
447 only the aesthetic (prompt) changes are still implemented. We intend to fix
448 this by 0.12.
449
450 * The installation of scripts on Windows was broken without setuptools, so we
451 now depend on setuptools on Windows. We hope to fix setuptools-less
452 installation, and then remove the setuptools dependency.
453
454
455 Removed Features
456 ----------------
457
458 As part of the updating of IPython, we have removed a few features for the
459 purpsoes of cleaning up the codebase and interfaces. These removals are
460 permanent, but for any item listed below, equivalent functionality is
461 available.
462
463 * The magics Exit and Quit have been dropped as ways to exit IPython. Instead,
464 the lowercase forms of both work either as a bare name (``exit``) or a
465 function call (``exit()``). You can assign these to other names using
466 exec_lines in the config file.
380 467
381 * The machinery that adds functionality to the 'sh' profile for using IPython as your
382 system shell has not been updated to use the new APIs. As a result, only the aesthetic
383 (prompt) changes are still implemented. We intend to fix this by 0.12.
384 468
385 * The installation of scripts on Windows was broken without setuptools, so we now
386 depend on setuptools on Windows. We hope to fix setuptools-less installation,
387 and then remove the setuptools dependency.
469 .. credits_::
470
471 Credits
472 -------
473
474 Many users and developers contributed code, features, bug reports and ideas to
475 this release. Please do not hesitate in contacting us if we've failed to
476 acknowledge your contribution here. In particular, for this release we have
477 contribution from the following people, a mix of new and regular names (in
478 alphabetical order by first name):
479
480 * Aenugu Sai Kiran Reddy <saikrn08-at-gmail.com>
481 * andy wilson <wilson.andrew.j+github-at-gmail.com>
482 * Antonio Cuni <antocuni>
483 * Barry Wark <barrywark-at-gmail.com>
484 * Beetoju Anuradha <anu.beethoju-at-gmail.com>
485 * Benjamin Ragan-Kelley <minrk-at-Mercury.local>
486 * Brad Reisfeld
487 * Brian E. Granger <ellisonbg-at-gmail.com>
488 * Christoph Gohlke <cgohlke-at-uci.edu>
489 * Cody Precord
490 * dan.milstein
491 * Darren Dale <dsdale24-at-gmail.com>
492 * Dav Clark <davclark-at-berkeley.edu>
493 * David Warde-Farley <wardefar-at-iro.umontreal.ca>
494 * epatters <ejpatters-at-gmail.com>
495 * epatters <epatters-at-caltech.edu>
496 * epatters <epatters-at-enthought.com>
497 * Eric Firing <efiring-at-hawaii.edu>
498 * Erik Tollerud <erik.tollerud-at-gmail.com>
499 * Evan Patterson <epatters-at-enthought.com>
500 * Fernando Perez <Fernando.Perez-at-berkeley.edu>
501 * Gael Varoquaux <gael.varoquaux-at-normalesup.org>
502 * Gerardo <muzgash-at-Muzpelheim>
503 * Jason Grout <jason.grout-at-drake.edu>
504 * John Hunter <jdh2358-at-gmail.com>
505 * Jens Hedegaard Nielsen <jenshnielsen-at-gmail.com>
506 * Johann Cohen-Tanugi <johann.cohentanugi-at-gmail.com>
507 * Jörgen Stenarson <jorgen.stenarson-at-bostream.nu>
508 * Justin Riley <justin.t.riley-at-gmail.com>
509 * Kiorky
510 * Laurent Dufrechou <laurent.dufrechou-at-gmail.com>
511 * Luis Pedro Coelho <lpc-at-cmu.edu>
512 * Mani chandra <mchandra-at-iitk.ac.in>
513 * Mark E. Smith
514 * Mark Voorhies <mark.voorhies-at-ucsf.edu>
515 * Martin Spacek <git-at-mspacek.mm.st>
516 * Michael Droettboom <mdroe-at-stsci.edu>
517 * MinRK <benjaminrk-at-gmail.com>
518 * muzuiget <muzuiget-at-gmail.com>
519 * Nick Tarleton <nick-at-quixey.com>
520 * Nicolas Rougier <Nicolas.rougier-at-inria.fr>
521 * Omar Andres Zapata Mesa <andresete.chaos-at-gmail.com>
522 * Paul Ivanov <pivanov314-at-gmail.com>
523 * Pauli Virtanen <pauli.virtanen-at-iki.fi>
524 * Prabhu Ramachandran
525 * Ramana <sramana9-at-gmail.com>
526 * Robert Kern <robert.kern-at-gmail.com>
527 * Sathesh Chandra <satheshchandra88-at-gmail.com>
528 * Satrajit Ghosh <satra-at-mit.edu>
529 * Sebastian Busch
530 * Stefan van der Walt <bzr-at-mentat.za.net>
531 * Stephan Peijnik <debian-at-sp.or.at>
532 * Steven Bethard
533 * Thomas Kluyver <takowl-at-gmail.com>
534 * Thomas Spura <tomspur-at-fedoraproject.org>
535 * Tom Fetherston <tfetherston-at-aol.com>
536 * Tom MacWright
537 * tzanko
538 * vankayala sowjanya <hai.sowjanya-at-gmail.com>
539 * Vivian De Smedt <vds2212-at-VIVIAN>
540 * Ville M. Vainio <vivainio-at-gmail.com>
541 * Vishal Vatsa <vishal.vatsa-at-gmail.com>
542 * Vishnu S G <sgvishnu777-at-gmail.com>
543 * Walter Doerwald <walter-at-livinglogic.de>
544
545 .. note::
388 546
389 * Capitalised Exit and Quit have been dropped ways to exit IPython. The lowercase forms
390 of both work either as a bare name (``exit``) or a function call (``exit()``).
391 You can assign these to other names using exec_lines in the config file.
547 This list was generated with the output of
548 ``git log dev-0.11 HEAD --format='* %aN <%aE>' | sed 's/@/\-at\-/' | sed 's/<>//' | sort -u``
549 after some cleanup. If you should be on this list, please add yourself.
General Comments 0
You need to be logged in to leave comments. Login now