crates.io
embassy
crates.io | embassy | |
---|---|---|
672 | 85 | |
3,196 | 6,786 | |
1.3% | 4.4% | |
10.0 | 9.9 | |
5 days ago | 3 days ago | |
Rust | Rust | |
Apache License 2.0 | 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.
crates.io
-
Getting Started with Rust: A Modern Systems Programming Language
Explore Crates: Use crates.io to find libraries for your projects.
-
Beyond TypeScript 🚀
Rust? It's built clean from the ground up. The crates.io registry is full of modern, safe, composable libraries. You've got Axum, Rocket and Actix for backends, Leptos, Dioxus, and Yew for frontend, and more. Every library you use follows the same philosophy: safety, performance, and zero tolerance for ambiguity.
-
Online Embedded Rust Simulator
I've been ramping up on the embedded Rust ecosystem over the last few weeks. I'm pretty excited about it partly because it makes this aspect of embedded development much more approachable. On https://crates.io I can usually find a driver for whatever peripheral I want to use in my project. And the driver usually implements the embedded-hal [1] interface, so the more I get familiar with that interface, the easier it becomes to implement any arbitrary peripheral into my project. In the event that there does not already exist a crate for my peripheral, I have an extensive ecosystem [2] of open source driver code that I can refer to in order to figure out how to implement the driver.
I think this could help with the "dark art of reading datasheets" problem. E.g. last night I was curious about how the driver for a 28BYJ-48 stepper motor would work, so I looked at the code [3] for its driver and got a pretty good sense of what's going on. If I were to now attempt to read the datasheet, a lot of it would now make sense. In other words I think it's too daunting to read a datasheet and then try to implement code. The way to get comfortable with datasheets is to first look at code and then find the relevant parts of the datasheet.
[1] https://github.com/rust-embedded/embedded-hal
[2] https://crates.io/keywords/embedded-hal-driver
[3] https://github.com/MnlPhlp/uln2003
- Comente o porquê, não o quê
-
Static search trees: 40x faster than binary search
I often hear this and am confused; not only are things like ['object soup'](https://jacko.io/object_soup.html) possible and straightforward (putting things in collections and referring to them by indices), I never concretely hear why a graph or doubly-linked list becomes uniquely difficult to implement in Rust (and would genuinely be curious to learn why you feel this way). If you needed such data structures anyway, they're either in the standard library or in the many libraries ('crates' in Rust-lingo) available on [Rust's package registry](https://crates.io/)---using dependencies in Rust is very straightforward & easy.
-
What is Rust, and What is for it?
Rust Package Registry (crates.io)
-
My First Publish to crates.io (and cross compilation)
crates.io is the central repository/registry for Rust crates. It's a crucial part of the Rust ecosystem.
-
Redis is trying to take over the all of the OSS Redis libraries
Oh dear.
I see Redis Inc. have decided to go full Nagios.
Never go full Nagios.
Though admittedly Nagios' attempt to pull similar assholery wrt CPAN did end up being a source of some amusement to me: http://p3rl.org/Nagios::Plugin
I hope the http://crates.io team react similarly.
-
Introducing Spin 3.0
Spin 3.0 introduces a workflow for this type of development in the hopes of making it seamless to do things like write a library for some compute intensive task in Rust and use that as a dependency in a JavaScript application. Or perhaps you’re not a Rust developer and don’t feel like learning it overnight? No problem. Fetch a component someone else already built from an OCI registry. Component dependencies can be stored, discovered, and fetched from OCI registries giving you the npm/NuGet/crates.io style experience but for Wasm. Now, I think this particular feature is wild and could go on about it for at least a thesis, but there are even more Spin 3.0 topics to discuss so feel free to dig deeper in the component dependencies documentation here and in the demo later on.
-
Tech Transfer from Old Languages to GO and Rust
Rust: crates.io
embassy
-
Rust on the RP2350
Embassy got _some_ support for rp2350 for quite some time now
https://github.com/embassy-rs/embassy
- Zlib-rs is faster than C
- Embassy: Modern embedded framework, using Rust and async
- Rust async framework for embedded systems
-
Pebble smartwatch firmware released as open-source
TL;DR: No. Maybe? Depends.
It's probably reasonable to make a distinction between "Real Time" desktop/server OS (on CPUs) vs "Real Time" embedded hardware OS (on MCUs).
(Even aside from any hard-/soft- real time distinction.)
On the embedded side, in addition to FreeRTOS (upon which Pebble OS is built), I'm aware of others with reasonably high profile such as:
* Zephyr (Linux Foundation, C): https://en.wikipedia.org/wiki/Zephyr_(operating_system)
* NuttX (Apache Software Foundation, C & C++): https://en.wikipedia.org/wiki/NuttX
In addition, there's also some "up & coming" Rust language projects which fall somewhere along the "framework" to "OS" spectrum (in part, via https://arewertosyet.com):
* Tock: https://github.com/tock/tock
* Embassy: https://github.com/embassy-rs/embassy
* Hubris: https://hubris.oxide.computer
On the desktop side, I seem to recall in the past, OS such as BeOS & QNX have been presented as a possible future for real time desktop OS that hasn't arrived.
As someone else already mentioned, PREEMPT_RT being merged for Linux is a recent development somewhat in this space which could have impact on both desktop & "embedded" situations but suitability varies dependent on, say, whether you're wanting to use it for audio production versus controlling some 10 tonne robot operating next to humans.
Hope this at least goes some way to answering your question. :)
- Embassy: Replacing RTOS with a Rust async scheduler
-
Apple is Killing Swift – A great language strangled by governance
The other comment implied it but I think it's worth pointing out that:
> embedded applications that can't have asynchronous execution
Is most definitely not the case.
They can't have the same type of async runtime that would be optimal for a web server or the likes (and I'm not sure all desktop applications and web servers are going to always benefit from the same runtime in the same way), but that's a point in favour of Rust's model imho
If you're interested this is an embedded async runtime that's expected to run in no-std and no-alloc environments
https://embassy.dev/
-
Impl Snake For Micro:bit - Embedded async Rust on BBC Micro:bit with Embassy
In this article, I will guide you through creating a Snake game in embedded Rust on the BBC Micro:bit using the asynchronous framework Embassy.
-
A review after using Rust on embedded in production for over a year
Rust solved this by autogenning code from mfgr published device xml descriptors. Eg https://embassy.dev/
Better than any C(++) embedded hal I've used
- Building a GATT Server on Pi Pico W
What are some alternatives?
Cargo - The Rust package manager
rtic - Real-Time Interrupt-driven Concurrency (RTIC) framework for ARM Cortex-M microcontrollers
docs.rs - crates.io documentation generator
tock - A secure embedded operating system for microcontrollers
plotters - A rust drawing library for high quality data plotting for both WASM and native, statically and realtimely 🦀 📈🚀
nrf-hal - A Rust HAL for the nRF family of devices