Initial release
OCaml Changelog
RSSRead the latest releases and updates from the OCaml compiler, OCaml infrastructure and the OCaml Platform Tools.
See full changelog
- Fix opam2 format upgrade when submitting a PR (#91, @samoht)
See full changelog
- Determine opam-repository fork user from URI (#64, @NathanReb and @diml)
- All subcommands now support multiple package names (@samoht)
- Do not remove
Makefile
from the distribution archives (#71, @samoht) - Do not duplicate version strings in opam file (#72, @samoht)
- Fix configuration file upgrade from 0.2 (#55, @samoht)
- Add a
--tag
option to select the release tag (@samoht) - Add a
--version
option to select the release version (@samoht) - Fix
--keep-v
(#70, @samoht) - Make
dune-release <OPTIONS>
a shorchut todune-release bistro <OPTIONS>
(#75, @samoht) - Add a --no-open option to not open a browser after creating a new P (#79, @samoht)
- Control
--keep-v
and--no-auto-open
via options in the config file (#79, @samoht) - Be flexible with file names (#86 and #20, @anuragsoni)
See full changelog
- Add
Attribute.declare_with_name_loc
(#33, @diml) - Let the tool name pass thought when used as a -ppx (#41, @diml)
- Update the AST to 4.06 (#8, @xclerc)
See full changelog
- Allow ppx rewriters to specify when they should be applied
See full changelog
- Switch default branch from 2.0.0 to master
- Minor fix
We are happy to announce the final release of opam 2.0.0.
A few weeks ago, we released a last release candidate to be later promoted to 2.0.0, synchronised with the opam package repository upgrade.
You are encouraged to update as soon as you see fit, to continue to get package updates: opam 2.0.0 supports the older formats, and 1.2.2 will no longer get regular updates. See the Upgrade Guide for details about the new features and changes.
The website opam.ocaml.org has been updated, with the full 2.0.0 documentation pages. You can still find the documentation for the previous versions in the corresponding menu.
Package maintainers should be aware of the following:
- the master branch of the opam package repository is now in the 2.0.0 format
- package submissions must accordingly be made in the 2.0.0 format, or using the new version of
opam-publish
(2.0.0) - anything that was merged into the repository in 1.2 format has been automatically updated to the 2.0.0 format
- the 1.2 format repository has been forked to its own branch, and will only be updated for critical fixes
For custom repositories, the advice remains the same.
Installation instructions (unchanged):
-
From binaries: run
sh <(curl -sL https://opam.ocaml.org/install.sh)
or download manually from the Github "Releases" page to your PATH. In this case, don't forget to run
opam init --reinit -ni
to enable sandboxing if you had version 2.0.0~rc manually installed. -
From source, using opam:
opam update; opam install opam-devel
(then copy the opam binary to your PATH as explained, and don't forget to run
opam init --reinit -ni
to enable sandboxing if you had version 2.0.0~rc manually installed) -
From source, manually: see the instructions in the README.
We hope you enjoy this new major version, and remain open to bug reports and suggestions.
NOTE: this article is cross-posted on opam.ocaml.org and ocamlpro.com. Please head to the latter for the comments!
See full changelog
Oops, we went looking but didn't find the changelog for this release π
Dune 1.2.1 includes a few critical bug fixes over 1.2.0. Everyone is encouraged to upgrade as soon as possible.
On behalf of the dune team,
Happy hacking.
See full changelog
-
Enrich the
dune
Emacs mode with syntax highlighting and indentation. New filedune-flymake
to provide a hookdune-flymake-dune-mode-hook
to enable linting of dune files. (#1265, @Chris00) -
Pass
link_flags
tocc
when compiling withConfigurator.V1.c_test
(#1274, @rgrinberg) -
Fix digest calculation of aliases. It should take into account extra bindings passed to the alias (#1277, fix #1276, @rgrinberg)
-
Fix a bug causing
dune
to fail eagerly when an optional library isn't available (#1281, @jeremiedimino) -
ocamlmklib should use response files only if ocaml >= 4.08 (@1268, @bryphe)
On behalf of the dune team, I'm pleased to announce the release of Dune 1.2.0. This release contains many new goodies which I will not describe here. This is because Etienne Millon has prepared a blog post for this release: https://tarides.com/2018-09-06-dune-1-2-0.html
I'd also like to personally thank him for all work he's done to make this release so great.
As usual, the change log is replicated below for your convenience.
Happy hacking!
See full changelog
-
Ignore stderr output when trying to find out the number of jobs available (#1118, fix #1116, @jeremiedimino)
-
Fix error message when the source directory of
copy_files
does not exist. (#1120, fix #1099, @emillon) -
Highlight error locations in error messages (#1121, @emillon)
-
Display actual stanza when package is ambiguous (#1126, fix #1123, @emillon)
-
Add
dune unstable-fmt
to formatdune
files. The interface and syntax are still subject to change, so use with caution. (#1130, fix #940, @emillon) -
Improve error message for
dune utop
without a library name (#1154, fix #1149, @emillon) -
Fix parsing
ocamllex
stanza in jbuild files (#1150, @rgrinberg) -
Highlight multi-line errors (#1131, @anuragsoni)
-
Do no try to generate shared libraries when this is not supported by the OS (#1165, fix #1051, @jeremiedimino)
-
Fix
Flags.write_{sexp,lines}
in configurator by avoiding the use ofStdune.Path
(#1175, fix #1161, @rgrinberg) -
Add support for
findlib.dynload
: when linking an executable usingfindlib.dynload
, automatically record linked in libraries and findlib predicates (#1172, @bobot) -
Add support for promoting a selected list of files (#1192, @jeremiedimino)
-
Add an emacs mode providing helpers to promote correction files (#1192, @jeremiedimino)
-
Improve message suggesting to remove parentheses (#1196, fix #1173, @emillon)
-
Add
(wrapped (transition "..message.."))
as an option that will generate wrapped modules but keep unwrapped modules with a deprecation message to preserve compatibility. (#1188, fix #985, @rgrinberg) -
Fix the flags passed to the ppx rewriter when using
staged_pps
(#1218, @jeremiedimino) -
Add
(env var)
to add a dependency to an environment variable. (#1186, @emillon) -
Add a simple version of a polling mode:
dune build -w
keeps running and restarts the build when something change on the filesystem (#1140, @kodek16) -
Cleanup the way we detect the library search path. We no longer call
opam config var lib
in the default build context (#1226, @jeremiedimino) -
Make test stanzas honor the -p flag. (#1236, fix #1231, @emillon)
-
Test stanzas take an optional (action) field to customize how they run (#1248, #1195, @emillon)
-
Add support for private modules via the
private_modules
field (#1241, fix #427, @rgrinberg) -
Add support for passing arguments to the OCaml compiler via a response file when the list of arguments is too long (#1256, @jeremiedimino)
-
Do not print diffs by default when running inside dune (#1260, @jeremiedimino)
-
Interpret
$ dune build dir
as building the default alias indir
. (#1259, @rgrinberg) -
Make the
dynlink
library available without findlib installed (#1270, fix #1264, @rgrinberg)
See full changelog
- Improve: simplify setting option defaults, slight --help improvement (#350, @jberdine)
- Improve: update emacs mode to use replace-buffer-contents (#345, @hhugo)
- Improve: add option to not force-break structs (#346, @jberdine)
- Improve: move 'formatting' options into separate section (#348, @gpetiot)
- Improve: fun sugar (@hhugo)
- Improve: add option to omit open lines between one-line module items (#303, @gpetiot)
- Fix: infix ops (@hhugo)
- Improve: reformat files with no locations (@hhugo)
- Improve: better error when max-iters = 1 (@hhugo)
- Improve: breaking before arrows in pattern match cases (@jberdine)
- Improve: no parens for trailing 'not' (@hhugo)
- Improve: missing break hint, fix #331 (@hhugo)
- Improve: comments before match (#330, @jberdine)
- Fix: missing comments (@hhugo)
- Fix: missing attributes due to sugar (@hhugo)
- Fix: parens non trivial rhs for
#
infix ops (@hhugo) - Improve: let-module-in break before
in
(#328, @jberdine) - Improve: sugar for nestest module_with (@hhugo)
- Improve: attributes on let bindings (#324, @jberdine)
- Improve: wrapping of functor args in type declaration (#315, @gpetiot)
- Fix: comments attachment with infix ops (@hhugo)
- Fix: comments attachment with Pexp_fun (@hhugo)
- Fix: docstrings as attributes (@hhugo)
- Improve: refactor and improve documentation of options (#302, @gpetiot)
- Improve: error reporting in emacs integration (#304, @jberdine)
- Improve: pexp_open as final arg of infix op (#314, @jberdine)
- Fix: missing parens around labeled record pattern arg (@jberdine)
- Fix: missing attributes (@hhugo)
- Fix: duplicated (x3) attributes in pexp_letmodule (@hhugo)
- Improve: allow to locally disable ocamlformat (@hhugo)
- Improve: corner case indentation of fun -> function (#312, @jberdine)
- Improve: labeled, optional, and default args (@jberdine)
- Improve: punning default arg with type constraint (@jberdine)
- Improve: add options to controls various spaces (#284, @hhugo)
- Improve: add option to disable wrapping fun args (#283, @hhugo)
- Improve: add option --break-cases to break each pattern-matching case (#251, @gpetiot)
- Improve: rename --nested-parens option (@hhugo)
- Improve: ws before colon for constraint (#293, @hhugo)
- Improve: option to choose where to parens nested match (@hhugo)
- Improve: always parens nested match (even the right most one) (@hhugo)
- Improve: always break for let_and contruct (@hhugo)
- Fix: missing comments (@hhugo)
- Improve: Add option to preserve style of local module open (#267, @gpetiot)
- Improve: preserve extension point formatting (@hhugo)
- Improve: make double semi consistent between implementation and use_file (#292, @hhugo)
- Improve: configure ocamlformat using attributes (@hhugo)
- Improve: extension point (@hhugo)
- Improve: break in type declaration for variant and record (#280, @hhugo)
- Fix: memory leak (@hhugo)
- Test: add ocaml compiler to test suite, and improve
make -C test
(@jberdine) - Fix: unary operator
+
/-
(@hhugo) - Fix: doc comments in class (@hhugo)
- Fix: ocaml bug, sort fields (@hhugo)
- Improve: empty mod with comments (@hhugo)
- Improve: disable warning generated by the lexer in quiet mode (@hhugo)
- Fix: record update (@hhugo)
- Fix: rec let binding and attribute (@hhugo)
- Fix: punning (@hhugo)
- Fix: let open and constraint (@hhugo)
- Fix: not extension sugar when attribute (@hhugo)
- Fix: no-comment-check missing case (@hhugo)
- Fix: string literal (@hhugo)
- Fix: format of infix in presence of
%;
(@hhugo) - Fix: let binding and type annot (@hhugo)
- Fix: binding when lhs is an extension (@hhugo)
- Fix: pat constraint in payload (@hhugo)
- Fix: let rec with extension (@hhugo)
- Fix: comments (@hhugo)
- Fix: comments in fmt_case (@hhugo)
- Fix: comments around Longident (@hhugo)
- Fix: missing comment for pmty_with (@hhugo)
- Improve: add option to disambiguate infix precedence with parens (@jberdine)
- Improve:
not
when infix op arg (@jberdine) - Improve: add a flag to skip all checks about comments (@hhugo)
- Improve: breaking of module ident/unpack/extension exps (#269, @jberdine)
- Fix: literal sub-exps with attributes (@jberdine)
- Fix: many fixes regarding attributes (@hhugo)
- Improve: preserve formatting of block comments (#255, @hhugo)
- Improve: breaking of applications with long literal list args (#258, @jberdine)
- Fix: sugar functor (@hhugo)
- Fix: type alias in variant (@hhugo)
- Improve: formatting of comments (@jberdine)
- Fix: prefix operators (@hhugo)
- Fix: exception declarations (@hhugo)
- Fix: doc comments in structure (#250, @hhugo)
- Fix: add parens around pat with trailing attr (@hhugo)
- Fix: let binding and Ppat_or (@hhugo)
- Fix: be more permissive with pattern (@hhugo)
- Fix: fix string_literal with when its location includes its attribute (#244, @hhugo)
- Improve: improve errors returned to the user. (#243, @hhugo)
- Fix: missing comments for Pexp_construct (#240, @hhugo)
- Fix: multiple fixes around classes (#242, @hhugo)
- Fix: comments in empty () and [] (#241, @hhugo)
- Fix: support empty variant (#239, @hhugo)
- Fix: add missing attribute (#238, @hhugo)
- Fix: be more permissive with ppat_interval (#237, @hhugo)
- Improve: remove trailing ws (#210, @hhugo)
- Improve: attributes on type declarations (#232, @jberdine)
- Improve: breaking of infix Array and String get and set ops (#233, @jberdine)
- Fix: attributes and doc comments (#221, @hhugo)
- Improve: spacing of module unpack (#230, @jberdine)
- Improve: no parent for new (@hhugo)
- Fix: Revert: Improve: remove redundant parens around application operators (@hhugo)
- Improve: array alignment (#226, @hhugo)
- Improve: nested array infix ops (#225, @hhugo)
- Fix: is_adjacent and remove [~inclusive] from [Source.string_between] (@hhugo)
- Fix: Cmts.CmtSet.split (@hhugo)
- Improve: Allow comments inside empty delimited "things" (#223, @hhugo)
- Fix: Source.ends_line (#222, @hhugo)
- Improve: empty struct and sig (#217, @hhugo)
- Improve: support for toplevel files (#218, @hhugo)
- Fix: string literal, fix #214 (#219, @hhugo)
- Improve: more tuning for functors (@hhugo)
- Improve: sugar for functor type with multiple args (@hhugo)
- Improve: sugar for functors with multiple args (@hhugo)
- Improve: module type with (@hhugo)
- Improve: break before with/and type (@hhugo)
- Improve: break between fun args (@hhugo)
- Improve: module unpacking (#215, @hhugo)
- Improve: for & while loops (#211, @hhugo)
- Fix: attributes on ite (#209, @hhugo)
- Fix: partially applied (+) and (-) (#208, @hhugo)
- Fix: polymorphic variant (#202, @hhugo)
- Fix: parens with lazy pat (fix #199) (#201, @hhugo)
- Improve: omit excess indentation of
function
cases (@jberdine) - Improve: extensions with payloads of multiple structure items (@jberdine)
- Improve: parenthesization and attribute placement of if-then-else (@jberdine)
- Fix: do not attach comments to docstrings (@jberdine)
- Fix: short syntax for extensions (#193, @hhugo)
- Fix: missing attrs for pcl_fun (@hhugo)
- Fix: pos of attribute for functors (@hhugo)
- Fix: () module only if not attrs (@hhugo)
- Fix: missing attrs for object (@hhugo)
- Fix: no short form of extension with attribs (@hhugo)
- Fix: normalization for Pexp_poly and Pexp_constraint (#190, @hhugo)
- Fix: some parenthesization context checks (#189, @hhugo)
- Fix: attributes on fun expressions (@jberdine)
- Fix: extensions with multiple module-level eval expressions (#185, @jberdine)
- Fix: functor & apply (#182, @hhugo)
- Fix: module rec with (@hhugo)
- Fix: more parens in pat_constraint (@hhugo)
- Improve: tuple & constraint (@hhugo)
- Improve: empty module (#178, @hhugo)
- Fix: extensible variant (#177, @hhugo)
- Fix: index operator (#176, @hhugo)
- Improve: empty module sig (@hhugo)
- Fix: add attributes to module signature (@hhugo)
- Add: support for objects and classes (#173, @hhugo)
- Improve: remove some redundant parens around tuple types (@jberdine)
- Fix: args in let bindings (@hhugo)
- Improve: let module%ext (@hhugo)
- Fix: infix op in alias (@hhugo)
- Fix: extensions pat (@hhugo)
- Fix: limit use of short syntax for extensions (@hhugo)
- Improve: allow break after Psig_include (@jberdine)
- Fix: { (a; b) with a; b } (@hhugo)
- Fix: with type [longident] (@hhugo)
- Fix: attributes on polymorphic variants (@hhugo)
- Fix: attribute in let bindings (@hhugo)
- Fix: private in extensible variant (@hhugo)
- Fix: gadt in extensible variant (@hhugo)
- Fix: missing parens in list pattern (@hhugo)
- Improve: format [new e] like an apply (@hhugo)
- Fix: parens for constraint (@hhugo)
- Fix: avoid emitting
>]
which is an unparsable keyword (#171, @hhugo) - Fix: misplaced comments on
module type of
(@jberdine)
See full changelog
-
Fix
$ jbuilder --dev
(#1104, fixes #1103, @rgrinberg) -
Fix dune exec when
--build-dir
is set to an absolute path (#1105, fixes #1101, @rgrinberg) -
Fix duplicate profile argument in suggested command when an external library is missing (#1109, #1106, @emillon)
-
-opaque
wasn't correctly being added to modules without an interface. (#1108, fix #1107, @rgrinberg) -
Fix validation of library
name
fields and make sure this validation also applies when thename
is derived from thepublic_name
. (#1110, fix #1102, @rgrinberg) -
Fix a bug causing the toplevel
env
stanza in the workspace file to be ignored when at least one context had(merlin)
(#1114, @diml)
On behalf of the dune team, I'm proud to announce the 1.1.0 release of dune. This release contains a few interesting features that I won't describe in this post, because I've already written a dedicated blog post about this release: http://rgrinberg.com/posts/dune-upcoming-1-1/
See full changelog
-
Fix lookup of command line specified files when
--root
is given. Previously, passing in--root
in conjunction with--workspace
or--config
would not work correctly (#997, @rgrinberg) -
Add support for customizing env nodes in workspace files. The
env
stanza is now allowed in toplevel position in the workspace file, or for individual contexts. This feature requires(dune lang 1.1)
(#1038, @rgrinberg) -
Add
enabled_if
field for aliases and tests. This field controls whether the test will be ran using a boolean expression language. (#819, @rgrinberg) -
Make
name
,names
fields optional when apublic_name
,public_names
field is provided. (#1041, fix #1000, @rgrinberg) -
Interpret
X
in--libdir X
as relative toPREFIX
whenX
is relative (#1072, fix #1070, @jeremiedimino) -
Add support for multi directory libraries by writing
(include_subdirs unqualified)
(#1034, @jeremiedimino) -
Add
(staged_pps ...)
to support staged ppx rewriters such as ones using the OCaml typer likeppx_import
(#1080, fix #193, @jeremiedimino) -
Use
-opaque
in thedev
profile. This option trades off binary quality for compilation speed when compiling .cmx files. (#1079, fix #1058, @rgrinberg) -
Fix placeholders in
dune subst
documentation (#1090, @emillon, thanks @trefis for the bug report) -
Add locations to errors when a missing binary in PATH comes from a dune file (#1096, fixes #1095, @rgrinberg)
See full changelog
- Fix parsing of
%{lib:name:file}
forms (#1022, fixes #1019, @diml)
See full changelog
- 4.07.0 compatibility (#238, @hcarty)
- Fix compatibility with latest tuareg-mode (#241, @Wilfred)
- Do not expand include directories (#242, @sliquister)
It is my pleasure to announce the 1.0.0 release of Dune!
Dune is a built system for OCaml and Reason projects. It aims at building things fast and providing a smooth user experience.
Dune 1.0.0 is now available on github and in opam.
This is a big milestone for the project as it is the first release using the new Dune name that the community helped to choose. Dune started about a year and a half ago as the more narrow scoped Jbuilder and as since then proven itself to be the right tool for the job.
A big part of the work for this release was preparing the project for long-term support. Dune is the kind of project that will pretty much continue to evolve forever: it needs to keep up with the OCaml compiler evolving, development workflows changing, new kinds of tools with specific needs, etc... While doing so, it also needs to offer stability so that projects released now will continue to build with future versions of Dune.
Meeting these two constraints is a challenge. However, we had to do this for the renaming: we changed many things in Dune using what we learned from the Jbuilder experience. Still, Dune is able to understand and build Jbuilder projects. The mechanism used to support both Jbuilder and Dune projects is fully generic and will be the basis for future evolution.
You can find the full list of changes and bug fixes since Jbuilder 1.0+beta20 on the github release page. Following is an overview of some the new features:
-
General cleanup of the syntax: less parentheses, better behaved variables
-
Introduction of a
dune.configurator
library to help projects with C stubs detect and query the environment -
General improvement of the default behavior: more parallelism by default, development mode by default
-
Better support for changing the defaults: it is now possible to set the default flags or change what
dune build
does by default -
Support for setting the build directory
-
Better support for expectation tests on Windows
See full changelog
- Store config files in
~/.config/dune/
instead of~/.dune
to match whatdune
is doing (#27, @samoht) - Support opam 1.2.2 when linting (#29, @samoht)
- Use
-p <pkg>
instead of-n <pkg>
to follow dune convention (#30, #42, @samoht) - Default to
nano
if the EDITOR environment variable is not set. (#32, @avsm) - Fix location of documentation when
odoc
creates an_html
subdirectory (#34, @samoht) - Remove the browse command (#36, @samoht)
- Re-add the publish delegatation mechanism to allow non-GitHub users to
publish packages (see
dune-release help delegate
) (#37, @samoht) - Fix dropping of
v
at the beginning of version numbers indune-release opam
(#40, @let-def) - Add basic token validation (#40, @let-def)
Thanks to the people who contributed to this release: ELLIOTTCABLE, Louis RochΓ©, Rudi Grinberg, Yotam Barnoy, Leo White, Daniel Below, Andreas Hauptmann, Christophe Troestler, Bobby Priambodo, Milo Davis.
See full changelog
-
backend
- new "polarity search" feature: provides a Hoogle-like type-based search for libraries that are in merlin's scope. See https://github.com/ocaml/merlin/blob/master/doc/features.md#polarity-search
- new "open refactoring" feature: helps cleaning the code in the scope of an open statement. See https://github.com/ocaml/merlin/blob/master/doc/features.md#open-refactoring
- spell-checking: a simple spell-checker has been added to suggest corrections when nothing can be directly completed.
- type-driven record completion: merlin will now make use of type information from the context for narrowing and refining completion candidates.
- support for
#require
directive in a source file, and will treat it as a package use - Add support for OCaml 4.07
- locate: various minor bugfixes, as well as the following general
improvements:
- improved context detection
- better tracking of namespaces
- fixed support for local bindings
- fixed support of disambiguated record fields and variant constructors
- improved support for functors: merlin will now jump through functor application to the functor definitions and in some cases go back to the argument that was given (if it is simply reexported).
- backport fixes of OCaml 4.06.1 to the 4.06 backend
- various minor bugfixes
-
editor modes
- emacs
- proper handling of multibyte strings (by @Chris00)
- bind "q" to close type buffer (by @MiloDavis)
- make goto-point encoding independent
- add reason-mode to the guessed favorite mode list (by @Khady)
- sped up some tight loops (by @rgrinberg)
- add support for x-ref backend (by @rgrinberg)
- vim
- fix support for Neomake (by @bobbypriambodo and @statianzo)
- fix encoding issues in filepaths (by @Thelyria)
- fix handling of enclosing-type cache (by @ELLIOTTCABLE)
- add
to prevent flashing when highlighting an enclosing (by @bluddy)
- emacs
See full changelog
- Remove opam lint warnings for 1.2 files (#2, @samoht)
- Add a
--keep-v
option to not dropv
at the beginning of version numbers (#6, @samoht) - Pass
-p <package>
to jbuilder (#8, @diml) - Fix a bug in
Distrib.write_subst
which could cause an infinite loop (#10, @diml) - Add a
--dry-run
option to avoid side-effects for all commands (@samoht) - Rewrite issues numbers in changelog to point to the right repository (#13, @samoht)
- Stop force pushing tags to
origin
. Instead, just force push the release tag directly to thedev-repo
repository (@samoht) - Fix publishing distribution when the the tag to publish is not the repository HEAD (#4, @samoht)
- Do not depend on
opam-publish
anymore. Use configuration files stored in~/.dune
to parametrise the publishing workflow. (@samoht)
See full changelog
- Fix handling of
--impl/--intf
. Before the driver would crash if the file extension was neither.ml
nor.mli
See full changelog
Oops, we went looking but didn't find the changelog for this release π
See full changelog
Features
- Add: option to align all infix ops (#150, @hhugo)
- Add: option to attempt to indent the same as ocp-indent (#162)
- Add: option for no discretionary parens for tuples (#157, @hhugo)
- Add: alternative format for if-then-else construct (#155, @hhugo)
- Add: option to customize position of doc comments (#153, @hhugo)
Bug fixes
- Fix: dropped item attributes on module expressions
- Fix: toplevel let%ext (#167, @hhugo)
- Fix: parens around type alias & empty object type (#166, @hhugo)
- Fix: missing comments for [let open] (#165, @hhugo)
- Fix: missing comments in ppat_record (#164, @hhugo)
- Fix: check_typ wrt constraint on module type (#163, @hhugo)
- Fix: let binding with constraint (#160, @hhugo)
- Fix: handle generative functor type (#152, @hhugo)
Formatting improvements
- Improve: remove redundant parens around application operators
- Improve: parenthesize and break infix constructors the same as infix ops
- Improve: consider prefix ops and
not
to be trivial if their arg is - Improve: align arrow type args and do not wrap them (#161)
- Improve: formatting for multiple attributes (#154, @hhugo)
- Improve: keep the original string escaping (#159, @hhugo)
- Improve: discretionary parens in patterns (#151, @hhugo)
- Improve: breaking of infix op arguments
- Improve: consider some extensions to be "simple"
- Improve: punning (#158, @hhugo)
- Improve: force break of let module/open/exception/pats (#149, @hhugo)
Build, packaging, and testing
- Add support for bisect (#169, @hhugo)
- Exclude failing tests from
make -C test
See full changelog
- Update the AST to 4.06 (#8, @xclerc)
- Deprecate old references to type_conv in argument and rewriter names and add new ones mentioning deriving instead (#7, #9 @xclerc)
- Fix compatibility with
-safe-string
(#10, @hhugo) - Restore tests (#11, @xclerc)
- Allow to set the suffix of corrected files (#15, @diml)
- Restore compatibility with OCaml 4.04.x (#16, @xclerc)
See full changelog
- Add support for OCaml 4.07
See full changelog
Features
- Add: support for
new%js
(#136, @hhugo) - Add: support for Ptyp_object (#104, @smondet)
- Use original filename when given in error messages. (#96, @mbarbin)
Bug fixes
- Fix: allow extensions in types (#143, @hhugo)
- Fix: parens on symbol type constructor
- Fix: parenthesization of '!=' partial application as a prefix op (#126, @hhugo)
- Fix: parens around Ppat_constraint under Pexp_match or Pexp_try (#124, @hhugo)
- Fix: parenthesization of tuple args of variant type declarations (#122, @hhugo)
- Fix: missing parens around list inside Constr pattern (#123, @hhugo)
- Fix: incorrect breaking of long strings (#130, @hhugo)
- Fix: missing parens inside array literal (#129, @hhugo)
- Fix: attributes on arguments of function (#121, @hhugo)
- Fix: floating docstrings within a type declaration group
- Fix: missing parens in sugared Array.set
- Fix: missing attributes on patterns
- Fix: is_prefix_id for != (#112, @hhugo)
- Fix: missing parens around module value types in signatures (#108, @hcarty)
- Fix: floating docstrings within a value binding group
- Fix: missing attributes on extension points (#102, @hcarty)
- Fix: extensible variants with aliases (#100, @hcarty)
- Fix: several issues with extension sequence expressions
- Fix: generative functors
- Fix: preserve files with an empty ast (instead of failing) (#92, @mbarbin)
- Fix: missing extension on Pexp_sequence
- Fix: missing docstrings and attributes on types
- Fix: missing parens around sugared Array and String operations
- Fix: missing parens around Pexp_newtype
- Fix: missing parens around Ppat_constraint, Ppat_or, and Ppat_unpack
- Fix: dropped space when string wrapped between spaces
- Fix: repeated ppx extension on mutual/recursive let-bindings (#83, @mbarbin)
- Fix: dropped comments on Pmty_typeof
- Fix: missing parens around Ppat_unpack under Ppat_constraint
Formatting improvements
- Improve: two open lines following multiline definition only with --sparse (#144)
- Improve: indent rhs of ref update (#139, @hhugo)
- Improve: no parens around precedence 0 infix ops (refines #115) (#141, @hhugo)
- Improve: support
(type a b c)
(#142, hhugo) - Improve: no parens for
{ !e with a }
(#138, @hhugo) - Improve: no parens for constr inside list pattern. (#140, @hhugo)
- Improve: generative functor applications (#137, @hhugo)
- Improve: omit parens around lists in local opens (#134, @hhugo)
- Prepare for ocaml#1705 (#131, @hhugo)
- Improve: comment wrapping for dangling close
- Improve: if-then-else conditions that break
- Improve: suppress spurious terminal line break in wrapped strings
- Improve: parens for nested constructors in pattern (#125, @hhugo)
- Improve: remove duplicate parens around Ptyp_package
- Improve: indentation after comment within record type declaration
- Improve: add discretionary parens on nested binops with different precedence
- Improve: empty module as functor argument (#113, @hhugo)
- Improve: indentation of multiple attributes
- Improve: attributes on short structure items
- Improve: attributes on type declarations
- Improve: tuple attribute args
- Improve: parenthesization of Ppat_or
- Improve: determination of file kind based on provided name
- Improve: extension on the let at toplevel: e.g. let%expect_test _ (#94, @mbarbin)
- Improve: constraints in punned record fields (#93, @mbarbin)
- Improve: nullary attributes
- Improve: Ppat_tuple under Ppat_array with unnecessary but clearer parens
- Improve: breaking of arguments following wrapped strings
Build, packaging, and testing
- Simplify using
(universe)
support in jbuilder 1.0+beta20 - Add some regtests (#135, @hhugo)
- Upgrade to Base v0.11.0 (#103, @jeremiedimino)
- Add Travis CI script
- Fix: build [make reason] (#97, @mbarbin)
- Simplify Makefile due to jbuilder 1.0+beta18
Initial release.
Import some code from topkg.
- Use of
Astring
,Logs
,Fpath
andBos
instead of custom re-implementations; - Remove the IPC layer which is used between
topkg
andtopkg-care
; - Bundle everything as a single binary;
- Assume that the package is built using dune;
- Do not read/need a
pkg/pkg.ml
file.
See full changelog
See full changelog
- Make sure to import command line arguments registered with ocaml-migrate-parsetree (#5, @diml)
- Fix an issue where cookies set from the command line sometimes disappeared (#6, @diml)
See full changelog
- Fix an issue where cookies set from the command line sometimes disappeared
See full changelog
Oops, we went looking but didn't find the changelog for this release π
See full changelog
- Add a
--null
argument to suppress the output. This is used to write linters - Use the new generic ppx driver support of jbuilder
See full changelog
- Add support for company-mode based completion in utop.el (#233)
See full changelog
Features
- Wrap lines in string literals, comments and docstrings
- Improve char escaping to ascii / uniform hexa / utf8 (#73)
- Add support for
Pexp_new
expressions (#76, @smondet) - Add support for
Pexp_send _
expressions (#72, @smondet) - Add options to format chars and break strings (#70, @smondet)
- Formatting of %ext on if/while/for/match/try/; (#63, @hcarty)
- Disable formatting with [@@@ocamlformat.disable] (#66, @hcarty)
Formatting improvements
- Improve sequences under if-then-else with unnecessary but safer parens
- Improve optional arguments with type constraints
- Improve let-bound functions with type constraints
- Improve newtype constraints in let-bindings
- Improve placement of exception docstrings
Bug fixes
- Fix missing break hint before comment on sugared
[]
- Fix formatting of [%ext e1]; e2 (#75, @hcarty)
- Fix missing parens around let exception, let module, for, while under apply
- Fix missing parens under alias patterns
- Fix placement of attributes on extension constructors
- Fix missing parens around unpack patterns
- Fix let-bindings with pattern constraints
- Fix mutually recursive signatures
See full changelog
Features
- Check fatal warnings not only in inplace mode
Documentation
- Improve doc of --no-warn-error
- Mention object language not implemented
- Update documentation of --output
Bug fixes
- Colon instead of arrow before type for GADT constructors with no arguments (@mbouaziz)
- Fix some dropped comments attached to idents
- Fix missing parens around Ppat_alias under Ppat_variant
- Fix module type constraints on functors
- Fix broken record field punning
- Fix broken docstring attachment with multiple docstrings
- Fix missing parens around application operators
- Fix missing parens around Ppat_or under Ppat_variant
- Fix missing/excess parens around Pexp_open under Pexp_apply/Pexp_construct
- Fix duplicated attributes on Pexp_function
- Fix missing parens around Ptyp_package under Pstr_type
- Add '#' to the list of infix operator prefix (@octachron)
- Do not add space between
[
and<
or>
in variant types - Add a break hint before "constraint" in a type def (@hcarty)
Formatting improvements
- Remove unnecessary parens around Pexp_tuple under Pexp_open
- Improve single-case matches
- Improve constructor arguments
- Remove unnecessary parens around match, etc. with attributes
- Fix missing parens around constraint arg of variant type
- Fix missing parens on left arg of infix list constructor
- Fix missing parens around arrow type args of variant constructors
- Fix missing parens around type of constraints on module exps
Build and packaging
- Separate Format patch into ocamlformat_support package
- Fix test script
- Unbreak build of ocamlformat_reason.ml (@mroch)
- Improve opam installation (JacquesPa)
- Install emacs support via opam package
See full changelog
Features
- Output to stdout if output file omitted
Bug fixes
- Fix Ppat_any value bindings
- Fix missing parens around variant patterns in fun arg
- Fix position of comments attached to end of sugared lists
- Fix missing comments on module names
- Fix package type constraints
- Fix first-class module alias patterns
- Fix first-class module patterns in let bindings
- Fix missing parens around Ptyp_package under Psig_type
- Fix missing "as" in Ptyp_alias formatting (@hcarty)
- Fix let bindings with constraints under 4.06
Formatting improvements
- Improve line breaking of or-patterns
- Improve placement of comments within pattern matches
- Improve clarity of aliased or-patterns with parens
- Improve matches on aliased or-patterns
- Improve infix applications in limbs of if-then-else
- Improve final function arguments following other complex arguments
- Improve consistency of paren spacing after Pexp_fun
- Improve sugar for Pexp_let under Pexp_extension
- Improve sugar for newtype
- Improve first-class module expressions
- Improve indentation when comments are sprinkled through types
- Do not add open line after last binding in a structure
Build and packaging
- Simplify build and packaging, and adopt some common practices
- Add Warnings.Errors argument for < 4.06 compatibility (@hcarty)
- Update base to v0.10.0 (@hcarty)
See full changelog
- Support for standalone documentation pages (
.mld
files) (#61). - Display
[@@deprecated]
attributes as the@deprecated
tag (#57). - Allow each component of OCaml paths to be disambiguated using the
kind-identifer
syntax (part of #61). - Support OCaml 4.06.
- Fix spurious leading blank lines in verbatim text (ocaml-doc/octavius#6).
See full changelog
- Fix magic numbers for 4.06 (issue #749, reported by @Fourchaux).
Add support for 4.06. Use Leo White's short-path for 4.05. Various bug fixes (in locate, in emacs serialization).
See full changelog
Oops, we went looking but didn't find the changelog for this release π
See full changelog
- 4.06.0 compatibility (#221)
See full changelog
Contributed by @hhugo:
- update Magic Number for 4.06
- fix some compilation warnings
See full changelog
- Fix generation of
Migrate_parsetree
module.
See full changelog
- Resynchronize with trunk.
- Add a migrating version of Parse module.
The major change Windows support is contributed by David Allsopp.
Other changes are a bunch of fixes:
- compilation on FreeBSD contributed by Malcolm Matalka
- improvement to emacs mode contributed by Olivier Andrieu, Christophe Troestler and Steve Purcell
- improvement to vim mode by Fabian Hemmer and Gregory Nisbet
- fixes to ppx invocation by Keigo Imai
- fixes to Merlin s-expr dialect to bring UTF-8 compatibility with Emacs (WIP)
See full changelog
Oops, we went looking but didn't find the changelog for this release π
See full changelog
- Resynchronize with trunk. Contributed by Xavier Clerc, @xclerc.
See full changelog
- Add a shallow identity mapper (suggested by Anton Bachin, @aantron).
See full changelog
- fixes related to ppx extensions
- fixed regression on indentation within record types
Bug fix after 3.0.1:
- CMT magic number for 4.05 was wrong
- handle merlin.focus, merlin.ignore, merlin.loc/merlin.relaxed-loc and merlin.syntax-error
- missing include preventing build on some platforms contributed by Bernhard Schommer
See full changelog
Oops, we went looking but didn't find the changelog for this release π
See full changelog
- Synchronize with 4.06 AST with trunk.
- Accept --cookie arguments also when run in --as-ppx mode.
Bug fix release after 3.0.0 major release.
- portability fixes by David Allsop in configure script and vim mode (tough Windows support is not ready yet)
- preliminary support for findlib toolchains with FINDLIB_TOOLCHAIN .merlin directive
- make ocamlmerlin.c frontend more portable
- various fixes to the frontend
See full changelog
Oops, we went looking but didn't find the changelog for this release π
The major change is a new protocol that moves process management inside Merlin codebase, saving a lot of pain in Emacs and Vim. There are not much new user facing features.
Windows support is not yet available.
In editor configuration is now done with merlin-flags, merlin-extensions and merlin-use in Emacs and :MerlinFlags, :MerlinExtensions and :MerlinPackages in Vim. In previous versions, enabled extensions, flags and packages were retained while now only the last command is remembered.
"M-x merlin-use a", "M-x merlin-use b" should be replaced by "M-x merlin-use a,b". ":MerlinUse a", ":MerlinUse b" should be replaced by ":MerlinUse a b".
The old protocol is still supported, so existing editor modes should not be affected (tested with Atom, Visual Studio and Sublime-text).
Other main changes:
- Support for OCaml 4.05 was added
- Merlin uses a new implementation of short-path by Leo White which addresses performance problems
- Merlin now works with the upstream version of Menhir
- numerous cleanup and refactoring to decrease the amount of changes to upstream typechecker
- emacs-imenu feature was contributed by tddsg. It is similar the "outline" feature in vim for navigating in a buffer.
Thanks to the many contributors (Jochen Bartl, tddsg, Ximin Luo, Jason Staten, Leo White, Leandro Ostera, Jacob Bass, Xavier GuΓ©rin, Yotam Barnoy, Jacques Pascal Deplaix, David Allsopp, ...).
See full changelog
Oops, we went looking but didn't find the changelog for this release π
See full changelog
- Support
.opam files - Add Travis CI tests
- Support the simultaneous publication of multiple packages from the same repo