mirror of
https://github.com/pybind/pybind11.git
synced 2024-11-23 21:55:11 +00:00
1
Roadmap
Henry Schreiner edited this page 2021-06-11 17:48:43 -04:00
All version numbers listed here are very approximate.
Targets for (unspecified, soonish):
- Integration of smart_holder into refactored code as optional add-on
#include <pybind11/pybind11.h>
will only see is_smart_holder_base_tag but not any other smart_holder code.#include <pybind11/smart_holder.h>
needed to actually bring in the smart_holder code.- refactoring of smart_holder code itself, e.g. trim
smart_holder_poc.h
into a smallermemory/smart_holder.h
, move rest to split outtests/memory/smart_holder_poc.h
.
Targets for 2.8:
- Decoupling of unit tests
- Currently test A cannot run until all tests A-Z are compiled.
- Blocking in parallel build environments
- Link time with optimization is currently ~63 seconds (gcc 10.2,
-Os -flto
).- Also very long startup times (>15s seconds) in distributed build environments because of very large
.so
size in debug mode (~100M).
- Also very long startup times (>15s seconds) in distributed build environments because of very large
- Tricks needed for fast development-test iterations.
- Fix: minimize use of TEST_SUBMODULE, use only if the submodule feature itself is being tested.
- Currently test A cannot run until all tests A-Z are compiled.
- Systematic refactoring
- Unit tests must not be modified (with only very rare, narrow exceptions).
- No change to internals (no exceptions).
- Refactoring into subdirectories.
- Existing header files will mostly be shims, provided for backward compatibility.
- While we're at it: leave nothing considered private in namespace detail.
- Optional precompilation
- WRT PR #2445: jumping between 2 x the number of files is a permanent tax on development activity and an impediment to continuous refactoring.
- Keep code together, use
#ifndef PYBIND11_USE_PRECOMPILE_MODE
. - Develop (small-ish) tool to split out
.cpp
files, integrate with CMake.
Targets for 3.0 / Jan 2022, whichever comes first:
- Drop Python 2.7/3.5
Not on the roadmap (yet?)
- Better MyPy integration
- Better Scikit-build integration (waiting on Scikit-build developments)
- Future of
type_caster_base
- Multiple-inheritance overhaul (to fix highly unobvious (to pybind11 users) UB)
- Porting Boost.Python inheritance code.
- Will probably be another round of refactoring, much smaller scale, but significant.
Code written here is licensed under pybind11's license (BSD-3) unless otherwise stated.