All Versions
Latest Version
Avg Release Cycle
28 days
Latest Release
18 days ago

Changelog History
Page 1

  • v0.8.2

    October 27, 2019

    ➕ Added

    • FFI compatibility for PEP 590 Vectorcall. #641

    🛠 Fixed

    • 🛠 Fix PySequenceProtocol::set_item. #624
    • 🛠 Fix a corner case of BigInt::FromPyObject. #630
    • 🛠 Fix index errors in parameter conversion. #631
    • 🛠 Fix handling of invalid utf-8 sequences in PyString::as_bytes. #639
      and PyString::to_string_lossy #642.
    • Remove __contains__ and __iter__ from PyMappingProtocol. #644
    • 🛠 Fix proc-macro definition of PySetAttrProtocol. #645
  • v0.8.1

    October 08, 2019

    NOTE Please take care that PyO3 <= 0.8.0 doesn't support the latest nightly (See #614 for detail).

    ➕ Added

    🛠 Fixed

    • 🏗 Make sure the right Python interpreter is used in OSX builds. #604
    • Patch specialization being broken by Rust 1.40. #614
    • 🛠 Fix a segfault around PyErr. #597
  • v0.8.0

    September 05, 2018

    ➕ Added

    • module argument to pyclass macro. #499
    • py_run! macro #512
    • Use existing fields and methods before calling custom getattr. #505
    • PyBytes can now be indexed just like Vec<u8>
    • Implement IntoPy<PyObject> for PyRef and PyRefMut.
  • v0.7.0

    May 26, 2019

    ➕ Added

    • PyPy support by omerbenamram in #393
    • Have PyModule generate an index of its members (__all__ list).
    • Allow slf: PyRef<T> for pyclass(#419)
    • Allow to use lifetime specifiers in pymethods
    • Add marshal module. #460

    🔄 Changed

    • Python::run returns PyResult<()> instead of PyResult<&PyAny>.
    • Methods decorated with #[getter] and #[setter] can now omit wrapping the result type in PyResult if they don't raise exceptions.

    🛠 Fixed

    • type_object::PyTypeObject has been marked unsafe because breaking the contract type_object::PyTypeObject::init_type can lead to UB.
    • Fixed automatic derive of PySequenceProtocol implementation in #423.
    • Capitalization & better wording to
    • Docstrings of properties is now properly set using the doc of the #[getter] method.
    • Fixed issues with pymethods crashing on doc comments containing double quotes.
    • PySet::new and PyFrozenSet::new now return PyResult<&Py[Frozen]Set>; exceptions are raised if the items are not hashable.
    • Fixed building using venv on Windows.
    • PyTuple::new now returns &PyTuple instead of Py<PyTuple>.
    • Fixed several issues with argument parsing; notable, the *args and **kwargs tuple/dict now doesn't contain arguments that are otherwise assigned to parameters.
  • v0.7.0-alpha.1

    April 23, 2019
  • v0.6.0

    March 28, 2019


    • Currently, #341 causes cargo test to fail with weird linking errors when the extension-module feature is activated. For now you can work around this by making the extension-module feature optional and running the tests with cargo test --no-default-features:
    version = "0.6.0"
    extension-module = ["pyo3/extension-module"]
    default = ["extension-module"]

    ➕ Added

    • Added a wrap_pymodule! macro similar to the existing wrap_pyfunction! macro. Only available on python 3
    • Added support for cross compiling (e.g. to arm v7) by mtp401 in #327. See the "Cross Compiling" section in the "Building and Distribution" chapter of the guide for more details.
    • The PyRef and PyRefMut types, which allow to differentiate between an instance of a rust struct on the rust heap and an instance that is embedded inside a python object. By kngwyu in #335
    • Added FromPy<T> and IntoPy<T> which are equivalent to From<T> and Into<T> except that they require a gil token.
    • Added ManagedPyRef, which should eventually replace ToBorrowedObject.

    🔄 Changed

    • Renamed PyObjectRef to PyAny in #388
    • Renamed add_function to add_wrapped as it now also supports modules.
    • Renamed #[pymodinit] to #[pymodule]
    • py.init(|| value) becomes Py::new(value)
    • py.init_ref(|| value) becomes PyRef::new(value)
    • py.init_mut(|| value) becomes PyRefMut::new(value).
    • PyRawObject::init is now infallible, e.g. it returns () instead of PyResult<()>.
    • Renamed py_exception! to create_exception! and refactored the error macros.
    • Renamed wrap_function! to wrap_pyfunction!
    • Renamed #[prop(get, set)] to #[pyo3(get, set)]
    • #[pyfunction] now supports the same arguments as #[pyfn()]
    • Some macros now emit proper spanned errors instead of panics.
    • Migrated to the 2018 edition
    • crate::types::exceptions moved to crate::exceptions
    • Replace IntoPyTuple with IntoPy<Py<PyTuple>>.
    • IntoPyPointer and ToPyPointer moved into the crate root.
    • class::CompareOp moved into class::basic::CompareOp
    • PyTypeObject is now a direct subtrait PyTypeCreate, removing the old cyclical implementation in #350
    • Add PyList::{sort, reverse} by chr1sj0nes in #357 and #358
    • Renamed the typeob module to type_object

    ✂ Removed

    • PyToken was removed due to unsoundness (See #94).
    • Removed the unnecessary type parameter from PyObjectAlloc
    • NoArgs. Just use an empty tuple
    • PyObjectWithGIL. PyNativeType is sufficient now that PyToken is removed.

    🛠 Fixed

    • A soudness hole where every instances of a #[pyclass] struct was considered to be part of a python object, even though you can create instances that are not part of the python heap. This was fixed through PyRef and PyRefMut.
    • Fix kwargs support in #328.
    • Add full support for __dict__ in #403.
  • v0.6.0-alpha.4

    February 20, 2019
  • v0.6.0-alpha.3

    February 19, 2019
  • v0.6.0-alpha.2

    February 01, 2019
  • v0.6.0-alpha.1

    January 04, 2019