's Avatar

@tarides.com

Weโ€™re an international software company that helps people and organisations use #OCaml to build safer & faster code. #OCaml #FunctionalProgramming #MirageOS ๐Ÿซ

278
Followers
60
Following
43
Posts
08.02.2024
Joined
Posts Following

Latest posts by @tarides.com

Outreachy May 2026 Hello everyone, The OCaml community has signed up to Outreachy May 2026 (see past posts)! What is Outreachy? Outreachy is a paid, remote internship program. Outreachy promotes diversity in open sou...

The #OCaml community will be taking part in #outreachy in May 2026. You can read more about it and consider signing up as a mentor at the following link ๐Ÿซ

discuss.ocaml.org/t/outreachy-...

02.03.2026 15:26 ๐Ÿ‘ 3 ๐Ÿ” 3 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Post image

such a great feeling when you find all your stack used in the wild

25.02.2026 16:14 ๐Ÿ‘ 4 ๐Ÿ” 2 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

It's paper submission day!! How's your's shaping up?

19.02.2026 14:54 ๐Ÿ‘ 1 ๐Ÿ” 1 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0
Preview
ICFP 2025: Looking Back at the Biggest Functional Programming Conference of the Year Check out our summary of everything OCaml at ICFP 2025, including insights from the Tarides engineers who attended!

Take a journey back to Singapore and the biggest functional programming conference of 2025 in this post from our blog: tarides.com/blog/2025-12...

17.02.2026 10:58 ๐Ÿ‘ 3 ๐Ÿ” 1 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Preview
Tessera pipeline in OCaml Summary: OCaml bindings and GPU tests for Tessera pipeline, using numpy-like arrays, OCaml-npy, stac-client, GDAL bindings, ONNX runtime with a C shim

Tessera pipeline in OCaml

https://www.tunbury.org/2026/02/15/ocaml-tessera/

#machinelearning #datascience

