{"slug": "dune", "name": "Dune", "category": "dev-libs", "category_name": "Libraries and frameworks", "description": "", "recommenders": 3, "commenters": 5, "warners": 1, "score": 1.277, "rising": -0.98, "first": "2025-11-07", "latest": "2026-06-09", "why": "Use \u201cdune test\u201d to run the tests and review failures with \u201cgit diff\u201d.", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 3, "neutral": 2, "compare": 0, "warn": 1}, "spark": [2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "Use \u201cdune test\u201d to run the tests and review failures with \u201cgit diff\u201d.", "kind": "", "icon": true, "domain": "dune.build", "github_repo": null, "official_url": "https://dune.build/", "pricing": "", "aliases": ["Dune", "dune"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 750601633, "item_id": 46912602, "url": "https://news.ycombinator.com/item?id=46912602", "by": "i_don_t_know", "date": "2026-02-06", "version": null, "stance": "recommend", "quote": "Use \u201cdune test\u201d to run the tests and review failures with \u201cgit diff\u201d.", "excerpt": "mdx[1] is another variation on this, also in the Ocaml ecosystem. It\u2019s Ocaml\u2019s version of documentation tests as in Elixir and Rust. But it\u2019s not limited to that. You can write tests in markdown files independently from your documentation. Use \u201cdune test\u201d to run the tests and review failures with \u201cgit diff\u201d. Accept the changes if they are correct (changed behavior) with \u201cdune promote\u201d. Very nice workflow. [1] https:/", "context": "", "use_case": "", "switched_from": "", "story": "Jane Street Blog \u2013 What if writing tests was a joyful experience?"}, {"id": 733653153, "item_id": 45853322, "url": "https://news.ycombinator.com/item?id=45853322", "by": "chris_armstrong", "date": "2025-11-07", "version": null, "stance": "recommend", "quote": "dune package management (which is still in the works) will simplify this considerably", "excerpt": "It's interesting reading many of the associated comments, because there is a genuinely active effort to address many of the pain points of the language: * Windows support has improved to the point where you can just download opam, and it will configure and set up a working compiler and language tools for you[^1]. The compiler team treat Windows as an first tier target. opam repository maintainers ensure new libraries", "context": "", "use_case": "", "switched_from": "", "story": "Why I love OCaml (2023)"}, {"id": 733563072, "item_id": 45847692, "url": "https://news.ycombinator.com/item?id=45847692", "by": "phplovesong", "date": "2025-11-07", "version": null, "stance": "recommend", "quote": "But dune has got really good.", "excerpt": "Tooling was kind of bad previously. But dune has got really good. I like the new dune developer preview thing that is still in beta. https://preview.dune.build/", "context": "", "use_case": "OCaml build system", "switched_from": "", "story": "We chose OCaml to write Stategraph"}]}], "caveats": [{"label": "", "summary": "", "quotes": [{"id": 775182016, "item_id": 48448876, "url": "https://news.ycombinator.com/item?id=48448876", "by": "p4bl0", "date": "2026-06-08", "version": null, "stance": "warn", "quote": "frankly, Dune kinda sucks. I mean, it is very powerful, and works very well, but it's too much of a hassle, especially for beginners.", "excerpt": "This is a good introduction to Dune, but frankly, Dune kinda sucks. I mean, it is very powerful, and works very well, but it's too much of a hassle, especially for beginners. I don't want a language specific build system to require two different files to actually be usable, even on very simple projects\u2026 I still use it because it is the de facto standard, but I really preferred ocamlbuild [1], which was actually a too", "context": "", "use_case": "OCaml build system", "switched_from": "", "story": "OCaml Onboarding: Introduction to the Dune build system"}]}], "who": [], "tags": [], "use_cases": ["ocaml build system", "installing local ocaml libraries"], "compared": [], "makers": [], "threads": [{"url": "https://news.ycombinator.com/item?id=48402137", "title": "OCaml Onboarding: Introduction to the Dune build system", "mentions": 3}, {"url": "https://news.ycombinator.com/item?id=46905896", "title": "Jane Street Blog \u2013 What if writing tests was a joyful experience?", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=45846517", "title": "Why I love OCaml (2023)", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=45845958", "title": "We chose OCaml to write Stategraph", "mentions": 1}], "sentiment_by_month": {"2025-11": {"recommend": 2}, "2025-12": {}, "2026-01": {}, "2026-02": {"recommend": 1}, "2026-03": {}, "2026-04": {}, "2026-05": {}, "2026-06": {"warn": 1, "neutral": 2}, "2026-07": {}, "2026-08": {}, "2026-09": {}, "2026-10": {}}, "versions": [], "version_unnamed": 0, "family_ref": null, "runs_on": null, "lines": [], "quotes": [{"id": 775360368, "item_id": 48460023, "url": "https://news.ycombinator.com/item?id=48460023", "by": "zombot", "date": "2026-06-09", "version": null, "stance": "neutral", "quote": "I use Dune only for my local libraries, because the install step fits perfectly.", "excerpt": "I use Dune only for my local libraries, because the install step fits perfectly. But my app projects all use a Makefile, including apps with a table-driven parser (Menhir), where the OCaml `.ml` source has to be generated first. You have to know `make` well enough to do that, but it's definitely possible.", "context": "", "use_case": "installing local OCaml libraries", "switched_from": "", "story": "OCaml Onboarding: Introduction to the Dune build system"}, {"id": 775322864, "item_id": 48457679, "url": "https://news.ycombinator.com/item?id=48457679", "by": "chris_armstrong", "date": "2026-06-09", "version": null, "stance": "neutral", "quote": "", "excerpt": "Not yet - it's mostly a build tool, but package management abilities (which is otherwised covered by opam) is being added to it^1. It's currently usable for some projects (and worth trying out), but still in preview mode. ^1: https://dune.readthedocs.io/en/stable/tutorials/dune-package-management/index.html", "context": "", "use_case": "OCaml build system", "switched_from": "", "story": "OCaml Onboarding: Introduction to the Dune build system"}, {"id": 775182016, "item_id": 48448876, "url": "https://news.ycombinator.com/item?id=48448876", "by": "p4bl0", "date": "2026-06-08", "version": null, "stance": "warn", "quote": "frankly, Dune kinda sucks. I mean, it is very powerful, and works very well, but it's too much of a hassle, especially for beginners.", "excerpt": "This is a good introduction to Dune, but frankly, Dune kinda sucks. I mean, it is very powerful, and works very well, but it's too much of a hassle, especially for beginners. I don't want a language specific build system to require two different files to actually be usable, even on very simple projects\u2026 I still use it because it is the de facto standard, but I really preferred ocamlbuild [1], which was actually a too", "context": "", "use_case": "OCaml build system", "switched_from": "", "story": "OCaml Onboarding: Introduction to the Dune build system"}, {"id": 750601633, "item_id": 46912602, "url": "https://news.ycombinator.com/item?id=46912602", "by": "i_don_t_know", "date": "2026-02-06", "version": null, "stance": "recommend", "quote": "Use \u201cdune test\u201d to run the tests and review failures with \u201cgit diff\u201d.", "excerpt": "mdx[1] is another variation on this, also in the Ocaml ecosystem. It\u2019s Ocaml\u2019s version of documentation tests as in Elixir and Rust. But it\u2019s not limited to that. You can write tests in markdown files independently from your documentation. Use \u201cdune test\u201d to run the tests and review failures with \u201cgit diff\u201d. Accept the changes if they are correct (changed behavior) with \u201cdune promote\u201d. Very nice workflow. [1] https:/", "context": "", "use_case": "", "switched_from": "", "story": "Jane Street Blog \u2013 What if writing tests was a joyful experience?"}, {"id": 733653153, "item_id": 45853322, "url": "https://news.ycombinator.com/item?id=45853322", "by": "chris_armstrong", "date": "2025-11-07", "version": null, "stance": "recommend", "quote": "dune package management (which is still in the works) will simplify this considerably", "excerpt": "It's interesting reading many of the associated comments, because there is a genuinely active effort to address many of the pain points of the language: * Windows support has improved to the point where you can just download opam, and it will configure and set up a working compiler and language tools for you[^1]. The compiler team treat Windows as an first tier target. opam repository maintainers ensure new libraries", "context": "", "use_case": "", "switched_from": "", "story": "Why I love OCaml (2023)"}, {"id": 733563072, "item_id": 45847692, "url": "https://news.ycombinator.com/item?id=45847692", "by": "phplovesong", "date": "2025-11-07", "version": null, "stance": "recommend", "quote": "But dune has got really good.", "excerpt": "Tooling was kind of bad previously. But dune has got really good. I like the new dune developer preview thing that is still in beta. https://preview.dune.build/", "context": "", "use_case": "OCaml build system", "switched_from": "", "story": "We chose OCaml to write Stategraph"}]}