heapless
utils
Our great sponsors
heapless | utils | |
---|---|---|
4 | 8 | |
1,387 | 404 | |
2.9% | 4.0% | |
8.7 | 8.9 | |
23 days ago | 4 days ago | |
Rust | Rust | |
Apache License 2.0 | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
heapless
- """may_dangle""" stabilization
-
Rust: A Critical Retrospective
> we did not have Vec because we were no-std + stable so we literally had to use arrays
It's true that Vec isn't available in a no-std context, but don't think it follows that arrays are the only other option - see heapless for one example: https://github.com/japaric/heapless
I also agree with some of the ancestors: the post seems to say that the Rust language couldn't handle arrays with more than 32 elements, and (as someone who's written a fair bit of no-std Rust before const generic) that doesn't seem right. At first, this did seem awkward to me as well, but in practice I haven't found it to be a significant limitation. Was there a particular scenario where it wasn't feasible to wrap a >32 element array in your own type and implement Default on it?
-
Now that the long-awaited const generics (MVP) have come to stable in 1.51, what crates are going to gain the most from it?
It's happening
-
Writing a proposal to use Rust at work
heapless has both SPSC and MPMC channels that work on embedded
utils
-
Announcing `compact_str` version 0.7! A small string optimization for Rust
I didn't use any inline asm, instead I wrote the simplest if statement possible, which I confirmed on x86_64, x86, and aarch64 compiles down to use the platform's supported conditional move instructions. If this changes in the future and there's a need to write inline asm, you can do so in a portable way, e.g. the cmov crate.
-
Shoot me straight.
There's also cpufeatures which might suit your use case better (depending on exactly how you want to do it).
-
Crate for AES256 - which one to choose? Questions about block cipher modes and AEAD too.
I have seen that RustCrypto also offers a create for securely zeroing memory with: zeroize
-
`kindly`: a simplistic (and hopefully educational) implementation of a set-user-ID-root program (think mini `sudo`) for Linux
The zeroing routine itself looks fine to me. You might want to compare your code with the (already mentioned) zeroize crate, which does something similar (or maybe identical?).
-
Maybe found a Y2k bug in the rust-crypto DER-encoding util?
To save a few clicks, this was found to be, indeed, a Y2K issue, and der v0.4.1 has just been released to fix it. Citing the comment added to the issue after the fact:
-
Incredibly fast UTF-8 validation
I opened a tracking issue for that.
-
Now that the long-awaited const generics (MVP) have come to stable in 1.51, what crates are going to gain the most from it?
https://github.com/RustCrypto/utils/pull/325#issuecomment-791503136
What are some alternatives?
tinyvec - Just, really the littlest Vec you could need. So smol.
reference - The Rust Reference
blisp - A statically typed Lisp like scripting programming language for Rust.
sudo_pair - Plugin for sudo that requires another human to approve and monitor privileged sudo sessions
scapegoat - Safe, fallible, embedded-friendly ordered set/map via a scapegoat tree. Validated against BTreeSet/BTreeMap.
block-ciphers - Collection of block cipher algorithms written in pure Rust
regex-automata - A low level regular expression library that uses deterministic finite automata.
rust-crypto - A (mostly) pure-Rust implementation of various cryptographic algorithms.
cassette - A simple, single-future, non-blocking executor intended for building state machines. Designed to be no-std and embedded friendly.
biscuit - Biscuit research OS
RustCrypto - Authenticated Encryption with Associated Data Algorithms: high-level encryption ciphers