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