We’re pleased to announce that OCaml.org now has dedicated RSS feeds and pages for stable and experimental announcements, introduced in PR #3278! What’s new: OCaml Changelog at ocaml.org/changelog — Official stable release announcements and updates from the OCaml compiler, OCaml infrastructure, and the OCaml Platform Tools Backstage OCaml at ocaml.org/backstage — Updates on experimental releases, work-in-progress, and opportunities to contribute to the development of the OCaml Platfor...| OCaml - Latest posts
This is exactly what I was about to write for myself. It is a seriously lovely, very thin abstraction layer between the underlying database and the developer. Pure convenience (and abstraction from specific DB back-end), no ORM handholding. One thing which I always end up doing in other languages, but haven’t looked into for OCaml yet, is query fragments. For example in Perl, my pattern tends to be something like: my $query = 'WHERE x=y'; my @args; if ($something) { $query .= ' AND foo=?'; ...| OCaml - Latest posts
Thanks a lot for the ideas and report! I"m glad you’re overall enjoying the process, that’s nice to hear I’d like to make, or integrate, a css framework (like tachyon) to make it easier to do the layout that are used often in a presentation (columns, centering, …). But there will always be a possibility to use CSS directly, as it’s hard to offer all possibilities! For instance, for vertical space, I define an empty element with some height: {style="height:...px} attached to nothing....| OCaml - Latest posts
Hi everyone, We are happy to announce the release of opam-publish 2.7.0 (and 2.6.0), which together brought the ability to more easily publish your releases automatically, thanks to @filipeom: A new OPAM_PUBLISH_GH_TOKEN environment variable and --token argument are now available to pass the GitHub token SSH keys aren’t used to push the branch to the user’s fork anymore. Instead the token we already require is used. If undefined, the git config variables user.name and user.email are autom...| OCaml - Latest posts
Hi there, Recently I wanted to install the cvc5 package. It depends on conf-python3-pyparsing, which is marked as != macos. I tried to see why this is, and it seems to be because it (naturally) requires the pyparsing library to be installed. Currently I believe opam external dependencies on macOS are managed with homebrew, however homebrew does not have this python package. I tried to contribute this package to homebrew, however they no longer support python packages in general. Should the wa...| OCaml - Latest posts
While surfing the internet I found some examples from OCamlPRO blog EzSudoku EzSudoku | OCamlPro Packing integers Packed fields in integers · GitHub mentioned here| OCaml - Latest posts
Your blog mainly focus on pooling (an integrated function of the dream framework), and only expose a trivial SQL execution. (Caqti typically uses embedded typ2 or t2 function for types description) ppx_rapper is complementary and is useful with complex query with many fields (input and output). See my Cookbook article SQLite CREATE, INSERT, SELECT using ppx_rapper_lwt - OCaml Cookbook or the official documentation GitHub - roddyyaga/ppx_rapper: Syntax extension for writing SQL in OCaml| OCaml - Latest posts
Hi everyone, Whenever I try to install a new library/package it wants to downgrade or remove lots of packages. This causes a lot of conflicts, and makes it difficult to install/update new libraries, or use old libraries that are dependent on old libraries. Like in this case I want to install ollvm and it wants to downgrade menhir and other libraries. Why? Instead of downgrading my installed libraries, why doesn’t opam use a separate folder, to install the required menhir version for the oll...| OCaml - Latest posts
We are pleased to announce new releases of Merlin (5.6-504 and 5.6-503) and OCaml-LSP (1.24.0, for 5.4, and 1.23.1)! This release of Merlin offers, firstly, support for OCaml 5.4. It improves support for OpenBSD (for merlin-reader), improves typing recovery in the handling of mutual recursion, and adds a new feature to the protocol: locate-types. It works similarly to locate-type, except that it allows you to distinguish between several locatable types in an expression like this: (int, Foo.t)...| OCaml - Latest posts
The next OUPS meetup will take place on Monday, 13th of October 2025. It will start at 6:30pm at the 4 place Jussieu in Paris. It will be in the in the Esclangon building (amphi Astier). Please, register on meetup as soon as possible to let us know how many pizza we should order. For more details, you may check the OUPS’ website . Moreover, we’d like to announce that the organizing team moved to the OCaml Zulip. Feel free to contact us there if you’d like to suggest talks. --- This time...| OCaml - Latest posts
The interactive OCaml sketchbook sketch.sh has added support for OCaml 5.3.0. Support for 5.3.0 Storing and running sketches using the compiler version 5.3.0 is now possible, this functionality has been added to the already existing support for versions 4.06.1 and 4.13.1. This new version brings support for OCaml 5’s effect handlers and multicore capabilities. Since sketch.sh runs in the browser using JavaScript via js_of_ocaml, the multicore capabilities are simulated using continuation-pa...| OCaml - Latest posts
One more seems to be: js_of_ocaml: [FEATURE REQUEST] Update to cmdliner 2.0.0 · Issue #2104 · ocsigen/js_of_ocaml · GitHub This one seems again to be a run-test: issue. A work around is: opam install js_of_ocaml --ignore-constraints-on=cmdliner| OCaml - Latest posts
I primarily use discord and this website for my ocaml content.| OCaml - Latest posts
Thank you for the effort you have put into this.| OCaml - Latest posts
Hello @dbuenzli Newbie (hobbyist) developer here. I have a personal web project I am building with OCaml, I have invested 2 months into the project so far, and I have set it up using YoJSON. I would like to understand the tradeoffs to refactoring YoJSON to Jsont. In summary, “is the juice worth the squeeze?” I am not an experienced OCaml developer yet, I just started building with the language Dec 26 2024.| OCaml - Latest posts
Hi, Is this an ongoing activity or a one-off? I am really interested in learning with a group.| OCaml - Latest posts
@Khady the change that you suggested was just done by @brab, thanks! (The rest of the “Actions” webpage is also out of date, but that is for another time.) @mobileink we don’t currently use a “call for grants”-style platform where people ask for funding. (Our worry is that this incurs a lot of negativity for applicants whose grant application gets rejected, and a fair amount of monitoring work once grants are accepted.) We do receive suggestions of actions to fund by email, and some...| OCaml - Latest posts
I see, indeed you’re only supposed to register an extension once per context. In your case, the rule to rewrite Pstr_eval and Pstr_value is the same (same name, same context: structure_item) and needs to be registered once and deal with both cases on its own. Depending on what you want to do with those you might be able to write a Ast*_pattern that works for both but I would not necessarily advise it. Ast_pattern has two main advantages: It will report errors for you if the extension payloa...| OCaml - Latest posts
Here at OCamlPro we’re happy to announce the (long awaited) release of ocp-indent.1.9.0. The full release notes are available here if you want the detailed version. 1.9.0 contains mostly bug fixes, better and more consistent indentation of fun _ -> and |>, compatibility with cmdliner.1.3.0 and above (it works with 2.0.0) and a new utility tool: ocp-indent-gen-rules for those of you who would like to try ocp-indent in a dune fmt like workflow. This last bit is documented here. This is a feat...| OCaml - Latest posts
Hi, related question: i tried (conf-libgl (and (<> :os "macos") (<> :os "windows")) in this project but in the ocaml ci, when testing Windows, they still try to install the conf-libgl library, see here. what else could I try?| OCaml - Latest posts
OCaml contributions are spot-on for BOB - send us some! BOB Conference 2026 - Call for Contributions “What happens when we use what’s best for a change?” https://bobkonf.de/2026/cfc.html Berlin, Mar 13 Deadline: November 17, 2025 Looking for Speakers You are actively engaged in advanced software engineering methods, solve ambitious problem with software and are open to cutting-edge innovation? Attend this conference, meet people that share your goals, and get to know the best software t...| OCaml - Latest posts
I read a paper maybe not this one, but it seems it talks about the same thing https://arxiv.org/html/2506.04657v1. At the beginning I thought it’s about the new programming language, but then chatgpt explained me that in fact it’s a small game with stones. We put a given number of stones in the middle, and each player can take 1, 2 or 3 stones from the stack. There are two variants of the game, the one that only has one stone in front of him at the end wins or not. So I tryed to make a ni...| OCaml - Latest posts
They both used io_uring, yes. The OCaml bindings are at GitHub - ocaml-multicore/ocaml-uring: Bindings to io_uring for OCaml ; but note that there are several levels of io_uring usage possible depending on your tolerance for ranges of Linux kernel support (I’m just adding zero-copy transmit support at the moment for a project involving a petabyte of data). OCaml’s tail latency will be worse than Rust’s due to having a GC, but not terribly so. As for generalization, those tests were run ...| OCaml - Latest posts
I disagree that there’s a good bridging story for any of these chat systems: You end up with banhammers being dropped from the other side of the network if a bridging user triggers some abuse threshold. Matrix dropped their public bridges due to the moderation load for this reason. They just diminish the user experience for the native system(s) being used. Squeezing all IRC traffic onto one Zulip channel/topic isn’t how Zulip is intended to be used. Reorganising topics and curating it for...| OCaml - Latest posts
Based on what I read, and if I understand correctly, people at codeberg spend more than what they receive. CodeBerg dot org provides free hosting for your ocaml projects. You might consider a donation, you can donate 1, 2 or 3 euro at the end of the year. codeberg.org| OCaml - Latest posts
Hello I am a bit lost. $ opam install lablgl The following actions will be performed: === remove 2 packages ⊘ base-effects base [conflicts with ocaml] ⊘ ocaml-compiler 5.3.0 === downgrade 2 packages ↘ ocaml 5.3.0 to 5.1.1 [required by lablgl] ↘ ocaml-base-compiler 5.3.0 to 5.1.1 [required by ocaml] However opam show lablgl gives me depends "ocaml" {>= "4.14"} "ocamlfind" {>= "1.2.1"} "camlp-streams" {build} ...| OCaml
Do we have an ocamlformat version that works both for 4.14.2 and 5.3? (It seems answer is no) Without it I have difficulties with testing my code on different compilers. Installing different versions of ocamlformat seems to be not an option, because they format differently from version to version.| OCaml
Absolutely. I have our CI now producing all our build assets with either 4.14.2 or 5.2.0+ox. My local tests are very promising. I’m gonna ping the community to get more feedback but so far it looks like it’s working great. I see similar CPU usage and a slight increase in memory of less than 10%, which is totally acceptable for us.| OCaml
We would love to have as much of the dynamism of Smalltalk as possible. Not only coding in the debugger, but also coding together with the AI in the debugger! And at the same time to have more coding assistance from type inference and autocompletion. Could you share your use case with us? We’re collecting evidence that people would be interested in such a product.| OCaml
Hello friends, I’m trying to use Dune with camlpdf and I’m running into trouble getting a project-aware repl. dune build works just fine, but then I get screwy linking error when I try to run dune utop: > opam exec -- dune utop File "_build/default", line 1, characters 0-0: /usr/bin/ld: cannot find -lcamlpdf_stubs: No such file or directory /usr/bin/ld: cannot find -lxdg_stubs: No such file or directory /usr/bin/ld: cannot find -llambda_term_stubs: No such file or directory /usr/bin/ld: c...| OCaml
Why Lean 4 replaced OCaml as my Primary Language| OCaml
I notice several packages are “Compatibility packages” for supporting various versions of ocaml, for instance uchar or seq. If I’m using OCaml 4.10, In principle I need neither of them, but if I ask opam to install uutf it will install uchar, and if I want lwt it will install seq. Isn’t there a way to tell opam “install foo only if ocaml version < xx.xx”?| OCaml
Hello, While working on Raven with heterogeneous columns of a dataframe, I encountered let cumsum t name = match get_column t name with | Some (Col.P (dtype, tensor)) -> ( match dtype with | Nx.Float32 -> let arr : float array = Nx.to_array tensor in let result = Array.copy arr in for i = 1 to Array.length result - 1 do result.(i) <- result.(i - 1) +. result.(i) done; Col.P (dtype, Nx.create dty...| OCaml
A friendly place to discuss OCaml: an industrial-strength programming language supporting functional, imperative and object-oriented styles| OCaml
A friendly place to discuss OCaml: an industrial-strength programming language supporting functional, imperative and object-oriented styles| OCaml
A friendly place to discuss OCaml: an industrial-strength programming language supporting functional, imperative and object-oriented styles| OCaml
I’ve been coding in OCaml and using opam for quite a long time now. I’ve still not managed to install a local directory without first creating a git commit. It’s a papercut I’ve worked my way around for a long time now. Specifically, running e.g. opam install . --switch=myswitch will not install the current folder if I have not commited my last changes. Which is annoying, sometimes I just want to install whatever my current work is. I think the most annoying part is the fact that opam...| OCaml
Continuing the discussion from Feedback / Help Wanted: Upcoming OCaml.org Cookbook Feature: OK, let’s talk about an example that I came across recently: minttea/leaves/table.ml at b084ec7401c52167fae5087577133e52e3874899 · leostera/minttea · GitHub Here we want to render a table in the CLI and we want to pad and truncate the table content text to fit inside the column lengths. Eg suppose one of the columns is 30 characters long. So we need to calculate the length of the text that will go ...| OCaml
I’m really happy that the UTF-8/16 decoder is now part of the standard library! However, I kind of miss a way to write down Unicode code points (more precisely, Unicode scalar values) as literals. That is, I want to be able to write 'よ', '酷' and '😎' as literals of type Uchar.t. (The syntax doesn’t have to be exactly like these—especially if we want to make the parser’s job easier.) The GitHub issue tracker suggested that I post here to see how people feel about this. 😀| OCaml
Is Ocaml a good language to create a CLI in? It is usually less about the language and more about the available libraries. As a newcomer to Ocaml and CLI development overall, it is hard for me to judge this. So how do Ocaml CLI libraries fare against those in other programming languages? are they just as easy? are they just as powerful and flexible? are they even better?| OCaml