2021 at OCamlPro
ocamlpro.com
ocamlpro.com
Tooling has come a long way too - very impressed by dune, it lets me do my favourite thing in the world which is hit save and run my tests automatically.
I'd use it a lot more if the ecosystem was bigger. Just can't justify a better language when I'd have to implement my own, idk, mutable ordered dictionary.
It's also interesting to see that they're working a lot with Rust. I've seen a lot of OCaml people switching to Rust or getting more and more into Rust, I'm wondering what this means for OCaml.
[1]: https://ocamlpro.github.io/drom/
What’s wrong with opam? Since version 2 it also supports local switches and locking, and the opam repository has become much more stable than in the past. Full disclosure: I am biased here, since I am one of the opam-repository maintainers and I am quite happy with opam itself.
I'd say the main problem is that local switches and lock files are still not the default mode of operation.
Also opam lacks a global cache of built packages which esy provides (esy's cache is modelled after Nix package manager). So every new opam local switch effectively compiles everything from scratch. Though, as I understand this aspect is going to be addressed by dune at some point (though esy caches not just OCaml built artefacts but also C/C++).
(Full disclosure: I'm biased as I'm one of the original developers of esy)
$ dune runtest | opam
dune and opam would have to agree on how to talk with each other, however.[1]: https://github.com/zshipko/ocaml-rs [2]: https://github.com/tezedge/ocaml-interop
[1]: https://github.com/zshipko/ocaml-rs
[2]: https://github.com/o1-labs/proof-systems/tree/a4b06e71106704...
That's impressive!
(yeah, it could have been interpreted)
I went into Rust thinking I could use it like a kind of curly brace Ocaml, and that's totally off. It's much more like a very strict modern C++ with a lot of historical cruft removed.
OCaml is much more concise and higher level. It also doesn't let you reason about memory layout really well. Plus Ocaml has parametric polymorphism and higher order modules, compared with rusts ad-hoc polymorphism and traits. In Ocaml the idiomatic solution is often recursion but that will blow the rust stack.
(full disclaimer, I'm much better at Ocaml than I am Rust, and I'm really not great at Ocaml)
Key difference - as a user - is in Ocaml I'd write a module with a bunch of functions. In rust I'd write a struct with a bunch of methods. It feels very different even if it solves the same things.
I think you meant "was written in OCaml"