Taking a look: some open OCaml Pull Requests

Hi! Coming back to OCaml after 7+ years, today I decided to look at the open PRs to see where the language is headed. Maybe someone finds it useful. I’m mostly omitting Stdlib changes. These stood out to me:

  1. Bidirectional type checking: more type propagation during inference, improves autocompletion (e.g. for OO code).

  2. Monadic syntax for match. Also: Jane Street not using binding operators, but the old PPX ← is it still true? The let syntaxes are not fully made use of.

  3. Bigarray: free and overlap.

  4. Unwind-protect mechanism Fun.with_resource → in draft.

  5. Built-in syntax Promote constructors to functions → contested use of curried functions.

  6. Unique types to make more abstract types work well with GADTs

  7. Modular explicits, modular implicits without the implicit application part. This has the power of first-class functors, but with much more concise syntax, avoids explicit signatures, and allows local type annotations like let f {module M : S} (x : M.t) = x

  8. MetaOCaml: reserve >., syntax for .<e>., .~e, pprintast, support for .<e>., .~e.

  9. “Subtyping syntax” for modules enables things like include (M :> S).

  10. Half-precision floats in Bigarray.

  11. Atomic.modify.

  12. let.op x = bindings parameterized by the op, complementing the current let+ x = and let* x = binding syntaxes.

  13. OCaml memory model documentation.

  14. Turn keywords to identifiers (mainly for backward compatibility).

  15. Serialize Random.State.t.

  16. Built-in syntax Promote fields to functions.

Edited: I don’t mention but appreciate the most valuable work on bug fixes, robustness features, and code quality improvements! But, I’m excited about MetaOCaml and modular implicits, hoping they make it into the language.

12 Likes

where the language is headed

looking at the age (and activity) of most of those PRs this is more like the list of what the language could have been :cry:

1 Like