68
68
be run using the :command:`iptest` command line program.
70
70
* The notion of a task has been completely reworked. An `ITask` interface has
71
been created. This interface defines the methods that tasks need to implement.
72
These methods are now responsible for things like submitting tasks and processing
73
results. There are two basic task types: :class:`IPython.kernel.task.StringTask`
74
(this is the old `Task` object, but renamed) and the new
75
:class:`IPython.kernel.task.MapTask`, which is based on a function.
71
been created. This interface defines the methods that tasks need to
72
implement. These methods are now responsible for things like submitting
73
tasks and processing results. There are two basic task types:
74
:class:`IPython.kernel.task.StringTask` (this is the old `Task` object, but
75
renamed) and the new :class:`IPython.kernel.task.MapTask`, which is based on
77
78
* A new interface, :class:`IPython.kernel.mapper.IMapper` has been defined to
78
standardize the idea of a `map` method. This interface has a single
79
`map` method that has the same syntax as the built-in `map`. We have also defined
79
standardize the idea of a `map` method. This interface has a single `map`
80
method that has the same syntax as the built-in `map`. We have also defined
80
81
a `mapper` factory interface that creates objects that implement
81
:class:`IPython.kernel.mapper.IMapper` for different controllers. Both
82
the multiengine and task controller now have mapping capabilties.
82
:class:`IPython.kernel.mapper.IMapper` for different controllers. Both the
83
multiengine and task controller now have mapping capabilties.
84
* The parallel function capabilities have been reworks. The major changes are that
85
i) there is now an `@parallel` magic that creates parallel functions, ii)
86
the syntax for mulitple variable follows that of `map`, iii) both the
85
* The parallel function capabilities have been reworks. The major changes are
86
that i) there is now an `@parallel` magic that creates parallel functions,
87
ii) the syntax for mulitple variable follows that of `map`, iii) both the
87
88
multiengine and task controller now have a parallel function implementation.
89
* All of the parallel computing capabilities from `ipython1-dev` have been merged into
90
IPython proper. This resulted in the following new subpackages:
90
* All of the parallel computing capabilities from `ipython1-dev` have been
91
merged into IPython proper. This resulted in the following new subpackages:
91
92
:mod:`IPython.kernel`, :mod:`IPython.kernel.core`, :mod:`IPython.config`,
92
93
:mod:`IPython.tools` and :mod:`IPython.testing`.
94
* As part of merging in the `ipython1-dev` stuff, the `setup.py` script and friends
95
have been completely refactored. Now we are checking for dependencies using
96
the approach that matplotlib uses.
95
* As part of merging in the `ipython1-dev` stuff, the `setup.py` script and
96
friends have been completely refactored. Now we are checking for
97
dependencies using the approach that matplotlib uses.
98
99
* The documentation has been completely reorganized to accept the documentation
99
100
from `ipython1-dev`.
101
102
* We have switched to using Foolscap for all of our network protocols in
102
:mod:`IPython.kernel`. This gives us secure connections that are both encrypted
103
:mod:`IPython.kernel`. This gives us secure connections that are both
104
encrypted and authenticated.
105
106
* We have a brand new `COPYING.txt` files that describes the IPython license
106
107
and copyright. The biggest change is that we are putting "The IPython
107
Development Team" as the copyright holder. We give more details about exactly
108
what this means in this file. All developer should read this and use the new
109
banner in all IPython source code files.
108
Development Team" as the copyright holder. We give more details about
109
exactly what this means in this file. All developer should read this and use
110
the new banner in all IPython source code files.
111
112
* sh profile: ./foo runs foo as system command, no need to do !./foo anymore
113
* String lists now support 'sort(field, nums = True)' method (to easily
114
sort system command output). Try it with 'a = !ls -l ; a.sort(1, nums=1)'
114
* String lists now support ``sort(field, nums = True)`` method (to easily sort
115
system command output). Try it with ``a = !ls -l ; a.sort(1, nums=1)``.
116
117
* '%cpaste foo' now assigns the pasted block as string list, instead of string
118
* The ipcluster script now run by default with no security. This is done because
119
the main usage of the script is for starting things on localhost. Eventually
120
when ipcluster is able to start things on other hosts, we will put security
119
* The ipcluster script now run by default with no security. This is done
120
because the main usage of the script is for starting things on localhost.
121
Eventually when ipcluster is able to start things on other hosts, we will put
123
124
* 'cd --foo' searches directory history for string foo, and jumps to that dir.
124
125
Last part of dir name is checked first. If no matches for that are found,
125
126
look at the whole path.
130
132
* The Windows installer has been fixed. Now all IPython scripts have ``.bat``
131
133
versions created. Also, the Start Menu shortcuts have been updated.
133
* The colors escapes in the multiengine client are now turned off on win32 as they
134
don't print correctly.
136
* The :mod:`IPython.kernel.scripts.ipengine` script was exec'ing mpi_import_statement
137
incorrectly, which was leading the engine to crash when mpi was enabled.
139
* A few subpackages has missing `__init__.py` files.
141
* The documentation is only created if Sphinx is found. Previously, the `setup.py`
142
script would fail if it was missing.
144
* Greedy 'cd' completion has been disabled again (it was enabled in 0.8.4)
135
* The colors escapes in the multiengine client are now turned off on win32 as
136
they don't print correctly.
138
* The :mod:`IPython.kernel.scripts.ipengine` script was exec'ing
139
mpi_import_statement incorrectly, which was leading the engine to crash when
142
* A few subpackages had missing ``__init__.py`` files.
144
* The documentation is only created if Sphinx is found. Previously, the
145
``setup.py`` script would fail if it was missing.
147
* Greedy ``cd`` completion has been disabled again (it was enabled in 0.8.4) as
148
it caused problems on certain platforms.
147
151
Backwards incompatible changes
261
266
convention. This will require users to change references to all names like
262
267
``queueStatus`` to ``queue_status``.
264
* Previously, methods like :meth:`MultiEngineClient.push` and
265
:meth:`MultiEngineClient.push` used ``*args`` and ``**kwargs``. This was
269
* Previously, methods like :meth:`MultiEngineClient.push` and
270
:meth:`MultiEngineClient.push` used ``*args`` and ``**kwargs``. This was
266
271
becoming a problem as we weren't able to introduce new keyword arguments into
267
the API. Now these methods simple take a dict or sequence. This has also allowed
268
us to get rid of the ``*All`` methods like :meth:`pushAll` and :meth:`pullAll`.
269
These things are now handled with the ``targets`` keyword argument that defaults
272
the API. Now these methods simple take a dict or sequence. This has also
273
allowed us to get rid of the ``*All`` methods like :meth:`pushAll` and
274
:meth:`pullAll`. These things are now handled with the ``targets`` keyword
275
argument that defaults to ``'all'``.
272
277
* The :attr:`MultiEngineClient.magicTargets` has been renamed to
273
278
:attr:`MultiEngineClient.targets`.
275
* All methods in the MultiEngine interface now accept the optional keyword argument
280
* All methods in the MultiEngine interface now accept the optional keyword
278
283
* Renamed :class:`RemoteController` to :class:`MultiEngineClient` and
279
284
:class:`TaskController` to :class:`TaskClient`.
281
286
* Renamed the top-level module from :mod:`api` to :mod:`client`.
283
* Most methods in the multiengine interface now raise a :exc:`CompositeError` exception
284
that wraps the user's exceptions, rather than just raising the raw user's exception.
288
* Most methods in the multiengine interface now raise a :exc:`CompositeError`
289
exception that wraps the user's exceptions, rather than just raising the raw
286
292
* Changed the ``setupNS`` and ``resultNames`` in the ``Task`` class to ``push``
292
Someone needs to describe what went into 0.8.4.
299
This was a quick release to fix an unfortunate bug that slipped into the 0.8.3
300
release. The ``--twisted`` option was disabled, as it turned out to be broken
301
across several platforms.
307
* pydb is now disabled by default (due to %run -d problems). You can enable
308
it by passing -pydb command line argument to IPython. Note that setting
309
it in config file won't work.
297
315
* %pushd/%popd behave differently; now "pushd /foo" pushes CURRENT directory
298
316
and jumps to /foo. The current behaviour is closer to the documented
299
317
behaviour, and should not trip anyone.
304
* pydb is now disabled by default (due to %run -d problems). You can enable
305
it by passing -pydb command line argument to IPython. Note that setting
306
it in config file won't work.
311
Changes in earlier releases of IPython are described in the older file ``ChangeLog``.
312
Please refer to this document for details.
323
Changes in earlier releases of IPython are described in the older file
324
``ChangeLog``. Please refer to this document for details.