Git Product home page Git Product logo

Comments (3)

etaoins avatar etaoins commented on July 18, 2024 4

Thanks @colelawrence, I've been wondering the same thing myself 😀

While a web server might be possible right now, my focus for the rest of the year is probably going to be on three things:

  1. Implementing core data structures. While I'm happy with Int/Float/Str/Sym/List, Vector is just barely implemented on top of Rust vectors and Map/Set don't make it beyond the parser. I'd like to implement them using something like Clojure's persistent data structures. I've done this previously in C++ so I'll hopefully have an easier go this time.

  2. Working on the asynchronous model. I'd like to support actor-like concurrency on top of function closures but some form of async/await would be nice as well

  3. Pattern matching. This is a nightmare to implement correctly but I love pattern matching too much to not do it.

I work on Arret mostly on the weekends when I have time and kind of meander through what I find interesting at the time. If you have any specific questions/feedback/bug reports/etc. please ask them; that will be a better motivator than boredom!

from arret.

colelawrence avatar colelawrence commented on July 18, 2024

@etaoins would async/await and/or actor systems be a standard library feature implemented as macros? Thanks for the response!

from arret.

etaoins avatar etaoins commented on July 18, 2024

For the actor system compiler support should be complete. There's an implicit Task parameter passed to every function that threads through the current Arret task. Right now this is just the garbage collected heap, but once actors are supported this can carry the actor context as well. The unit tests already run multiple Arret tasks concurrently so I'm confident that Arret is essentially thread safe.

The core runtime would need to grow an event loop, primitives for sending messages between actors, etc. which would be exposed at a higher-level by the standard library. This hasn't been started yet but it shouldn't be an immense amount of work.

For async/await I'm planning on doing something similar to what C#/Rust/etc. do where they rewrite async functions to a state machine built on top of a Promise type. I've never done this before so I'm expecting it to be pretty daunting. Hopefully the fact Arret is garbage collected lets it avoid some of the pain Rust has had with async/await.

from arret.

Related Issues (4)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.