2018-05-30 13:03:31 +00:00
# Changelog
2018-07-30 20:52:22 +00:00
All notable changes to this project will be documented in this file.
2017-07-24 19:19:05 +00:00
2018-07-30 20:52:22 +00:00
The format is based on [Keep a Changelog ](http://keepachangelog.com/en/1.0.0/ )
and this project adheres to [Semantic Versioning ](http://semver.org/spec/v2.0.0.html ).
2018-11-04 23:32:46 +00:00
## [Unreleased]
2018-11-12 21:25:45 +00:00
### Added
2019-02-01 13:01:18 +00:00
* 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 ](https://github.com/PyO3/pyo3/pull/327 ). See the "Cross Compiling" section in the "Building and Distribution" chapter of the guide for more details.
2018-11-12 21:25:45 +00:00
### Changed
2018-11-12 21:28:45 +00:00
2018-11-12 21:25:45 +00:00
* Renamed `add_function` to `add_wrapped` as it now also supports modules.
2018-11-12 21:28:45 +00:00
* Renamed `#[pymodinit]` to `#[pymodule]` .
2018-11-27 22:07:15 +00:00
* Renamed `py_exception` to `create_exception` and refactored the error macros.
2019-02-01 13:01:18 +00:00
* Renamed `wrap_function!` to `wrap_pyfunction!`
* Migrated to the 2018 edition
2018-11-12 21:25:45 +00:00
2018-11-12 13:37:06 +00:00
### Removed
2018-11-12 13:20:40 +00:00
* `PyToken` was removed due to unsoundness (See [#94 ](https://github.com/PyO3/pyo3/issues/94 )).
2018-11-12 13:37:06 +00:00
* Removed the unnecessary type parameter from `PyObjectAlloc`
2019-01-04 10:53:46 +00:00
## [0.5.3] - 2019-01-04
### Fixed
* Fix memory leak in ArrayList by kngwyu [#316 ](https://github.com/PyO3/pyo3/pull/316 )
2018-11-25 23:16:47 +00:00
## [0.5.2] - 2018-11-26
2018-11-24 12:16:36 +00:00
### Fixed
* Fix undeterministic segfaults when creating many objects by kngwyu in [#281 ](https://github.com/PyO3/pyo3/pull/281 )
2018-11-25 23:16:47 +00:00
## [0.5.1] - 2018-11-24
Yanked
2018-11-24 12:16:36 +00:00
2018-11-04 23:32:46 +00:00
## [0.5.0] - 2018-11-11
2018-08-20 20:53:43 +00:00
2018-09-06 16:04:13 +00:00
### Added
2018-09-24 02:49:52 +00:00
2018-09-06 16:04:13 +00:00
* `#[pyclass]` objects can now be returned from rust functions
2018-09-21 21:32:48 +00:00
* `PyComplex` by kngwyu in [#226 ](https://github.com/PyO3/pyo3/pull/226 )
2018-09-25 14:19:23 +00:00
* `PyDict::from_sequence()` , equivalent to `dict([(key, val), ...])`
2018-09-25 14:11:59 +00:00
* Bindings for the `datetime` standard library types: `PyDate` , `PyTime` , `PyDateTime` , `PyTzInfo` , `PyDelta` with associated `ffi` types, by pganssle [#200 ](https://github.com/PyO3/pyo3/pull/200 ).
2018-09-28 14:27:49 +00:00
* `PyString` , `PyUnicode` , and `PyBytes` now have an `as_bytes()` method that returns `&[u8]` .
2018-10-03 19:04:24 +00:00
* `PyObjectProtocol::get_type_ptr()` by ijl in [#242 ](https://github.com/PyO3/pyo3/pull/242 )
2018-09-06 16:04:13 +00:00
2018-09-21 21:32:48 +00:00
### Removed
* Removed most entries from the prelude. The new prelude is small and clear.
2018-08-25 18:47:30 +00:00
* Slowly removing specialization uses
2018-09-28 14:27:49 +00:00
* `PyString` , `PyUnicode` , and `PyBytes` no longer have a `data()` method
(replaced by `as_bytes()` ) and `PyStringData` has been removed.
2018-11-11 17:13:33 +00:00
* The pyobject_extract macro
2018-09-21 21:32:48 +00:00
### Changed
* Removes the types from the root module and the prelude. They now live in `pyo3::types` instead.
2018-08-21 21:51:13 +00:00
* All exceptions are consturcted with `py_err` instead of `new` , as they return `PyErr` and not `Self` .
* `as_mut` and friends take and `&mut self` instead of `&self`
2018-11-02 15:30:12 +00:00
* `ObjectProtocol::call` now takes an `Option<&PyDict>` for the kwargs instead of an `IntoPyDictPointer` .
2018-08-25 18:47:30 +00:00
* `IntoPyDictPointer` was replace by `IntoPyDict` which doesn't convert `PyDict` itself anymore and returns a `PyDict` instead of `*mut PyObject` .
2018-08-31 19:11:08 +00:00
* `PyTuple::new` now takes an `IntoIterator` instead of a slice
2018-09-21 21:32:48 +00:00
* Updated to syn 0.15
2018-10-03 20:12:22 +00:00
* Splitted `PyTypeObject` into `PyTypeObject` without the create method and `PyTypeCreate` with requires `PyObjectAlloc<Self> + PyTypeInfo + Sized` .
2018-11-02 15:30:12 +00:00
* Ran `cargo edition --fix` which prefixed path with `crate::` for rust 2018
2018-11-04 23:32:46 +00:00
* Renamed `async` to `pyasync` as async will be a keyword in the 2018 edition.
* Starting to use `NonNull<*mut PyObject>` for Py and PyObject by ijl [#260 ](https://github.com/PyO3/pyo3/pull/260 )
2018-08-21 21:51:13 +00:00
2018-08-20 20:56:24 +00:00
### Fixed
2018-09-25 14:11:59 +00:00
* Added an explanation that the GIL can temporarily be released even while holding a GILGuard.
2018-08-21 21:51:13 +00:00
* Lots of clippy errors
2018-09-24 02:49:52 +00:00
* Fix segfault on calling an unknown method on a PyObject
2018-10-29 16:36:06 +00:00
* Work around a [bug ](https://github.com/rust-lang/rust/issues/55380 ) in the rust compiler by kngwyu [#252 ](https://github.com/PyO3/pyo3/pull/252 )
2018-11-04 23:32:46 +00:00
* Fixed a segfault with subclassing pyo3 create classes and using `__class__` by kngwyu [#263 ](https://github.com/PyO3/pyo3/pull/263 )
2018-08-20 20:56:24 +00:00
2018-08-20 12:30:52 +00:00
## [0.4.1] - 2018-08-20
### Fixed
* Fixed compilation on nightly since `use_extern_macros` was stabilized
2018-08-11 15:35:03 +00:00
### Changed
* PyTryFrom's error is always to `PyDowncastError`
### Removed
* The pyobject_downcast macro
2018-07-30 21:10:50 +00:00
## [0.4.0] - 2018-07-30
2018-07-30 20:52:22 +00:00
### Removed
2018-07-30 21:01:46 +00:00
* Conversions from tuples to PyDict due to [rust-lang/rust#52050 ](https://github.com/rust-lang/rust/issues/52050 )
2018-07-30 20:52:22 +00:00
### Changed
* Merged both examples into one
2018-07-30 21:01:46 +00:00
* Rustfmt all the things :heavy_check_mark:
2018-07-30 21:10:50 +00:00
* Switched to [Keep a Changelog ](http://keepachangelog.com/en/1.0.0/ )
2018-07-30 20:52:22 +00:00
## [0.3.2] - 2018-07-22
### Changed
2018-07-22 19:35:54 +00:00
* Replaced `concat_idents` with mashup
2018-07-30 20:52:22 +00:00
## [0.3.1] - 2018-07-18
### Fixed
2018-07-18 12:06:17 +00:00
* Fixed scoping bug in pyobject_native_type that would break rust-numpy
2018-07-30 20:52:22 +00:00
## [0.3.0] - 2018-07-18
### Changed
2018-06-12 15:47:24 +00:00
2018-07-08 21:41:18 +00:00
* Upgraded to syn 0.14 which means much better error messages :tada:
* 128 bit integer support by [kngwyu ](https://github.com/kngwyu ) ([#137](https://github.com/PyO3/pyo3/pull/173))
2018-07-18 11:08:05 +00:00
* `proc_macro` has been stabilized on nightly ([rust-lang/rust#52081](https://github.com/rust-lang/rust/pull/52081)). This means that we can remove the `proc_macro` feature, but now we need the `use_extern_macros` from the 2018 edition instead.
* All proc macro are now prefixed with `py` and live in the prelude. This means you can use `#[pyclass]` , `#[pymethods]` , `#[pyproto]` , `#[pyfunction]` and `#[pymodinit]` directly, at least after a `use pyo3::prelude::*` . They were also moved into a module called `proc_macro` . You shouldn't use `#[pyo3::proc_macro::pyclass]` or other longer paths in attributes because `proc_macro_path_invoc` isn't going to be stabilized soon.
2018-07-15 09:58:33 +00:00
* Renamed the `base` option in the `pyclass` macro to `extends` .
2018-07-09 22:13:02 +00:00
* `#[pymodinit]` uses the function name as module name, unless the name is overrriden with `#[pymodinit(name)]`
2018-07-08 21:41:18 +00:00
* The guide is now properly versioned.
2018-07-30 20:52:22 +00:00
### Added
2018-07-08 21:41:18 +00:00
* A few internal macros became part of the public api ([#155](https://github.com/PyO3/pyo3/pull/155), [#186 ](https://github.com/PyO3/pyo3/pull/186 ))
2018-06-12 15:47:24 +00:00
* Always clone in getters. This allows using the get-annotation on all Clone-Types
2018-07-30 20:52:22 +00:00
## [0.2.7] - 2018-05-18
### Fixed
2018-02-10 19:27:45 +00:00
2018-05-30 13:03:31 +00:00
* Fix nightly breakage with proc_macro_path
2018-02-21 18:29:14 +00:00
2018-07-30 20:52:22 +00:00
## [0.2.6] - 2018-04-03
### Fixed
2018-02-10 19:27:45 +00:00
2018-05-30 13:03:31 +00:00
* Fix compatibility with TryFrom trait #137
2018-02-11 17:38:50 +00:00
2018-07-30 20:52:22 +00:00
## [0.2.5] - 2018-02-21
2018-09-24 02:49:52 +00:00
### Added
2018-02-21 17:39:06 +00:00
2018-05-30 13:03:31 +00:00
* CPython 3.7 support
2018-07-30 20:52:22 +00:00
### Fixed
2018-05-30 13:03:31 +00:00
* Embedded CPython 3.7b1 crashes on initialization #110
* Generated extension functions are weakly typed #108
* call_method*() crashes when the method does not exist #113
2018-02-21 18:35:49 +00:00
* Allow importing exceptions from nested modules #116
2018-07-30 20:52:22 +00:00
## [0.2.4] - 2018-01-19
### Added
2018-01-19 17:04:42 +00:00
* Allow to get mutable ref from PyObject #106
* Drop `RefFromPyObject` trait
* Add Python::register_any() method
2018-07-30 20:52:22 +00:00
2018-09-24 02:49:52 +00:00
### Fixed
2018-07-30 20:52:22 +00:00
2018-01-17 16:09:44 +00:00
* Fix impl `FromPyObject` for `Py<T>`
2017-12-26 21:42:32 +00:00
* Mark method that work with raw pointers as unsafe #95
2018-07-30 20:52:22 +00:00
## [0.2.3] - 11-27-2017
2017-12-26 21:42:32 +00:00
2018-07-30 20:52:22 +00:00
### Fixed
2017-11-27 18:59:45 +00:00
* Proper `c_char` usage #93
2018-07-30 20:52:22 +00:00
### Changed
2017-11-27 19:27:09 +00:00
* Rustup to 1.23.0-nightly 2017-11-07
2017-11-23 04:08:05 +00:00
2018-07-30 20:52:22 +00:00
### Removed
* Remove use of now unneeded 'AsciiExt' trait
## [0.2.2] - 09-26-2017
### Changed
2017-11-18 17:20:03 +00:00
* Rustup to 1.22.0-nightly 2017-09-30
2018-07-30 20:52:22 +00:00
## [0.2.1] - 09-26-2017
### Fixed
2017-11-18 17:20:03 +00:00
* Fix rustc const_fn nightly breakage
2018-07-30 20:52:22 +00:00
## [0.2.0] - 08-12-2017
### Changed
2017-07-24 19:19:05 +00:00
* Allow to add gc support without implementing PyGCProtocol #57
2017-07-26 08:11:00 +00:00
* Refactor `PyErr` implementation. Drop `py` parameter from constructor.
2018-07-30 20:52:22 +00:00
2018-09-24 02:49:52 +00:00
### Added
2018-07-30 20:52:22 +00:00
* Added inheritance support #15
* Added weakref support #56
2017-07-27 15:05:15 +00:00
* Added subclass support #64
2017-07-28 14:21:59 +00:00
* Added `self.__dict__` supoort #68
2017-07-31 17:42:55 +00:00
* Added `pyo3::prelude` module #70
2017-08-03 19:32:02 +00:00
* Better `Iterator` support for PyTuple, PyList, PyDict #75
2017-08-03 22:01:52 +00:00
* Introduce IntoPyDictPointer similar to IntoPyTuple #69
2018-07-30 21:10:50 +00:00
## 0.1.0 - 07-23-2017
2018-07-30 20:52:22 +00:00
### Added
2017-07-24 19:19:05 +00:00
* Initial release
2018-07-30 20:52:22 +00:00
2019-01-04 10:53:46 +00:00
[Unreleased]: https://github.com/pyo3/pyo3/compare/v0.5.3...HEAD
[0.5.3]: https://github.com/pyo3/pyo3/compare/v0.5.2...v0.5.3
2018-11-25 23:16:47 +00:00
[0.5.2]: https://github.com/pyo3/pyo3/compare/v0.5.0...v0.5.2
2018-11-04 23:32:46 +00:00
[0.5.0]: https://github.com/pyo3/pyo3/compare/v0.4.1...v0.5.0
2018-08-20 12:30:52 +00:00
[0.4.1]: https://github.com/pyo3/pyo3/compare/v0.4.0...v0.4.1
[0.4.0]: https://github.com/pyo3/pyo3/compare/v0.3.2...v0.4.0
2018-07-30 20:52:22 +00:00
[0.3.2]: https://github.com/pyo3/pyo3/compare/v0.3.1...v0.3.2
[0.3.1]: https://github.com/pyo3/pyo3/compare/v0.3.0...v0.3.1
[0.3.0]: https://github.com/pyo3/pyo3/compare/v0.2.7...v0.3.0
[0.2.7]: https://github.com/pyo3/pyo3/compare/v0.2.6...v0.2.7
[0.2.6]: https://github.com/pyo3/pyo3/compare/v0.2.5...v0.2.6
[0.2.5]: https://github.com/pyo3/pyo3/compare/v0.2.4...v0.2.5
[0.2.4]: https://github.com/pyo3/pyo3/compare/v0.2.3...v0.2.4
[0.2.3]: https://github.com/pyo3/pyo3/compare/v0.2.2...v0.2.3
[0.2.2]: https://github.com/pyo3/pyo3/compare/v0.2.1...v0.2.2
[0.2.1]: https://github.com/pyo3/pyo3/compare/v0.2.0...v0.2.1
[0.2.0]: https://github.com/pyo3/pyo3/compare/v0.1.0...v0.2.0