this reduces the chances of hitting the 32-bit address space issue on x86_64
instead of (always) using a static ANCHOR variable located in .bss we lazily initialize the ANCHOR
variable using the value passed to the first `Ptr::new` invocation. In practice, this means the very
first `Pool::grow` (on x86_64) call is guaranteed to work (use the given memory). Follow up `grow`
invocations are *more likely* to work (but not guaranteed) *if* all given memory comes from the
heap.
We still need an ANCHOR in .bss as a fallback because it's possible to allocate ZST on a pool
without calling `Pool::grow` (= the lazily init ANCHOR is never initialized *but* it can be read)
the implementation uses a 64-bit atomic on `x86` to avoid the `ANCHOR` variable and the address
space limitation seen with the x86_64 compilation target
this PR also adds the i686-linux-musl target to the test matrix to exercise the new implementation
closes#231
... otherwise any crate using heapless will automatically add all the
funny ARMv6-M only dependencies regardless.
Signed-off-by: Daniel Egger <daniel@eggers-club.de>
vec passes tests
vec passes tests with docs as well (besides one with FromIter)
vec passes tests with docs as well (besides one with FromIter)
exposing full API
passing all current tests
starting with string
string test passes mostly
string test passes
ufmt passes
TODO removed
binary_heap wip
binary_heap passes tests
sealed passes
spsc wip
spsc wip2
split wip3
spcs and split passes --lib tests
spcs and split passes --lib tests
spcs and split passes --lib tests
spcs and split passes all tests (doc + lib)
indexmap wip
indexmap passes --lib test
indexmap passes all tests (lib + doc)
indexset passes all tests (lib + doc)
indexset passes all tests (lib + doc)
linear map wip
linear map all test (lib + doc) passes, drop not tested, into_iter(mut self) not implemented
history buffer all test pass (doc + lib), Copy instead of clone atm
serde does not work
pool works, serde still not
serde wip
serde wip
serde wip
serde wip
The built-in rustc targets ended with names that start with `armv7a-` so #140
does not cover them though the intention was to support them; this commit fixes
that