async-wormhole
beam_languages
Our great sponsors
async-wormhole | beam_languages | |
---|---|---|
3 | 5 | |
108 | 714 | |
1.9% | - | |
0.0 | 0.0 | |
5 months ago | almost 2 years ago | |
Rust | ||
- | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
async-wormhole
-
A mini-Erlang/Elixir -- tell me if/why my idea sucks
Taking onto such a big project can be scary and overwhelming, so I like to "cheat" a bit. Instead of developing a M:N scheduler I picked an already mature and proven one from the Rust ecosystem: tokio. Then I just needed to develop a virtual stacks solution that works well with the scheduler. Instead of inventing my own byte-code I just picked WebAssembly, it's just a small abstraction above machine code and has mature JIT compiler libraries that generate code close to native speed. Then again, I just needed to figure out how to do reduction counting and insert preemption points into WebAssembly code during loading.
-
lunatic v0.5 released
Previously, we used our own implementation of virtual stacks and stack switching. Both (Wasmer & Wasmtime) Wasm runtimes we used internally required a tight integration with it, but neither library exposed the primitives to integrate well with it. So we needed to maintain forks of both runtimes with some patches to expose internal data structures. Just keeping up to date with new releases was taking way too much of my time. Stack switching is also a delicate task with a lot of hand written assembly involved and we would run into segfaults from time to time. Luckily Wasmtime shipped "native" async support that works similar to our implementation so we could switch to it. Re-writing was a pain, but I'm happy how everything has turned out and think that it was worth it.
-
Lunatic - An Erlang inspired runtime for all programming languages
Under the hood, Lunatic wraps "processes" inside of Rust async tasks with https://github.com/bkolobara/async-wormhole and can use any async executor to run them. We are currently using Smol's multithreaded executor, so it scales quite nicely across cores.
beam_languages
-
Smalltalk simplicity and consistency vs. other languages (2022) [video]
Languages, and about languages, on the BEAM: https://github.com/llaisdy/beam_languages
PS: You might also find this interesting : https://www.grisp.org/
-
Why Do ML on the Erlang VM?
I thought this was a call for Standard ML or something a rather on the Erlang VM.
(I really enjoyed this article though!)
As far as I know theres a few implementations of ML like languages on the Erlang VM
https://github.com/llaisdy/beam_languages
caramel and alpaca are worth checking out.
Gleam doesn't look like a ML lang but has a lot of the same semantics of a ML lang
-
Erlang: The coding language that finance forgot
Have I got a link for you!
https://github.com/llaisdy/beam_languages
See you down the rabbit hole!
-
Lunatic is an Erlang-inspired runtime for WebAssembly
Elixir, LFE, etc. seem to work fine for the people who enjoy them.
https://github.com/llaisdy/beam_languages
LFE is Virding's himself, and has been around for longer than Erlang has been popular: Robert Virding - LFE - a lisp flavour on the Erlang VM (Lambda Days 2016) https://www.youtube.com/watch?v=Br2KY12LB2w
-
A mini-Erlang/Elixir -- tell me if/why my idea sucks
The Beam Languages repo is filled with projects to build on top of Erlang and the BEAM to take inspiration from.
What are some alternatives?
lunatic - Lunatic is an Erlang-inspired runtime for WebAssembly
erllambda - AWS Lambda in Erlang
flume - A safe and fast multi-producer, multi-consumer channel.
cant - A programming argot
submillisecond-live-view - Live view for the submillisecond web framework
bastion - Highly-available Distributed Fault-tolerant Runtime
as-lunatic - This library contains higher level AssemblyScript wrappers for low level Lunatic syscalls.
secdb - Timeseries market data database
eqwalizer - A type-checker for Erlang