-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #82 from janestreet/merge-with-upstream-merlin-5.2
Merge in upstream main for 5.2 merge
- Loading branch information
Showing
525 changed files
with
118,702 additions
and
29,937 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
# Code of Conduct | ||
|
||
This project has adopted the [OCaml Code of Conduct](https://github.com/ocaml/code-of-conduct/blob/main/CODE_OF_CONDUCT.md). | ||
|
||
# Enforcement | ||
|
||
This project follows the OCaml Code of Conduct | ||
[enforcement policy](https://github.com/ocaml/code-of-conduct/blob/main/CODE_OF_CONDUCT.md#enforcement). | ||
To report any violations, please contact: | ||
|
||
- Sonja Heinze <sonja [at] tarides [dot] com> | ||
- Ulysse Gérard <ulysse [at] tarides [dot] com> | ||
- Pizie Dust <pizie [at] tarides [dot] com> | ||
- Xavier Van de Woestyne <xavier [at] tarides [dot] com> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,118 @@ | ||
# Contributing to Merlin | ||
|
||
Merlin is a community oriented open-source project and we encourage and value | ||
any kind of contribution. Thanks for taking the time to contribute 🐫 ! | ||
|
||
## Code of Conduct | ||
|
||
Merlin adheres to the OCaml Code of Conduct as stated in the [Code of Conduct | ||
document](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this | ||
code. Please report unacceptable behavior either to local contacts (listed in | ||
[here](CODE_OF_CONDUCT.md)) or to someone listed in the upstream [OCaml Code of | ||
Conduct](CODE_OF_CONDUCT.md). | ||
|
||
## Documentation | ||
|
||
Merlin (partial and fragmented) documentation can be found in the following | ||
places: | ||
- Installation instructions and editor setup can be found in the | ||
[README.md](README.md) and the [Github Pages](https://ocaml.github.io/merlin/) | ||
- Various topics related to editor support and configuration can be found in the | ||
[wiki](https://github.com/ocaml/merlin/wiki). | ||
- The Merlin protocol is described in [this | ||
document](https://github.com/ocaml/merlin/blob/master/doc/dev/PROTOCOL.md). | ||
|
||
Contributions to the documentation are welcome! | ||
|
||
## Question, bug reports and feature requests | ||
|
||
We rely on [Github's issue tracker](https://github.com/ocaml/merlin/issues) for | ||
support questions, feature requests and bug reports. | ||
|
||
When reporting an issue, please include a precise reproduction in the bug report | ||
when that's possible, as it is a very useful tool to investigate. You should | ||
also check that you are using the latest version of Merlin and that a similar | ||
issue has not already been submitted. | ||
|
||
## Code contributions | ||
|
||
### Styleguides | ||
|
||
As of today, Merlin's codebase does not use a code formatter. When contributing | ||
code to an existing module, one should adopt the style of the surrounding code. | ||
Please keep lines under 80 characters. | ||
|
||
We plan to move the codebase to ocamlformat in a near future. | ||
|
||
Changes unrelated to the issue addressed by a PR should be made in a separate | ||
PR. Additionally, formatting changes in parts of the code not concerned by a | ||
specific PR should be proposed in another PR. | ||
|
||
Ideally, any opened issue should be accompanied by a test with a reproduction. | ||
When working on a fix for an issue, the first commit should contain the test | ||
showing the issue. Following commits should fix the issue and update the test | ||
result accordingly. | ||
|
||
### Menhir version | ||
|
||
Merlin promotes the generated Menhir parser in its sources. This is done to | ||
avoid depending on Menhir when installing Merlin. However this also means that | ||
unnecessary diff will appear when the parser gets re-generated by a different | ||
version of Menhir. To remove this diff please use version `20201216`: | ||
```bash | ||
$ opam pin menhir 20201216 | ||
``` | ||
The generated parser file should only be commited if there is an actual change | ||
in the grammar. | ||
|
||
### Repository organization | ||
|
||
There is a partial overview over the repo organization with file-granularity at | ||
[ARCHITECTURE.md](https://github.com/ocaml/merlin/blob/master/doc/dev/ARCHITECTURE.md). | ||
Here is a more high-level overview. | ||
|
||
#### `/src/ocaml` | ||
Vendored OCaml typer. Also include Merlin's incremental parser and other | ||
utilites. Changes to these modules should be kept minimal as these patches need | ||
to be reapplied for each new version of the compiler. | ||
|
||
#### `/src/kernel` | ||
The backbone of merlin. Contains configuration utilities and pipeline | ||
management. The pipeline describes the compilation workflow: parsing, ppxing and | ||
typing. | ||
|
||
#### `/src/frontend/query_protocol.ml` | ||
The type description of Merlin's protocol as documented in | ||
[PROTOCOL.md](https://github.com/ocaml/merlin/blob/master/doc/dev/PROTOCOL.md) | ||
|
||
#### `/src/frontend/query_commands.ml` | ||
This file contains the dispatcher: a large pattern matching that answers | ||
Merlin's queries. Most of the time answering a query begins with getting the | ||
Typedtree from the pipeline and calling the correct analysis functions. | ||
|
||
#### `/src/analysis` | ||
Contains most of Merlin logic required to answer the queries. | ||
|
||
#### `/src/dot-protocol` | ||
The configuration protocol that configuration servers such as | ||
`dot-merlin-reader` or `dune ocaml-merlin` should implement. | ||
|
||
#### `/src/dot-merlin-reader` | ||
The historical configuration server of Merlin. It reads `.merlin` configuration | ||
files whose syntax is [documented in the | ||
wiki](https://github.com/ocaml/merlin/wiki/Project-configuration). | ||
|
||
#### `/src/frontend/ocamlmerlin` | ||
The standard Merlin frontend, composed of a long-running server and a client. | ||
This is the frontend used by the test-suite and standard emacs and vim plugins. | ||
For an alternative frontend, see | ||
[ocaml-lsp-server](https://github.com/ocaml/ocaml-lsp/) | ||
|
||
#### `/tests/test-dirs` | ||
Merlin's behavioral test-suite. We rely on Dune's cram test framework. | ||
|
||
#### `/emacs` | ||
The emacs editor mode. | ||
|
||
#### `/vim` | ||
The vim plugin. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
# Release procedure | ||
|
||
## Project organization | ||
|
||
Merlin maintains multiple branches for multiple versions of the compiler. The current active support branches are: | ||
|
||
- `master` with support for OCaml 5.2 | ||
- `501` with support for OCaml 5.1 | ||
- `414` with support for OCaml 4.14 | ||
|
||
Development happens on the `master` branch and bug fixes that should be | ||
backported to other supported branches should be added to the appropriate | ||
[project](https://github.com/ocaml/merlin/projects?type=classic). | ||
|
||
Major changes were specific to OCaml 5.2 so the subsequent releases have a major | ||
version number at `5` (like `v5.0-502`) while support releases will stay with | ||
the version number `4` (like `v4.15-414` or `v4.15-501`). | ||
|
||
## Before the release | ||
|
||
- A PR is opened with the updated changelog for each released branch. The | ||
changelog should contain an appropriate timestamp for the release. | ||
- Additionally, for each non-master released version, the PR also contains the | ||
required backports. | ||
|
||
## Release | ||
|
||
We use `dune-release` to release Merlin. | ||
|
||
For each released branch: | ||
- Merge the corresponding PR. | ||
- Run `dune-release tag v4.15-414`. | ||
The tag should always formed in the same way: | ||
``` | ||
"v%s-%s" merlin_version ocaml_version | ||
``` | ||
For example: `v4.14-414`, `v5.0-502` etc. | ||
- Run `dune-release` and follow the instructions, but say `No` when asked if a PR should be created on opam's repository. | ||
- For multiple releases it is best to group all the releases in a single opam PR. Additionally it is often not necessary to release the `dot-merlin-package`. | ||
- Cherry-pick the commits from every branch created by `dune-release`, make the necessary changes (like removing the `dot-merlin-reader` packages) and open the PR on opam. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,34 +1 @@ | ||
FROM ocaml/opam:debian-11-ocaml-5.0 | ||
|
||
WORKDIR /app | ||
|
||
RUN sudo apt-get update | ||
RUN sudo apt-get -y install jq | ||
COPY . . | ||
RUN sudo chown -R opam /app | ||
RUN eval $(opam env) | ||
|
||
# install merlin | ||
RUN opam install . | ||
|
||
# install merl-an | ||
## cache workaround: https://github.com/ocurrent/current-bench/issues/468#issuecomment-1621030354 | ||
ADD https://api.github.com/repos/pitag-ha/merl-an/git/refs/heads/main .merl-an-info | ||
RUN opam pin -y merl-an https://github.com/pitag-ha/merl-an.git | ||
|
||
RUN eval $(opam env) | ||
|
||
# create directory for projects to run benchmarks on | ||
RUN sudo mkdir /projects | ||
RUN sudo chown opam /projects | ||
WORKDIR /projects | ||
|
||
# build irmin | ||
RUN git clone https://github.com/mirage/irmin.git | ||
WORKDIR /projects/irmin | ||
RUN git checkout 8da4d16e7cc8beddfc8a824feca325426bae08a9 | ||
RUN sudo apt install -y gnuplot-x11 libgmp-dev pkg-config libffi-dev | ||
RUN opam switch import /app/bench/irmin.opam.export --no-checksums | ||
RUN opam exec -- dune build | ||
|
||
WORKDIR /app | ||
FROM ocaml/opam:ubuntu-20.04-ocaml-5.2 |
Oops, something went wrong.