All Versions
21
Latest Version
Avg Release Cycle
71 days
Latest Release
1261 days ago
Changelog History
Page 1
Changelog History
Page 1
-
v2.6.1 Changes
November 12, 2020py::exec
,py::eval
, andpy::eval_file
now add the builtins module as" __builtins__"
to theirglobals
argument, better matchingexec
andeval
in pure Python. #2616- 🍎
setup_helpers
will no longer set a minimum macOS version higher than the current version. #2622 - 👍 Allow deleting static properties. #2629
- Seal a leak in
def_buffer
, cleaning up thecapture
object after theclass_
object goes out of scope.
#2634 pybind11_INCLUDE_DIRS
was incorrect, potentially causing a regression if it was expected to includePYTHON_INCLUDE_DIRS
(please use targets instead). #2636- ➕ Added parameter names to the
py::enum_
constructor and methods, avoidingarg0
in the generated docstrings. #2637 - ➕ Added
needs_recompile
optional function to theParallelCompiler
helper, to allow a recompile to be skipped based on a user-defined function. #2643
-
v2.6.0 Changes
October 21, 2020🆕 New features:
- 👍 Keyword-only arguments supported in Python 2 or 3 with
py::kw_only()
. #2100 - 👍 Positional-only arguments supported in Python 2 or 3 with
py::pos_only()
. #2459 py::is_final()
class modifier to block subclassing (CPython only). #2151- ➕ Added
py::prepend()
, allowing a function to be placed at the beginning of the overload chain. #1131 - Access to the type object now provided with
py::type::of<T>()
andpy::type::of(h)
. #2364 - 👍 Perfect forwarding support for methods. #2048
- Added
py::error_already_set::discard_as_unraisable()
. #2372 py::hash
is now public. #2217py::class_<union_type>
is now supported. Note that writing to one data member of the union and reading another (type punning) is UB in C++. Thus pybind11-bound enums should never be used for such conversions. #2320.- Classes now check local scope when registering members, allowing a subclass to have a member with the same name as a parent (such as an enum). #2335
Code correctness features:
- Error now thrown when
__init__
is forgotten on subclasses. #2152 - Throw error if conversion to a pybind11 type if the Python object isn't a valid instance of that type, such as
py::bytes(o)
whenpy::object o
isn't a bytes instance. #2349 - Throw if conversion to
str
fails. #2477
API changes:
py::module
was renamedpy::module_
to avoid issues with C++20 when used unqualified, but an aliaspy::module
is provided for backward compatibility. #2489- 🗄 Public constructors for
py::module_
have been deprecated; please usepybind11::module_::create_extension_module
if you were using the public constructor (fairly rare afterPYBIND11_MODULE
was introduced). #2552 PYBIND11_OVERLOAD*
macros andget_overload
function replaced by correctly-namedPYBIND11_OVERRIDE*
andget_override
, fixing inconsistencies in the presence of a closing;
in these macros.get_type_overload
is deprecated. #2325
🏗 Packaging / building improvements:
- 📦 The Python package was reworked to be more powerful and useful. #2433
build-setuptools
is easier thanks to a newpybind11.setup_helpers
module, which provides utilities to use setuptools with pybind11. It can be used via PEP 518,setup_requires
, or by directly importing or copyingsetup_helpers.py
into your project.- CMake configuration files are now included in the Python package. Use
pybind11.get_cmake_dir()
orpython -m pybind11 --cmakedir
to get the directory with the CMake configuration files, or include the site-packages location in yourCMAKE_MODULE_PATH
. Or you can use the newpybind11[global]
extra when you installpybind11
, which installs the CMake files and headers into your base environment in the standard location. pybind11-config
is another way to writepython -m pybind11
if you have your PATH set up.- Added external typing support to the helper module, code from
import pybind11
can now be type checked. #2588
- Minimum CMake required increased to 3.4. #2338 and #2370
- Full integration with CMake's C++ standard system and compile features replaces
PYBIND11_CPP_STANDARD
. - Generated config file is now portable to different Python/compiler/CMake versions.
- Virtual environments prioritized if
PYTHON_EXECUTABLE
is not set (venv
,virtualenv
, andconda
) (similar to the new FindPython mode). - Other CMake features now natively supported, like
CMAKE_INTERPROCEDURAL_OPTIMIZATION
,set(CMAKE_CXX_VISIBILITY_PRESET hidden)
. CUDA
as a language is now supported.- Helper functions
pybind11_strip
,pybind11_extension
,pybind11_find_import
added, seecmake/index
. - Optional
find-python-mode
andnopython-mode
with CMake. #2370
- Full integration with CMake's C++ standard system and compile features replaces
- Uninstall target added. #2265 and #2346
- ➕
pybind11_add_module()
now accepts an optionalOPT_SIZE
flag that switches the binding target to size-based optimization if the global build type can not always be fixed toMinSizeRel
(except in debug mode, where optimizations remain disabled).MinSizeRel
or this flag reduces binary size quite substantially (~25% on some platforms). #2463
🛠 Smaller or developer focused features and fixes:
- 🚚 Moved
mkdoc.py
to a new repo, pybind11-mkdoc. There are no longer submodules in the main repo. - 📚
py::memoryview
segfault fix and update, with newpy::memoryview::from_memory
in Python 3, and documentation. #2223 - 🛠 Fix for
buffer_info
on Python 2. #2503 - If
__eq__
defined but not__hash__
,__hash__
is now set toNone
. #2291 py::ellipsis
now also works on Python 2. #2360- 👍 Pointer to
std::tuple
&std::pair
supported in cast. #2334 - 🛠 Small fixes in NumPy support.
py::array
now usespy::ssize_t
as first argument type. #2293 - ➕ Added missing signature for
py::array
. #2363 unchecked_mutable_reference
has access to operator()
and[]
when const. #2514- 👍
py::vectorize
is now supported on functions that return void. #1969 py::capsule
supportsget_pointer
andset_pointer
. #1131- 🛠 Fix crash when different instances share the same pointer of the same type. #2252
- 🛠 Fix for
py::len
not clearing Python's error state when it fails and throws. #2575 - 🛠 Bugfixes related to more extensive testing, new GitHub Actions CI. #2321
- 🐛 Bug in timezone issue in Eastern hemisphere midnight fixed. #2438
std::chrono::time_point
now works when the resolution is not the same as the system. #2481- 🐛 Bug fixed where
py::array_t
could accept arrays that did not match the requested ordering. #2484 - 🚚 Avoid a segfault on some compilers when types are removed in Python. #2564
py::arg::none()
is now also respected when passing keyword arguments. #2611- 🏁 PyPy fixes, PyPy 7.3.x now supported, including PyPy3. (Known issue with PyPy2 and Windows #2596). #2146
- 🍎 CPython 3.9.0 workaround for undefined behavior (macOS segfault). #2576
- ⚠ CPython 3.9 warning fixes. #2253
- 👌 Improved C++20 support, now tested in CI. #2489 #2599
- 👌 Improved but still incomplete debug Python interpreter support. #2025
- ✅ NVCC (CUDA 11) now supported and tested in CI. #2461
- ✅ NVIDIA PGI compilers now supported and tested in CI. #2475
- At least Intel 18 now explicitly required when compiling with Intel. #2577
- 💅 Extensive style checking in CI, with pre-commit support. Code modernization, checked by clang-tidy.
- 📄 Expanded docs, including new main page, new installing section, and CMake helpers page, along with over a dozen new sections on existing pages.
- 📄 In GitHub, new docs for contributing and new issue templates.
- 👍 Keyword-only arguments supported in Python 2 or 3 with
-
v2.6.0.rc3 Changes
October 16, 2020🚀 Next release candidate.
- Factory constructor scope fix
- 👌 Support for PyPy3 on Windows 32, added to CI
- 🛠 Fixes for C++20, added to CI for Clang, GCC, and MSVC 2019
- Black formatting for all Python code
- 👍 Allow ABI string overrides from 2.4 (advanced)
-
v2.6.0.rc2 Changes
October 14, 2020🚀 Next release candidate. Changes since RC 1:
🛠 Fixed:
- ↪ Python 3.9.0 bug workaround implemented
- 👍 Better support in CMake for packing and cross-compiling
- 🛠 Fix for failing
py::len
leaving error state set - 🛠 Intel 18+ explicitly required, an issue with Intel compilers fixed
- Custom ipo flags disabled with
RelWithDebInfo
(useCMAKE_INTERPROCEDURAL_OPTIMIZATION
for more control) - 🛠 Possible duplicate linker flags fixed in
setup_helpers
- 🔄 Changes to
py::module_
constructor are no longer provisional.
🆕 New features:
- 👍 Static typing support for
import pybind11
-
v2.6.0.rc1 Changes
October 09, 2020🚀 This is the first release candidate for pybind11 2.6.0. Please see the new features in the changelog, such as revamped CMake and setuptools support, keyword and positional argument support, and a long list of features, fixes, and improvements. Full Python 3.9 support and enhanced C++20 support.
Known issues:
- 🗄
py::module_
direct construction provisionally deprecated - ✅ Removing registered types can cause a segfault - old issue exposed by recent test additions; fix incoming
- 🍎 On Python 3.9.0 and macOS, pybind11 may segfault when closing the interpreter after running the test suite
- 🗄
-
v2.6.0.b1 Changes
September 30, 2020🚀 v2.6.0 beta release.
-
v2.5.0
March 31, 2020 -
v2.4.3
October 14, 2019 -
v2.4.2
September 21, 2019 -
v2.4.1
September 20, 2019