16.02.2026 12:13 ๐Ÿ‘ 3 ๐Ÿ” 1 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Preview
Optimizing an MP3 Codec with OCaml/OxCaml After reading Anilโ€™s post about his zero-allocation HTTP parser httpz, I decided to apply some OxCaml optimisation techniques to my pure OCaml MP3 encoder/decoder. The OCaml-based MP3 encoder/decoder has been the most ambitious project Iโ€™ve tried in Opus 4.5. It was a struggle to get it over the line, and I even needed to read large chunks of the ISO standard and get to grips with some of the maths and help the AI troubleshoot. # Profiling an OCaml MP3 Decoder with Landmarks Before dividing into OxCaml, I wanted to get a feel for the current performance and also to make obvious non-OxCaml performance improvements; otherwise, I would be comparing an optimised OxCaml version with an underperforming OCaml version. It was 40 times slower than `ffmpeg`: 29.5 seconds to decode a 3-minute file versus 0.74 seconds. I used the landmarks profiling library to identify and fix the bottlenecks, bringing decode time down to 3.5 seconds (a 8x speedup). ## Setting Up Landmarks Landmarks is an OCaml profiling library that instruments functions and reports cycle counts. It was easy to add to the project (*) with a simple edit of the `dune` file: (libraries ... landmarks) (preprocess (pps landmarks-ppx --auto)) The `--auto` flag automatically instruments every top-level function โ€” no manual annotation needed. Running the decoder with `OCAML_LANDMARKS=on` prints a call tree with cycle counts and percentages. > (*) It needed OCaml 5.3.0 for `landmarks-ppx` compatibility; it wouldnโ€™t install on OCaml 5.4.0 due to a ppxlib version constraint. ## Issues 78% of the time was spent in the Huffman decoding, specifically `decode_pair`. The implementation read one bit at a time, then scanned the table for a matching Huffman code. I initially tried a Hashtbl, which was much better than the scan before deciding to use array lookup instead. The bitstream operations still accounted for much of the time, but these could be optimised with appropriate `Bytes.get_...` calls, as the most frequent path is reading 32 bits in big endian layout. The profile now showed `find_sfb_long` consuming 3.4 billion cycles inside requantization. This function does a linear search through scalefactor band boundaries for every one of the 576 frequency lines, every granule, every frame. Switching to precomputed 576-entry arrays mapping each frequency line directly to its scalefactor band index. There were some additional tweaks, such as adding more precomputed lookup tables stored in `floatarray`, using `[@inline]` and `unsafe_get`, `land` instead of `mod`. After this, no single function dominated the profile, and I could move on to OxCaml. # OxCaml OxCaml has `float#`, an unboxed float type that lives in registers, and `let mutable` for stack-allocated mutable variables. Together, they let you write inner loops where the accumulator never touches the heap: module F = Stdlib_upstream_compatible.Float_u let[@inline] imdct_long input = for i = 0 to 35 do let mutable sum : float# = F.of_float 0.0 in for k = 0 to 17 do let cos_val = F.of_float (Float.Array.unsafe_get cos_table (i * 18 + k)) in let inp_val = F.of_float (Array.unsafe_get input k) in sum <- F.add sum (F.mul inp_val cos_val) done; Array.unsafe_set output i (F.to_float sum) done These kinds of optimisations got me from 2.35s down to 2.01s. What I felt was missing was an accessor function which returned an unboxed float from a floatarray, so I wouldnโ€™t need to unbox with `F.of_float`. However, I couldnโ€™t find it. The httpz parser really benefited from OxCamlโ€™s unboxed types because its hot path operates on small unboxed records that stay entirely in registers: #{ off: int16#; len: int16# } # Results The optimisations brought a 29.5s MP3 decoder down to 2.01s. Mostly through standard OCaml optimisations, but OxCamlโ€™s `float#` saved another ~14%. Decoder | Time | vs ffmpeg ---|---|--- ffmpeg | 0.74s | 1x LAME | 0.81s | 1.1x ocaml-mp3 (original) | 29.5s | 40x ocaml-mp3 (Hashtbl) | 6.4s | 8.6x ocaml-mp3 (flat + fast bitstream) | 3.5s | 4.7x ocaml-mp3 (best) | 2.4s | 3.2x ocaml-mp3 (OxCaml) | 2.0s | 2.7x

OxCaml isn't just useful due to its language extensions; it's making us think through how to engineer OCaml code to be lower allocation by default even before switching. See Mark's progress on an MP3 decoder to speed it up 10x https://www.tunbury.org/2026/02/11/ocaml-mp3/

12.02.2026 14:09 ๐Ÿ‘ 10 ๐Ÿ” 5 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Preview
Bringing Emacs Support to OCaml's LSP Server with `ocaml-eglot` Discover the `ocaml-eglot` project, a plugin that integrates OCaml's Emacs editor support with the LSP.

With Emacs integration to OCaml's LSP server, both the user and the maintainer benefit from a simplified setup! You can learn more on our blog: tarides.com/blog/2025-11...

