The DkML distribution is an open-source set of software that supports
software development in pure OCaml. DkML's strengths are its:
✓ full compatibility with OCaml standards like Opam, Dune and ocamlfind
✓ laser focus on "native" development (desktop software, mobile apps and
embedded software) through support for the standard native compilers like
Visual Studio and Xcode
✓ ease-of-use through simplified installers and simple productivity commands;
high school students should be able to use it
✓ security through reproducibility, versioning and from-source builds
There are two categories of programs installed by this DkML package:
1. "Immediate" programs that manipulate OCaml bytecode or source code:
* `utop`, `ocamlc`, `ocaml`, `ocamlrun`, `ocamlformat`, `ocamllsp`, `ocamllex`,
`dkml` and `with-dkml`
2. "Shim" programs that manipulate OCaml native code:
* `opam`
The shim programs have prerequisites. You should install them before you run
the shim programs, although if you forget the programs will tell you what you
need to install. The prerequisites are:
* Git. If you don't have this, install Git for Windows with:
winget install Git.Git
* Visual Studio Enterprise/Professional/Community/Build Tools 2019 or 2022 in a directory
without spaces or parentheses. For example, "C:\Program Files (x86)\VisualStudio" won't
work. If you don't have Visual Studio, install it with:
winget install Microsoft.VisualStudio.2022.BuildTools --override "--wait --passive --installPath C:\VS17 --addProductLang En-us --add Microsoft.VisualStudio.Workload.VCTools --add Microsoft.VisualStudio.Component.VC.14.38.17.8.x86.x64 --includeRecommended"
The DkML package will experience problems if you have a space in your username
(ex. C:\Users\Jane Smith).
These alternatives may be better depending on your use case:
* Developing in a Javascript first environment? Have a look at Esy and Reason
* Developing operating system kernels? Have a look at Mirage OS
* Developing Linux server software like web servers? Plain old OCaml on
Debian, etc. works well
* Writing compilers or proofs? Plain old OCaml works really well
Commercial tools and support are available from Diskuv for mixed
OCaml/C/C++/Java/Swift development; this pure OCaml winget package
only has support for mixed OCaml/C development. Contact
support AT diskuv.com if you need OCaml/C/C++/Java/Swift development.