27c7c4e26a
In order to support standard (de)serialization of structs, the `rust-bitcoin` ecosystem uses the standard `std::io::{Read,Write}` traits. This works great for environments with `std`, however sadly the `std::io` module has not yet been added to the `core` crate. Thus, in `no-std`, the `rust-bitcoin` ecosystem has historically used the `core2` crate to provide copies of the `std::io` module without any major dependencies. Sadly, its one dependency, `memchr`, recently broke our MSRV. Worse, because we didn't want to take on any excess dependencies for `std` builds, `rust-bitcoin` has had to have mutually-exclusive `std` and `no-std` builds. This breaks general assumptions about how features work in Rust, causing substantial pain for applications far downstream of `rust-bitcoin` crates. Here, we add a new `bitcoin_io` crate, making it an unconditional dependency and using its `io` module in the in-repository crates in place of `std::io` and `core2::io`. As it is not substantial additional code, the `hashes` io implementations are no longer feature-gated. This doesn't actually accomplish anything on its own, only adding the new crate which still depends on `core2`. |
||
---|---|---|
.. | ||
scripts | ||
src | ||
Cargo.toml | ||
README.md | ||
memory.x |
README.md
Running
To run the embedded test, first prepare your environment:
sudo ./scripts/install-deps
rustup +nightly target add thumbv7m-none-eabi
Then:
source ./scripts/env.sh && cargo +nightly run --target thumbv7m-none-eabi
Output should be something like:
hash:ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad hash_check:ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
hash:ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad hash_check:ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
Cleanup
After sourcing scripts/env.sh
and before building again using another target
you'll want to unset RUSTFLAGS
otherwise you'll get linker errors.
unset RUSTFLAGS