End-of-life is December 31, 2026.
The announcement at https://discuss.ocaml.org/t/ann-sunsetting-of-dkml-distribution/17530 has full details.
In PowerShell do:
winget remove dkml
You’ll see Uninstall failed with exit code: 4294967295 but otherwise it should succeed.
Then do:
winget install dkml
winget upgrade and winget remove will fail with an innocuous error:
Uninstall failed with exit code: 4294967295
Just ignore the error and continue with winget install dkml.
Issue: https://gitlab.com/dkml/distributions/dkml/-/issues/26.
The installer does not yet check that all OCaml programs are stopped before upgrading or uninstalling. If you get Permission denied then stop OCaml manually: close Visual Studio Code, stop any dune build, and stop any opam install / opam exec. And then forcibly kill the processes in PowerShell:
1..6 | % { @("bash","sh","with-dkml","ocamllsp","git","opam","dune","ocamlrun") | % { taskkill /F /IM "$_.exe" }; Start-Sleep 1 }
Opam pins for dkml switch step of DkML workflows no longer takes 40 minutes for dockcross Linux containers. https://gitlab.com/dkml/distributions/dkml/-/issues/29dkml.exe and with-dkml.exe but both are deprecated; the new (unified) executable is dk.exe. See Deprecated Commands in the release notes.dkml init, the replacement dk Ml.Switch init and the with-dkml proxy commands, and can be disabled with dk Ml.News disable. In particular, use dk Ml.News to show the news if you are experiencing problems with DkML.The deprecated commands still work, but will first display the new command on the standard error and then pause for 15 seconds.
| Old Command | New Command | Example |
|---|---|---|
dkml init | dk Ml.Switch | dk Ml.Switch init |
dk Ml.News | dk Ml.News show | |
dkml version | dk Ml.Version | dk Ml.Version show |
with-dkml bash | dk Ml.Use | (1) dk Ml.Use -- bash |
(1) with-dkml bash / with-dkml python3 / etc will not pause for 15 seconds.
autodetect_compile() --post-transform scripts to stderrenv/android-ndk-env-to-ocaml-configure-env.sh to work with latest Android NDK. It includes a patch for android_arm32v7a to remove duplicate labels from OCaml-generated assembly language that fails in NDK24+ (clang assembler is stricter rather than older GNU AS assembler).dkml-target-abi-any package will be present in your switch if any dkml-target-abi-* package is present. That can simplify your opam package filters. See dkml-target-abi-any package in the diskuv-opam-repository for how to use it in a cross-compiling, binary download use case.dkml-target-abi-* when the host ABI is known: Apple Silicon can always run two architectures (Intel+Silicon) and Windows can always two as well (x86+x86_64, or ARM64+x86_64 albeit slower).--quiet from shasum since the option is not available in shasum 5.96. Remove useless LANG when LC_ALL is defined. Use LC_ALL=C not C.UTF-8 which may not be installed on the machine.| Package | From | To |
|---|---|---|
| dkml-install,dkml-install-* | 0.5.2 | 0.5.3 |
| earlybird | 1.3.2+dkml-4_14-backport-linearclosures | |
| cmdliner | 1.2.0 | 1.3.0 |

