8b1748fea0
[SVN r32473]
207 lines
5.8 KiB
ReStructuredText
207 lines
5.8 KiB
ReStructuredText
.. -*- mode: rst -*-
|
|
|
|
====================================
|
|
Boost.Python_ TODO list |(logo)|__
|
|
====================================
|
|
|
|
.. |(logo)| image:: ../../boost.png
|
|
:alt: Boost
|
|
:class: boost-logo
|
|
|
|
__ ../../index.htm
|
|
|
|
.. _`Boost.Python`: index.html
|
|
|
|
:copyright: Copyright David Abrahams 2003. Use, modification, and
|
|
distribution are subject to the Boost Software License, Version
|
|
1.0. (See accompanying file `LICENSE_1_0.txt`_ or copy at
|
|
http://www.boost.org/LICENSE_1_0.txt)
|
|
|
|
.. contents:: Outline
|
|
|
|
.. _`LICENSE_1_0.txt`: ../../LICENSE_1_0.txt
|
|
|
|
Class Support
|
|
=============
|
|
|
|
Base Class for Virtual Function Callback Wrappers
|
|
-------------------------------------------------
|
|
|
|
* http://aspn.activestate.com/ASPN/Mail/Message/c++-sig/1456023
|
|
(bottom of message)
|
|
|
|
* http://mail.python.org/pipermail/c++-sig/2003-August/005297.html
|
|
(search for ``VirtualDispatcher``) describes how callback classes
|
|
can swap ownership relationship with their Python wrappers.
|
|
|
|
* http://aspn.activestate.com/ASPN/Mail/Message/c++-sig/1860301
|
|
describes how this can also be used to considerably simplify
|
|
callback classes, solve some "dangling reference" problems, and
|
|
optimize the calling of non-overridden virtual functions.
|
|
|
|
Miscellaneous
|
|
=============
|
|
|
|
Support for Enums with Duplicate Values
|
|
---------------------------------------
|
|
|
|
Scott Snyder provided a patch; Dave was dissatisfied for some
|
|
reason, but maybe it should just be applied if no further action
|
|
occurs http://aspn.activestate.com/ASPN/Mail/Message/1824616.
|
|
|
|
|
|
Functions
|
|
=========
|
|
|
|
Wrapping Function Objects
|
|
--------------------------
|
|
|
|
It should be possible to wrap classes which support ``operator()``
|
|
as Python methods.
|
|
|
|
http://mail.python.org/pipermail/c++-sig/2003-August/005184.html
|
|
|
|
|
|
"Best Match" Overload Resolution
|
|
--------------------------------
|
|
|
|
Overload resolution currently depends on the order in which ``def``
|
|
calls are made (preferring later overloads). This should be
|
|
changed so that the best-matching overload is always selected.
|
|
This may await Langbinding_ integration, since the technology is
|
|
already in Luabind_.
|
|
|
|
.. _Luabind: http://luabind.sf.net
|
|
|
|
Type Converters
|
|
===============
|
|
|
|
Lvalue conversions from non-const ``PyTypeObject*``\ s
|
|
------------------------------------------------------
|
|
|
|
http://aspn.activestate.com/ASPN/Mail/Message/C++-sig/1662717
|
|
|
|
Converter Scoping
|
|
-----------------
|
|
|
|
http://article.gmane.org/gmane.comp.python.c++/2044
|
|
|
|
If this gets done at all, it is going to happen in conjunction
|
|
with `Luabind integration`__.
|
|
|
|
__ Langbinding_
|
|
|
|
|
|
``boost::tuple``
|
|
----------------
|
|
|
|
Conversions to and from Python would be nice. See
|
|
http://news.gmane.org/find-root.php?message_id=%3cuvewak97m.fsf%40boost%2dconsulting.com%3e
|
|
|
|
``FILE*`` conversions
|
|
---------------------
|
|
|
|
http://aspn.activestate.com/ASPN/Mail/Message/1411366
|
|
|
|
``void*`` conversions
|
|
---------------------
|
|
|
|
Pointers to *cv* ``void`` should be able to be passed and
|
|
returned as opaque values.
|
|
|
|
Post-Call Actions
|
|
-----------------
|
|
|
|
From-Python converters should be passed an extra reference to a
|
|
chain of post-call actions in the Policies object, where they can
|
|
register an additional action. See the end of
|
|
http://aspn.activestate.com/ASPN/Mail/Message/C++-sig/1755435
|
|
|
|
``PyUnicode`` Support
|
|
---------------------
|
|
|
|
Review and possibly incorporate changes from `Lijun Qin`_ at
|
|
http://aspn.activestate.com/ASPN/Mail/Message/C++-sig/1771145
|
|
|
|
.. _`Lijun Qin`: mailto:qinlj-at-solidshare.com
|
|
|
|
Ownership Metadata
|
|
------------------
|
|
|
|
In the thread at
|
|
http://aspn.activestate.com/ASPN/Mail/Message/c++-sig/1860301,
|
|
Niall Douglas describes an idea for solving some "false"
|
|
dangling pointer/reference return errors by attaching data about
|
|
objects which lets the framework determine that the reference
|
|
count on an object doesn't tell us anything about the lifetime
|
|
of its data.
|
|
|
|
Documentation
|
|
=============
|
|
|
|
Builtin Converters
|
|
------------------
|
|
|
|
Builtin correspondences between builtiin Python types and C++
|
|
types need to be documented
|
|
|
|
Internals
|
|
---------
|
|
|
|
The structure of the framework needs to get documented; `Brett
|
|
Calcott`_ has promised to turn `this document`__ into something fit
|
|
for users
|
|
|
|
__ doc/internals.html
|
|
|
|
.. _`Brett Calcott`: mailto:brett.calcott-at-paradise.net.nz
|
|
|
|
|
|
Large Scale
|
|
===========
|
|
|
|
Full Threading Support
|
|
----------------------
|
|
|
|
Various people have proposed patches to improve threading support
|
|
in Boost.Python: see the thread at
|
|
http://aspn.activestate.com/ASPN/Mail/Message/1826544 and
|
|
http://aspn.activestate.com/ASPN/Mail/Message/1865842 for some
|
|
examples. The only problem is that these are incomplete
|
|
solutions and verifying that we *do* have a complete solution is
|
|
going to take some time and attention.
|
|
|
|
Langbinding
|
|
-----------
|
|
|
|
This project to generalizes Boost.Python to work for other
|
|
languages, initially Lua. See discussions at
|
|
http://lists.sourceforge.net/lists/listinfo/boost-langbinding
|
|
|
|
Refactoring and Reorganization
|
|
------------------------------
|
|
|
|
http://aspn.activestate.com/ASPN/Mail/Message/c++-sig/1673338
|
|
|
|
NumArray Support Enhancements
|
|
-----------------------------
|
|
|
|
Consider integrating the enhancements described in
|
|
http://aspn.activestate.com/ASPN/Mail/Message/C++-sig/1757092
|
|
|
|
``PyFinalize`` Safety
|
|
---------------------
|
|
|
|
Currently Boost.Python has several global (or function-static)
|
|
objects whose existence keeps reference counts from dropping to
|
|
zero until the Boost.Python shared object is unloaded. This can
|
|
cause a crash because when the reference counts *do* go to zero,
|
|
there's no interpreter. In order to make it safe to call
|
|
``PyFinalize()`` we must register an ``atexit`` routine which
|
|
destroys these objects and releases all Python reference counts
|
|
so that Python can clean them up while there's still an
|
|
interpreter. `Dirk Gerrits`_ has promised to do this job.
|
|
|
|
.. _`Dirk Gerrits`: mailto:dirk-at-gerrits.homeip.net
|
|
|