##// END OF EJS Templates
release notes for 3.1
Min RK -
Show More
@@ -1,173 +1,220 b''
1 1 .. _issues_list_3:
2 2
3 3 Issues closed in the 3.x development cycle
4 4 ==========================================
5 5
6 Issues closed in 3.1
7 --------------------
8
9 GitHub stats for 2015/02/27 - 2015/04/03 (since 3.0)
10
11 These lists are automatically generated, and may be incomplete or contain duplicates.
12
13 We closed 46 issues and merged 133 pull requests.
14 The full list can be seen `on GitHub <https://github.com/ipython/ipython/milestones/3.1>`_.
15
16 The following 33 authors contributed 344 commits:
17
18 * Abe Guerra
19 * Adal Chiriliuc
20 * Benjamin Ragan-Kelley
21 * Brian Drawert
22 * Fernando Perez
23 * Gareth Elston
24 * Gert-Ludwig Ingold
25 * Giuseppe Venturini
26 * Jakob Gager
27 * Jan Schulz
28 * Jason Grout
29 * Jessica B. Hamrick
30 * Jonathan Frederic
31 * Justin Tyberg
32 * Lorena Pantano
33 * mashenjun
34 * Mathieu
35 * Matthias Bussonnier
36 * Morten Enemark Lund
37 * Naveen Nathan
38 * Nicholas Bollweg
39 * onesandzeroes
40 * Patrick Snape
41 * Peter Parente
42 * RickWinter
43 * Robert Smith
44 * Ryan Nelson
45 * Scott Sanderson
46 * Sylvain Corlay
47 * Thomas Kluyver
48 * tmtabor
49 * Wieland Hoffmann
50 * Yuval Langer
51
52
6 53 Issues closed in 3.0
7 ----------------------
54 --------------------
8 55
9 56 GitHub stats for 2014/04/02 - 2015/02/13 (since 2.0)
10 57
11 58 These lists are automatically generated, and may be incomplete or contain duplicates.
12 59
13 60 We closed 469 issues and merged 925 pull requests.
14 61 The full list can be seen `on GitHub <https://github.com/ipython/ipython/milestones/3.0>`_.
15 62
16 63 The following 155 authors contributed 5975 commits.
17 64
18 65 * A.J. Holyoake
19 66 * abalkin
20 67 * Adam Hodgen
21 68 * Adrian Price-Whelan
22 69 * Amin Bandali
23 70 * Andreas Amann
24 71 * Andrew Dawes
25 72 * Andrew Jesaitis
26 73 * Andrew Payne
27 74 * AnneTheAgile
28 75 * Aron Ahmadia
29 76 * Ben Duffield
30 77 * Benjamin ABEL
31 78 * Benjamin Ragan-Kelley
32 79 * Benjamin Schultz
33 80 * Björn Grüning
34 81 * Björn Linse
35 82 * Blake Griffith
36 83 * Boris Egorov
37 84 * Brian E. Granger
38 85 * bsvh
39 86 * Carlos Cordoba
40 87 * Cedric GESTES
41 88 * cel
42 89 * chebee7i
43 90 * Christoph Gohlke
44 91 * CJ Carey
45 92 * Cyrille Rossant
46 93 * Dale Jung
47 94 * Damián Avila
48 95 * Damon Allen
49 96 * Daniel B. Vasquez
50 97 * Daniel Rocco
51 98 * Daniel Wehner
52 99 * Dav Clark
53 100 * David Hirschfeld
54 101 * David Neto
55 102 * dexterdev
56 103 * Dimitry Kloper
57 104 * dongweiming
58 105 * Doug Blank
59 106 * drevicko
60 107 * Dustin Rodriguez
61 108 * Eric Firing
62 109 * Eric Galloway
63 110 * Erik M. Bray
64 111 * Erik Tollerud
65 112 * Ezequiel (Zac) Panepucci
66 113 * Fernando Perez
67 114 * foogunlana
68 115 * Francisco de la Peña
69 116 * George Titsworth
70 117 * Gordon Ball
71 118 * gporras
72 119 * Grzegorz Rożniecki
73 120 * Helen ST
74 121 * immerrr
75 122 * Ingolf Becker
76 123 * Jakob Gager
77 124 * James Goppert
78 125 * James Porter
79 126 * Jan Schulz
80 127 * Jason Goad
81 128 * Jason Gors
82 129 * Jason Grout
83 130 * Jason Newton
84 131 * jdavidheiser
85 132 * Jean-Christophe Jaskula
86 133 * Jeff Hemmelgarn
87 134 * Jeffrey Bush
88 135 * Jeroen Demeyer
89 136 * Jessica B. Hamrick
90 137 * Jessica Frazelle
91 138 * jhemmelg
92 139 * Jim Garrison
93 140 * Joel Nothman
94 141 * Johannes Feist
95 142 * John Stowers
96 143 * John Zwinck
97 144 * jonasc
98 145 * Jonathan Frederic
99 146 * Juergen Hasch
100 147 * Julia Evans
101 148 * Justyna Ilczuk
102 149 * Jörg Dietrich
103 150 * K.-Michael Aye
104 151 * Kalibri
105 152 * Kester Tong
106 153 * Kyle Kelley
107 154 * Kyle Rawlins
108 155 * Lev Abalkin
109 156 * Manuel Riel
110 157 * Martin Bergtholdt
111 158 * Martin Spacek
112 159 * Mateusz Paprocki
113 160 * Mathieu
114 161 * Matthias Bussonnier
115 162 * Maximilian Albert
116 163 * mbyt
117 164 * MechCoder
118 165 * Mohan Raj Rajamanickam
119 166 * mvr
120 167 * Narahari
121 168 * Nathan Goldbaum
122 169 * Nathan Heijermans
123 170 * Nathaniel J. Smith
124 171 * ncornette
125 172 * Nicholas Bollweg
126 173 * Nick White
127 174 * Nikolay Koldunov
128 175 * Nile Geisinger
129 176 * Olga Botvinnik
130 177 * Osada Paranaliyanage
131 178 * Pankaj Pandey
132 179 * Pascal Bugnion
133 180 * patricktokeeffe
134 181 * Paul Ivanov
135 182 * Peter Odding
136 183 * Peter Parente
137 184 * Peter Würtz
138 185 * Phil Elson
139 186 * Phillip Nordwall
140 187 * Pierre Gerold
141 188 * Pierre Haessig
142 189 * Raffaele De Feo
143 190 * Ramiro Gómez
144 191 * Reggie Pierce
145 192 * Remi Rampin
146 193 * Renaud Richardet
147 194 * Richard Everson
148 195 * Scott Sanderson
149 196 * Silvia Vinyes
150 197 * Simon Guillot
151 198 * Spencer Nelson
152 199 * Stefan Zimmermann
153 200 * Steve Chan
154 201 * Steven Anton
155 202 * Steven Silvester
156 203 * sunny
157 204 * Susan Tan
158 205 * Sylvain Corlay
159 206 * Tarun Gaba
160 207 * Thomas Ballinger
161 208 * Thomas Kluyver
162 209 * Thomas Robitaille
163 210 * Thomas Spura
164 211 * Tobias Oberstein
165 212 * Torsten Bittner
166 213 * unknown
167 214 * v923z
168 215 * vaibhavsagar
169 216 * W. Trevor King
170 217 * weichm
171 218 * Xiuming Chen
172 219 * Yaroslav Halchenko
173 220 * zah
@@ -1,322 +1,349 b''
1 1 ============
2 2 3.x Series
3 3 ============
4 4
5 IPython 3.1
6 ===========
7
8 Released April 3, 2015
9
10 The first 3.x bugfix release, with 33 contributors and 344 commits.
11 This primarily includes bugfixes to notebook layout and focus problems.
12
13
14 Highlights:
15
16 - Various focus jumping and scrolling fixes in the notebook.
17 - Various message ordering and widget fixes in the notebook.
18 - Images in markdown and output are confined to the notebook width.
19 An `.unconfined` CSS class is added to disable this behavior per-image.
20 The resize handle on output images is removed.
21 - Improved ordering of tooltip content for Python functions, putting the signature at the top.
22 - Fix UnicodeErrors when displaying some objects with unicode reprs on Python 2.
23 - Set the kernel's working directory to the notebook directory when running ``nbconvert --execute``,
24 so that behavior matches the live notebook.
25 - Allow setting custom SSL options for the tornado server with ``NotebookApp.ssl_options``,
26 and protect against POODLE with default settings by disabling SSLv3.
27 - Fix memory leak in the IPython.parallel Controller on Python 3.
28
29
30 See :ref:`issues_list_3` for details.
31
5 32
6 33 Release 3.0
7 34 ===========
8 35
9 36 Released February 27, 2015
10 37
11 38 This is a really big release. Over 150 contributors, and almost 6000 commits in a bit under a year.
12 39 Support for languages other than Python is greatly improved,
13 40 notebook UI has been significantly redesigned,
14 41 and a lot of improvement has happened in the experimental interactive widgets.
15 42 The message protocol and document format have both been updated,
16 43 while maintaining better compatibility with previous versions than prior updates.
17 44 The notebook webapp now enables editing of any text file, and even
18 45 a web-based terminal (on Unix platforms).
19 46
20 47 3.x will be the last monolithic release of IPython,
21 48 as the next release cycle will see the growing project split into its Python-specific and language-agnostic components.
22 49 Language-agnostic projects (notebook, qtconsole, etc.) will move under the umbrella of the new Project Jupyter name,
23 50 while Python-specific projects (interactive Python shell, Python kernel, IPython.parallel)
24 51 will remain under IPython, and be split into a few smaller packages.
25 52 To reflect this, IPython is in a bit of a transition state.
26 53 The logo on the notebook is now the Jupyter logo.
27 54 When installing kernels system-wide, they go in a `jupyter` directory.
28 55 We are going to do our best to ease this transition for users and developers.
29 56
30 57 Big changes are ahead.
31 58
32 59
33 60 Using different kernels
34 61 -----------------------
35 62
36 63 .. image:: ../_images/kernel_selector_screenshot.png
37 64 :alt: Screenshot of 'new' dropdown showing different kernels
38 65 :align: center
39 66
40 67 You can now choose a kernel for a notebook within the user interface, rather
41 68 than starting up a separate notebook server for each kernel you want to use. The
42 69 syntax highlighting adapts to match the language you're working in.
43 70
44 71 Information about the kernel is stored in the notebook file, so when you open a
45 72 notebook, it will automatically start the correct kernel.
46 73
47 74 It is also easier to use the Qt console and the terminal console with other
48 75 kernels, using the --kernel flag::
49 76
50 77 ipython qtconsole --kernel bash
51 78 ipython console --kernel bash
52 79
53 80 # To list available kernels
54 81 ipython kernelspec list
55 82
56 83 Kernel authors should see :ref:`kernelspecs` for how to register their kernels
57 84 with IPython so that these mechanisms work.
58 85
59 86 Typing unicode identifiers
60 87 --------------------------
61 88
62 89 .. image:: /_images/unicode_completion.png
63 90
64 91 Complex expressions can be much cleaner when written with a wider choice of
65 92 characters. Python 3 allows unicode identifiers, and IPython 3 makes it easier
66 93 to type those, using a feature from Julia. Type a backslash followed by a LaTeX
67 94 style short name, such as ``\alpha``. Press tab, and it will turn into α.
68 95
69 96 Widget migration guide
70 97 ----------------------
71 98 The widget framework has a lot of backwards incompatible changes.
72 99 For information about migrating widget notebooks and custom widgets to 3.0 refer
73 100 to the :doc:`widget migration guide<version3_widget_migration>`.
74 101
75 102 Other new features
76 103 ------------------
77 104
78 105 * :class:`~.TextWidget` and :class:`~.TextareaWidget` objects now include a
79 106 ``placeholder`` attribute, for displaying placeholder text before the
80 107 user has typed anything.
81 108
82 109 * The :magic:`load` magic can now find the source for objects in the user namespace.
83 110 To enable searching the namespace, use the ``-n`` option.
84 111
85 112 .. sourcecode:: ipython
86 113
87 114 In [1]: %load -n my_module.some_function
88 115
89 116 * :class:`~.DirectView` objects have a new :meth:`~.DirectView.use_cloudpickle`
90 117 method, which works like ``view.use_dill()``, but causes the ``cloudpickle``
91 118 module from PiCloud's `cloud`__ library to be used rather than dill or the
92 119 builtin pickle module.
93 120
94 121 __ https://pypi.python.org/pypi/cloud
95 122
96 123 * Added a .ipynb exporter to nbconvert. It can be used by passing `--to notebook`
97 124 as a commandline argument to nbconvert.
98 125
99 126 * New nbconvert preprocessor called :class:`~.ClearOutputPreprocessor`. This
100 127 clears the output from IPython notebooks.
101 128
102 129 * New preprocessor for nbconvert that executes all the code cells in a notebook.
103 130 To run a notebook and save its output in a new notebook::
104 131
105 132 ipython nbconvert InputNotebook --ExecutePreprocessor.enabled=True --to notebook --output Executed
106 133
107 134 * Consecutive stream (stdout/stderr) output is merged into a single output
108 135 in the notebook document.
109 136 Previously, all output messages were preserved as separate output fields in the JSON.
110 137 Now, the same merge is applied to the stored output as the displayed output,
111 138 improving document load time for notebooks with many small outputs.
112 139
113 140 * ``NotebookApp.webapp_settings`` is deprecated and replaced with
114 141 the more informatively named ``NotebookApp.tornado_settings``.
115 142
116 143 * Using :magic:`timeit` prints warnings if there is atleast a 4x difference in timings
117 144 between the slowest and fastest runs, since this might meant that the multiple
118 145 runs are not independent of one another.
119 146
120 147 * It's now possible to provide mechanisms to integrate IPython with other event
121 148 loops, in addition to the ones we already support. This lets you run GUI code
122 149 in IPython with an interactive prompt, and to embed the IPython
123 150 kernel in GUI applications. See :doc:`/config/eventloops` for details. As part
124 151 of this, the direct ``enable_*`` and ``disable_*`` functions for various GUIs
125 152 in :mod:`IPython.lib.inputhook` have been deprecated in favour of
126 153 :meth:`~.InputHookManager.enable_gui` and :meth:`~.InputHookManager.disable_gui`.
127 154
128 155 * A ``ScrollManager`` was added to the notebook. The ``ScrollManager`` controls how the notebook document is scrolled using keyboard. Users can inherit from the ``ScrollManager`` or ``TargetScrollManager`` to customize how their notebook scrolls. The default ``ScrollManager`` is the ``SlideScrollManager``, which tries to scroll to the nearest slide or sub-slide cell.
129 156
130 157 * The function :func:`~IPython.html.widgets.interaction.interact_manual` has been
131 158 added which behaves similarly to :func:`~IPython.html.widgets.interaction.interact`,
132 159 but adds a button to explicitly run the interacted-with function, rather than
133 160 doing it automatically for every change of the parameter widgets. This should
134 161 be useful for long-running functions.
135 162
136 163 * The ``%cython`` magic is now part of the Cython module. Use `%load_ext Cython` with a version of Cython >= 0.21 to have access to the magic now.
137 164
138 165 * The Notebook application now offers integrated terminals on Unix platforms,
139 166 intended for when it is used on a remote server. To enable these, install
140 167 the ``terminado`` Python package.
141 168
142 169 * The Notebook application can now edit any plain text files, via a full-page CodeMirror instance.
143 170
144 171 * Setting the default highlighting language for nbconvert with the config option
145 172 ``NbConvertBase.default_language`` is deprecated. Nbconvert now respects
146 173 metadata stored in the :ref:`kernel spec <kernelspecs>`.
147 174
148 175 * IPython can now be configured systemwide, with files in :file:`/etc/ipython`
149 176 or :file:`/usr/local/etc/ipython` on Unix systems,
150 177 or :file:`{%PROGRAMDATA%}\\ipython` on Windows.
151 178
152 179 * Added support for configurable user-supplied `Jinja
153 180 <http://jinja.pocoo.org/>`_ HTML templates for the notebook. Paths to
154 181 directories containing template files can be specified via
155 182 ``NotebookApp.extra_template_paths``. User-supplied template directories
156 183 searched first by the notebook, making it possible to replace existing
157 184 templates with your own files.
158 185
159 186 For example, to replace the notebook's built-in ``error.html`` with your own,
160 187 create a directory like ``/home/my_templates`` and put your override template
161 188 at ``/home/my_templates/error.html``. To start the notebook with your custom
162 189 error page enabled, you would run::
163 190
164 191 ipython notebook '--extra_template_paths=["/home/my_templates/"]'
165 192
166 193 It's also possible to override a template while also `inheriting
167 194 <http://jinja.pocoo.org/docs/dev/templates/#template-inheritance>`_ from that
168 195 template, by prepending ``templates/`` to the ``{% extends %}`` target of
169 196 your child template. This is useful when you only want to override a
170 197 specific block of a template. For example, to add additional CSS to the
171 198 built-in ``error.html``, you might create an override that looks like::
172 199
173 200 {% extends "templates/error.html" %}
174 201
175 202 {% block stylesheet %}
176 203 {{super()}}
177 204 <style type="text/css">
178 205 /* My Awesome CSS */
179 206 </style>
180 207 {% endblock %}
181 208
182 209 * Added a widget persistence API. This allows you to persist your notebooks interactive widgets.
183 210 Two levels of control are provided:
184 211 1. Higher level- ``WidgetManager.set_state_callbacks`` allows you to register callbacks for loading and saving widget state. The callbacks you register are automatically called when necessary.
185 212 2. Lower level- the ``WidgetManager`` Javascript class now has ``get_state`` and ``set_state`` methods that allow you to get and set the state of the widget runtime.
186 213
187 214 Example code for persisting your widget state to session data::
188 215
189 216 %%javascript
190 217 require(['widgets/js/manager'], function(manager) {
191 218 manager.WidgetManager.set_state_callbacks(function() { // Load
192 219 return JSON.parse(sessionStorage.widgets_state || '{}');
193 220 }, function(state) { // Save
194 221 sessionStorage.widgets_state = JSON.stringify(state);
195 222 });
196 223 });
197 224
198 225 * Enhanced support for :magic:`env` magic. As before, :magic:`env` with no
199 226 arguments displays all environment variables and values. Additionally,
200 227 :magic:`env` can be used to get or set individual environment variables. To
201 228 display an individual value, use the `%env var` syntax. To set a value, use
202 229 `env var val` or `env var=val`. Python value expansion using `$` works as usual.
203 230
204 231
205 232 Backwards incompatible changes
206 233 ------------------------------
207 234
208 235 * The :ref:`message protocol <messaging>` has been updated from version 4 to version 5.
209 236 Adapters are included, so IPython frontends can still talk to kernels that
210 237 implement protocol version 4.
211 238
212 239 * The :ref:`notebook format <nbformat>` has been updated from version 3 to version 4.
213 240 Read-only support for v4 notebooks has been backported to IPython 2.4.
214 241 Notable changes:
215 242
216 243 * heading cells are removed in favor or markdown headings
217 244 * notebook outputs and output messages are more consistent with each other
218 245 * use :func:`IPython.nbformat.read` and :func:`~IPython.nbformat.write`
219 246 to read and write notebook files
220 247 instead of the deprecated :mod:`IPython.nbformat.current` APIs.
221 248
222 249 You can downgrade a notebook to v3 via ``nbconvert``::
223 250
224 251 ipython nbconvert --to notebook --nbformat 3 <notebook>
225 252
226 253 which will create :file:`notebook.v3.ipynb`, a copy of the notebook in v3 format.
227 254
228 255 * :func:`IPython.core.oinspect.getsource` call specification has changed:
229 256
230 257 * `oname` keyword argument has been added for property source formatting
231 258 * `is_binary` keyword argument has been dropped, passing ``True`` had
232 259 previously short-circuited the function to return ``None`` unconditionally
233 260
234 261 * Removed the octavemagic extension: it is now available as ``oct2py.ipython``.
235 262
236 263 * Creating PDFs with LaTeX no longer uses a post processor.
237 264 Use `nbconvert --to pdf` instead of `nbconvert --to latex --post pdf`.
238 265
239 266 * Used https://github.com/jdfreder/bootstrap2to3 to migrate the Notebook to Bootstrap 3.
240 267
241 268 Additional changes:
242 269
243 270 - Set `.tab-content .row` `0px;` left and right margin (bootstrap default is `-15px;`)
244 271 - Removed `height: @btn_mini_height;` from `.list_header>div, .list_item>div` in `tree.less`
245 272 - Set `#header` div `margin-bottom: 0px;`
246 273 - Set `#menus` to `float: left;`
247 274 - Set `#maintoolbar .navbar-text` to `float: none;`
248 275 - Added no-padding convenience class.
249 276 - Set border of #maintoolbar to 0px
250 277
251 278 * Accessing the `container` DOM object when displaying javascript has been
252 279 deprecated in IPython 2.0 in favor of accessing `element`. Starting with
253 280 IPython 3.0 trying to access `container` will raise an error in browser
254 281 javascript console.
255 282
256 283 * ``IPython.utils.py3compat.open`` was removed: :func:`io.open` provides all
257 284 the same functionality.
258 285
259 286 * The NotebookManager and ``/api/notebooks`` service has been replaced by
260 287 a more generic ContentsManager and ``/api/contents`` service,
261 288 which supports all kinds of files.
262 289 * The Dashboard now lists all files, not just notebooks and directories.
263 290 * The ``--script`` hook for saving notebooks to Python scripts is removed,
264 291 use :samp:`ipython nbconvert --to python {notebook}` instead.
265 292
266 293 * The ``rmagic`` extension is deprecated, as it is now part of rpy2. See
267 294 :mod:`rpy2.ipython.rmagic`.
268 295
269 296 * :meth:`~.KernelManager.start_kernel` and :meth:`~.KernelManager.format_kernel_cmd`
270 297 no longer accept a ``executable`` parameter. Use the kernelspec machinery instead.
271 298
272 299 * The widget classes have been renamed from `*Widget` to `*`. The old names are
273 300 still functional, but are deprecated. i.e. `IntSliderWidget` has been renamed
274 301 to `IntSlider`.
275 302 * The ContainerWidget was renamed to Box and no longer defaults as a flexible
276 303 box in the web browser. A new FlexBox widget was added, which allows you to
277 304 use the flexible box model.
278 305
279 306 * The notebook now uses a single websocket at `/kernels/<kernel-id>/channels` instead of separate
280 307 `/kernels/<kernel-id>/{shell|iopub|stdin}` channels. Messages on each channel are identified by a
281 308 `channel` key in the message dict, for both send and recv.
282 309
283 310
284 311 Content Security Policy
285 312 ```````````````````````
286 313
287 314 The Content Security Policy is a web standard for adding a layer of security to
288 315 detect and mitigate certain classes of attacks, including Cross Site Scripting
289 316 (XSS) and data injection attacks. This was introduced into the notebook to
290 317 ensure that the IPython Notebook and its APIs (by default) can only be embedded
291 318 in an iframe on the same origin.
292 319
293 320 Override ``headers['Content-Security-Policy']`` within your notebook
294 321 configuration to extend for alternate domains and security settings.::
295 322
296 323 c.NotebookApp.tornado_settings = {
297 324 'headers': {
298 325 'Content-Security-Policy': "frame-ancestors 'self'"
299 326 }
300 327 }
301 328
302 329 Example policies::
303 330
304 331 Content-Security-Policy: default-src 'self' https://*.jupyter.org
305 332
306 333 Matches embeddings on any subdomain of jupyter.org, so long as they are served
307 334 over SSL.
308 335
309 336 There is a `report-uri <https://developer.mozilla.org/en-US/docs/Web/Security/CSP/CSP_policy_directives#report-uri>`_ endpoint available for logging CSP violations, located at
310 337 ``/api/security/csp-report``. To use it, set ``report-uri`` as part of the CSP::
311 338
312 339 c.NotebookApp.tornado_settings = {
313 340 'headers': {
314 341 'Content-Security-Policy': "frame-ancestors 'self'; report-uri /api/security/csp-report"
315 342 }
316 343 }
317 344
318 345 It simply provides the CSP report as a warning in IPython's logs. The default
319 346 CSP sets this report-uri relative to the ``base_url`` (not shown above).
320 347
321 348 For a more thorough and accurate guide on Content Security Policies, check out
322 349 `MDN's Using Content Security Policy <https://developer.mozilla.org/en-US/docs/Web/Security/CSP/Using_Content_Security_Policy>`_ for more examples.
1 NO CONTENT: file was removed
General Comments 0
You need to be logged in to leave comments. Login now