7 ms·
One of the primary goals for the Roc project is compiler speed. I presume OCaml is out of the running because it's not a systems language.
by grayrest 2mo ago
One of the primary goals for the Roc project is compiler speed. I presume OCaml is out of the running because it's not a systems language.
- satvikpendem 2mo agoOCaml compiler is incredibly fast. I wonder how it'd fare with Jane Street's extensions for the borrow checker etc in OxCaml, if it's good enough for their HFT I'm sure it's good enough for a new language.
- antonvs 2mo agoI wrote a toy Scheme implementation in OCaml by using the Camplp4 preprocessor. In benchmarks, it was faster than Gambit Scheme, which compiles through C.
- patrec 2mo agoSounds interesting, have you put it online somewhere?
- antonvs 2mo agoNo. I wrote it about 10 years before GitHub existed, and it’s just a toy. All it does is transform core Scheme syntax to Ocaml syntax, converting untyped values in the usual way to a ‘Value’ sum type. I originally thought it would be slower than the faster Scheme compilers, like Gambit, because of how naive it was, but I was surprised to find that on benchmarks, including compute-heavy ones like fractals and I/O heavy ones like web serving, it outperformed Gambit. That’s really a reflection on Ocaml though, I didn’t do anything special. If you asked an LLM to do that today, it could probably produce something better for you pretty quickly.
- djha-skin 2mo agoI suspect this "not a systems language" alludes only to OCaml's rather steeper learning curve and until-recently difficulty with multiple threads. I am sure it could roll just fine as a single-threaded compiler language written by a small team, which indeed, it was.
- steveklabnik 2mo agoOCaml has often historically been considered a language that's been appropriate to write systems tooling like compilers, runtimes, and unikernels in, even though GC'd languages were/are not often considered for such projects.
- pjmlp 2mo agoThey are considered in many research labs since Xerox, unfortunately there are still too much anti-GC religion among mainstream devs.
- sph 2mo agoI don’t think there’s too many of us on the ‘GC did nothing wrong’ hill. Reading the average HN opinion, it seems everybody is writing high-performance latency-sensitive systems that would implode if a response would take 1 ms longer than normal.
- jandrewrogers 2mo agoSampling bias. Most of the people responding are probably those with a strong opinion because of what they work on. Everyone else is likely relatively indifferent to it. It is a misconception that GCs only affect latency-sensitive systems. High-performance throughput-optimized systems are also sensitive at ~1µs granularity for different reasons, so GCs are not used there either. That a GC is adverse to the performance both latency-oriented and throughput-oriented workloads doesn't leave many use cases in "high-performance" systems. Maybe systems that are severely I/O bound but is barely a thing these days.
- senderista 2mo agoNot to mention that in general GC simply requires more memory.
- senderista 2mo agoCould you elaborate on "GCs are not used there [high-performance throughput-optimized systems]"? Are you referring to the cascading effects of tail latency on systems with high fanout?
- pjmlp 2mo agoDepends on the beholder. Unix system programming in OCaml https://ocaml.github.io/ocamlunix/ https://ocaml.github.io/ocamlunix/ https://mirage.io/ https://mirage.io/