Merge branch 'master' into v0.9.0
This commit is contained in:
commit
4fe1841c5f
|
@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
|||
* The blanket implementations for `FromPyObject` for `&T` and `&mut T` are no longer specializable. Implement `PyTryFrom` for your type to control the behavior of `FromPyObject::extract()` for your types.
|
||||
* The implementation for `IntoPy<U> for T` where `U: FromPy<T>` is no longer specializable. Control the behavior of this via the implementation of `FromPy`.
|
||||
* `#[new]` does not take `PyRawObject` and can reutrn `Self` [#683](https://github.com/PyO3/pyo3/pull/683)
|
||||
* Use `parking_lot::Mutex` instead of `spin::Mutex` [#734](https://github.com/PyO3/pyo3/pull/734)
|
||||
|
||||
### Added
|
||||
|
||||
|
|
16
Cargo.toml
16
Cargo.toml
|
@ -19,16 +19,16 @@ travis-ci = { repository = "PyO3/pyo3", branch = "master" }
|
|||
appveyor = { repository = "fafhrd91/pyo3" }
|
||||
|
||||
[dependencies]
|
||||
libc = "0.2.62"
|
||||
spin = "0.5.1"
|
||||
num-traits = "0.2.8"
|
||||
pyo3cls = { path = "pyo3cls", version = "=0.9.0-alpha.1" }
|
||||
num-complex = { version = ">= 0.2", optional = true }
|
||||
num-bigint = { version = ">= 0.2", optional = true }
|
||||
inventory = "0.1.4"
|
||||
indoc = "0.3.4"
|
||||
unindent = "0.1.4"
|
||||
inventory = "0.1.4"
|
||||
libc = "0.2.62"
|
||||
num-bigint = { version = ">= 0.2", optional = true }
|
||||
num-complex = { version = ">= 0.2", optional = true }
|
||||
num-traits = "0.2.8"
|
||||
parking_lot = { version = "0.10", features = ["nightly"] }
|
||||
paste = "0.1.6"
|
||||
pyo3cls = { path = "pyo3cls", version = "=0.9.0-alpha.1" }
|
||||
unindent = "0.1.4"
|
||||
|
||||
[dev-dependencies]
|
||||
assert_approx_eq = "1.1.0"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
use crate::ffi::object::*;
|
||||
use crate::ffi::pyport::Py_ssize_t;
|
||||
use crate::ffi::pyport::{Py_hash_t, Py_ssize_t};
|
||||
use std::os::raw::{c_char, c_int};
|
||||
|
||||
#[cfg_attr(windows, link(name = "pythonXY"))]
|
||||
|
@ -68,6 +68,13 @@ extern "C" {
|
|||
pub fn PyDict_GetItemWithError(mp: *mut PyObject, key: *mut PyObject) -> *mut PyObject;
|
||||
#[cfg_attr(PyPy, link_name = "PyPyDict_SetItem")]
|
||||
pub fn PyDict_SetItem(mp: *mut PyObject, key: *mut PyObject, item: *mut PyObject) -> c_int;
|
||||
#[cfg(not(PyPy))]
|
||||
pub fn _PyDict_SetItem_KnownHash(
|
||||
mp: *mut PyObject,
|
||||
key: *mut PyObject,
|
||||
item: *mut PyObject,
|
||||
hash: Py_hash_t,
|
||||
) -> c_int;
|
||||
#[cfg_attr(PyPy, link_name = "PyPyDict_DelItem")]
|
||||
pub fn PyDict_DelItem(mp: *mut PyObject, key: *mut PyObject) -> c_int;
|
||||
#[cfg_attr(PyPy, link_name = "PyPyDict_Clear")]
|
||||
|
|
|
@ -20,4 +20,6 @@ impl Default for PyHash_FuncDef {
|
|||
#[cfg_attr(windows, link(name = "pythonXY"))]
|
||||
extern "C" {
|
||||
pub fn PyHash_GetFuncDef() -> *mut PyHash_FuncDef;
|
||||
#[cfg(not(PyPy))]
|
||||
pub fn _Py_HashBytes(src: *const c_void, len: Py_ssize_t) -> Py_hash_t;
|
||||
}
|
||||
|
|
|
@ -6,7 +6,6 @@ use crate::ffi;
|
|||
use crate::internal_tricks::Unsendable;
|
||||
use crate::types::PyAny;
|
||||
use crate::Python;
|
||||
use spin;
|
||||
use std::ptr::NonNull;
|
||||
use std::{any, sync};
|
||||
|
||||
|
@ -124,7 +123,7 @@ struct ReleasePool {
|
|||
borrowed: ArrayList<NonNull<ffi::PyObject>>,
|
||||
pointers: *mut Vec<NonNull<ffi::PyObject>>,
|
||||
obj: Vec<Box<dyn any::Any>>,
|
||||
p: spin::Mutex<*mut Vec<NonNull<ffi::PyObject>>>,
|
||||
p: parking_lot::Mutex<*mut Vec<NonNull<ffi::PyObject>>>,
|
||||
}
|
||||
|
||||
impl ReleasePool {
|
||||
|
@ -134,7 +133,7 @@ impl ReleasePool {
|
|||
borrowed: ArrayList::new(),
|
||||
pointers: Box::into_raw(Box::new(Vec::with_capacity(256))),
|
||||
obj: Vec::with_capacity(8),
|
||||
p: spin::Mutex::new(Box::into_raw(Box::new(Vec::with_capacity(256)))),
|
||||
p: parking_lot::Mutex::new(Box::into_raw(Box::new(Vec::with_capacity(256)))),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue