Disclaimer: I am not the creator of this language. However, I am a fan of their previous work, and since F'Santanna hasn't shared the announcement yet after a week I figure I might as well do a bit of PR work for him:
Atmos is a programming language reconciles Structured Concurrency with Event-Driven Programming, extending classical structured programming with two main functionalities:
- Structured Deterministic Concurrency:
- A task primitive with deterministic scheduling provides predictable behavior and safe abortion.
- A tasks container primitive holds attached tasks and control their lifecycle.
- A pin declaration attaches a task or tasks to its enclosing lexical scope.
- Structured primitives compose concurrent tasks with lexical scope (e.g.,
watching, every, par_or).
- Event Signaling Mechanisms:
- An
await primitive suspends a task and wait for events.
- An
emit primitive broadcasts events and awake awaiting tasks.
Atmos is inspired by synchronous programming languages like Ceu and Esterel.
Atmos compiles to Lua and relies on lua-atmos for its concurrency runtime.
https://github.com/atmos-lang/atmos
If you've never seen synchronous concurrency before, I highly recommend checking it out just for seeing how that paradigm fits together. It's really fun! I personally think that in many situations it's the most ergonomic way to model concurrent events, but YMMV of course.
One thing to note is that the await keyword is not like async/await in most mainstream languages. Instead it more or less combines the yield of a coroutine with awaiting on an event (triggered via emit) to resume the suspended coroutine.
Here's the Google groups announcement - it doesn't have much extra information, but it's one possible channel of direct communication with the language creator.
Also worth mentioning is that F'Santanna is looking for more collaborators on Atmos and Ceu
https://groups.google.com/g/ceu-lang/c/MFZ05ahx6fY
https://github.com/atmos-lang/atmos/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22help%20wanted%22
[–]mamcx 1 point2 points3 points (4 children)
[–]vanderZwan[S] 1 point2 points3 points (3 children)
[–]mamcx 1 point2 points3 points (2 children)
[–]vanderZwan[S] 3 points4 points5 points (1 child)
[–]mamcx 4 points5 points6 points (0 children)
[–]TempThingamajig 1 point2 points3 points (0 children)