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

Make interpreter execution asynchronous and futures-based #11

sagebind opened this issue Jul 2, 2019 · 1 comment


None yet
1 participant
Copy link

commented Jul 2, 2019

The interpreter should be refactored to be fully asynchronous, using Rust futures and executors under the hood. We gain several huge wins by doing this:

  • At its core design, shell languages are merely tools for composing multiple chains of commands together asynchronously. Using tasks and futures to implement this will make the implementation more efficient, and also allow us to do new interesting things with the language that will put it squarely in the "next-generation" shells.
  • Instead of spawning new processes by default, background jobs can be executed inside a separate async task instead. This affords us much greater control, performance, and resource efficiency than using background processes.
  • We will finally have an implementation strategy for pipelines with minimal trade-offs. See #10 for details.

Since Riptide is still young, it is acceptable to switch to using nightly Rust for the interpreter to take advantage of any features we need to implement the async interpreter (though most notably async/await).


This comment has been minimized.

Copy link

commented Jul 2, 2019

Issue-Label Bot is automatically applying the label feature_request to this issue, with a confidence of 0.99. Please mark this comment with 👍 or 👎 to give our bot feedback!

Links: app homepage, dashboard and code for this bot.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.