Make full use of CPU
Solution: return cpu time back to user space
problem: to much waste of time on scheduling
Solution: give back cpu time back to kernel
problem：too much threads waiting blocked cpu
IO & Compute Both Bounded?
Main task type：map/reduce on prefetched cache
Rainbows for async
Expose Pure FFI
Ruby Native Extension
Rust is a systems programming language that runs blazingly fast, prevents segfaults, and guarantees thread safety.
As a NIF library is dynamically linked into the emulator process, this is the fastest way of calling C-code from Erlang (alongside port drivers). Calling NIFs requires no context switches. But it is also the least safe, because a crash in a NIF brings the emulator down too.
alioth benchmark game (https://strk.ly/VJ)
”Rust now beats C++ in many benchmarks and is on par with others“
Elixir's high concurrency
Better interface between Elixir & Rust (Rustler)
Elixir is much slower
Elixir has less 3rd-party libraries
Not compatible with Strikingly's deploy logic
You need a customized erlang VM (https://hub.docker.com/r/wooya/elixir-dirty-scheduler/)
elixir --erl "-smp +K true +A 10 +SDio 300 +SDcpu 100:100" -S mix phoenix.server
Weld: computation engine from Stanford