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

Nemo should focus on coroutines, not pipes. #10

Open
BookOwl opened this issue Apr 18, 2017 · 0 comments
Open

Nemo should focus on coroutines, not pipes. #10

BookOwl opened this issue Apr 18, 2017 · 0 comments
Assignees
Milestone

Comments

@BookOwl
Copy link
Owner

BookOwl commented Apr 18, 2017

I originally created nemo to see what a language that provided high level support for piping would be like. I believe that is has succeed in this aim and taught me several things.

Pipes are good, but coroutines are better.

Coroutines are much more general than pipes and allow several different styles of organizing code. Pipes are very specific, and can be easily created with coroutines.

I believe nemo would be a much better and more useful language if it makes working with async code using coroutines as easy as sync code, while still being fast.

Similar things should be similar, and different things should be different

Despite nemo not being a functional (as in the paradigm), I have tried to make much of its syntax functional. This made things unnecessarily confusing. I'm going to try to make the syntax more traditional in places where the language is like other languages, but still keep the new stuff different.

The source should be simple, yet fast.

pub fn eval<'a, 'b>(ast: &'a Expr, env: ProtectedEnv, this: Arc<Mutex<queue::Consumer<Value>>>, next: Arc<Mutex<queue::Producer<Value>>>) -> Result<Value, Error<'b>> {}

nemo's current source code is complex and not very fast compared to things like bytecode VMs and JITs. #7 can be fixed as part of this.

The solution

I believe that the best way to fix this is to redesign nemo with an eye towards coroutines and async code, and completely rewrite the source.

@BookOwl BookOwl self-assigned this Apr 18, 2017
@BookOwl BookOwl added this to the v1.0 milestone Apr 18, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant