123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- .. -*- 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
|