heapless
biscuit
Our great sponsors
heapless | biscuit | |
---|---|---|
4 | 12 | |
1,387 | 2,406 | |
2.9% | 1.5% | |
8.7 | 0.0 | |
23 days ago | over 1 year ago | |
Rust | Go | |
Apache License 2.0 | BSD 3-clause "New" or "Revised" License |
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
biscuit
-
Biscuit 3.0
No, it isn't the third release of a POSIX like OS research written in Go,
https://github.com/mit-pdos/biscuit
-
If I know neither Go or Rust, which do I choose to learn first/only?
But there are other brave people exists like biscuit or gopher-os who can do it :)))
-
Pre-Overengineering
That's something I found in doing a bit of a dive on why ripgrep is so fast at doing a very specific kind of string search workload (Gallant / burntsushi / author of ripgrep is an actual wizard and contributes to Rust's regex engines, for reference). I wrote tiny proof of concepts in a variety of languages, all in my same style -- and sometimes my Go variants were as fast as the equivalent Rust/C (even in release / -O3/2 (every once in a blue moon, O3 makes no diff or is a slight regression in some exec paths)). I eventually found something about benchmarks in a related area, leading to this: https://benhoyt.com/writings/count-words/#performance-results-and-learnings. Somebody on the Go sub even linked me to the Biscuit OS: https://pdos.csail.mit.edu/papers/biscuit.pdf, which, tidbit, has Jon Gjengset (Crust of Rust legend) in the contribs list (https://github.com/mit-pdos/biscuit).
-
What is a "CPU Biscuit"?
https://github.com/mit-pdos/biscuit maybe this
-
Rust: A Critical Retrospective
Go has been used to implement OS kernel code, e.g. in the Biscuit OS from MIT: https://github.com/mit-pdos/biscuit
Of course, the garbage collector did not exactly make it easier - but it's an interesting piece of software.
- Can Go be used for kernel development?
- GOLang in embedded systems
-
GOLang in embedded systems (1 physical threads)
https://github.com/mit-pdos/biscuit says 5% slowdown over C. Garbage collection is going to require some more RAM, generally <=2x though.
- Biscuit operating system written in Go
- The difference between Go and Rust
What are some alternatives?
tinyvec - Just, really the littlest Vec you could need. So smol.
Cosmos - Cosmos is an operating system "construction kit". Build your own OS using managed languages such as C#, VB.NET, and more!
blisp - A statically typed Lisp like scripting programming language for Rust.
regex-automata - A low level regular expression library that uses deterministic finite automata.
scapegoat - Safe, fallible, embedded-friendly ordered set/map via a scapegoat tree. Validated against BTreeSet/BTreeMap.
TinyGo - Go compiler for small places. Microcontrollers, WebAssembly (WASM/WASI), and command-line tools. Based on LLVM.
utils - Utility crates used in RustCrypto
Harbol - Harbol is a collection of data structures and miscellaneous libraries, similar in nature to C++'s Boost, STL, and GNOME's GLib; it is meant to be a smaller and more lightweight collection of data structures, code systems, and convenience software.
gopher-os - A proof of concept OS kernel written in Go
cassette - A simple, single-future, non-blocking executor intended for building state machines. Designed to be no-std and embedded friendly.
snapbox - Snapshot testing for CLIs