Skip to content

Wishlist

Ayke edited this page Nov 2, 2018 · 5 revisions

Some wishlist items, from "critical in most applications" to "nice to have". In no particular order.

Parallelism

It is possible, but not really on the roadmap. Multithreading is very hard to get right: both the runtime and packages like sync need to be aware of it. They currently are not.

Here are roughly the required steps:

  • Implement channels
  • Implement blocking I/O with a different goroutines taking over when the current one is blocked
  • Implement safe interrupt handling on MCUs: this is like a really primitive form of threads (think Unix signals) that can be temporarily disabled for atomic behavior
  • Implement goroutines with a real separate stack - they currently share the same stack using some compiler magic (there should be a compiler flag to choose this)
  • Try running multiple goroutines at the same time in different threads - of course this should also be an option to not increase code size when not needed

In any case, the fact that some programs can run goroutines in parallel should not increase code size in single-threaded builds.

Clone this wiki locally