##// END OF EJS Templates
Improve what's new document, closer to release form...
Fernando Perez -
Show More
@@ -1,90 +1,100 b''
1 ===============
1 =============
2 0.11 Series
2 0.11 Series
3 ===============
3 =============
4
4
5 Release 0.11
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
8 IPython 0.11 is a *major* overhaul of IPython, two years in the making. Most
9 the code base has been rewritten or at least reorganized, breaking backward compatibility
9 of the code base has been rewritten or at least reorganized, breaking backward
10 with several APIs in previous versions. It is the first major release in two years, and
10 compatibility with several APIs in previous versions. It is the first major
11 probably the most significant change to IPython since its inception.
11 release in two years, and probably the most significant change to IPython since
12 As a result of the significant changes, we do plan to have a relatively quick
12 its inception. We plan to have a relatively quick succession of releases, as
13 succession of releases, as people discover new bugs and regressions.
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
23 .. _excellent post: http://stronginference.com/weblog/2011/7/15/innovations-in-ipython.html
17 -------
18
24
19 Many users and developers contributed code, features, bug reports and ideas to
25 A quick summary of the major changes (see below for details):
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):
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>
34 * *High-level parallel computing with ZeroMQ*. Using the same architecture that
27 * Aenugu Sai Kiran Reddy <saikrn08-at-gmail.com>
35 our Qt console is based on, we have completely rewritten our high-level
28 * Antonio Cuni <antocuni>
36 parallel computing machinery that in prior versions used the Twisted
29 * Barry Wark <barrywark-at-gmail.com>
37 networking framework. While this change will require users to update their
30 * Beetoju Anuradha <anu.beethoju-at-gmail.com>
38 codes, the improvements in performance, memory control and internal
31 * Brad Reisfeld
39 consistency across our codebase convinced us it was a price worth paying. We
32 * Brian Granger <ellisonbg-at-gmail.com>
40 have tried to explain how to best proceed with this update, and will be happy
33 * Cody Precord
41 to answer questions that may arise.
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>
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
49 * *A two-process architecture.* The Qt console is the first example of using a
86 ``git log dev-0.11 HEAD --format='* %aN <%aE>' | sed 's/@/\-at\-/' | sed 's/<>//' | sort -u``
50 new model that splits IPython between a kernel process where code is executed
87 after some cleanup. If you should be on this list, please add yourself.
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 Refactoring
100 Refactoring
@@ -139,15 +149,16 b' working.'
139 Unicode
149 Unicode
140 -------
150 -------
141
151
142 Entering non-ascii characters in unicode literals (``u"€ø"``) now works properly
152 Entering non-ascii characters in unicode literals (``u"€ø"``) now works
143 on all platforms. However, entering these in byte/string literals (``"€ø"``)
153 properly 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
154 (``"€ø"``) will not work as expected on Windows (or any platform where the
145 is not UTF-8, as it typically is for Linux & Mac OS X). You can use escape sequences
155 terminal encoding is not UTF-8, as it typically is for Linux & Mac OS X). You
146 (``"\xe9\x82"``) to get bytes above 128, or use unicode literals and encode
156 can use escape sequences (``"\xe9\x82"``) to get bytes above 128, or use
147 them. This is a limitation of Python 2 which we cannot easily work around.
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
160 Additional new features
150 ------------
161 -----------------------
151
162
152 * Added ``Bytes`` traitlet, removing ``Str``. All 'string' traitlets should
163 * Added ``Bytes`` traitlet, removing ``Str``. All 'string' traitlets should
153 either be ``Unicode`` if a real string, or ``Bytes`` if a C-string. This
164 either be ``Unicode`` if a real string, or ``Bytes`` if a C-string. This
@@ -185,10 +196,10 b' New features'
185 configuration system :ref:`documentation <config_index>` for more details.
196 configuration system :ref:`documentation <config_index>` for more details.
186
197
187 * The :class:`~IPython.core.interactiveshell.InteractiveShell` class is now a
198 * The :class:`~IPython.core.interactiveshell.InteractiveShell` class is now a
188 :class:`~IPython.config.configurable.Configurable` subclass and has traitlets that
199 :class:`~IPython.config.configurable.Configurable` subclass and has traitlets
189 determine the defaults and runtime environment. The ``__init__`` method has
200 that determine the defaults and runtime environment. The ``__init__`` method
190 also been refactored so this class can be instantiated and run without the
201 has also been refactored so this class can be instantiated and run without
191 old :mod:`ipmaker` module.
202 the old :mod:`ipmaker` module.
192
203
193 * The methods of :class:`~IPython.core.interactiveshell.InteractiveShell` have
204 * The methods of :class:`~IPython.core.interactiveshell.InteractiveShell` have
194 been organized into sections to make it easier to turn more sections
205 been organized into sections to make it easier to turn more sections
@@ -208,18 +219,15 b' New features'
208 strings like ``foo.bar.Bar`` to the actual class.
219 strings like ``foo.bar.Bar`` to the actual class.
209
220
210 * Completely refactored the :mod:`IPython.core.prefilter` module into
221 * Completely refactored the :mod:`IPython.core.prefilter` module into
211 :class:`~IPython.config.configurable.Configurable` subclasses. Added a new layer
222 :class:`~IPython.config.configurable.Configurable` subclasses. Added a new
212 into the prefilter system, called "transformations" that all new prefilter
223 layer into the prefilter system, called "transformations" that all new
213 logic should use (rather than the older "checker/handler" approach).
224 prefilter logic should use (rather than the older "checker/handler"
225 approach).
214
226
215 * Aliases are now components (:mod:`IPython.core.alias`).
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 * New top level :func:`~IPython.frontend.terminal.embed.embed` function that can
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 will create an :class:`~IPython.frontend.terminal.embed.InteractiveShellEmbed`
231 will create an :class:`~IPython.frontend.terminal.embed.InteractiveShellEmbed`
224 instance and call it. In later calls, it just calls the previously created
232 instance and call it. In later calls, it just calls the previously created
225 :class:`~IPython.frontend.terminal.embed.InteractiveShellEmbed`.
233 :class:`~IPython.frontend.terminal.embed.InteractiveShellEmbed`.
@@ -263,13 +271,14 b' New features'
263
271
264 * :mod:`IPython.utils.ipstruct` has been refactored to be a subclass of
272 * :mod:`IPython.utils.ipstruct` has been refactored to be a subclass of
265 dict. It also now has full docstrings and doctests.
273 dict. It also now has full docstrings and doctests.
266 * Created a Trait's like implementation in :mod:`IPython.utils.traitlets`.
274
267 This is a pure Python, lightweight version of a library that is similar to
275 * Created a Traits like implementation in :mod:`IPython.utils.traitlets`. This
268 :mod:`enthought.traits`. We are using this for validation, defaults and
276 is a pure Python, lightweight version of a library that is similar to
269 notification in our new component system. Although it is not API compatible
277 Enthought's Traits project, but has no dependencies on Enthought's code. We
270 with :mod:`enthought.traits`, we plan on moving in this direction so that
278 are using this for validation, defaults and notification in our new component
271 eventually our implementation could be replaced by a (yet to exist) pure
279 system. Although it is not 100% API compatible with Enthought's Traits, we
272 Python version of :mod:`enthought.traits`.
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 * Added a new module :mod:`IPython.lib.inputhook` to manage the integration
283 * Added a new module :mod:`IPython.lib.inputhook` to manage the integration
275 with GUI event loops using `PyOS_InputHook`. See the docstrings in this
284 with GUI event loops using `PyOS_InputHook`. See the docstrings in this
@@ -362,10 +371,9 b' Backwards incompatible changes'
362 * :mod:`Extensions` has been moved to :mod:`extensions` and all existing
371 * :mod:`Extensions` has been moved to :mod:`extensions` and all existing
363 extensions have been moved to either :mod:`IPython.quarantine` or
372 extensions have been moved to either :mod:`IPython.quarantine` or
364 :mod:`IPython.deathrow`. :mod:`IPython.quarantine` contains modules that we
373 :mod:`IPython.deathrow`. :mod:`IPython.quarantine` contains modules that we
365 plan on keeping but that need to be updated. :mod:`IPython.deathrow`
374 plan on keeping but that need to be updated. :mod:`IPython.deathrow` contains
366 contains modules that are either dead or that should be maintained as third
375 modules that are either dead or that should be maintained as third party
367 party libraries. More details about this can be found :ref:`here
376 libraries. More details about this can be found :ref:`here <module_reorg>`.
368 <module_reorg>`.
369
377
370 * Previous IPython GUIs in :mod:`IPython.frontend` and :mod:`IPython.gui` are
378 * Previous IPython GUIs in :mod:`IPython.frontend` and :mod:`IPython.gui` are
371 likely broken, and have been removed to :mod:`IPython.deathrow` because of the
379 likely broken, and have been removed to :mod:`IPython.deathrow` because of the
@@ -375,17 +383,167 b' Backwards incompatible changes'
375 Known Regressions
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
386 We do our best to improve IPython, but there are some known regressions in 0.11
379 to 0.10.2.
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
469 .. credits_::
386 depend on setuptools on Windows. We hope to fix setuptools-less installation,
470
387 and then remove the setuptools dependency.
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
547 This list was generated with the output of
390 of both work either as a bare name (``exit``) or a function call (``exit()``).
548 ``git log dev-0.11 HEAD --format='* %aN <%aE>' | sed 's/@/\-at\-/' | sed 's/<>//' | sort -u``
391 You can assign these to other names using exec_lines in the config file.
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