roadmap.txt
94 lines
| 3.1 KiB
| text/plain
|
TextLexer
Brian E Granger
|
r1256 | .. _roadmap: | ||
=================== | ||||
Development roadmap | ||||
=================== | ||||
Brian Granger
|
r2197 | IPython is an ambitious project that is still under heavy development. | ||
However, we want IPython to become useful to as many people as possible, as | ||||
quickly as possible. To help us accomplish this, we are laying out a roadmap | ||||
of where we are headed and what needs to happen to get there. Hopefully, this | ||||
will help the IPython developers figure out the best things to work on for | ||||
each upcoming release. | ||||
Brian E Granger
|
r1256 | |||
Brian Granger
|
r1790 | Work targeted to particular releases | ||
==================================== | ||||
Brian E Granger
|
r1256 | |||
Brian Granger
|
r1790 | Release 0.11 | ||
------------ | ||||
Brian E Granger
|
r1256 | |||
Brian Granger
|
r2247 | * Full module and package reorganization (done). | ||
Brian Granger
|
r2197 | |||
Brian Granger
|
r2247 | * Removal of the threaded shells and new implementation of GUI support | ||
based on ``PyOSInputHook`` (done). | ||||
Brian E Granger
|
r1256 | |||
Brian Granger
|
r2247 | * Refactor the configuration system (done). | ||
Brian Granger
|
r1792 | |||
Brian Granger
|
r2197 | * Prepare to refactor IPython's core by creating a new component and | ||
Brian Granger
|
r2247 | application system (done). | ||
Brian E Granger
|
r1256 | |||
Brian Granger
|
r2247 | * Start to refactor IPython's core by turning everything into components | ||
(started). | ||||
Brian E Granger
|
r1256 | |||
Brian Granger
|
r1790 | Release 0.12 | ||
------------ | ||||
Brian E Granger
|
r1256 | |||
Brian Granger
|
r2247 | * Continue to refactor IPython's core by turning everything into components. | ||
Brian Granger
|
r1792 | |||
Brian E Granger
|
r1256 | |||
Brian Granger
|
r1790 | Major areas of work | ||
=================== | ||||
Brian E Granger
|
r1256 | |||
Brian Granger
|
r1790 | Refactoring the main IPython core | ||
--------------------------------- | ||||
Brian E Granger
|
r1256 | |||
Brian Granger
|
r2247 | During the summer of 2009, we began refactoring IPython's core. The main | ||
thrust in this work was make the IPython core into a set of loosely coupled | ||||
components. The base component class for this is | ||||
:class:`IPython.core.component.Component`. This section outlines the status | ||||
of this work. | ||||
Parts of the IPython core that have been turned into components: | ||||
* The main :class:`InteractiveShell` class. | ||||
* The aliases (:mod:`IPython.core.aliases`). | ||||
* The display and builtin traps (:mod:`IPython.core.display_trap` and | ||||
:mod:`IPython.core.builtin_trap`). | ||||
* The prefilter machinery (:mod:`IPython.core.prefilter`). | ||||
Parts of the IPythoncore that need to be turned into components: | ||||
* Magics. | ||||
* Input and output history management. | ||||
* Prompts. | ||||
* Completers. | ||||
* Logging. | ||||
* Exception handling. | ||||
* Anything else. | ||||
Brian Granger
|
r1790 | Process management for :mod:`IPython.kernel` | ||
-------------------------------------------- | ||||
Brian E Granger
|
r1256 | |||
Brian Granger
|
r1790 | Performance problems | ||
-------------------- | ||||
Brian E Granger
|
r1256 | |||
Brian Granger
|
r2247 | Currently, we have a number of performance issues in :mod:`IPython.kernel`: | ||
Brian E Granger
|
r1256 | |||
Brian Granger
|
r1790 | * The controller stores a large amount of state in Python dictionaries. Under | ||
Brian Granger
|
r1766 | heavy usage, these dicts with get very large, causing memory usage problems. | ||
Brian Granger
|
r2247 | We need to develop more scalable solutions to this problem. This will also | ||
help the controller to be more fault tolerant. | ||||
Brian Granger
|
r1790 | |||
Brian Granger
|
r1766 | * We currently don't have a good way of handling large objects in the | ||
controller. The biggest problem is that because we don't have any way of | ||||
streaming objects, we get lots of temporary copies in the low-level buffers. | ||||
We need to implement a better serialization approach and true streaming | ||||
support. | ||||
Brian Granger
|
r1790 | |||
Brian Granger
|
r1766 | * The controller currently unpickles and repickles objects. We need to use the | ||
[push|pull]_serialized methods instead. | ||||
Brian Granger
|
r1790 | |||
* Currently the controller is a bottleneck. The best approach for this is to | ||||
separate the controller itself into multiple processes, one for the core | ||||
controller and one each for the controller interfaces. | ||||
Brian E Granger
|
r1256 | |||