iors
(pronounce it however you want, but I like to say it like "yours") is an experimental IO runtime for Scala,
written in Rust. Lots of JNI and other kinds of scary code.
Performance sucks big time.
When I first started the project, I thought it may outperform an optimized IO interpreter written in Scala because, you know, JVM is supposed to be slow and Rust is supposed to be fast. BUT, after thinking about this more, this will obviously inhibit some of JVM's JIT optimizations, so it can actually end up slower. Who knows, JITs are weird. But yeah, it did end up significantly slower. Unless I measured something very incorrectly (which may have happened).
Benchmarks are shamelessly stolen from cats-effect
.
To be fair I haven't run them all, because after running just one of them
(AttemptBenchmark) I saw numbers around 50x worse than
cats-effect
, which I based the implementation on.
idk
for fun?
no.
This was my first "big" project involving JNI. Now I know that JNI is slooooow if you do a lot of switching between native code and JVM code, like in callback-heavy code, which an IO interpreter obviously is.
MIT