##// END OF EJS Templates
Add note about new prompt configuration in What's New documentation.
Thomas Kluyver -
Show More
@@ -1,145 +1,154 b''
1 ================================================
1 ================================================
2 Development version
2 Development version
3 ================================================
3 ================================================
4
4
5 The changes listed here are a brief summary of the substantial work on IPython
5 The changes listed here are a brief summary of the substantial work on IPython
6 since the 0.11.x release series. For more details, please consult the actual
6 since the 0.11.x release series. For more details, please consult the actual
7 source.
7 source.
8
8
9 Main `ipython` branch
9 Main `ipython` branch
10 =====================
10 =====================
11
11
12
12
13 New features
13 New features
14 ------------
14 ------------
15
15
16 .. Expand on this:
16 .. Expand on this:
17 * **HTML Notebook**: A powerful new interface puts IPython in your browser. You
17 * **HTML Notebook**: A powerful new interface puts IPython in your browser. You
18 can start it with the command ``ipython notebook``. See :ref:`the Notebook
18 can start it with the command ``ipython notebook``. See :ref:`the Notebook
19 docs <htmlnotebook>` for technical details.
19 docs <htmlnotebook>` for technical details.
20
20
21 * **Tabbed QtConsole**: The QtConsole now supports starting multiple kernels in
21 * **Tabbed QtConsole**: The QtConsole now supports starting multiple kernels in
22 tabs, and has a menubar, so it looks and behaves more like a real application.
22 tabs, and has a menubar, so it looks and behaves more like a real application.
23 Keyboard enthusiasts can disable the menubar with ctrl-shift-M (:ghpull:`887`).
23 Keyboard enthusiasts can disable the menubar with ctrl-shift-M (:ghpull:`887`).
24
24
25 * **Python 3 compatibility**: IPython can now be installed from a single
25 * **Python 3 compatibility**: IPython can now be installed from a single
26 codebase on Python 2 and Python 3. The installation process for Python 3
26 codebase on Python 2 and Python 3. The installation process for Python 3
27 automatically runs 2to3. The same 'default' profile is now used for
27 automatically runs 2to3. The same 'default' profile is now used for
28 Python 2 and 3 (the previous version had a separate 'python3' profile).
28 Python 2 and 3 (the previous version had a separate 'python3' profile).
29
29
30 * **PyPy support**: The terminal interface to IPython now runs under
30 * **PyPy support**: The terminal interface to IPython now runs under
31 `PyPy <http://pypy.org/>`_.
31 `PyPy <http://pypy.org/>`_.
32
32
33 * **SSH Tunnels**: In 0.11, the :mod:`IPython.parallel` Client could tunnel its
33 * **SSH Tunnels**: In 0.11, the :mod:`IPython.parallel` Client could tunnel its
34 connections to the Controller via ssh. Now, the QtConsole :ref:`supports
34 connections to the Controller via ssh. Now, the QtConsole :ref:`supports
35 <ssh_tunnels>` ssh tunneling, as do parallel engines.
35 <ssh_tunnels>` ssh tunneling, as do parallel engines.
36
36
37 * **relaxed command-line parsing**: 0.11 was released with overly-strict
37 * **relaxed command-line parsing**: 0.11 was released with overly-strict
38 command-line parsing, preventing the ability to specify arguments with spaces,
38 command-line parsing, preventing the ability to specify arguments with spaces,
39 e.g. ``ipython --pylab qt`` or ``ipython -c "print 'hi'"``. This has
39 e.g. ``ipython --pylab qt`` or ``ipython -c "print 'hi'"``. This has
40 been fixed, by using argparse. The new parsing is a strict superset of 0.11, so
40 been fixed, by using argparse. The new parsing is a strict superset of 0.11, so
41 any commands in 0.11 should still work in 0.12.
41 any commands in 0.11 should still work in 0.12.
42
42
43 * **HistoryAccessor**: The :class:`~IPython.core.history.HistoryManager` class for
43 * **HistoryAccessor**: The :class:`~IPython.core.history.HistoryManager` class for
44 interacting with your IPython SQLite history database has been split, adding
44 interacting with your IPython SQLite history database has been split, adding
45 a parent :class:`~IPython.core.history.HistoryAccessor` class, so that users can
45 a parent :class:`~IPython.core.history.HistoryAccessor` class, so that users can
46 write code to access and search their IPython history without being in an IPython
46 write code to access and search their IPython history without being in an IPython
47 session (:ghpull:`824`).
47 session (:ghpull:`824`).
48
48
49 * **kernel %gui and %pylab**: The ``%gui`` and ``%pylab`` magics have been restored
49 * **kernel %gui and %pylab**: The ``%gui`` and ``%pylab`` magics have been restored
50 to the IPython kernel (e.g. in the qtconsole or notebook). This allows activation
50 to the IPython kernel (e.g. in the qtconsole or notebook). This allows activation
51 of pylab-mode, or eventloop integration after starting the kernel, which was
51 of pylab-mode, or eventloop integration after starting the kernel, which was
52 unavailable in 0.11. Unlike in the terminal, this can be set only once, and
52 unavailable in 0.11. Unlike in the terminal, this can be set only once, and
53 cannot be changed.
53 cannot be changed.
54
54
55 * **%config**: A new ``%config`` magic has been added, giving easy access to the
55 * **%config**: A new ``%config`` magic has been added, giving easy access to the
56 IPython configuration system at runtime (:ghpull:`923`).
56 IPython configuration system at runtime (:ghpull:`923`).
57
57
58 * **Standalone Kernel**: ``ipython kernel`` subcommand has been added, to allow
58 * **Standalone Kernel**: ``ipython kernel`` subcommand has been added, to allow
59 starting a standalone kernel, that can be used with various frontends.
59 starting a standalone kernel, that can be used with various frontends.
60
60
61 * **Multiline History**: Multiline readline history has been restored to the
61 * **Multiline History**: Multiline readline history has been restored to the
62 Terminal frontend by default (:ghpull:`838`).
62 Terminal frontend by default (:ghpull:`838`).
63
63
64 * **%store**: The ``%store`` magic from earlier versions has been updated and
64 * **%store**: The ``%store`` magic from earlier versions has been updated and
65 placed in an extension, :ref:`extensions_storemagic`. Add 'storemagic' to ``c.InteractiveShellApp.extensions``
65 placed in an extension, :ref:`extensions_storemagic`. Add 'storemagic' to ``c.InteractiveShellApp.extensions``
66 in ipython_config.py to enable it (:ghpull:`1029`).
66 in ipython_config.py to enable it (:ghpull:`1029`).
67
67
68
68
69
69
70 Major Bugs fixed
70 Major Bugs fixed
71 ----------------
71 ----------------
72
72
73 * Simple configuration errors should no longer crash IPython. In 0.11, errors in
73 * Simple configuration errors should no longer crash IPython. In 0.11, errors in
74 config files, as well as invalid trait values, could crash IPython. Now, such
74 config files, as well as invalid trait values, could crash IPython. Now, such
75 errors are reported, and help is displayed.
75 errors are reported, and help is displayed.
76
76
77 * Certain SyntaxErrors no longer crash IPython (e.g. just typing keywords, such as
77 * Certain SyntaxErrors no longer crash IPython (e.g. just typing keywords, such as
78 ``return``, ``break``, etc.). See :ghissue:`704`.
78 ``return``, ``break``, etc.). See :ghissue:`704`.
79
79
80 * IPython path utils, such as :func:`~IPython.utils.path.get_ipython_dir` now check
80 * IPython path utils, such as :func:`~IPython.utils.path.get_ipython_dir` now check
81 for write permissions, so IPython should function on systems where the default
81 for write permissions, so IPython should function on systems where the default
82 path resolution might point to a read-only location, such as ``HOMESHARE`` on
82 path resolution might point to a read-only location, such as ``HOMESHARE`` on
83 Windows (:ghissue:`669`).
83 Windows (:ghissue:`669`).
84
84
85 * :func:`raw_input` now works in the kernel when multiple frontends are in use. The
85 * :func:`raw_input` now works in the kernel when multiple frontends are in use. The
86 request will be sent to the frontend that made the request, and an exception is
86 request will be sent to the frontend that made the request, and an exception is
87 raised if that frontend does not support stdin requests (e.g. the notebook)
87 raised if that frontend does not support stdin requests (e.g. the notebook)
88 (:ghissue:`673`).
88 (:ghissue:`673`).
89
89
90 * :mod:`zmq` version detection no longer uses simple lexicographical comparison to
90 * :mod:`zmq` version detection no longer uses simple lexicographical comparison to
91 check minimum version, which prevents 0.11 from working with pyzmq-2.1.10
91 check minimum version, which prevents 0.11 from working with pyzmq-2.1.10
92 (:ghpull:`758`).
92 (:ghpull:`758`).
93
93
94 * A bug in PySide < 1.0.7 caused crashes on OSX when tooltips were shown
94 * A bug in PySide < 1.0.7 caused crashes on OSX when tooltips were shown
95 (:ghissue:`711`). these tooltips are now disabled on old PySide (:ghpull:`963`).
95 (:ghissue:`711`). these tooltips are now disabled on old PySide (:ghpull:`963`).
96
96
97 * IPython no longer crashes when started on recent versions of Python 3 in
97 * IPython no longer crashes when started on recent versions of Python 3 in
98 Windows (:ghissue:`737`).
98 Windows (:ghissue:`737`).
99
99
100 * Instances of classes defined interactively can now be pickled (:ghissue:`29`;
100 * Instances of classes defined interactively can now be pickled (:ghissue:`29`;
101 :ghpull:`648`). Note that pickling saves a reference to the class definition,
101 :ghpull:`648`). Note that pickling saves a reference to the class definition,
102 so unpickling the instances will only work where the class has been defined.
102 so unpickling the instances will only work where the class has been defined.
103
103
104 .. * use bullet list
104 .. * use bullet list
105
105
106 Backwards incompatible changes
106 Backwards incompatible changes
107 ------------------------------
107 ------------------------------
108
108
109 * IPython connection information is no longer specified via ip/port directly,
109 * IPython connection information is no longer specified via ip/port directly,
110 rather via json connection files. These files are stored in the security
110 rather via json connection files. These files are stored in the security
111 directory, and enable us to turn on HMAC message authentication by default,
111 directory, and enable us to turn on HMAC message authentication by default,
112 significantly improving the security of kernels. Various utility functions
112 significantly improving the security of kernels. Various utility functions
113 have been added to :mod:`IPython.lib.kernel`, for easier connecting to existing
113 have been added to :mod:`IPython.lib.kernel`, for easier connecting to existing
114 kernels.
114 kernels.
115
115
116 * :class:`~IPython.zmq.kernelmanager.KernelManager` now has one ip, and several port
116 * :class:`~IPython.zmq.kernelmanager.KernelManager` now has one ip, and several port
117 traits, rather than several ip/port pair ``_addr`` traits. This better matches the
117 traits, rather than several ip/port pair ``_addr`` traits. This better matches the
118 rest of the code, where the ip cannot not be set separately for each channel.
118 rest of the code, where the ip cannot not be set separately for each channel.
119
119
120 * Custom prompts are now configured using a new class,
121 :class:`~IPython.core.prompts.PromptManager`, which has traits for :attr:`in_template`,
122 :attr:`in2_template` (the ``...:`` continuation prompt), :attr:`out_template`
123 and :attr:`rewrite_template`. This uses Python's string formatting system, so
124 you can use ``{time}`` and ``{cwd}``, although we have preserved the abbreviations
125 from previous versions, e.g. ``\#`` (prompt number) and ``\w`` (working
126 directory). For the list of available fields, refer to the source of
127 :file:`IPython/core/prompts.py`.
128
120 * The class inheritance of the Launchers in :mod:`IPython.parallel.apps.launcher`
129 * The class inheritance of the Launchers in :mod:`IPython.parallel.apps.launcher`
121 used by ipcluster has changed, so that trait names are more consistent across
130 used by ipcluster has changed, so that trait names are more consistent across
122 batch systems. This may require a few renames in your config files, if you
131 batch systems. This may require a few renames in your config files, if you
123 customized the command-line args for launching controllers and engines. The
132 customized the command-line args for launching controllers and engines. The
124 configurable names have also been changed to be clearer that they point to class
133 configurable names have also been changed to be clearer that they point to class
125 names, and can now be specified by name only, rather than requiring the full
134 names, and can now be specified by name only, rather than requiring the full
126 import path of each class, e.g.::
135 import path of each class, e.g.::
127
136
128 IPClusterEngines.engine_launcher = 'IPython.parallel.apps.launcher.MPIExecEngineSetLauncher'
137 IPClusterEngines.engine_launcher = 'IPython.parallel.apps.launcher.MPIExecEngineSetLauncher'
129 IPClusterStart.controller_launcher = 'IPython.parallel.apps.launcher.SSHControllerLauncher'
138 IPClusterStart.controller_launcher = 'IPython.parallel.apps.launcher.SSHControllerLauncher'
130
139
131 would now be specified as::
140 would now be specified as::
132
141
133 IPClusterEngines.engine_launcher_class = 'MPIExec'
142 IPClusterEngines.engine_launcher_class = 'MPIExec'
134 IPClusterStart.controller_launcher_class = 'SSH'
143 IPClusterStart.controller_launcher_class = 'SSH'
135
144
136 The full path will still work, and is necessary for using custom launchers not in
145 The full path will still work, and is necessary for using custom launchers not in
137 IPython's launcher module.
146 IPython's launcher module.
138
147
139 * For embedding a shell, note that the parameter ``user_global_ns`` has been
148 * For embedding a shell, note that the parameter ``user_global_ns`` has been
140 replaced by ``user_module``, and expects a module-like object, rather than
149 replaced by ``user_module``, and expects a module-like object, rather than
141 a namespace dict. The ``user_ns`` parameter works the same way as before, and
150 a namespace dict. The ``user_ns`` parameter works the same way as before, and
142 calling :func:`~IPython.frontend.terminal.embed.embed` with no arguments still
151 calling :func:`~IPython.frontend.terminal.embed.embed` with no arguments still
143 works the same way.
152 works the same way.
144
153
145 .. * use bullet list
154 .. * use bullet list
General Comments 0
You need to be logged in to leave comments. Login now