changes.txt
247 lines
| 12.0 KiB
| text/plain
|
TextLexer
Brian E Granger
|
r1258 | .. _changes: | ||
========== | ||||
What's new | ||||
========== | ||||
Brian E Granger
|
r1256 | |||
.. contents:: | ||||
Fernando Perez
|
r1539 | .. | ||
1 Release 0.9 | ||||
1.1 New features | ||||
1.2 Bug fixes | ||||
1.3 Backwards incompatible changes | ||||
1.4 Changes merged in from IPython1 | ||||
1.4.1 New features | ||||
1.4.2 Bug fixes | ||||
1.4.3 Backwards incompatible changes | ||||
2 Release 0.8.4 | ||||
3 Release 0.8.2 | ||||
4 Release 0.8.3 | ||||
5 Older releases | ||||
.. | ||||
Brian E Granger
|
r1256 | |||
Brian E Granger
|
r1258 | Release 0.9 | ||
Brian E Granger
|
r1256 | =========== | ||
New features | ||||
------------ | ||||
Fernando Perez
|
r1539 | * The Editor synchronization work by Vivian De Smedt has been merged in. This | ||
code adds a number of new editor hooks to synchronize with editors under | ||||
Windows. | ||||
* A new, still experimental but highly functional, WX shell by Gael Varoquaux. | ||||
This work was sponsored by Enthought, and while it's still very new, it is | ||||
based on a more cleanly organized arhictecture of the various IPython | ||||
components. We will continue to develop this over the next few releases as a | ||||
model for GUI components that use IPython. | ||||
* Another GUI frontend, Cocoa based (Cocoa is the OSX native GUI framework), | ||||
authored by Barry Wark. Currently the WX and the Cocoa ones have slightly | ||||
different internal organizations, but the whole team is working on finding | ||||
what the right abstraction points are for a unified codebase. | ||||
* As part of the frontend work, Barry Wark also implemented an experimental | ||||
event notification system that various ipython components can use. In the | ||||
next release the implications and use patterns of this system regarding the | ||||
various GUI options will be worked out. | ||||
* IPython finally has a full test system, that can test docstrings with | ||||
IPython-specific functionality. There are still a few pieces missing for it | ||||
to be widely accessible to all users (so they can run the test suite at any | ||||
time and report problems), but it now works for the developers. We are | ||||
working hard on continuing to improve it, as this was probably IPython's | ||||
major Achilles heel (the lack of proper test coverage made it effectively | ||||
impossible to do large-scale refactoring). | ||||
Brian E Granger
|
r1396 | * The notion of a task has been completely reworked. An `ITask` interface has | ||
been created. This interface defines the methods that tasks need to implement. | ||||
These methods are now responsible for things like submitting tasks and processing | ||||
results. There are two basic task types: :class:`IPython.kernel.task.StringTask` | ||||
(this is the old `Task` object, but renamed) and the new | ||||
:class:`IPython.kernel.task.MapTask`, which is based on a function. | ||||
* A new interface, :class:`IPython.kernel.mapper.IMapper` has been defined to | ||||
standardize the idea of a `map` method. This interface has a single | ||||
`map` method that has the same syntax as the built-in `map`. We have also defined | ||||
a `mapper` factory interface that creates objects that implement | ||||
:class:`IPython.kernel.mapper.IMapper` for different controllers. Both | ||||
the multiengine and task controller now have mapping capabilties. | ||||
* The parallel function capabilities have been reworks. The major changes are that | ||||
i) there is now an `@parallel` magic that creates parallel functions, ii) | ||||
the syntax for mulitple variable follows that of `map`, iii) both the | ||||
multiengine and task controller now have a parallel function implementation. | ||||
Brian E Granger
|
r1258 | * All of the parallel computing capabilities from `ipython1-dev` have been merged into | ||
IPython proper. This resulted in the following new subpackages: | ||||
:mod:`IPython.kernel`, :mod:`IPython.kernel.core`, :mod:`IPython.config`, | ||||
:mod:`IPython.tools` and :mod:`IPython.testing`. | ||||
* As part of merging in the `ipython1-dev` stuff, the `setup.py` script and friends | ||||
have been completely refactored. Now we are checking for dependencies using | ||||
the approach that matplotlib uses. | ||||
* The documentation has been completely reorganized to accept the documentation | ||||
from `ipython1-dev`. | ||||
* We have switched to using Foolscap for all of our network protocols in | ||||
:mod:`IPython.kernel`. This gives us secure connections that are both encrypted | ||||
and authenticated. | ||||
* We have a brand new `COPYING.txt` files that describes the IPython license | ||||
and copyright. The biggest change is that we are putting "The IPython | ||||
Development Team" as the copyright holder. We give more details about exactly | ||||
what this means in this file. All developer should read this and use the new | ||||
banner in all IPython source code files. | ||||
Ville M. Vainio
|
r1325 | * sh profile: ./foo runs foo as system command, no need to do !./foo anymore | ||
* String lists now support 'sort(field, nums = True)' method (to easily | ||||
sort system command output). Try it with 'a = !ls -l ; a.sort(1, nums=1)' | ||||
Ville M. Vainio
|
r1326 | * '%cpaste foo' now assigns the pasted block as string list, instead of string | ||
Brian E Granger
|
r1335 | * The ipcluster script now run by default with no security. This is done because | ||
the main usage of the script is for starting things on localhost. Eventually | ||||
when ipcluster is able to start things on other hosts, we will put security | ||||
back. | ||||
Ville M. Vainio
|
r1516 | * 'cd --foo' searches directory history for string foo, and jumps to that dir. | ||
Last part of dir name is checked first. If no matches for that are found, | ||||
look at the whole path. | ||||
Ville M. Vainio
|
r1325 | |||
Brian E Granger
|
r1258 | Bug fixes | ||
--------- | ||||
Brian E Granger
|
r1396 | * The colors escapes in the multiengine client are now turned off on win32 as they | ||
don't print correctly. | ||||
Brian E Granger
|
r1324 | * The :mod:`IPython.kernel.scripts.ipengine` script was exec'ing mpi_import_statement | ||
incorrectly, which was leading the engine to crash when mpi was enabled. | ||||
Brian E Granger
|
r1258 | * A few subpackages has missing `__init__.py` files. | ||
* The documentation is only created is Sphinx is found. Previously, the `setup.py` | ||||
script would fail if it was missing. | ||||
Ville M. Vainio
|
r1516 | * Greedy 'cd' completion has been disabled again (it was enabled in 0.8.4) | ||
Brian E Granger
|
r1258 | |||
Backwards incompatible changes | ||||
------------------------------ | ||||
Fernando Perez
|
r1539 | * In ipapi, the :func:`make_user_ns` function has been replaced with | ||
:func:`make_user_namespaces`, to support dict subclasses in namespace | ||||
creation. | ||||
Brian E Granger
|
r1396 | * :class:`IPython.kernel.client.Task` has been renamed | ||
:class:`IPython.kernel.client.StringTask` to make way for new task types. | ||||
Brian E Granger
|
r1346 | * The keyword argument `style` has been renamed `dist` in `scatter`, `gather` | ||
and `map`. | ||||
* Renamed the values that the rename `dist` keyword argument can have from | ||||
`'basic'` to `'b'`. | ||||
Brian E Granger
|
r1258 | * IPython has a larger set of dependencies if you want all of its capabilities. | ||
See the `setup.py` script for details. | ||||
* The constructors for :class:`IPython.kernel.client.MultiEngineClient` and | ||||
:class:`IPython.kernel.client.TaskClient` no longer take the (ip,port) tuple. | ||||
Instead they take the filename of a file that contains the FURL for that | ||||
client. If the FURL file is in your IPYTHONDIR, it will be found automatically | ||||
and the constructor can be left empty. | ||||
* The asynchronous clients in :mod:`IPython.kernel.asyncclient` are now created | ||||
using the factory functions :func:`get_multiengine_client` and | ||||
:func:`get_task_client`. These return a `Deferred` to the actual client. | ||||
* The command line options to `ipcontroller` and `ipengine` have changed to | ||||
reflect the new Foolscap network protocol and the FURL files. Please see the | ||||
help for these scripts for details. | ||||
* The configuration files for the kernel have changed because of the Foolscap stuff. | ||||
If you were using custom config files before, you should delete them and regenerate | ||||
new ones. | ||||
Changes merged in from IPython1 | ||||
------------------------------- | ||||
New features | ||||
............ | ||||
Brian E Granger
|
r1256 | * Much improved ``setup.py`` and ``setupegg.py`` scripts. Because Twisted | ||
and zope.interface are now easy installable, we can declare them as dependencies | ||||
in our setupegg.py script. | ||||
* IPython is now compatible with Twisted 2.5.0 and 8.x. | ||||
* Added a new example of how to use :mod:`ipython1.kernel.asynclient`. | ||||
Brian E Granger
|
r1258 | * Initial draft of a process daemon in :mod:`ipython1.daemon`. This has not | ||
been merged into IPython and is still in `ipython1-dev`. | ||||
Brian E Granger
|
r1256 | * The ``TaskController`` now has methods for getting the queue status. | ||
* The ``TaskResult`` objects not have information about how long the task | ||||
took to run. | ||||
* We are attaching additional attributes to exceptions ``(_ipython_*)`` that | ||||
we use to carry additional info around. | ||||
Brian E Granger
|
r1258 | * New top-level module :mod:`asyncclient` that has asynchronous versions (that | ||
Brian E Granger
|
r1256 | return deferreds) of the client classes. This is designed to users who want | ||
to run their own Twisted reactor | ||||
* All the clients in :mod:`client` are now based on Twisted. This is done by | ||||
running the Twisted reactor in a separate thread and using the | ||||
:func:`blockingCallFromThread` function that is in recent versions of Twisted. | ||||
* Functions can now be pushed/pulled to/from engines using | ||||
:meth:`MultiEngineClient.push_function` and :meth:`MultiEngineClient.pull_function`. | ||||
* Gather/scatter are now implemented in the client to reduce the work load | ||||
of the controller and improve performance. | ||||
* Complete rewrite of the IPython docuementation. All of the documentation | ||||
from the IPython website has been moved into docs/source as restructured | ||||
text documents. PDF and HTML documentation are being generated using | ||||
Sphinx. | ||||
* New developer oriented documentation: development guidelines and roadmap. | ||||
* Traditional ``ChangeLog`` has been changed to a more useful ``changes.txt`` file | ||||
that is organized by release and is meant to provide something more relevant | ||||
for users. | ||||
Bug fixes | ||||
Brian E Granger
|
r1258 | ......... | ||
Brian E Granger
|
r1256 | |||
* Created a proper ``MANIFEST.in`` file to create source distributions. | ||||
* Fixed a bug in the ``MultiEngine`` interface. Previously, multi-engine | ||||
actions were being collected with a :class:`DeferredList` with | ||||
``fireononeerrback=1``. This meant that methods were returning | ||||
before all engines had given their results. This was causing extremely odd | ||||
bugs in certain cases. To fix this problem, we have 1) set | ||||
``fireononeerrback=0`` to make sure all results (or exceptions) are in | ||||
before returning and 2) introduced a :exc:`CompositeError` exception | ||||
that wraps all of the engine exceptions. This is a huge change as it means | ||||
that users will have to catch :exc:`CompositeError` rather than the actual | ||||
exception. | ||||
Backwards incompatible changes | ||||
Brian E Granger
|
r1258 | .............................. | ||
Brian E Granger
|
r1256 | |||
* All names have been renamed to conform to the lowercase_with_underscore | ||||
convention. This will require users to change references to all names like | ||||
``queueStatus`` to ``queue_status``. | ||||
* Previously, methods like :meth:`MultiEngineClient.push` and | ||||
:meth:`MultiEngineClient.push` used ``*args`` and ``**kwargs``. This was | ||||
becoming a problem as we weren't able to introduce new keyword arguments into | ||||
the API. Now these methods simple take a dict or sequence. This has also allowed | ||||
us to get rid of the ``*All`` methods like :meth:`pushAll` and :meth:`pullAll`. | ||||
These things are now handled with the ``targets`` keyword argument that defaults | ||||
to ``'all'``. | ||||
* The :attr:`MultiEngineClient.magicTargets` has been renamed to | ||||
:attr:`MultiEngineClient.targets`. | ||||
* All methods in the MultiEngine interface now accept the optional keyword argument | ||||
``block``. | ||||
* Renamed :class:`RemoteController` to :class:`MultiEngineClient` and | ||||
:class:`TaskController` to :class:`TaskClient`. | ||||
* Renamed the top-level module from :mod:`api` to :mod:`client`. | ||||
* Most methods in the multiengine interface now raise a :exc:`CompositeError` exception | ||||
that wraps the user's exceptions, rather than just raising the raw user's exception. | ||||
* Changed the ``setupNS`` and ``resultNames`` in the ``Task`` class to ``push`` | ||||
and ``pull``. | ||||
Brian E Granger
|
r1258 | Release 0.8.4 | ||
Brian E Granger
|
r1256 | ============= | ||
Brian E Granger
|
r1258 | Someone needs to describe what went into 0.8.4. | ||
Release 0.8.2 | ||||
============= | ||||
Brian E Granger
|
r1256 | |||
* %pushd/%popd behave differently; now "pushd /foo" pushes CURRENT directory | ||||
and jumps to /foo. The current behaviour is closer to the documented | ||||
behaviour, and should not trip anyone. | ||||
Brian E Granger
|
r1258 | Release 0.8.3 | ||
Brian E Granger
|
r1256 | ============= | ||
* pydb is now disabled by default (due to %run -d problems). You can enable | ||||
Brian E Granger
|
r1258 | it by passing -pydb command line argument to IPython. Note that setting | ||
it in config file won't work. | ||||
Brian E Granger
|
r1256 | |||
Brian E Granger
|
r1258 | Older releases | ||
============== | ||||
Brian E Granger
|
r1256 | |||
Brian E Granger
|
r1258 | Changes in earlier releases of IPython are described in the older file ``ChangeLog``. | ||
Brian E Granger
|
r1256 | Please refer to this document for details. | ||