-
Notifications
You must be signed in to change notification settings - Fork 180
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Set ocaml-version to a fixed version by default to avoid reproducibility issues and surprising behaviours #2064
Conversation
…ity issues and surprising behaviours
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is the most correct behavior.
to the oldest version of the compiler to ever be compatible with ocamlformat.
It should be the oldest version of the compiler compatible with the programs that are formatted, this has never been specified but is perhaps close to 4.02 or 4.00. But that doesn't matter because this value is only compared against 4.13 and 4.14 for now.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for this change, it looks good to me.
I updated the help file and cleaned up the code producing the doc, let me know what you think.
CHANGES: ### Removed - Profiles `compact` and `sparse` are now removed (ocaml-ppx/ocamlformat#2075, @gpetiot) - Options `align-cases`, `align-constructors-decl` and `align-variants-decl` are now removed (ocaml-ppx/ocamlformat#2076, @gpetiot) - Option `disable-outside-detected-project` is now removed (ocaml-ppx/ocamlformat#2077, @gpetiot) ### Deprecated - Cancel the deprecations of options that are not set by the preset profiles (ocaml-ppx/ocamlformat#2074, @gpetiot) ### Bug fixes - emacs: Remove temp files in the event of an error (ocaml-ppx/ocamlformat#2003, @gpetiot) - Fix unstable comment formatting around prefix op (ocaml-ppx/ocamlformat#2046, @gpetiot) ### Changes - Qtest comments are not re-formatted (ocaml-ppx/ocamlformat#2034, @gpetiot) - ocamlformat-rpc is now distributed through the ocamlformat package (ocaml-ppx/ocamlformat#2035, @Julow) - Doc-comments code blocks with a language other than 'ocaml' (set in metadata) are not parsed as OCaml (ocaml-ppx/ocamlformat#2037, @gpetiot) - More comprehensible error message in case of version mismatch (ocaml-ppx/ocamlformat#2042, @gpetiot) - The global configuration file (`$XDG_CONFIG_HOME` or `$HOME/.config`) is only applied when no project is detected, `--enable-outside-detected-project` is set, and no applicable `.ocamlformat` file has been found. Global and local configurations are no longer used at the same time. (ocaml-ppx/ocamlformat#2039, @gpetiot) - Set `ocaml-version` to a fixed version (4.04.0) by default to avoid reproducibility issues and surprising behaviours (ocaml-ppx/ocamlformat#2064, @kit-ty-kate) - Split option `--numeric=X-Y` into `--range=X-Y` and `--numeric` (flag). For now `--range` can only be used with `--numeric`. (ocaml-ppx/ocamlformat#2073, ocaml-ppx/ocamlformat#2082, @gpetiot) ### New features - New syntax `(*= ... *)` for verbatim comments (ocaml-ppx/ocamlformat#2028, @gpetiot) - Preserve the begin-end construction in the AST (ocaml-ppx/ocamlformat#1785, @hhugo, @gpetiot) - Preserve position of comments located after the semi-colon of the last element of lists/arrays/records (ocaml-ppx/ocamlformat#2032, @gpetiot) - Option `--print-config` displays a warning when an .ocamlformat file defines redundant options (already defined by a profile) (ocaml-ppx/ocamlformat#2084, @gpetiot)
See for example ocaml/opam-repository#21236 (comment)
To me, ocamlformat should always aim to give a reproducible output regardless of the version of the compiler you currently have. To this end I’m setting the default value of
ocaml-version
to the oldest version of the compiler to ever be compatible with ocamlformat.