-
Notifications
You must be signed in to change notification settings - Fork 226
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
roadmap to stable rust #471
Comments
I don't think we will see AVR on stable rust anytime soon, there is so much that still needs to be worked on... In any case, here are the big topics that come to my mind:
|
I think nowadays it's pretty good, there's not that many opened bugs and I'm not aware of any show-stoppers (although rust-lang/rust#109000 remains suspicious). @benshi001 is doing great job maintaining the backend - most of the issues in the recent months were caused by linking wrong intrinsics (on rustc's side), not by codegen itself being wrong.
This shouldn't be extremely difficult - IIRC we use avr-gcc mostly because it brings certain hand-written intrinsics (e.g. for i32 multiplication) - in principle those could be sourced from compiler-builtins instead, but the issue is that AVR requires a custom calling convention that hasn't been yet implemented in LLVM (and thus exposed in rustc). Moving from hand-written intrinsics to auto-generated ones would also warrant a benchmark, since e.g. making i32 multiplication ten times slower wouldn't be that great 👀 (or maybe rustc/lld could just automatically link those hand-written intrinsics, to reuse the work already done? I'm not sure on potential license issues here, though.) |
I am not familiar with rust, and I am now taking the responsibility of maintaining the llvm-avr backend (though it is my spare time work). I am glad if you can help me test the toolchain Here are some known issues if you want to get rid of GNU toolchain:
|
Update: The custom calling convention does not break the standard version, which is llvm's current implementation. So current AVR assembly generated by llvm should work, though a little less efficient. And of course, I am happy if you can offer rust's implementation of int32 mul/div to compiler-rt, as shown at here. |
I think the |
it'd be great if you could add a roadmap which identifies what still needs to be done in order to build & use this with a stable rust toolchain (instead of nightly). thanks!
The text was updated successfully, but these errors were encountered: