##// END OF EJS Templates
PR 2384 to whatsnew
MinRK -
Show More
@@ -1,758 +1,759 b''
1 1 =============
2 2 0.13 Series
3 3 =============
4 4
5 5 Release 0.13.1
6 6 ==============
7 7
8 8 0.13.1 is a bugfix release for 0.13.
9 9
10 10 Notable fixes:
11 11
12 12 * ipcluster launchers were released with a few serious bugs in 0.13, preventing
13 13 the default configuration from working in just about any nontrivial environment
14 14 (SSH and PBS/SGE/LSF launchers all affected).
15 15 * Various installation / name fixes required for Python 3.3.
16 16 * Notebook frontend should no longer be vulnerable to errors in user javascript.
17 17 * Notebook download/save/print should get the right title instead of 'notebook'.
18 18 * Tab completion fixes when using ``IPython.embed_kernel()``.
19 19 * A few NameErrors/AttributeErrors in magics due to the reorganized magics system.
20 20
21 We closed a total of 59 issues (38 pull requests and 21 regular issues);
21 We closed a total of 60 issues (39 pull requests and 21 regular issues);
22 22 this is the full list (generated with the script :file:`tools/github_stats.py`):
23 23
24 Pull Requests (38):
24 Pull Requests (39):
25 25
26 * :ghpull:`2384`: Adapt inline backend to changes in matplotlib
26 27 * :ghpull:`2479`: use new _winapi instead of removed _subprocess
27 28 * :ghpull:`2437`: don't let log cleanup prevent engine start
28 29 * :ghpull:`2405`: clarify TaskScheduler.hwm doc
29 30 * :ghpull:`2377`: Fix installation of man pages in Python 3
30 31 * :ghpull:`2373`: fix missing imports in core.interactiveshell
31 32 * :ghpull:`2365`: fix names of notebooks for download/save
32 33 * :ghpull:`2345`: Remove references to 'version' no longer in argparse. Github issue #2343.
33 34 * :ghpull:`2347`: adjust division error message checking to account for Python 3
34 35 * :ghpull:`2305`: RemoteError._render_traceback_ calls self.render_traceback
35 36 * :ghpull:`2280`: fix SSH passwordless check for OpenSSH
36 37 * :ghpull:`2270`: SSHLauncher tweaks
37 38 * :ghpull:`2261`: Fix: longest_substr([]) -> ''
38 39 * :ghpull:`2250`: fix html in notebook example
39 40 * :ghpull:`2235`: remove spurious print statement from setupbase.py
40 41 * :ghpull:`2223`: Custom tracebacks
41 42 * :ghpull:`2214`: use KernelApp.exec_lines/files in IPEngineApp
42 43 * :ghpull:`2212`: catch errors in markdown javascript
43 44 * :ghpull:`2194`: clean nan/inf in json_clean
44 45 * :ghpull:`2169`: ipdb: pdef, pdoc, pinfo magics all broken
45 46 * :ghpull:`2186`: removed references to h5py dependence in octave magic documentation
46 47 * :ghpull:`2185`: added test for %store, fixed storemagic
47 48 * :ghpull:`2177`: remove numpy install from travis/tox scripts
48 49 * :ghpull:`2170`: Fix tab completion with IPython.embed_kernel().
49 50 * :ghpull:`2163`: fix 'remote_profie_dir' typo in SSH launchers
50 51 * :ghpull:`2117`: use explicit url in notebook example
51 52 * :ghpull:`2126`: ipcluster broken with any batch launcher (PBS/LSF/SGE)
52 53 * :ghpull:`2128`: open notebook copy in different tabs
53 54 * :ghpull:`2073`: allows password and prefix for notebook
54 55 * :ghpull:`2086`: re-alias %ed to %edit in qtconsole
55 56 * :ghpull:`2101`: fix completer deleting newline
56 57 * :ghpull:`2102`: Fix logging on interactive shell.
57 58 * :ghpull:`2063`: Remove umlauts so py3 installations on LANG=C systems succeed.
58 59 * :ghpull:`2068`: record sysinfo in sdist
59 60 * :ghpull:`2067`: update tools/release_windows.py
60 61 * :ghpull:`2065`: Fix parentheses typo
61 62 * :ghpull:`2062`: Remove duplicates and auto-generated files from repo.
62 63 * :ghpull:`2061`: use explicit tuple in exception
63 64 * :ghpull:`2060`: change minus to \- or \(hy in manpages
64 65
65 66 Issues (21):
66 67
67 68 * :ghissue:`2471`: _subprocess module removed in Python 3.3
68 69 * :ghissue:`2374`: Issues with man pages
69 70 * :ghissue:`2435`: ipengines fail if clean_logs enabled
70 71 * :ghissue:`2372`: interactiveshell.py misses urllib and io_open imports
71 72 * :ghissue:`2227`: print name for IPython Notebooks has become uninformative
72 73 * :ghissue:`2343`: Installing in a python 3.3b2 or python 3.3rc1 virtual environment.
73 74 * :ghissue:`2303`: remote tracebacks broken since 952d0d6 (PR #2223)
74 75 * :ghissue:`2266`: SSH passwordless check with OpenSSH checks for the wrong thing
75 76 * :ghissue:`2252`: %paste throws an exception with empty clipboard
76 77 * :ghissue:`2221`: Avoid importing from IPython.parallel in core
77 78 * :ghissue:`2213`: Can't trigger startup code in Engines
78 79 * :ghissue:`2187`: NaN in object_info_reply JSON causes parse error
79 80 * :ghissue:`2173`: oct2py v >= 0.3.1 doesn't need h5py anymore
80 81 * :ghissue:`2099`: storemagic needs to use self.shell
81 82 * :ghissue:`2139`: 00_notebook_tour Image example broken on master
82 83 * :ghissue:`2085`: %ed magic fails in qtconsole
83 84 * :ghissue:`2082`: Qt Console output spacing
84 85 * :ghissue:`2057`: setup fails for python3 with LANG=C
85 86 * :ghissue:`2059`: duplicate and modified files in documentation
86 87 * :ghissue:`2056`: except-shadows-builtin osm.py:687
87 88 * :ghissue:`2058`: hyphen-used-as-minus-sign in manpages
88 89
89 90
90 91 Release 0.13
91 92 ============
92 93
93 94 IPython 0.13 contains several major new features, as well as a large amount of
94 95 bug and regression fixes. The previous version (0.12) was released on December
95 96 19 2011, and in this development cycle we had:
96 97
97 98 - ~6 months of work.
98 99 - 373 pull requests merged.
99 100 - 742 issues closed (non-pull requests).
100 101 - contributions from 62 authors.
101 102 - 1760 commits.
102 103 - a diff of 114226 lines.
103 104
104 105 The amount of work included in this release is so large, that we can only cover
105 106 here the main highlights; please see our :ref:`detailed release statistics
106 107 <issues_list_013>` for links to every issue and pull request closed on GitHub
107 108 as well as a full list of individual contributors.
108 109
109 110
110 111 Major Notebook improvements: new user interface and more
111 112 --------------------------------------------------------
112 113
113 114 The IPython Notebook, which has proven since its release to be wildly popular,
114 115 has seen a massive amount of work in this release cycle, leading to a
115 116 significantly improved user experience as well as many new features.
116 117
117 118 The first user-visible change is a reorganization of the user interface; the
118 119 left panel has been removed and was replaced by a real menu system and a
119 120 toolbar with icons. Both the toolbar and the header above the menu can be
120 121 collapsed to leave an unobstructed working area:
121 122
122 123 .. image:: ../_static/ipy_013_notebook_spectrogram.png
123 124 :width: 460px
124 125 :alt: New user interface for Notebook
125 126 :align: center
126 127 :target: ../_static/ipy_013_notebook_spectrogram.png
127 128
128 129 The notebook handles very long outputs much better than before (this was a
129 130 serious usability issue when running processes that generated massive amounts
130 131 of output). Now, in the presence of outputs longer than ~100 lines, the
131 132 notebook will automatically collapse to a scrollable area and the entire left
132 133 part of this area controls the display: one click in this area will expand the
133 134 output region completely, and a double-click will hide it completely. This
134 135 figure shows both the scrolled and hidden modes:
135 136
136 137 .. image:: ../_static/ipy_013_notebook_long_out.png
137 138 :width: 460px
138 139 :alt: Scrolling and hiding of long output in the notebook.
139 140 :align: center
140 141 :target: ../_static/ipy_013_notebook_long_out.png
141 142
142 143 .. note::
143 144
144 145 The auto-folding of long outputs is disabled in Firefox due to bugs in its
145 146 scrolling behavior. See :ghpull:`2047` for details.
146 147
147 148 Uploading notebooks to the dashboard is now easier: in addition to drag and
148 149 drop (which can be finicky sometimes), you can now click on the upload text and
149 150 use a regular file dialog box to select notebooks to upload. Furthermore, the
150 151 notebook dashboard now auto-refreshes its contents and offers buttons to shut
151 152 down any running kernels (:ghpull:`1739`):
152 153
153 154 .. image:: ../_static/ipy_013_dashboard.png
154 155 :width: 460px
155 156 :alt: Improved dashboard
156 157 :align: center
157 158 :target: ../_static/ipy_013_dashboard.png
158 159
159 160
160 161 Cluster management
161 162 ~~~~~~~~~~~~~~~~~~
162 163
163 164 The notebook dashboard can now also start and stop clusters, thansk to a new
164 165 tab in the dashboard user interface:
165 166
166 167 .. image:: ../_static/ipy_013_dashboard_cluster.png
167 168 :width: 460px
168 169 :alt: Cluster management from the notebook dashboard
169 170 :align: center
170 171 :target: ../_static/ipy_013_dashboard_cluster.png
171 172
172 173 This interface allows, for each profile you have configured, to start and stop
173 174 a cluster (and optionally override the default number of engines corresponding
174 175 to that configuration). While this hides all error reporting, once you have a
175 176 configuration that you know works smoothly, it is a very convenient interface
176 177 for controlling your parallel resources.
177 178
178 179
179 180 New notebook format
180 181 ~~~~~~~~~~~~~~~~~~~
181 182
182 183 The notebooks saved now use version 3 of our format, which supports heading
183 184 levels as well as the concept of 'raw' text cells that are not rendered as
184 185 Markdown. These will be useful with converters_ we are developing, to pass raw
185 186 markup (say LaTeX). That conversion code is still under heavy development and
186 187 not quite ready for prime time, but we welcome help on this front so that we
187 188 can merge it for full production use as soon as possible.
188 189
189 190 .. _converters: https://github.com/ipython/nbconvert
190 191
191 192 .. note::
192 193
193 194 v3 notebooks can *not* be read by older versions of IPython, but we provide
194 195 a `simple script`_ that you can use in case you need to export a v3
195 196 notebook to share with a v2 user.
196 197
197 198 .. _simple script: https://gist.github.com/1935808
198 199
199 200
200 201 JavaScript refactoring
201 202 ~~~~~~~~~~~~~~~~~~~~~~
202 203
203 204 All the client-side JavaScript has been decoupled to ease reuse of parts of the
204 205 machinery without having to build a full-blown notebook. This will make it much
205 206 easier to communicate with an IPython kernel from existing web pages and to
206 207 integrate single cells into other sites, without loading the full notebook
207 208 document-like UI. :ghpull:`1711`.
208 209
209 210 This refactoring also enables the possibility of writing dynamic javascript
210 211 widgets that are returned from Python code and that present an interactive view
211 212 to the user, with callbacks in Javascript executing calls to the Kernel. This
212 213 will enable many interactive elements to be added by users in notebooks.
213 214
214 215 An example of this capability has been provided as a proof of concept in
215 216 :file:`docs/examples/widgets` that lets you directly communicate with one or more
216 217 parallel engines, acting as a mini-console for parallel debugging and
217 218 introspection.
218 219
219 220
220 221 Improved tooltips
221 222 ~~~~~~~~~~~~~~~~~
222 223
223 224 The object tooltips have gained some new functionality. By pressing tab several
224 225 times, you can expand them to see more of a docstring, keep them visible as you
225 226 fill in a function's parameters, or transfer the information to the pager at the
226 227 bottom of the screen. For the details, look at the example notebook
227 228 :file:`01_notebook_introduction.ipynb`.
228 229
229 230 .. figure:: ../_static/ipy_013_notebook_tooltip.png
230 231 :width: 460px
231 232 :alt: Improved tooltips in the notebook.
232 233 :align: center
233 234 :target: ../_static/ipy_013_notebook_tooltip.png
234 235
235 236 The new notebook tooltips.
236 237
237 238 Other improvements to the Notebook
238 239 ----------------------------------
239 240
240 241 These are some other notable small improvements to the notebook, in addition to
241 242 many bug fixes and minor changes to add polish and robustness throughout:
242 243
243 244 * The notebook pager (the area at the bottom) is now resizeable by dragging its
244 245 divider handle, a feature that had been requested many times by just about
245 246 anyone who had used the notebook system. :ghpull:`1705`.
246 247
247 248 * It is now possible to open notebooks directly from the command line; for
248 249 example: ``ipython notebook path/`` will automatically set ``path/`` as the
249 250 notebook directory, and ``ipython notebook path/foo.ipynb`` will further
250 251 start with the ``foo.ipynb`` notebook opened. :ghpull:`1686`.
251 252
252 253 * If a notebook directory is specified with ``--notebook-dir`` (or with the
253 254 corresponding configuration flag ``NotebookManager.notebook_dir``), all
254 255 kernels start in this directory.
255 256
256 257 * Fix codemirror clearing of cells with ``Ctrl-Z``; :ghpull:`1965`.
257 258
258 259 * Text (markdown) cells now line wrap correctly in the notebook, making them
259 260 much easier to edit :ghpull:`1330`.
260 261
261 262 * PNG and JPEG figures returned from plots can be interactively resized in the
262 263 notebook, by dragging them from their lower left corner. :ghpull:`1832`.
263 264
264 265 * Clear ``In []`` prompt numbers on "Clear All Output". For more
265 266 version-control-friendly ``.ipynb`` files, we now strip all prompt numbers
266 267 when doing a "Clear all output". This reduces the amount of noise in
267 268 commit-to-commit diffs that would otherwise show the (highly variable) prompt
268 269 number changes. :ghpull:`1621`.
269 270
270 271 * The notebook server now requires *two* consecutive ``Ctrl-C`` within 5
271 272 seconds (or an interactive confirmation) to terminate operation. This makes
272 273 it less likely that you will accidentally kill a long-running server by
273 274 typing ``Ctrl-C`` in the wrong terminal. :ghpull:`1609`.
274 275
275 276 * Using ``Ctrl-S`` (or ``Cmd-S`` on a Mac) actually saves the notebook rather
276 277 than providing the fairly useless browser html save dialog. :ghpull:`1334`.
277 278
278 279 * Allow accessing local files from the notebook (in urls), by serving any local
279 280 file as the url ``files/<relativepath>``. This makes it possible to, for
280 281 example, embed local images in a notebook. :ghpull:`1211`.
281 282
282 283
283 284 Cell magics
284 285 -----------
285 286
286 287 We have completely refactored the magic system, finally moving the magic
287 288 objects to standalone, independent objects instead of being the mixin class
288 289 we'd had since the beginning of IPython (:ghpull:`1732`). Now, a separate base
289 290 class is provided in :class:`IPython.core.magic.Magics` that users can subclass
290 291 to create their own magics. Decorators are also provided to create magics from
291 292 simple functions without the need for object orientation. Please see the
292 293 :ref:`magic` docs for further details.
293 294
294 295 All builtin magics now exist in a few subclasses that group together related
295 296 functionality, and the new :mod:`IPython.core.magics` package has been created
296 297 to organize this into smaller files.
297 298
298 299 This cleanup was the last major piece of deep refactoring needed from the
299 300 original 2001 codebase.
300 301
301 302 We have also introduced a new type of magic function, prefixed with `%%`
302 303 instead of `%`, which operates at the whole-cell level. A cell magic receives
303 304 two arguments: the line it is called on (like a line magic) and the body of the
304 305 cell below it.
305 306
306 307 Cell magics are most natural in the notebook, but they also work in the
307 308 terminal and qt console, with the usual approach of using a blank line to
308 309 signal cell termination.
309 310
310 311 For example, to time the execution of several statements::
311 312
312 313 %%timeit x = 0 # setup
313 314 for i in range(100000):
314 315 x += i**2
315 316
316 317 This is particularly useful to integrate code in another language, and cell
317 318 magics already exist for shell scripts, Cython, R and Octave. Using ``%%script
318 319 /usr/bin/foo``, you can run a cell in any interpreter that accepts code via
319 320 stdin.
320 321
321 322 Another handy cell magic makes it easy to write short text files: ``%%file
322 323 ~/save/to/here.txt``.
323 324
324 325 The following cell magics are now included by default; all those that use
325 326 special interpreters (Perl, Ruby, bash, etc.) assume you have the requisite
326 327 interpreter installed:
327 328
328 329 * ``%%!``: run cell body with the underlying OS shell; this is similar to
329 330 prefixing every line in the cell with ``!``.
330 331
331 332 * ``%%bash``: run cell body under bash.
332 333
333 334 * ``%%capture``: capture the output of the code in the cell (and stderr as
334 335 well). Useful to run codes that produce too much output that you don't even
335 336 want scrolled.
336 337
337 338 * ``%%file``: save cell body as a file.
338 339
339 340 * ``%%perl``: run cell body using Perl.
340 341
341 342 * ``%%prun``: run cell body with profiler (cell extension of ``%prun``).
342 343
343 344 * ``%%python3``: run cell body using Python 3.
344 345
345 346 * ``%%ruby``: run cell body using Ruby.
346 347
347 348 * ``%%script``: run cell body with the script specified in the first line.
348 349
349 350 * ``%%sh``: run cell body using sh.
350 351
351 352 * ``%%sx``: run cell with system shell and capture process output (cell
352 353 extension of ``%sx``).
353 354
354 355 * ``%%system``: run cell with system shell (``%%!`` is an alias to this).
355 356
356 357 * ``%%timeit``: time the execution of the cell (extension of ``%timeit``).
357 358
358 359 This is what some of the script-related magics look like in action:
359 360
360 361 .. image:: ../_static/ipy_013_notebook_script_cells.png
361 362 :width: 460px
362 363 :alt: Cluster management from the notebook dashboard
363 364 :align: center
364 365 :target: ../_static/ipy_013_notebook_script_cells.png
365 366
366 367 In addition, we have also a number of :ref:`extensions <extensions_overview>`
367 368 that provide specialized magics. These typically require additional software
368 369 to run and must be manually loaded via ``%load_ext <extension name>``, but are
369 370 extremely useful. The following extensions are provided:
370 371
371 372 **Cython magics** (extension :ref:`cythonmagic <extensions_cythonmagic>`)
372 373 This extension provides magics to automatically build and compile Python
373 374 extension modules using the Cython_ language. You must install Cython
374 375 separately, as well as a C compiler, for this to work. The examples
375 376 directory in the source distribution ships with a full notebook
376 377 demonstrating these capabilities:
377 378
378 379 .. image:: ../_static/ipy_013_notebook_cythonmagic.png
379 380 :width: 460px
380 381 :alt: Cython magic
381 382 :align: center
382 383 :target: ../_static/ipy_013_notebook_cythonmagic.png
383 384
384 385 .. _cython: http://cython.org
385 386
386 387 **Octave magics** (extension :ref:`octavemagic <extensions_octavemagic>`)
387 388 This extension provides several magics that support calling code written in
388 389 the Octave_ language for numerical computing. You can execute single-lines
389 390 or whole blocks of Octave code, capture both output and figures inline
390 391 (just like matplotlib plots), and have variables automatically converted
391 392 between the two languages. To use this extension, you must have Octave
392 393 installed as well as the oct2py_ package. The examples
393 394 directory in the source distribution ships with a full notebook
394 395 demonstrating these capabilities:
395 396
396 397 .. image:: ../_static/ipy_013_notebook_octavemagic.png
397 398 :width: 460px
398 399 :alt: Octave magic
399 400 :align: center
400 401 :target: ../_static/ipy_013_notebook_octavemagic.png
401 402
402 403 .. _octave: http://www.gnu.org/software/octave
403 404 .. _oct2py: http://pypi.python.org/pypi/oct2py
404 405
405 406 **R magics** (extension :ref:`rmagic <extensions_rmagic>`)
406 407 This extension provides several magics that support calling code written in
407 408 the R_ language for statistical data analysis. You can execute
408 409 single-lines or whole blocks of R code, capture both output and figures
409 410 inline (just like matplotlib plots), and have variables automatically
410 411 converted between the two languages. To use this extension, you must have
411 412 R installed as well as the rpy2_ package that bridges Python and R. The
412 413 examples directory in the source distribution ships with a full notebook
413 414 demonstrating these capabilities:
414 415
415 416 .. image:: ../_static/ipy_013_notebook_rmagic.png
416 417 :width: 460px
417 418 :alt: R magic
418 419 :align: center
419 420 :target: ../_static/ipy_013_notebook_rmagic.png
420 421
421 422 .. _R: http://www.r-project.org
422 423 .. _rpy2: http://rpy.sourceforge.net/rpy2.html
423 424
424 425
425 426 Tab completer improvements
426 427 --------------------------
427 428
428 429 Useful tab-completion based on live inspection of objects is one of the most
429 430 popular features of IPython. To make this process even more user-friendly, the
430 431 completers of both the Qt console and the Notebook have been reworked.
431 432
432 433 The Qt console comes with a new ncurses-like tab completer, activated by
433 434 default, which lets you cycle through the available completions by pressing tab,
434 435 or select a completion with the arrow keys (:ghpull:`1851`).
435 436
436 437 .. figure:: ../_static/ipy_013_qtconsole_completer.png
437 438 :width: 460px
438 439 :alt: ncurses-like completer, with highlighted selection.
439 440 :align: center
440 441 :target: ../_static/ipy_013_qtconsole_completer.png
441 442
442 443 The new improved Qt console's ncurses-like completer allows to easily
443 444 navigate thought long list of completions.
444 445
445 446 In the notebook, completions are now sourced both from object introspection and
446 447 analysis of surrounding code, so limited completions can be offered for
447 448 variables defined in the current cell, or while the kernel is busy
448 449 (:ghpull:`1711`).
449 450
450 451
451 452 We have implemented a new configurable flag to control tab completion on
452 453 modules that provide the ``__all__`` attribute::
453 454
454 455 IPCompleter.limit_to__all__= Boolean
455 456
456 457 This instructs the completer to honor ``__all__`` for the completion.
457 458 Specifically, when completing on ``object.<tab>``, if True: only those names
458 459 in ``obj.__all__`` will be included. When False [default]: the ``__all__``
459 460 attribute is ignored. :ghpull:`1529`.
460 461
461 462
462 463 Improvements to the Qt console
463 464 ------------------------------
464 465
465 466 The Qt console continues to receive improvements and refinements, despite the
466 467 fact that it is by now a fairly mature and robust component. Lots of small
467 468 polish has gone into it, here are a few highlights:
468 469
469 470 * A number of changes were made to the underlying code for easier integration
470 471 into other projects such as Spyder_ (:ghpull:`2007`, :ghpull:`2024`).
471 472
472 473 * Improved menus with a new Magic menu that is organized by magic groups (this
473 474 was made possible by the reorganization of the magic system
474 475 internals). :ghpull:`1782`.
475 476
476 477 * Allow for restarting kernels without clearing the qtconsole, while leaving a
477 478 visible indication that the kernel has restarted. :ghpull:`1681`.
478 479
479 480 * Allow the native display of jpeg images in the qtconsole. :ghpull:`1643`.
480 481
481 482 .. _spyder: https://code.google.com/p/spyderlib
482 483
483 484
484 485
485 486 Parallel
486 487 --------
487 488
488 489 The parallel tools have been improved and fine-tuned on multiple fronts. Now,
489 490 the creation of an :class:`IPython.parallel.Client` object automatically
490 491 activates a line and cell magic function ``px`` that sends its code to all the
491 492 engines. Further magics can be easily created with the :meth:`.Client.activate`
492 493 method, to conveniently execute code on any subset of engines. :ghpull:`1893`.
493 494
494 495 The ``%%px`` cell magic can also be given an optional targets argument, as well
495 496 as a ``--out`` argument for storing its output.
496 497
497 498 A new magic has also been added, ``%pxconfig``, that lets you configure various
498 499 defaults of the parallel magics. As usual, type ``%pxconfig?`` for details.
499 500
500 501 The exception reporting in parallel contexts has been improved to be easier to
501 502 read. Now, IPython directly reports the remote exceptions without showing any
502 503 of the internal execution parts:
503 504
504 505 .. image:: ../_static/ipy_013_par_tb.png
505 506 :width: 460px
506 507 :alt: Improved parallel exceptions.
507 508 :align: center
508 509 :target: ../_static/ipy_013_par_tb.png
509 510
510 511 The parallel tools now default to using ``NoDB`` as the storage backend for
511 512 intermediate results. This means that the default usage case will have a
512 513 significantly reduced memory footprint, though certain advanced features are
513 514 not available with this backend. For more details, see :ref:`parallel_db`.
514 515
515 516 The parallel magics now display all output, so you can do parallel plotting or
516 517 other actions with complex display. The ``px`` magic has now both line and cell
517 518 modes, and in cell mode finer control has been added about how to collate
518 519 output from multiple engines. :ghpull:`1768`.
519 520
520 521 There have also been incremental improvements to the SSH launchers:
521 522
522 523 * add to_send/fetch steps for moving connection files around.
523 524
524 525 * add SSHProxyEngineSetLauncher, for invoking to `ipcluster engines` on a
525 526 remote host. This can be used to start a set of engines via PBS/SGE/MPI
526 527 *remotely*.
527 528
528 529 This makes the SSHLauncher usable on machines without shared filesystems.
529 530
530 531 A number of 'sugar' methods/properties were added to AsyncResult that are
531 532 quite useful (:ghpull:`1548`) for everday work:
532 533
533 534 * ``ar.wall_time`` = received - submitted
534 535 * ``ar.serial_time`` = sum of serial computation time
535 536 * ``ar.elapsed`` = time since submission (wall_time if done)
536 537 * ``ar.progress`` = (int) number of sub-tasks that have completed
537 538 * ``len(ar)`` = # of tasks
538 539 * ``ar.wait_interactive()``: prints progress
539 540
540 541 Added :meth:`.Client.spin_thread` / :meth:`~.Client.stop_spin_thread` for
541 542 running spin in a background thread, to keep zmq queue clear. This can be used
542 543 to ensure that timing information is as accurate as possible (at the cost of
543 544 having a background thread active).
544 545
545 546 Set TaskScheduler.hwm default to 1 instead of 0. 1 has more
546 547 predictable/intuitive behavior, if often slower, and thus a more logical
547 548 default. Users whose workloads require maximum throughput and are largely
548 549 homogeneous in time per task can make the optimization themselves, but now the
549 550 behavior will be less surprising to new users. :ghpull:`1294`.
550 551
551 552
552 553 Kernel/Engine unification
553 554 -------------------------
554 555
555 556 This is mostly work 'under the hood', but it is actually a *major* achievement
556 557 for the project that has deep implications in the long term: at last, we have
557 558 unified the main object that executes as the user's interactive shell (which we
558 559 refer to as the *IPython kernel*) with the objects that run in all the worker
559 560 nodes of the parallel computing facilities (the *IPython engines*). Ever since
560 561 the first implementation of IPython's parallel code back in 2006, we had wanted
561 562 to have these two roles be played by the same machinery, but a number of
562 563 technical reasons had prevented that from being true.
563 564
564 565 In this release we have now merged them, and this has a number of important
565 566 consequences:
566 567
567 568 * It is now possible to connect any of our clients (qtconsole or terminal
568 569 console) to any individual parallel engine, with the *exact* behavior of
569 570 working at a 'regular' IPython console/qtconsole. This makes debugging,
570 571 plotting, etc. in parallel scenarios vastly easier.
571 572
572 573 * Parallel engines can always execute arbitrary 'IPython code', that is, code
573 574 that has magics, shell extensions, etc. In combination with the ``%%px``
574 575 magics, it is thus extremely natural for example to send to all engines a
575 576 block of Cython or R code to be executed via the new Cython and R magics. For
576 577 example, this snippet would send the R block to all active engines in a
577 578 cluster::
578 579
579 580 %%px
580 581 %%R
581 582 ... R code goes here
582 583
583 584 * It is possible to embed not only an interactive shell with the
584 585 :func:`IPython.embed` call as always, but now you can also embed a *kernel*
585 586 with :func:`IPython.embed_kernel()`. Embedding an IPython kernel in an
586 587 application is useful when you want to use :func:`IPython.embed` but don't
587 588 have a terminal attached on stdin and stdout.
588 589
589 590 * The new :func:`IPython.parallel.bind_kernel` allows you to promote Engines to
590 591 listening Kernels, and connect QtConsoles to an Engine and debug it
591 592 directly.
592 593
593 594 In addition, having a single core object through our entire architecture also
594 595 makes the project conceptually cleaner, easier to maintain and more robust.
595 596 This took a lot of work to get in place, but we are thrilled to have this major
596 597 piece of architecture finally where we'd always wanted it to be.
597 598
598 599
599 600 Official Public API
600 601 -------------------
601 602
602 603 We have begun organizing our API for easier public use, with an eye towards an
603 604 official IPython 1.0 release which will firmly maintain this API compatible for
604 605 its entire lifecycle. There is now an :mod:`IPython.display` module that
605 606 aggregates all display routines, and the :mod:`IPython.config` namespace has
606 607 all public configuration tools. We will continue improving our public API
607 608 layout so that users only need to import names one level deeper than the main
608 609 ``IPython`` package to access all public namespaces.
609 610
610 611
611 612 IPython notebook file icons
612 613 ---------------------------
613 614
614 615 The directory ``docs/resources`` in the source distribution contains SVG and
615 616 PNG versions of our file icons, as well as an ``Info.plist.example`` file with
616 617 instructions to install them on Mac OSX. This is a first draft of our icons,
617 618 and we encourage contributions from users with graphic talent to improve them
618 619 in the future:
619 620
620 621 .. image:: ../../resources/ipynb_icon_128x128.png
621 622 :alt: IPython notebook file icon.
622 623
623 624
624 625 New top-level `locate` command
625 626 ------------------------------
626 627
627 628 Add `locate` entry points; these would be useful for quickly locating IPython
628 629 directories and profiles from other (non-Python) applications. :ghpull:`1762`.
629 630
630 631 Examples::
631 632
632 633 $> ipython locate
633 634 /Users/me/.ipython
634 635
635 636 $> ipython locate profile foo
636 637 /Users/me/.ipython/profile_foo
637 638
638 639 $> ipython locate profile
639 640 /Users/me/.ipython/profile_default
640 641
641 642 $> ipython locate profile dne
642 643 [ProfileLocate] Profile u'dne' not found.
643 644
644 645
645 646 Other new features and improvements
646 647 -----------------------------------
647 648
648 649 * **%install_ext**: A new magic function to install an IPython extension from
649 650 a URL. E.g. ``%install_ext
650 651 https://bitbucket.org/birkenfeld/ipython-physics/raw/default/physics.py``.
651 652
652 653 * The ``%loadpy`` magic is no longer restricted to Python files, and has been
653 654 renamed ``%load``. The old name remains as an alias.
654 655
655 656 * New command line arguments will help external programs find IPython folders:
656 657 ``ipython locate`` finds the user's IPython directory, and ``ipython locate
657 658 profile foo`` finds the folder for the 'foo' profile (if it exists).
658 659
659 660 * The :envvar:`IPYTHON_DIR` environment variable, introduced in the Great
660 661 Reorganization of 0.11 and existing only in versions 0.11-0.13, has been
661 662 deprecated. As described in :ghpull:`1167`, the complexity and confusion of
662 663 migrating to this variable is not worth the aesthetic improvement. Please use
663 664 the historical :envvar:`IPYTHONDIR` environment variable instead.
664 665
665 666 * The default value of *interactivity* passed from
666 667 :meth:`~IPython.core.interactiveshell.InteractiveShell.run_cell` to
667 668 :meth:`~IPython.core.interactiveshell.InteractiveShell.run_ast_nodes`
668 669 is now configurable.
669 670
670 671 * New ``%alias_magic`` function to conveniently create aliases of existing
671 672 magics, if you prefer to have shorter names for personal use.
672 673
673 674 * We ship unminified versions of the JavaScript libraries we use, to better
674 675 comply with Debian's packaging policies.
675 676
676 677 * Simplify the information presented by ``obj?/obj??`` to eliminate a few
677 678 redundant fields when possible. :ghpull:`2038`.
678 679
679 680 * Improved continuous integration for IPython. We now have automated test runs
680 681 on `Shining Panda <https://jenkins.shiningpanda.com/ipython>`_ and `Travis-CI
681 682 <http://travis-ci.org/#!/ipython/ipython>`_, as well as `Tox support
682 683 <http://tox.testrun.org>`_.
683 684
684 685 * The `vim-ipython`_ functionality (externally developed) has been updated to
685 686 the latest version.
686 687
687 688 .. _vim-ipython: https://github.com/ivanov/vim-ipython
688 689
689 690 * The ``%save`` magic now has a ``-f`` flag to force overwriting, which makes
690 691 it much more usable in the notebook where it is not possible to reply to
691 692 interactive questions from the kernel. :ghpull:`1937`.
692 693
693 694 * Use dvipng to format sympy.Matrix, enabling display of matrices in the Qt
694 695 console with the sympy printing extension. :ghpull:`1861`.
695 696
696 697 * Our messaging protocol now has a reasonable test suite, helping ensure that
697 698 we don't accidentally deviate from the spec and possibly break third-party
698 699 applications that may have been using it. We encourage users to contribute
699 700 more stringent tests to this part of the test suite. :ghpull:`1627`.
700 701
701 702 * Use LaTeX to display, on output, various built-in types with the SymPy
702 703 printing extension. :ghpull:`1399`.
703 704
704 705 * Add Gtk3 event loop integration and example. :ghpull:`1588`.
705 706
706 707 * ``clear_output`` improvements, which allow things like progress bars and other
707 708 simple animations to work well in the notebook (:ghpull:`1563`):
708 709
709 710 * `clear_output()` clears the line, even in terminal IPython, the QtConsole
710 711 and plain Python as well, by printing `\r` to streams.
711 712
712 713 * `clear_output()` avoids the flicker in the notebook by adding a delay,
713 714 and firing immediately upon the next actual display message.
714 715
715 716 * `display_javascript` hides its `output_area` element, so using display to
716 717 run a bunch of javascript doesn't result in ever-growing vertical space.
717 718
718 719 * Add simple support for running inside a virtualenv. While this doesn't
719 720 supplant proper installation (as users should do), it helps ad-hoc calling of
720 721 IPython from inside a virtualenv. :ghpull:`1388`.
721 722
722 723
723 724 Major Bugs fixed
724 725 ----------------
725 726
726 727 In this cycle, we have :ref:`closed over 740 issues <issues_list_013>`, but a
727 728 few major ones merit special mention:
728 729
729 730 * The ``%pastebin`` magic has been updated to point to gist.github.com, since
730 731 unfortunately http://paste.pocoo.org has closed down. We also added a -d flag
731 732 for the user to provide a gist description string. :ghpull:`1670`.
732 733
733 734 * Fix ``%paste`` that would reject certain valid inputs. :ghpull:`1258`.
734 735
735 736 * Fix sending and receiving of Numpy structured arrays (those with composite
736 737 dtypes, often used as recarrays). :ghpull:`2034`.
737 738
738 739 * Reconnect when the websocket connection closes unexpectedly. :ghpull:`1577`.
739 740
740 741 * Fix truncated representation of objects in the debugger by showing at least
741 742 80 characters' worth of information. :ghpull:`1793`.
742 743
743 744 * Fix logger to be Unicode-aware: logging could crash ipython if there was
744 745 unicode in the input. :ghpull:`1792`.
745 746
746 747 * Fix images missing from XML/SVG export in the Qt console. :ghpull:`1449`.
747 748
748 749 * Fix deepreload on Python 3. :ghpull:`1625`, as well as having a much cleaner
749 750 and more robust implementation of deepreload in general. :ghpull:`1457`.
750 751
751 752
752 753 Backwards incompatible changes
753 754 ------------------------------
754 755
755 756 * The exception :exc:`IPython.core.error.TryNext` previously accepted
756 757 arguments and keyword arguments to be passed to the next implementation
757 758 of the hook. This feature was removed as it made error message propagation
758 759 difficult and violated the principle of loose coupling.
General Comments 0
You need to be logged in to leave comments. Login now