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