10.02.2026 10:50 ๐Ÿ‘ 4 ๐Ÿ” 1 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Preview
Release 6.3.0 ยท ocsigen/js_of_ocaml CHANGES: Features/Changes Misc: install shell completion script generated by cmdliner (#2140) Compiler/wasm: omit code pointer from closures when not used (#2059, #2093) Compiler/wasm: number unbo...

Js_of_ocaml 6.3.0 ๐ŸŽ‰
https://github.com/ocsigen/js_of_ocaml/releases/tag/6.3.0

06.02.2026 23:51 ๐Ÿ‘ 5 ๐Ÿ” 1 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

Reminder: We are meeting tomorrow morning for a #FunctionalProgramming #meetup. Everyone is welcome to attend! See you there!

#FunctionalProgramming #India #Meetup #Haskell #PureScript #Erlang #Scala #OCaml #TypeScript #Rust #Clojure

06.02.2026 13:01 ๐Ÿ‘ 5 ๐Ÿ” 2 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

Native support for mlx in the ocaml-lap-server

(syntax highlight, and all LSP features from ocaml in mlx)

02.02.2026 19:51 ๐Ÿ‘ 8 ๐Ÿ” 3 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

OCaml is already a sweet spot between Go and Rust, but is rapidly gaining the same performance capabilities of Rust without the same cognitive overhead needed for your entire application.

02.02.2026 22:58 ๐Ÿ‘ 18 ๐Ÿ” 4 ๐Ÿ’ฌ 2 ๐Ÿ“Œ 0
Preview
My (very) fast zero-allocation webserver using OxCaml Building httpz, a high-performance HTTP/1.1 parser with zero heap allocation using OxCaml's unboxed types, local allocations, and mutable local variables.

Got my website running live on my zero-allocation (ish) OxCaml webserver! First of a series of posts on building out our planetary computing system infrastructure using the performance extensions in the Jane Street fork of OCaml. https://anil.recoil.org/notes/oxcaml-httpz

01.02.2026 21:54 ๐Ÿ‘ 15 ๐Ÿ” 4 ๐Ÿ’ฌ 4 ๐Ÿ“Œ 1
Preview
Announcing Unikraft Support for MirageOS Unikernels Get an overview of the Unikraft backend support for MirageOS, including performance benchmarks on different devices.

Check out the new Unikraft backend for MirageOS. Samuel Hym shared the goals, design, benchmarks, and more about the new feature on the blog: tarides.com/blog/2025-11...

30.01.2026 11:07 ๐Ÿ‘ 7 ๐Ÿ” 1 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 1
Preview
Welcome to a World of OCaml OCaml is a general-purpose, industrial-strength programming language with an emphasis on expressiveness and safety.

omg ocaml.org supports displaying source code in api docs now! (like haddock or rustdoc) and they support jump to definition! (like haddock but unlike rustdoc)
when did that happen, that's really awesome!

27.01.2026 23:57 ๐Ÿ‘ 29 ๐Ÿ” 4 ๐Ÿ’ฌ 4 ๐Ÿ“Œ 0
Preview
Supporting OCurrent: FLOSS/Fund Backs Maintenance for OCaml's Native CI Framework Announcing FLOSS Fund's support for maintenance of OCaml's native CI and workflow framework OCurrent

We are happy to share that the FLOSS/Fund is supporting our work on the OCaml-native CI and workflow framework OCurrent! Learn more on the blog: tarides.com/blog/2025-10...

26.01.2026 11:35 ๐Ÿ‘ 3 ๐Ÿ” 1 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

Reminder: #BOBkonf2026 early bird ticket sales end tomorrow, 16 January, at 23:59 UTC+1!

15.01.2026 14:48 ๐Ÿ‘ 5 ๐Ÿ” 5 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 1
Preview
Devcontainer for using O(x)Caml and Claude in your projects A prebuilt Docker devcontainer for sandboxed OCaml and OxCaml development with Claude Code, including multiarch builds and network isolation.

I had a bunch of people ask how to replicate my advent of agentic humps setup, so I've published the OCaml and OxCaml devcontainers to let you run unattended Claude with permissions bypass and container sandboxing. It hasn't deleted all my data yeNOSIGNAL anil.recoil.org/notes/ocaml-...

08.01.2026 11:06 ๐Ÿ‘ 7 ๐Ÿ” 2 ๐Ÿ’ฌ 2 ๐Ÿ“Œ 1

Hello from OCaml world!

11.01.2026 17:06 ๐Ÿ‘ 5 ๐Ÿ” 2 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

[OCaml Planet] ๐Ÿซ Patrick Ferris published the December 2025 OCaml Roundup. Tracks library updates, tooling changes, and community activity for the month.

12.01.2026 11:19 ๐Ÿ‘ 3 ๐Ÿ” 1 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0
Preview
What would make OCaml serverless ready? What role does programming language choice make when targeting serverless environments, and how does OCaml stack up against popular serverless development languages? What would it take to make OCaml y...

first blog post of the year www.chrisarmstrong.dev/posts/what-w...

08.01.2026 02:29 ๐Ÿ‘ 8 ๐Ÿ” 3 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0
[JOB] Software Engineer (OCaml) -- LexiFi, Paris Hi all, LexiFi is looking for a Software Engineer to join our development team in Paris. The work is primarily in OCaml, contributing to our codebase across core components, tooling, and product feat...

discuss.ocaml.org/t/job-softwa...

15.12.2025 10:05 ๐Ÿ‘ 5 ๐Ÿ” 3 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Preview
AoAH Day 13: Heckling an OCaml HTTP client from 50 implementations in 10 languages Agentically synthesising a batteries-included OCaml HTTP client by gathering recommendations from fifty open-source implementations across JavaScript, Python, Java, Rust, Swift, Haskell, Go, C++, PHP ...

For my last few days of my Advent of Agentic Humps, I blended 50 different language ecosystem's HTTP clients to brew an OCaml Requests library. Agents figured out the random quirks needed for a client by getting advice from our friends in Java, Haskell, C, C#, Python anil.recoil.org/notes/aoah-2...

14.12.2025 17:23 ๐Ÿ‘ 3 ๐Ÿ” 3 ๐Ÿ’ฌ 2 ๐Ÿ“Œ 0

Thank you โ€“ we'll get on that!

08.12.2025 15:37 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Preview
Ocsigen: A Full OCaml Framework for Websites and Apps Discover the OCaml web development framework Ocsigen, from its origins to its many helpful features!

Curious about using functional programming for web development? This blog post gives you an overview of Ocsigen, a full web development framework for OCaml! tarides.com/blog/2025-10...

04.12.2025 11:28 ๐Ÿ‘ 7 ๐Ÿ” 4 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Preview
GitHub - aguluman/advent-of-code-ocaml: Advent of Code Solutions In OCaml Advent of Code Solutions In OCaml. Contribute to aguluman/advent-of-code-ocaml development by creating an account on GitHub.

Hey everyone.
If you interested in doing Advent of Code this year with a new language and are leaning towards FP.
I have made an OCaml template repo to get you started.
It also has NIX support to avoid dependency hell.
I hope you have fun using the project just as I have.
github.com/aguluman/adv...

29.11.2025 10:45 ๐Ÿ‘ 12 ๐Ÿ” 3 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0
Preview
Relocatable OCaml - `--with-relative-libdir` by dra27 ยท Pull Request #14244 ยท ocaml/ocaml This is the second of three PRs which implement Relocatable OCaml as proposed in ocaml/RFCs#53. The series of changes in this PR combine to allow the absolute location of the Standard Library (e.g....

Aaaand, breathe againโ€ฆ ๐Ÿ˜ฎโ€๐Ÿ’จ

github.com/ocaml/ocaml/...

29.11.2025 22:09 ๐Ÿ‘ 12 ๐Ÿ” 2 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 1

Thank you, fixed!

18.11.2025 11:20 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Preview
OCaml 5.4 Release: New Features, Fixes, and More! An overview of the OCaml 5.4 update highlighting new features and bug fixes!

The 5.4 update of OCaml is out! Check out our blog for an overview of the biggest new features and fixes๐Ÿซ tarides.com/blog/2025-10...

13.11.2025 14:10 ๐Ÿ‘ 7 ๐Ÿ” 3 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 1
Foundations for hacking on OCaml ยท KC Sivaramakrishnan

Putting this OCaml out there for posterity sake.
The resources in the post is super valuable.

kcsrk.info/ocaml/2025/1...

11.11.2025 09:49 ๐Ÿ‘ 9 ๐Ÿ” 3 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

day 3 of posting FUN OCaml 2025 talk recordings!

https://youtu.be/UfrryqltZUQ?si=btHKGf_3OoGC-xmX

10.11.2025 07:35 ๐Ÿ‘ 5 ๐Ÿ” 2 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0