sptr
sptr copied to clipboard
sptr: The Strict Provenance Polyfill
Strict provenance in libcore saw some renames recently, so the API here is no longer in sync with the one that will be stabilized eventually. - invalid -> without_provenance -...
The `T: Sized` bound doesn't appear to be present in libcore, so I'm presuming it was an oversight here?
Fixes #13 ``` sptr on add-license [+] ❯ cargo package --allow-dirty --no-verify Packaging sptr v0.3.2 (/home/michel/src/github/Gankra/sptr) sptr on add-license [+] ❯ tar tf target/package/sptr-0.3.2.crate sptr-0.3.2/.github/workflows/rust.yml sptr-0.3.2/.gitignore sptr-0.3.2/Cargo.toml sptr-0.3.2/Cargo.toml.orig...
This is recommended for packaging in some Linux distributions e.g. Fedora
We have strict provenance APIs for AtomicPtr in the stdlib, but not in `sptr`. - [`AtomicPtr::fetch_and`](https://doc.rust-lang.org/nightly/std/sync/atomic/struct.AtomicPtr.html#method.fetch_and) - [`AtomicPtr::fetch_or`](https://doc.rust-lang.org/nightly/std/sync/atomic/struct.AtomicPtr.html#method.fetch_or) - [`AtomicPtr::fetch_xor`](https://doc.rust-lang.org/nightly/std/sync/atomic/struct.AtomicPtr.html#method.fetch_xor) - [`AtomicPtr::fetch_byte_add`](https://doc.rust-lang.org/nightly/std/sync/atomic/struct.AtomicPtr.html#method.fetch_byte_add) - [`AtomicPtr::fetch_byte_sub`](https://doc.rust-lang.org/nightly/std/sync/atomic/struct.AtomicPtr.html#method.fetch_byte_sub) - [`AtomicPtr::fetch_ptr_add`](https://doc.rust-lang.org/nightly/std/sync/atomic/struct.AtomicPtr.html#method.fetch_ptr_add) - [`AtomicPtr::fetch_ptr_sub`](https://doc.rust-lang.org/nightly/std/sync/atomic/struct.AtomicPtr.html#method.fetch_ptr_sub) I think...
This will probably need a different trait (`StrictNonNull`?) as NonNull has additional invariants on its address that must be upheld.