Skip to content
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

Rust runtime meta-issue #569

Closed
31 tasks done
whitequark opened this issue Oct 1, 2016 · 6 comments
Closed
31 tasks done

Rust runtime meta-issue #569

whitequark opened this issue Oct 1, 2016 · 6 comments

Comments

@whitequark
Copy link
Contributor

whitequark commented Oct 1, 2016

Needed for feature parity, with almost-only-Rust on comms CPU (there will still be -lcompiler-rt+-lalloc needed by Rust and -lbase needed by lwip):

  • Port watchdogs
  • Port cache
  • Allow sessions to interrupt one another (magic_ok codepath)
  • Port idle kernels
  • Port startup kernels
  • Set SOF_KEEPALIVE on bind PCB
  • Add rustc --cfg support to misoc CSR generator
  • Port moninj
  • Port analyzer
  • Port RPCs
  • Remove initial length field to allow streaming requests
  • Port isr/uart.h
  • Use a string interner for exceptions
  • Port network_init()
  • Port/rewrite flash_storage

Needed for feature parity, with almost-only-Rust on kernel CPU:

  • Port DDS (to ARTIQ Python)
  • Port I2C (to ARTIQ Python?)
  • Port RTIO
  • Port artiq_personality

Needed for completeness:

  • Remove \0 from strings sent over the network
  • Confine comms CPU stuff to bottom 4M of memory instead of having it all around
  • Use 64-bit integers for watchdog ms
  • Align RPC allocas to 4 bytes
  • Use Pascal strings in ARTIQ Python
  • TMPU support
  • Remove allocation when receiving kernel
  • Fully safe mailbox interface

Upstreaming:

  • Extract core_error
  • Fix problems with core_io and make it use core_error
  • Make byteorder use core_io and core_error
  • Stack probe fixes in LLVM (https://reviews.llvm.org/D9653)
@whitequark whitequark self-assigned this Oct 1, 2016
@whitequark whitequark added this to the 3.0 milestone Oct 1, 2016
@whitequark whitequark changed the title Rust runtime roadmap Rust runtime meta-issue Oct 1, 2016
@sbourdeauducq
Copy link
Member

Remove \0 from strings sent over the network

What is that for exactly?

@whitequark
Copy link
Contributor Author

Rust uses Pascal strings, not C strings, so that's just some junk that gets added on one end and removed on another.

@whitequark
Copy link
Contributor Author

Remove allocation when receiving kernel

This turned out not to be possible because the shared objects we generate aren't execute-in-place (they have holes and that needs an MMU if we really want to do it zero-copy).

@whitequark
Copy link
Contributor Author

Fully safe mailbox interface

I've evaluated this and, while possible, this conversion is unlikely to prevent more bugs than it would cause.

@whitequark
Copy link
Contributor Author

Extract core_error
Fix problems with core_io and make it use core_error
Make byteorder use core_io and core_error

I've looked into it and core_io/core_error are very annoying to write, mostly because you have to manually produce patches for dozens of libstd versions. I'm not going to die on this hill, especially seeing as the workaround is mild. Someone else in the community is going to have to be annoyed enough.

@whitequark
Copy link
Contributor Author

Runtime has been migrated to Rust.

@whitequark whitequark moved this from in progress to done in dashboard-whitequark Feb 4, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
No open projects
Development

No branches or pull requests

2 participants