{
 "id": "dune",
 "name": "dune",
 "url": "https://dev-news.anonyfox.com/dune/",
 "site": "https://dune.build",
 "ecosystem": "ocaml",
 "title": "dune release history: Coq out, Melange sandboxing rolled back",
 "description": "Every dune release since 2024 from GitHub, a terrain of fixed, added and changed changelog entries per release since 2025, and what 3.24 removed and reverted.",
 "lede": {
  "date": "2026-10-24",
  "paragraphs": [
   "Dune 3.24.0 came out on 21 June 2026 and removed the deprecated Coq build language: projects that still declare (using coq ...) now get an error pointing them at Rocq. The same release made directory targets generally available, enabled the relocatable compiler by default for package management and capped sandbox creation at 250 concurrent sandboxes.",
   "A month later 3.24.1 reverted sandboxing Melange rules by default in the library and melange.emit stanzas, because in Melange libraries with many modules, creating and destroying sandboxes dominated build time. 3.24.2 followed on 3 August with two fixes and is still the latest release twelve weeks on. Each of the three minors before it, 3.21 to 3.23, opened with 37 to 48 changelog entries."
  ]
 },
 "latest": {
  "version": "3.24.2",
  "date": "2026-08-03",
  "url": "https://github.com/ocaml/dune/releases/tag/3.24.2",
  "summary": "Add the implicit unix dependency required by MDX 2.6 and later to"
 },
 "stable_releases_since_2024": 33,
 "prereleases_since_2024": 0,
 "releases": [
  {
   "version": "3.24.2",
   "date": "2026-08-03",
   "url": "https://github.com/ocaml/dune/releases/tag/3.24.2",
   "summary": "Add the implicit unix dependency required by MDX 2.6 and later to"
  },
  {
   "version": "3.24.1",
   "date": "2026-07-21",
   "url": "https://github.com/ocaml/dune/releases/tag/3.24.1",
   "summary": "Fix an internal error (modulesandobjdir: failed lookup) when generating"
  },
  {
   "version": "3.24.0",
   "date": "2026-06-21",
   "url": "https://github.com/ocaml/dune/releases/tag/3.24.0",
   "summary": "Fix promotion failure when a target changes from a directory to a file"
  },
  {
   "version": "3.23.1",
   "date": "2026-05-14",
   "url": "https://github.com/ocaml/dune/releases/tag/3.23.1",
   "summary": "Fix the menhir opam dependency injection introduced in 3.23. Dune"
  },
  {
   "version": "3.23.0",
   "date": "2026-05-04",
   "url": "https://github.com/ocaml/dune/releases/tag/3.23.0",
   "summary": "Auto-inject \"menhir\" {>= \"20180523\"} into generated opam files when the"
  },
  {
   "version": "3.22.2",
   "date": "2026-04-10",
   "url": "https://github.com/ocaml/dune/releases/tag/3.22.2",
   "summary": "Revert the change in behavior of --diff-command back to 3.21. Non-existent"
  },
  {
   "version": "3.22.1",
   "date": "2026-04-01",
   "url": "https://github.com/ocaml/dune/releases/tag/3.22.1",
   "summary": "Restore compatibility with Windows 7"
  },
  {
   "version": "3.22.0",
   "date": "2026-03-19",
   "url": "https://github.com/ocaml/dune/releases/tag/3.22.0",
   "summary": "Dyn.tostring now uses a smarter way to convert floats. This ensures that"
  },
  {
   "version": "3.21.1",
   "date": "2026-02-11",
   "url": "https://github.com/ocaml/dune/releases/tag/3.21.1",
   "summary": "Fix build issues on NetBSD and OpenBSD via update of vendored ocaml-lmdb"
  },
  {
   "version": "3.21.0",
   "date": "2026-01-12",
   "url": "https://github.com/ocaml/dune/releases/tag/3.21.0",
   "summary": "Fix includesubdirs qualified incorrectly picking the furthest module"
  },
  {
   "version": "3.20.2",
   "date": "2025-09-03",
   "url": "https://github.com/ocaml/dune/releases/tag/3.20.2",
   "summary": "Fix jsoo separate compilation with moduleswithoutimplementation. Regression"
  },
  {
   "version": "3.20.1",
   "date": "2025-08-25",
   "url": "https://github.com/ocaml/dune/releases/tag/3.20.1",
   "summary": "Fix runtest-js mistakenly depending on byte (fixes #12243, #12242,"
  },
  {
   "version": "3.20.0",
   "date": "2025-08-19",
   "url": "https://github.com/ocaml/dune/releases/tag/3.20.0",
   "summary": "Stop re-running cram tests after promotion when it's not necessary (#11994,"
  },
  {
   "version": "3.19.1",
   "date": "2025-06-11",
   "url": "https://github.com/ocaml/dune/releases/tag/3.19.1",
   "summary": "Revert changes in dune exec behaviour introduced in 3.19.0. (#11879, fixes"
  },
  {
   "version": "3.19.0",
   "date": "2025-05-21",
   "url": "https://github.com/ocaml/dune/releases/tag/3.19.0",
   "summary": "Fixed a bug that was causing cram tests attached to multiple aliases to be run multiple"
  },
  {
   "version": "3.18.2",
   "date": "2025-04-29",
   "url": "https://github.com/ocaml/dune/releases/tag/3.18.2",
   "summary": "fix compatibility with ocaml.5.4.0 by avoiding shadowing sigwinch (@nojb,"
  },
  {
   "version": "3.18.1",
   "date": "2025-04-15",
   "url": "https://github.com/ocaml/dune/releases/tag/3.18.1",
   "summary": "fix: pass pkg-config (extra) args in all pkgconfig invocations. A missing"
  },
  {
   "version": "3.18.0",
   "date": "2025-04-03",
   "url": "https://github.com/ocaml/dune/releases/tag/3.18.0",
   "summary": "Support HaikuOS: don't call execve since it's not allowed if other pthreads"
  },
  {
   "version": "3.17.2",
   "date": "2025-01-23",
   "url": "https://github.com/ocaml/dune/releases/tag/3.17.2",
   "summary": "Fix a crash in the Melange rules that would prevent compiling public library"
  },
  {
   "version": "3.17.1",
   "date": "2024-12-17",
   "url": "https://github.com/ocaml/dune/releases/tag/3.17.1",
   "summary": "When a library declares (nodynlink), then the .cmxs file for it"
  },
  {
   "version": "3.17.0",
   "date": "2024-11-27",
   "url": "https://github.com/ocaml/dune/releases/tag/3.17.0",
   "summary": "Show the context name for errors happening in non-default contexts."
  },
  {
   "version": "3.16.1",
   "date": "2024-10-30",
   "url": "https://github.com/ocaml/dune/releases/tag/3.16.1",
   "summary": "Call the C++ compiler with -std=c++11 when using OCaml >= 5.0"
  },
  {
   "version": "3.16.0",
   "date": "2024-06-17",
   "url": "https://github.com/ocaml/dune/releases/tag/3.16.0",
   "summary": "allow libraries with the same (name ..) in projects as long as they don't"
  },
  {
   "version": "3.15.3",
   "date": "2024-05-24",
   "url": "https://github.com/ocaml/dune/releases/tag/3.15.3",
   "summary": "Fix interpretation of existsif predicate in META files of installed"
  },
  {
   "version": "3.15.2",
   "date": "2024-04-23",
   "url": "https://github.com/ocaml/dune/releases/tag/3.15.2",
   "summary": "If no directory targets are defined, then do not evaluate enabledif"
  },
  {
   "version": "3.15.1",
   "date": "2024-04-17",
   "url": "https://github.com/ocaml/dune/releases/tag/3.15.1",
   "summary": "Fix overflow in sendfile stubs (copy of large files could fail or end with"
  },
  {
   "version": "3.15.0",
   "date": "2024-04-03",
   "url": "https://github.com/ocaml/dune/releases/tag/3.15.0",
   "summary": "Add link flags to to ocamlmklib for ctypes stubs"
  },
  {
   "version": "3.14.2",
   "date": "2024-03-12",
   "url": "https://github.com/ocaml/dune/releases/tag/3.14.2",
   "summary": "fix compilation on non-glibc systems due to signal.h not being pulled in"
  },
  {
   "version": "3.14.1",
   "date": "2024-03-11",
   "url": "https://github.com/ocaml/dune/releases/tag/3.14.1",
   "summary": "When a directory is changed to a file, correctly remove it in subsequent"
  },
  {
   "version": "3.14.0",
   "date": "2024-02-12",
   "url": "https://github.com/ocaml/dune/releases/tag/3.14.0",
   "summary": "Introduce a (dynamicinclude ..) stanza. This is like (include foo) but"
  }
 ],
 "log": [],
 "then": [],
 "coverage": {
  "ok": true,
  "expected": 33,
  "present": 33,
  "checked_at": "2026-10-24T17:23:21.434Z",
  "since": "2024-01-01T00:00:00.000Z"
 },
 "sources": {
  "releases": {
   "type": "github",
   "repo": "ocaml/dune",
   "tag_filter": "^\\d+\\.\\d+\\.\\d+$"
  }
 },
 "feed": "https://dev-news.anonyfox.com/dune/feed.xml",
 "markdown": "https://dev-news.anonyfox.com/dune.md"
}
