changes.txt
401 lines
| 15.6 KiB
| text/plain
|
TextLexer
Brian E Granger
|
r1258 | .. _changes: | ||
========== | ||||
What's new | ||||
========== | ||||
Brian E Granger
|
r1256 | |||
.. contents:: | ||||
Fernando Perez
|
r1539 | .. | ||
Fernando Perez
|
r1725 | 1 Release 0.9.1 | ||
2 Release 0.9 | ||||
2.1 New features | ||||
2.2 Bug fixes | ||||
2.3 Backwards incompatible changes | ||||
2.4 Changes merged in from IPython1 | ||||
2.4.1 New features | ||||
2.4.2 Bug fixes | ||||
2.4.3 Backwards incompatible changes | ||||
3 Release 0.8.4 | ||||
4 Release 0.8.3 | ||||
5 Release 0.8.2 | ||||
6 Older releases | ||||
Fernando Perez
|
r1539 | .. | ||
Brian Granger
|
r1775 | Release dev | ||
Ville M. Vainio
|
r1737 | =========== | ||
Brian Granger
|
r1775 | New features | ||
------------ | ||||
Brian Granger
|
r1832 | * The new ipcluster now has a fully working ssh mode that should work on | ||
Linux, Unix and OS X. Thanks to Vishal Vatsa for implementing this! | ||||
Brian Granger
|
r1786 | * The wonderful TextMate editor can now be used with %edit on OS X. Thanks | ||
to Matt Foster for this patch. | ||||
Brian Granger
|
r1775 | * Fully refactored :command:`ipcluster` command line program for starting | ||
IPython clusters. This new version is a complete rewrite and 1) is fully | ||||
cross platform (we now use Twisted's process management), 2) has much | ||||
improved performance, 3) uses subcommands for different types of clusters, | ||||
4) uses argparse for parsing command line options, 5) has better support | ||||
for starting clusters using :command:`mpirun`, 6) has experimental support | ||||
for starting engines using PBS. However, this new version of ipcluster | ||||
should be considered a technology preview. We plan on changing the API | ||||
in significant ways before it is final. | ||||
* The :mod:`argparse` module has been added to :mod:`IPython.external`. | ||||
* Fully description of the security model added to the docs. | ||||
Ville M. Vainio
|
r1737 | * cd completer: show bookmarks if no other completions are available. | ||
* sh profile: easy way to give 'title' to prompt: assign to variable | ||||
'_prompt_title'. It looks like this:: | ||||
[~]|1> _prompt_title = 'sudo!' | ||||
sudo![~]|2> | ||||
Brian Granger
|
r1775 | |||
* %edit: If you do '%edit pasted_block', pasted_block | ||||
variable gets updated with new data (so repeated | ||||
editing makes sense) | ||||
Bug fixes | ||||
--------- | ||||
Brian Granger
|
r1832 | * Numerous bugs on Windows with the new ipcluster have been fixed. | ||
Brian Granger
|
r1775 | * The ipengine and ipcontroller scripts now handle missing furl files | ||
more gracefully by giving better error messages. | ||||
Ville M. Vainio
|
r1737 | * %rehashx: Aliases no longer contain dots. python3.0 binary | ||
will create alias python30. Fixes: | ||||
#259716 "commands with dots in them don't work" | ||||
Brian Granger
|
r1775 | |||
Ville M. Vainio
|
r1737 | * %cpaste: %cpaste -r repeats the last pasted block. | ||
The block is assigned to pasted_block even if code | ||||
raises exception. | ||||
Jorgen Stenarson
|
r1904 | * Bug #274067 'The code in get_home_dir is broken for py2exe' was | ||
fixed. | ||||
Brian Granger
|
r1775 | Backwards incompatible changes | ||
------------------------------ | ||||
* The controller now has a ``-r`` flag that needs to be used if you want to | ||||
reuse existing furl files. Otherwise they are deleted (the default). | ||||
* Remove ipy_leo.py. "easy_install ipython-extension" to get it. | ||||
(done to decouple it from ipython release cycle) | ||||
Ville M. Vainio
|
r1737 | |||
Brian E Granger
|
r1256 | |||
Fernando Perez
|
r1725 | Release 0.9.1 | ||
============= | ||||
This release was quickly made to restore compatibility with Python 2.4, which | ||||
version 0.9 accidentally broke. No new features were introduced, other than | ||||
some additional testing support for internal use. | ||||
Brian E Granger
|
r1258 | Release 0.9 | ||
Brian E Granger
|
r1256 | =========== | ||
New features | ||||
------------ | ||||
Brian Granger
|
r1775 | * All furl files and security certificates are now put in a read-only | ||
directory named ~./ipython/security. | ||||
Brian Granger
|
r1677 | |||
* A single function :func:`get_ipython_dir`, in :mod:`IPython.genutils` that | ||||
determines the user's IPython directory in a robust manner. | ||||
Brian Granger
|
r1775 | * Laurent's WX application has been given a top-level script called | ||
ipython-wx, and it has received numerous fixes. We expect this code to be | ||||
Fernando Perez
|
r1596 | architecturally better integrated with Gael's WX 'ipython widget' over the | ||
next few releases. | ||||
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 | ||||
Brian Granger
|
r1775 | components. We will continue to develop this over the next few releases as a | ||
Fernando Perez
|
r1539 | 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 | ||||
Brian Granger
|
r1677 | impossible to do large-scale refactoring). The full test suite can now | ||
be run using the :command:`iptest` command line program. | ||||
Fernando Perez
|
r1539 | |||
Brian Granger
|
r1675 | * The notion of a task has been completely reworked. An `ITask` interface has | ||
Fernando Perez
|
r1696 | 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. | ||||
Brian Granger
|
r1675 | |||
* A new interface, :class:`IPython.kernel.mapper.IMapper` has been defined to | ||||
Fernando Perez
|
r1696 | 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 | ||||
Brian Granger
|
r1675 | a `mapper` factory interface that creates objects that implement | ||
Fernando Perez
|
r1696 | :class:`IPython.kernel.mapper.IMapper` for different controllers. Both the | ||
multiengine and task controller now have mapping capabilties. | ||||
Brian Granger
|
r1675 | |||
Fernando Perez
|
r1696 | * 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 | ||||
Brian Granger
|
r1675 | multiengine and task controller now have a parallel function implementation. | ||
Fernando Perez
|
r1696 | * All of the parallel computing capabilities from `ipython1-dev` have been | ||
merged into IPython proper. This resulted in the following new subpackages: | ||||
Brian Granger
|
r1675 | :mod:`IPython.kernel`, :mod:`IPython.kernel.core`, :mod:`IPython.config`, | ||
:mod:`IPython.tools` and :mod:`IPython.testing`. | ||||
Fernando Perez
|
r1696 | * 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. | ||||
Brian Granger
|
r1675 | |||
Brian Granger
|
r1775 | * The documentation has been completely reorganized to accept the | ||
documentation from `ipython1-dev`. | ||||
Brian Granger
|
r1675 | |||
* We have switched to using Foolscap for all of our network protocols in | ||||
Fernando Perez
|
r1696 | :mod:`IPython.kernel`. This gives us secure connections that are both | ||
encrypted and authenticated. | ||||
Brian Granger
|
r1675 | |||
* We have a brand new `COPYING.txt` files that describes the IPython license | ||||
Brian Granger
|
r1775 | 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 | ||||
Fernando Perez
|
r1696 | the new banner in all IPython source code files. | ||
Brian Granger
|
r1675 | |||
* sh profile: ./foo runs foo as system command, no need to do !./foo anymore | ||||
Fernando Perez
|
r1696 | * 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)``. | ||||
Brian Granger
|
r1675 | |||
* '%cpaste foo' now assigns the pasted block as string list, instead of string | ||||
Fernando Perez
|
r1696 | * 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. | ||||
Brian Granger
|
r1675 | |||
* '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 | |||
Fernando Perez
|
r1696 | |||
Brian E Granger
|
r1258 | Bug fixes | ||
--------- | ||||
Brian Granger
|
r1677 | * The Windows installer has been fixed. Now all IPython scripts have ``.bat`` | ||
versions created. Also, the Start Menu shortcuts have been updated. | ||||
Fernando Perez
|
r1696 | * The colors escapes in the multiengine client are now turned off on win32 as | ||
they don't print correctly. | ||||
Brian Granger
|
r1675 | |||
Fernando Perez
|
r1696 | * 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 Granger
|
r1675 | |||
Fernando Perez
|
r1696 | * A few subpackages had missing ``__init__.py`` files. | ||
Brian Granger
|
r1675 | |||
Fernando Perez
|
r1696 | * The documentation is only created if Sphinx is found. Previously, the | ||
``setup.py`` script would fail if it was missing. | ||||
Brian Granger
|
r1675 | |||
Fernando Perez
|
r1696 | * Greedy ``cd`` completion has been disabled again (it was enabled in 0.8.4) as | ||
it caused problems on certain platforms. | ||||
Ville M. Vainio
|
r1516 | |||
Brian E Granger
|
r1258 | |||
Backwards incompatible changes | ||||
------------------------------ | ||||
Brian Granger
|
r1677 | * The ``clusterfile`` options of the :command:`ipcluster` command has been | ||
removed as it was not working and it will be replaced soon by something much | ||||
more robust. | ||||
* The :mod:`IPython.kernel` configuration now properly find the user's | ||||
IPython directory. | ||||
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 Granger
|
r1675 | * :class:`IPython.kernel.client.Task` has been renamed | ||
:class:`IPython.kernel.client.StringTask` to make way for new task types. | ||||
* 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'`. | ||||
* 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. | ||||
Fernando Perez
|
r1696 | * 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. | ||||
Brian E Granger
|
r1258 | |||
Changes merged in from IPython1 | ||||
------------------------------- | ||||
New features | ||||
............ | ||||
Fernando Perez
|
r1696 | * Much improved ``setup.py`` and ``setupegg.py`` scripts. Because Twisted and | ||
zope.interface are now easy installable, we can declare them as dependencies | ||||
Brian Granger
|
r1675 | 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`. | ||||
* Initial draft of a process daemon in :mod:`ipython1.daemon`. This has not | ||||
been merged into IPython and is still in `ipython1-dev`. | ||||
* 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. | ||||
* New top-level module :mod:`asyncclient` that has asynchronous versions (that | ||||
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 | ||||
Fernando Perez
|
r1696 | :meth:`MultiEngineClient.push_function` and | ||
:meth:`MultiEngineClient.pull_function`. | ||||
Brian Granger
|
r1675 | |||
* 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. | ||||
Fernando Perez
|
r1696 | * 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. | ||||
Brian E Granger
|
r1256 | |||
Bug fixes | ||||
Brian E Granger
|
r1258 | ......... | ||
Brian E Granger
|
r1256 | |||
Brian Granger
|
r1675 | * 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. | ||||
Brian E Granger
|
r1256 | |||
Backwards incompatible changes | ||||
Brian E Granger
|
r1258 | .............................. | ||
Brian E Granger
|
r1256 | |||
Brian Granger
|
r1675 | * 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``. | ||||
Fernando Perez
|
r1696 | * Previously, methods like :meth:`MultiEngineClient.push` and | ||
:meth:`MultiEngineClient.push` used ``*args`` and ``**kwargs``. This was | ||||
Brian Granger
|
r1675 | becoming a problem as we weren't able to introduce new keyword arguments into | ||
Fernando Perez
|
r1696 | 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'``. | ||||
Brian Granger
|
r1675 | |||
* The :attr:`MultiEngineClient.magicTargets` has been renamed to | ||||
:attr:`MultiEngineClient.targets`. | ||||
Fernando Perez
|
r1696 | * All methods in the MultiEngine interface now accept the optional keyword | ||
argument ``block``. | ||||
Brian Granger
|
r1675 | |||
* Renamed :class:`RemoteController` to :class:`MultiEngineClient` and | ||||
:class:`TaskController` to :class:`TaskClient`. | ||||
* Renamed the top-level module from :mod:`api` to :mod:`client`. | ||||
Fernando Perez
|
r1696 | * 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. | ||||
Brian Granger
|
r1675 | |||
* Changed the ``setupNS`` and ``resultNames`` in the ``Task`` class to ``push`` | ||||
and ``pull``. | ||||
Brian E Granger
|
r1256 | |||
Fernando Perez
|
r1696 | |||
Brian E Granger
|
r1258 | Release 0.8.4 | ||
Brian E Granger
|
r1256 | ============= | ||
Fernando Perez
|
r1696 | This was a quick release to fix an unfortunate bug that slipped into the 0.8.3 | ||
release. The ``--twisted`` option was disabled, as it turned out to be broken | ||||
across several platforms. | ||||
Brian E Granger
|
r1258 | |||
Brian E Granger
|
r1256 | |||
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 | |||
Fernando Perez
|
r1696 | |||
Release 0.8.2 | ||||
============= | ||||
* %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 | Older releases | ||
============== | ||||
Brian E Granger
|
r1256 | |||
Fernando Perez
|
r1696 | Changes in earlier releases of IPython are described in the older file | ||
``ChangeLog``. Please refer to this document for details. | ||||
Brian E Granger
|
r1256 | |||