Link: Lessons from Pyre that Shaped Pyrefly | Pyrefly
One of the reasons given:
…OCaml’s ecosystem has historically struggled with Windows, and as we deployed Pyre more and more broadly, we ran into platform related frictions more and more often.
Rust radically changes this equation by treating Windows, macOS, and Linux as true equals out of the box. Adopting an ecosystem where cross-platform reliability is a foundational tenet eliminated massive operational friction and completely unified our development experience when hacking on Pyrefly.
9 Likes
Gotta love how in both cases they’re not using Python for a Python type-checker.
(Reminds me of the growing number of Rust tools for JS development.)
1 Like
I guess that the analysis of a program is easier with ADT types. (Available in OCaml and Rust, but should be emulated with tuples in Python.) Note also that Python is very slow.
Yeah having had to write some, any sort of symbolic processing in python is a nightmare. No ADTs or even proper enums being the biggest culprit but also the fact the language is not expression-based and everything that goes with that (very limited lambdas, very limited ternary expressions) makes complex logic very annoying to write.
Interesting that they pin Pyre’s Unixisms on “OCaml’s ecosystem” when they really mean just Jane Street’s Core and their own code, even their own Python code.
Not that I disagree with the decision, I’m glad you brought up the topic. OCaml the language is quite good, but opam switches are too slow and brittle to setup, specially on Windows, and it lacks any reasonable support for cross-compilation. Plus, I don’t really like opam as a tool, or the way the repository is managed.
Last time I tried to install OCaml on Windows I simply gave up after an hour of waiting, so I’ve sadly started to consider Rust or even Go (shudders) to migrate a couple of personal projects to.
3 Likes