|2 months ago||7 days ago|
|GNU General Public License v3.0 or later||Apache License 2.0|
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.
Yatima: A programming language for the decentralized web
16 projects | news.ycombinator.com | 7 Jun 2021
Sure, if you consider Haskell's runtime (I know that technically GHC /= Haskell, but in practice it's the only Haskell that matters, except maybe something like Asterius) all the primitives are backed by C libraries: https://hackage.haskell.org/package/ghc-prim-0.4.0.0/docs/GH...
Likewise with conventions around pointers, arrays, etc. to the point where if you want to do anything really low-level or performance sensitive in Haskell, you're essentially punching a hole into C. As a random example, within the fast base64bytestring library, you find lots of use of `malloc`, `ForeignPtr` etc.: https://github.com/haskell/base64-bytestring/blob/master/Dat... And of course because this is C there aren't really many safety guarantees here.
The plan with Yatima with its primitives, and eventually when we write an FFI is to integrate with Rust in the same way that Haskell uses C. My hope is that with Yatima's affine types we might even be able to FFI to and from safe Rust (since the borrow checker uses affine types), but this is a little bit of a research project to see how much that works. Even to unsafe Rust though, we have better safety guarantees than C, since unsafe Rust's UB is still more restricted than C's is.
2 projects | news.ycombinator.com | 6 Aug 2022
3 projects | reddit.com/r/programmingcirclejerk | 20 Jun 2022
There are other interesting applications too, like Lunatic, which replicates the BEAM VM experience but with any language that compiles to wasm and can have language bindings written for it.
Redesign Screeps in Rust
2 projects | reddit.com/r/rust | 18 Jun 2022
If I were to do a programming RTS like Screeps, I might start with Lunatic where every player has their own thread with hard limits on memory and CPU.
My Personal Tech Limbo (and Elixir vs Rust)
2 projects | reddit.com/r/rust | 17 Jun 2022
A cool intersection between the two is Lunatic, it’s basically a BEAM-inspired runtime written in Rust that compiles to Wasm. There is also an experimental library working to bring Phoenix LiveView capabilities to Lunatic, called Puck.
Lunatic - Erlang-inspired runtime for WebAssembly
1 project | reddit.com/r/github_trends | 25 May 2022
Creator of SerenityOS announces new Jakt programming language effort
17 projects | reddit.com/r/programming | 20 May 2022
If it's the actors you're interested in, check out Lunatic. If it's the type system... probably not in Rust, but you may be interested in Koka.
Writing Rust the Elixir way - 18 months later
1 project | reddit.com/r/rust | 28 Apr 2022
Any thoughts about making Lunatic embeddable? I saw this [issue](https://github.com/lunatic-solutions/lunatic/issues/10) earlier, and am curious what obstacles are in the way (would be willing to help)!
The Missing Kubernetes Type System
3 projects | news.ycombinator.com | 18 Apr 2022
Webassembly is also gaining steam for server workloads due to several advantages (less overhead, better capability based security, composability, ...).
See Spin , Wasmcloud , Lunatic , etc.
My system is based on a distributed Webassembly runtime.
The reason for taking inspiration from Kubernetes is making deployment of distributed workloads on that runtime easy.
A nice benefit for a Kubernetes alike system is that the equivalent to controllers can be much more light-weight WASM actors that are easier to deploy and scale.
Spin – WebAssembly Framework
13 projects | news.ycombinator.com | 31 Mar 2022
I'm the author of a Wasm on the server side runtime that focuses primarily on rust compiled to Wasm, and this question comes up quite often. Why compile to Wasm if you can compile to native code directly? To add to Radu's answer, here are some of my favourite reasons.
Having an in-between bytecode layer allows you to build application architectures in rust that would not be possible when compiling directly to machine code. Hot reloading is a good example. Having the VM hold onto resources like tcp streams and file descriptors allows you to exchange the business logic without even breaking a tcp connection. Fine-grained sandboxing is another good example. Revoking filesystem access from just parts of your applications or limiting memory/cpu usage for each individual request is something that is just impossible to do correctly without a vm managing it.
A less obvious benefit are the improvements to the developer experience, like compile times. Most of the dependencies (async executor, tcp stack, message passing, ...) are usually already part of the wasm runtime and don't need to be compiled/linked again. The rust compiler also seems to have a better time when it comes to generating .wasm executables instead of native ones. Most rust wasm apps I write compile much faster than equivalent native ones. Just because there is so much less for the compiler to do.
Many wasm runtimes, like lunatic, include an async scheduler and green threads/processes. This means that you get most of the benefits of async rust without needing to actually use async and worry about all the issues that come with it.
Dynamic language extensions for Rust?
2 projects | reddit.com/r/rust | 20 Mar 2022
Here is an example of a pretty feature heavy solution: https://github.com/lunatic-solutions/lunatic It uses MsgPack to communicate between processes.
What are some alternatives?
hyperscan - High-performance regular expression matching library
fengari - 🌙 φεγγάρι - The Lua VM written in JS ES6 for Node and the browser
tui-rs - Build terminal user interfaces and dashboards using Rust
wit-bindgen - A language binding generator for WebAssembly interface types
actix - Actor framework for Rust.
Elixir - Elixir is a dynamic, functional language designed for building scalable and maintainable applications
asn1-encoding - ASN1 Raw/BER/DER/CER reader/writer in haskell
bastion - Highly-available Distributed Fault-tolerant Runtime
data-lens - Haskell 98 Lenses
msgpack - Haskell implementation of MessagePack / msgpack.org[Haskell]
tokio - A runtime for writing reliable asynchronous applications with Rust. Provides I/O, networking, scheduling, timers, ...
cassava-conduit - Conduit interface for cassava [Haskell]