Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.
Sign upSurvey: 2019 wishlist #256
Comments
japaric
added
community
survey
T-all
labels
Nov 13, 2018
This comment has been minimized.
This comment has been minimized.
|
Category: Stabilization Request: Stabilize RFC 2282 - "Cargo profile dependencies" AKA Rationale:
|
This comment has been minimized.
This comment has been minimized.
|
Category: Bug fix Request: fix rust-lang/cargo#5730 - "Features of dependencies are enabled if they're enabled in build-dependencies; breaks no_std libs" Rationale: this makes some |
This comment has been minimized.
This comment has been minimized.
|
Category: Stabilization Request: Stabilize Rationale: this is required to make (*) |
This comment has been minimized.
This comment has been minimized.
|
Category: Stabilization Request: Stabilize Rationale: this is required to make (*) |
This comment has been minimized.
This comment has been minimized.
ZirconiumX
commented
Nov 14, 2018
|
Category: "feature" Request: MIPS intrinsic for Rationale: Access to the system control coprocessor in MIPS provides access for features ranging from MMU control (for devices that have it) to enabling/disabling interrupts and handling interrupts. This currently requires either external assembly, which is not optimal, or |
This comment has been minimized.
This comment has been minimized.
|
Category: Stabilization Request: thumb intrinsics (#63) Rationale: many (all?) the intrinsics we want are in stdsimd (rust-lang-nursery/stdsimd#518) and so available to nightly; it would be great to get them stabilised as well. The last RFC about this (#184) sort of stalled out. P.S. thanks @ZirconiumX for reminding me! |
This comment has been minimized.
This comment has been minimized.
ZirconiumX
commented
Nov 14, 2018
•
|
Category: Std Request: Optimise memory routines in Rationale: At the moment the |
This comment has been minimized.
This comment has been minimized.
|
Category: Crate Request: High quality RTOS bindings Rationale: Being able to use Rust alongside an existing RTOS (FreeRTOS, ChibiOS, mbed-os, etc) would be really attractive for those already using the RTOS but wanting to start moving to Rust. Ideally in the end we'd have a Rust RTOS anyway (and RTFM provides a really compelling alternative already) but in the immediate future good bindings would be great. There's already work in this direction such as https://github.com/hashmismatch/freertos.rs and https://github.com/thenewwazoo/ChibiOS-rust. |
This comment has been minimized.
This comment has been minimized.
|
Category: Crate Rationale: Adding SD card support to your embedded project should be as easy as using the Arduino SD library - just depend on the crate and add a on-liner connecting the SD card library to your chip's SPI peripheral. This library should prioritize ease of use over performance (i.e. polling and byte-wise transfers rather than interrupt-driven DMA block transfers), but allow for higher-performance implementations to be plugged in if required, through a generic |
This comment has been minimized.
This comment has been minimized.
|
Category: Crate |
This comment has been minimized.
This comment has been minimized.
|
Category: Crate |
This comment has been minimized.
This comment has been minimized.
|
Category: Crate |
jamesmunns
referenced this issue
Nov 14, 2018
Open
Editorial Idea: The Embedded Rust that Could Be #26
This comment has been minimized.
This comment has been minimized.
eldruin
commented
Nov 14, 2018
•
|
Category: Bug fix Rationale: In drivers that support several devices, it would simplify the code to be able to define generic associated constants for things like buffer sizes and use them to create fixed-size arrays for data transfer, for example. |
This comment has been minimized.
This comment has been minimized.
|
Category: Feature Request: std-aware Cargo / Xargo in Cargo Rationale:
This is planned work for the Cargo team so I mainly want to gauge interest and check how important is it for you to get this stabilized in 2019. Please vote with a |
This comment has been minimized.
This comment has been minimized.
|
Category: Std Request: math support in core Rationale: there's nothing OS specific about math libraries. |
This comment has been minimized.
This comment has been minimized.
DrSensor
commented
Nov 14, 2018
•
|
Category: Resources Request: Table/List of comparison/example between embedded_hal API vs Arduino API Rationale: This will help in teaching newcomer about embedded rust. Especially the one who doesn't have experience in firmware programming. Also, it makes it easier for someone to port some of Arduino libraries into rust drivers. |
This comment has been minimized.
This comment has been minimized.
ramn
commented
Nov 14, 2018
|
Category: feature |
This comment has been minimized.
This comment has been minimized.
jed-frey
commented
Nov 15, 2018
This comment has been minimized.
This comment has been minimized.
jed-frey
commented
Nov 15, 2018
•
|
This comment has been minimized.
This comment has been minimized.
Sh4rK
commented
Nov 15, 2018
•
|
Category: stabilization |
This comment has been minimized.
This comment has been minimized.
Sh4rK
commented
Nov 15, 2018
|
Category: crate (Side note: I would probably be able to help writing this.) |
This comment has been minimized.
This comment has been minimized.
paoloteti
commented
Nov 15, 2018
|
Category: feature Request: Add support for Cortex-R52 Rationale: One of the most advanced real-time embedded CPU out there. As the first |
This comment has been minimized.
This comment has been minimized.
grossws
commented
Nov 15, 2018
|
Category: stabilization Request: stabilize Rationale: It would allow to use dynamic heap-allocated structures on stable |
This comment has been minimized.
This comment has been minimized.
jacobrosenthal
commented
Nov 15, 2018
|
Category: resources Request: are-we-no-std-yet style community push Rationale: push no_std amongst important libraries and a guide to helping library authors avoid std stuff they may not need, feature gate stuff they do |
This comment has been minimized.
This comment has been minimized.
geomatsi
commented
Nov 16, 2018
|
Category: resources Request: Improve documentation needed to start experimenting with Rust on AVR, MSP430, RISC-V Rationale: The more people start to experiment with those platforms the better - more testing, more drivers, etc. Using Rust on cortex-m chips has been greatly simplified and streamlined during this year. Other mcu platforms are not yet there and have a more steep learning curve now. It would be great to have introductory documents for some available development boards (LaunchPads, Arduinos) explaining how to get started with Rust on those boards: how to prepare environment (Xargo/Cargo), maintained crates (HAL, drivers, etc), troubleshooting (e.g. where to post LLVM issues), and so on. |
This comment has been minimized.
This comment has been minimized.
|
Category: resources Request: Improve crates.io or create separate site for Rationale: It is still very hard to find suitable crates for |
This comment has been minimized.
This comment has been minimized.
jamwaffles
commented
Dec 9, 2018
|
Category: std Request: Ability to use Rationale: embedded-graphics and other libraries that require input/output of formatted text would benefit greatly from the ability for either library code or application code to use |
This comment has been minimized.
This comment has been minimized.
Lokathor
commented
Dec 9, 2018
|
Isn't that just the |
This comment has been minimized.
This comment has been minimized.
AxFaure
commented
Dec 9, 2018
|
Category: feature Request: ability to list/forbid dependencies using unsafe code or which could panic Rationale: In order to guarantee a minimum level of safety/security in our code, we need to be able to determine to which extent we can trust the libraries we are using. Having the option to forbid unsafe code and/or code that can panic in our crate and in its dependencies would be a huge plus. Since not all unsafe code can be avoided, it could probably be implemented as a whitelist that could be configured in cargo (or maybe as a plugin similar to clippy). A developer could then allow some unsafe dependencies after manually reviewing them. This is probably not specific to the embedded world but there is a lot of embedded software that is critical enough to need this feature. There are some crates like this one https://crates.io/crates/cargo-geiger that can already help but I think more work is needed in this direction |
This comment has been minimized.
This comment has been minimized.
|
I have added all requests up to this point to the issue description. |
This comment has been minimized.
This comment has been minimized.
TeXitoi
commented
Dec 10, 2018
|
The |
This comment has been minimized.
This comment has been minimized.
puzrin
commented
Dec 10, 2018
•
|
Category: crates (?) Request: Easy firmware flashing for popular OS-es / SOCs (initially - stlink/DFU for linux/osx/win). Rationale: Original issue is now in book repo. But since it can not be resolved by documentation only, i think it worth place it here. Let's imagine, you developed great OSS hardware, and users wish to repeat it or join to further development. Then it's critical to resolve 2 use cases:
Example. Right now, with C and PlatformIO i can give very simple instructions:
I understand, this problem is not Rust-specific. But since Rust plans to be awesome for embedded, it's important to be awesome about firmware upload too. |
This was referenced Dec 11, 2018
This comment has been minimized.
This comment has been minimized.
aurabindo
commented
Dec 12, 2018
|
Category: Resources/None Request: Guidelines for vendor participation Rationale: If there is an official point of contact and established procedure for vendors to submit drivers for their devices, ecosystem will flourish. I'm proposing a model equivalent to the one followed by Linux. Vendor or independent contributors submits code, gets scrutinized in the public, and gets accepted into an official source controlled by the WG. Advantages:
(I posted about this before coming across this issue here: #264) |
This comment has been minimized.
This comment has been minimized.
eddyp
commented
Dec 14, 2018
•
To support NXP platfroms with e200 cores, llvm will need to support the code-dense variation of the powerpc instruction set, VLE, because MPC57xxx MCUs are VLE only, but it seems there is no support for this, athough there have been some experiments (amybe just behind closed doors): If anyone wants to start, the offical info regarding the Book VLE ISA is in the PowerISA. I found a copy at http://fileadmin.cs.lth.se/cs/education/EDAN25/PowerISA_V2.07_PUBLIC.pdf |
This comment has been minimized.
This comment has been minimized.
avraliov
commented
Dec 17, 2018
•
|
Category: feature Request: bits layout implementation like in Ada Rationale: in Ada we can describe bits layout like: Will be nice to have something like that declarative style in Rust embedded |
This comment has been minimized.
This comment has been minimized.
eddyp
commented
Dec 17, 2018
•
|
@avraliov I would rather have something less spread out like: struct SomeRecord { Or something maybe less verbose like: And in case of the regs >= u16 we would also need some endianess specifier since I've seen cases where the core was one endian but the peripheral was another, even middle? endian (byte order in u32 was 3412). |
This comment has been minimized.
This comment has been minimized.
Lokathor
commented
Dec 20, 2018
|
Category: Feature Request: Make Rationale: Tests usually want quickcheck or other std assuming crates, examples usually want to be no_std examples that demonstrate the use of the crate. Right now there's no way to handle this. |
This comment has been minimized.
This comment has been minimized.
eddyp
commented
Dec 20, 2018
|
@Lokathor For unit tests, you could run them on a different architecture than the target, I do that in C. Being able to do that same thing in Rust would be awesome. |
This comment has been minimized.
This comment has been minimized.
TeXitoi
commented
Dec 20, 2018
This comment has been minimized.
This comment has been minimized.
eddyp
commented
Dec 20, 2018
•
|
@TeXitoi OK, looks like what I wanted, but doesn't that explicitly require to mark in the Rust code which code is also runnable/testable on x86_64? I'm thinking the dependencies on arch specific crates such as cortex-m might make the generated code unusable otherwise. What I mean it's that Rust code should be arch independent by default so I don't have to do any change or white listing in the code to be able to run unit tests on some other host, say aarch64 linux or x86_64 FreeBSD. |
This comment has been minimized.
This comment has been minimized.
eddyp
commented
Dec 20, 2018
•
|
Category: crate |
This comment has been minimized.
This comment has been minimized.
TeXitoi
commented
Dec 20, 2018
•
|
@eddyp in the linked repository, you can see that I have a |
This comment has been minimized.
This comment has been minimized.
Lokathor
commented
Dec 20, 2018
•
|
@eddyp my target has no std lib (EDIT: and no atomics, so even proptest with nostd doesn't work), so I can not build my examples at all if cargo is trying to build quickcheck. https://travis-ci.org/rust-console/gba/builds/470340649 So, yes, i want almost all my tests to be built and run on a big beefy x86 machine with 50 cores and such. |
This comment has been minimized.
This comment has been minimized.
|
Category: stabilization Request: complete and stabilize the last bits of procedural macros (macros 1.2): crate level attributes and attributes on modules Rationale: Right now DSLs that require whole crate analysis to work and want to support the stable channel (e.g Real Time for The Masses v0.4) are forced to expose APIs like |
japaric commentedNov 13, 2018
•
edited
Hello embedded Rustaceans!
We are collecting a "wishlist" of things you'd like to see done, fixed or
stabilized in 2019. We'll use this data to make a roadmap for 2019, i.e. to set
the goals of the WG for 2019.
You can request anything related to embedded Rust development: language
features, bug fixes, crates, docs, etc. The more requested something is the more
likely it is to make it into the roadmap; of course, other factors will be
considered as well: amount of work required; how beneficial would it be to the
community; does it require a rust-lang/rust RFC? how likely is that RFC to be
accepted?; who has to do the bulk of the work? the embedded community or a Rust
team?; etc.
To keep things tidy let's limit comments to one request per comment. Let's👍
also avoid "+1" and "I'd like to see that fixed too" comments; instead use a
reaction to vote for a request.
To make our job easier please use the following format:
If you'd like to extend the rationale of an already submitted request just make
a new comment referencing the original request. We'll merge your comment into
the request comment. For example:
Summary of requests
Stabilization
profile-overridescore::mem::MaybeUninitconst fn-s that have trait bounds, e.g.const fn new() -> Mutex<T> where T: Send.Bug fixes
Features
#pragma unrolland-funroll-loops)Std
Crate
Resources
cc @rust-embedded/all please check this thread every now and then and update
the summary section