The core OCaml system: compilers, runtime system, base libraries (by ocaml)

Ocaml Alternatives

Similar projects and alternatives to ocaml

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a better ocaml alternative or higher similarity.

ocaml reviews and mentions

Posts with mentions or reviews of ocaml. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-11-04.
  • In Defense of Linked Lists
    16 projects | news.ycombinator.com | 4 Nov 2022
    >https://github.com/ocaml/ocaml/pull/10195 shows the change adding prefetching to the marking phase

    That relies on the fact that it can call prefetch on all pointers to child objects, potentially dozens at a time. In a list you have only one next pointer, so this doesn't work, you are immediately stuck waiting for the prefetch to complete.

    > https://github.com/ocaml/ocaml/pull/9934 was done earlier for sweeping

    That does it on C arrays / continuous buffers.

    16 projects | news.ycombinator.com | 4 Nov 2022
    There are also prefetch instructions. I listened to https://www.youtube.com/watch?v=SetLtBH43_U recently (transcript: https://signalsandthreads.com/memory-management/), part of it talked about some work in OCaml's GC.

    > ...each individual memory request that’s not in cache still has to wait the full 300 cycles. But if we can get 10 of them going at the same time, then we can be hitting a new cache line every 30 cycles. I mean, that’s not as good as getting one every 16 cycles, but it’s close. You’re actually able to get to a reasonable fraction of the raw memory bandwidth of the machine while just traversing randomly over this huge one gigabyte heap

    https://github.com/ocaml/ocaml/pull/10195 shows the change adding prefetching to the marking phase (https://github.com/ocaml/ocaml/pull/9934 was done earlier for sweeping). There are some benchmarks in the thread.

  • November 2022 monthly "What are you working on?" thread
    25 projects | reddit.com/r/ProgrammingLanguages | 3 Nov 2022
    I'm helping with the maintenance of the OCaml compiler. Mostly reviewing other people's PR and giving feedback, and occasionally writing some code. The last few weeks have been surprisingly diverse, for example:
  • Why is D's garbage collection slower than GO's?
    2 projects | news.ycombinator.com | 28 Oct 2022
    > if your hedgefund trading software runs 1% faster

    Jane Street has used OCaml for about 20 years.

    Last year, OCaml merged an improvement to its GC that reduced latency by 75% (by one measure), and reduced execution time by 23% when compiling OCaml and around 6 to 7% when compiling Coq libraries:


    Performance is definitely left on the table even in mission-critical software.

  • I find that I don't want to use any other programming language now that I'm becoming proficient in Rust. Is this common?
    4 projects | reddit.com/r/rust | 4 Oct 2022
    Well it’s general purpose, although it has a larger environment than rust and relies on a GC, so it won’t really work for making stuff for bare metal. It’s quite performant though, looks quite nice and is pretty readable and it has first class functional paradigm support. You can take a look at some code and who uses it at ocaml.org
  • Scala isn't fun anymore
    10 projects | reddit.com/r/programming | 10 Sep 2022
    Yeah that's what we have languages with type inference for:
  • Scala 3.2 released!
    2 projects | reddit.com/r/scala | 8 Sep 2022
    Note on a minor point (I'm not a Scala regular and don't know what's a good way to contact the authors of the post): the git shortlog -n -s output shows some repeated entries that add noise and make it harder to understand the volume of contributions, for example Martin Odersky and Ondřej Lhoták both occur twice in the list. The solution to this problem is to maintain a .mailmap file to merge the committer identities together in the output of git log, git shortlog etc. I do this for the OCaml compiler implementation for example: https://github.com/ocaml/ocaml/blob/trunk/.mailmap. The same file can be used to record contributor email or naming preferences.
  • My programming language history
    10 projects | dev.to | 26 Aug 2022
  • F# (in)compatibility
    3 projects | reddit.com/r/ocaml | 14 Jul 2022
    OCaml Standard Library got the naming and implementation of the Seq data type in 2017, from an external library called 'Batteries Included': https://github.com/ocaml/ocaml/pull/1002
  • Implementing the Perceus reference counting GC
    5 projects | dev.to | 24 Jun 2022
    Reference counting (RC) has rather been a minor party to the other garbage collection (GC) algorithms in functional programming in the last decades as, for example, OCaml and Haskell use non-RC GC. However, several recent papers, such as Counting Immutable Beans: Reference Counting Optimized for Purely Functional Programming and Perceus: Garbage Free Reference Counting with Reuse, showed the efficiency of highly optimized RC GC in functional languages with sacrifice or restriction of some language features like circular references. The latter paper introduced an efficient RC GC algorithm called Perceus which is basically all-in-one RC.
  • A note from our sponsor - SonarQube
    www.sonarqube.org | 29 Nov 2022
    Your projects are multi-language. So is SonarQube analysis. Find Bugs, Vulnerabilities, Security Hotspots, and Code Smells so you can release quality code every time. Get started analyzing your projects today for free. Learn more →


Basic ocaml repo stats
2 days ago
Static code analysis for 29 languages.
Your projects are multi-language. So is SonarQube analysis. Find Bugs, Vulnerabilities, Security Hotspots, and Code Smells so you can release quality code every time. Get started analyzing your projects today for free.