Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/khady/modern-ocaml
Template for an ocaml project with modern tooling
https://github.com/khady/modern-ocaml
ocaml
Last synced: 7 days ago
JSON representation
Template for an ocaml project with modern tooling
- Host: GitHub
- URL: https://github.com/khady/modern-ocaml
- Owner: Khady
- License: agpl-3.0
- Created: 2020-05-19T07:25:15.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2024-12-23T10:02:28.000Z (16 days ago)
- Last Synced: 2024-12-25T12:07:28.587Z (14 days ago)
- Topics: ocaml
- Language: OCaml
- Homepage:
- Size: 104 KB
- Stars: 78
- Watchers: 6
- Forks: 6
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# modern-ocaml
Template for an ocaml project with modern tooling.
The setup should be installable as easily as possible.
## Getting started
```sh
opam switch create . 5.2.0 --no-install
opam install . --deps-only --with-dev-setup
```## Build system
The current goto build system in ocaml is dune. Version 3 or superior of the
dune lang should be used if possible. Unless the goal is to write a library
that must be compatible with legacy environements. The base of the project has
been generated with `dune init project modern_ocaml`.## Continuous integration
The CI setup is relying on github actions. It is kept as simple as possible.
It checks for compilation of the project, tests, code formatting.## Code formatting
This repository has ocamlformat enabled. With the default configuration. In a
modern editor setup, using it should be mostly transparent. It can also be
triggered with `dune build @fmt`.## Editor tooling
Over the past year a very good implementation of a LSP server for ocaml has
been developed. It should be automatically installed during the setup of the
project.## Running a binary
After running the setting up commands, you can check that it works by running:
```sh
$ dune build
$ dune exec bin/main.exe
Hello, World!
```## License
This repository contains a AGPLv3+ license file. I made this choice because I
support free software and I believe that it is the best license to use for
personal projects. But this repository is meant to be used as a template. It
doesn't contain any original code by itself. So it can't be covered by a
license. Feel free to use this template for your projects and pick the
license you prefer. It is also totally fine to use it for a closed source
project.If you need help selecting a license, the Free Software Foundation provides a
[short guide]( https://www.gnu.org/licenses/license-recommendations.html) for
picking a license.