OCaml Changelog

RSS

Read the latest releases and updates from the OCaml ecosystem.

Dune 1.11.3

See full changelog
  • Fix a ppx hash collision in watch mode (#2546, fixes #2520, @diml)

Dune 1.11.2

See full changelog
  • Remove the optimisation of passing -nodynlink for executables when not necessary. It seems to be breaking things (see #2527, @diml)

  • Fix invalid library names in dune-package files. Only public names should exist in such files. (#2558, fix #2425, @rgrinberg)

Utop 2.4.1

See full changelog

General

  • Remove camlp4 remnants (@XVilka, #290) (@kandu, #293)
  • Allow to statically link utop (@diml, #285) (@hongchangwu, #286)

Misc

  • Remove broken elisp (m-plamann, #292)
  • Add OCaml 4.08 build in Travis CI (XVilka, #291)

Dune 1.11.1

See full changelog
  • Fix config file dependencies of ocamlformat (#2471, fixes #2464, @nojb)

  • Cleanup stale directories when using (source_tree ...) in the presence of directories with only sub-directories and no files (#2514, fixes #2499, @diml)

See full changelog
  • Improve: generalize API of Config_option (#952, @gpetiot)
  • Improve: new 'before' value for option 'sequence-style' (#947, @gpetiot)
  • Project: create issue templates (#950, @gpetiot)
  • Improve: tidying up Conf.ml (#951, @gpetiot)
  • Improve: parse code in comments (#934, @gpetiot)
  • Fix comments' placement (do not look at loc_stack) (#923, @gpetiot)
  • Doc: setting flags in .ocamlformat (#944, @gpetiot)
  • Doc: enable-outside-detected-project necessary for global conf file (#948, @gpetiot)
  • Fix hashbang handling (#946, @hhugo)
  • Improve: support Shell-style regular expressions in .ocamlformat-ignore and .ocamlformat-enable files (#937, @gpetiot)
  • Improve: force break after an infix op only if followed by another one (#935, @gpetiot)
  • Fix break-separators=after-and-docked for lists and arrays (#931, @gpetiot)
  • Improve: deprecate option break-string-literals and change its default value (#932, @gpetiot)
  • Improve: break with labeled arrow type (#933, @gpetiot)
  • Improve: disambiguate non-breaking matching structures (#857, @gpetiot)
  • Improve: warning 50 handled like an internal error (#930, @gpetiot)
  • Fix break-separators=after-and-docked for record patterns (#929, @gpetiot)
  • Fix closing parenthesis indentation when on separate line (#928, @gpetiot)
  • Improve: split the Conf.ml file (#920, @gpetiot)
  • Fix position of comments after anonymous functions (#919, @gpetiot)
  • Fix: comments around disabled block (#918, @hhugo)
  • Fix monadic bindings (new 4.08 syntax) (#911, @gpetiot)
  • Fix attribute when break-infix-before-func=false (#916, @gpetiot)
  • Improve: update ocamlformat_reason opam file to 2.0 format (#913, @avsm)
  • Fix attributes of modules (#910, @gpetiot)
  • Fix docstrings of exceptions (#909, @gpetiot)
  • Fix attribute location in Normalization (#908, @gpetiot)
  • Improve: add the 'ocamlformat-file-kind' argument to the emacs hook (#905, @gpetiot)
  • Improve: dunify testsuite (#881, @trRefis)
  • Improve: add trailing semicolon inside record when break-separators=after-and-docked (#899, @gpetiot)
  • Fix compilation with 4.06 and 4.07 (#898, @gpetiot)
  • Improve: add a new way to indicate multiline delimiters (#876, @trefis)
  • Fix inconsistency of break-separators=after-and-docked for record expressions (#856, @gpetiot)

Ppxlib 0.8.1

See full changelog
  • Report errors according to the value of OCAML_ERROR_STYLE and OCAML_COLOR in the standalone driver (#83, @NathanReb)

Dune 1.11.0

On behalf of the dune team, I'm pleased to announce the release of dune 1.11.0. This release contains quite a few new interesting features such as custom dialects: anyone can define their own OCaml based syntax. Is anyone up to revive the revised syntax? :slight_smile: I'd also like to highlight the the re-launch of variants feature in a sounder form, a new build-info library that queries build information, and that dune init can initialize an entire project. But of course, by far the most important thing is that the compiler's colours are now back :champagne:

See full changelog
  • Don't select all local implementations in dune utop. Instead, let the default implementation selection do its job. (#2327, fixes #2323, @TheLortex, review by @rgrinberg)

  • Check that selected implementations (either by variants or default implementations) are indeed implementations. (#2328, @TheLortex, review by @rgrinberg)

  • Don't reserve the Ppx toplevel module name for ppx rewriters (#2242, @jeremiedimino)

  • Redesign of the library variant feature according to the #2134 proposal. The set of variants is now computed when the virtual library is installed. Introducing a new external_variant stanza. (#2169, fixes #2134, @TheLortex, review by @jeremiedimino)

  • Add proper line directives when copying .cc and .cxx sources (#2275, @rgrinberg)

  • Fix error message for missing C++ sources. The .cc extension was always ignored before. (#2275, @rgrinberg)

  • Add $ dune init project subcommand to create project boilerplate according to a common template. (#2185, fixes #159, @shonfeder)

  • Allow to run inline tests in javascript with nodejs (#2266, @hhugo)

  • Build ppx.exe as compiling host binary. (#2286, fixes #2252, @toots, review by @rgrinberg and @jeremiedimino)

  • Add a cinaps extension and stanza for better integration with the cinaps tool tool (#2269, @jeremiedimino)

  • Allow to embed build info in executables such as version and list and version of statically linked libraries (#2224, @jeremiedimino)

  • Set version in META and dune-package files to the one read from the vcs when no other version is available (#2224, @jeremiedimino)

  • Add a variable %{target} to be used in situations where the context requires at most one word, so %{targets} can be confusing; stdout redirections and "-o" arguments of various tools are the main use case; also, introduce a separate field target that must be used instead of targets in those situations. (#2341, @aalekseyev)

  • Fix dependency graph of wrapped_compat modules. Previously, the dependency on the user written entry module was omitted. (#2305, @rgrinberg)

  • Allow to promote executables built with an executable stanza (#2379, @jeremiedimino)

  • When instantiating an implementation with a variant, make sure it matches virtual library's list of known implementations. (#2361, fixes #2322, @TheLortex, review by @rgrinberg)

  • Add a variable %{ignoring_promoted_rules} that is true when --ingore-promoted-rules is passed on the command line and false otherwise (#2382, @jeremiedimino)

  • Fix a bug in future_syntax where the characters @ and & were not distinguished in the names of binding operators (let@ was the same as let&) (#2376, @aalekseyev, @jeremiedimino)

  • Workspaces with non unique project names are now supported. (#2377, fix #2325, @rgrinberg)

  • Improve opam generation to include the dune dependencies with the minimum constraint set based on the dune language version specified in the dune-project file. (2383, @avsm)

  • The order of fields in the generated opam file now follows order preferred in opam-lib. (@avsm, #2380)

  • Fix coloring of error messages from the compiler (@jeremiedimino, #2384)

  • Add warning 66 to default set of warnings starting for dune projects with language verison >= 1.11 (@rgrinberg, @jeremiedimino, fixes #2299)

  • Add (dialect ...) stanza (@nojb, #2404)

  • Add a --context argument to dune install/uninstall (@jeremiedimino, #2412)

  • Do not warn about merlin files pre 1.9. This warning can only be disabled in 1.9 (#2421, fixes #2399, @emillon)

  • Add a new inline_tests field in the env stanza to control inline_tests framework with a variable (#2313, @mlasson, original idea by @jeremiedimino, review by @rgrinberg).

  • New binary kind js for executables in order to explicitly enable Javascript targets, and a switch (explicit_js_mode) to require this mode in order to declare JS targets corresponding to executables. (#1941, @nojb)

See full changelog
  • backend
    • ** globbing in .merlin won't look into hidden directories (starting with a '.') (by Daniel Bünzli, #990)
    • fallback to "/dev/null" configuration for findlib
    • better 4.08 support:
      • support for letop (let+, and+, ...) (#986)
      • fix parsing recovery for 4.08 constructions (#987)
      • catch an exception raised by 4.08 Printtyp trying to rename a persistent identifier (#991)
    • locate: treat local locations differently from external locations (coming from a cmi), this fixes "jump to definition" on mutually recursive bindings (#984)
    • when completing an infix operator in a sub-module, wrap with () (#992)
    • disable arity checks on externals (for Bucklescript compatibility)
    • remove parser preprocessing (simplify compilation for OCaml < 4.08) (#997)
  • editor modes
    • emacs
      • fix position computation in presence of tabs or multi-byte characters (#981)
      • log arguments in "merlin-debug-last-commands" (#981)
    • vim
      • install reason.vim file (by Hezekiah M. Carty, #974)
See full changelog

Fixed

  • Fix a bug where file presence lint check wouldn't be run for CHANGES, LICENSE and README (#161, @NathanReb)

Changed

  • Add headers to better distinguish various dune-release logs such as user prompts and informational logs

We are pleased to announce the minor release of opam 2.0.5.

This new version contains build update and small fixes:

Note: To homogenise macOS name on system detection, we decided to keep macos, and convert darwin to macos in opam. For the moment, to not break jobs & CIs, we keep uploading darwin & macos binaries, but from the 2.1.0 release, only macos ones will be kept.


Installation instructions (unchanged):

  1. From binaries: run

    sh <(curl -sL https://raw.githubusercontent.com/ocaml/opam/master/shell/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 or to update you sandbox script.

  2. 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 or to update you sandbox script)

  3. From source, manually: see the instructions in the README.

We hope you enjoy this new minor 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
  • Initial support for 4.09, tested with 4.09+beta1 (#76, @hhugo)
  • When encoding errors into the AST, duplicate the error message for "ocaml.error" nodes for OCaml versions < 4.08 (#75, @xclerc)
See full changelog
  • Improve: align cases horizontally (#883, @gpetiot)
  • Improve: option exp-grouping (#828, @gpetiot)
  • Improve: synchronize Format with upstream stdlib (#885, @gpetiot)
  • Improve: break-string-literals=newlines-and-wrap (#896, @gpetiot)
  • Improve: specify break hint in fits_breaks (#894, @gpetiot)
  • Improve: option break-before-in (#892, @gpetiot)
  • Fix break-string-literals=newlines (#887, @gpetiot)
  • Improve: Implement break-fun-sig without Location.is_single_line (#886, @Julow)
  • Format gen_version.ml (#893, @hhugo)
  • Improve: switch to ast 4.08 (#831, @hhugo)
  • Fix formatting of arguments when break-fun-decl=fit-or-vertical (#884, @gpetiot)
  • Test: extend max_indent test (#878, @trefis)
  • Test: break_cases_normal_indent.ml is a symlink on break_cases_fit.ml (#879, @gpetiot)
  • Improve unicode text length computation (#816, @gpetiot)
  • Add an option to control the indentation of nested matches (#870, @trefis)
  • Fix: properly interpret indicate-multiline-delimiters for if-then-elses (#874, @trefis)
  • Enable warning 9 (#875, @hhugo)
  • Fix unstable comment in let%ext (#873, @gpetiot)
  • Improve: option max-indent (#841, @gpetiot)
  • Improve: option nested-match=align (#827, @gpetiot)
  • Fix dropped attributes in with_constraints (#846, @gpetiot)
  • Fix dropped comments in list patterns and module types (#866, @gpetiot)
  • Fix comment dropped in object (#849, @gpetiot)
  • Fix inconsistency of break-separators for wildcards in match cases (#855, @gpetiot)
  • Improve: new options to support 'with' and 'strict_with' (ocp-indent) (#853, @gpetiot)
  • Improve: .ocamlformat-enable files listing files to format when ocamlformat is disabled (#854, @gpetiot)
  • Check that all locations have been considered during formatting (#864, @hhugo)
  • clean Hashtbl.Poly (#862, @hhugo)
  • Fix: test.sh (#858, @hhugo)
  • cleanup Cmts.ml (#861, @hhugo)
  • Clean: Cleanup usage of Poly (#860, @hhugo)
  • Fix: rename sexp_list into list (#859, @hhugo)
  • Fix vim instructions (#852, @naartjie)
  • Improve: options extension-indent and stritem-extension-indent (#840, @gpetiot)
  • Fix comment dropped in field alias (#848, @gpetiot)
  • Fix pro position for with_constraints (#847, @gpetiot)
  • Improve: finer space-around-exp options (#837, @gpetiot)
  • Improve: preserve blank lines in conventional and sparse profiles (#838, @gpetiot)
  • Improve: don't fit tag-only comments after val declarations (#836, @Julow)
  • Improve speed with ofday_unit_tests_v1.ml (#833, @hhugo)
  • Fix exception when calling String.sub (#832, @gpetiot)
  • Improve: implement doc-comments and doc-comments-tag-only for every items (#746, @Julow)
  • Improve: Add field-space=tight-decl (#829, @Julow)
  • Improve: make Sugar.list_exp and Sugar.list_pat tail-recursive (#823, @gpetiot)
  • Improve: options 'let-binding-indent', 'type-decl-indent' and 'indent-after-in' (#822, @gpetiot)
  • Fix: performance issue with deep asts (#826, @hhugo)
  • Improve: preserve blank lines in sequences (#814, @gpetiot)
  • Improve: tidying Fmt_ast.ml (#821, @gpetiot)
  • Improve: space before type constraint in record (#819, @gpetiot)
  • Improve: break-cases=fit-or-vertical (#820, @gpetiot)
  • Improve: remove break before ending paren for anonymous functions (#818, @gpetiot)
  • Improve: preserve the position of type annotation in bindings (#815, @gpetiot)
  • Improve: preserve record type annot (#812, @gpetiot)
  • Fix break before ending paren (#801, @gpetiot)
  • Improve: better consistency between structures and signatures (#803, @gpetiot)
  • Fix let module sparse (sparse mode only for module applications) (#809, @gpetiot)
  • Improve: change formatting of newtypes (#811, @gpetiot)
  • Improve: break-cases-all shouldn't break nested patterns (#810, @gpetiot)
  • Fix: sugarized extensions (#805, @gpetiot)
  • Improve: tidying Fmt_ast (#808, @gpetiot)
  • Fix cmt in empty structure (#804, @gpetiot)
  • Remove dead link to preset profiles (#806, @andschwa)
  • Improve: break with type constraints (#797, @gpetiot)
  • Fix colon break module type functor (#802, @gpetiot)
  • Improve: K&R style for if-then-else (#787, @gpetiot)
  • Improve: new option break-fun-sig (#785, @gpetiot)
  • Improve: indentation consistency of '<-' and := (#780, @gpetiot)
  • Fix: functor application and break-struct wrap incorrectly (#786, @gpetiot)
  • Break after anonymous function arrow after infix op (#781, @gpetiot)
  • Fix: type extension (#782, @gpetiot)
  • Improve: Fmt.noop (#784, @gpetiot)
  • Fix extension of value binding (#779, @chrismamo1)
  • Improve: less sensitivity to concrete syntax (#767, @gpetiot)
  • Fix missing space before attribute on includes (#775, @Julow)
  • Improve: new option let-module (#768, @gpetiot)
  • Improve: --disable-outside-detected-project is set by default (#761, @gpetiot)
  • Fix weird parens break (#751, @gpetiot)
  • Fix: if $XDG_CONFIG_HOME is either not set or empty, use $HOME/.config (#758, @gpetiot)
  • Fix: --use-file/--impl/--intf should override file extension (#774, @gpetiot)
  • Improve: less breaks for break-cases=all but correctly breaks or-patterns (#762, @gpetiot)
  • Remove unecessary break on module pack constraints with with-constraints (#739, @Julow)
  • Fix inconsistent break before module signature (#755, @gpetiot)
  • Fix indentation of functor argument (#773, @gpetiot)
  • Tidying fmt ast (#748, @gpetiot)
  • Fix nested parens with no break infix before func (#760, @gpetiot)
  • Provide an mli for Compat (#772) (hhugo) -Fix non-wrapping asterisk prefixed cmts (#759, @gpetiot)
  • Support for OCaml 4.08 (#763, @hhugo)
  • Fix module type functor (#716, @gpetiot)
  • Small cleanup (#764, @hhugo)
  • Fix: update ocamlformat-help.txt (follow up on #752) (#756, @gpetiot)
  • Fix module pack and functor (#735, @Julow)
  • Fix grammar: it's -> its (@anmonteiro)
  • Improve: support --name with --inplace (#740, @jberdine)
  • Fix: dropped comments for pexp_record (#743, @hhugo)
  • Improve: comments arround attributes, fix #726 (#742, @hhugo)
  • Update README for new profiles (#738, @jberdine)
  • Remove deprecated 'default' profile (#736, @jberdine)
  • Fix extra parens around ext match (#733, @gpetiot)
  • Improve: factorize with compose_module (#729, @gpetiot)
  • Test: exclude gen_version.ml from test (#732, @jberdine)
  • Improve: make gen_version an ocaml script (#664, @hhugo)

Odoc 1.4.1

See full changelog

Bugs fixed

  • Messy formatting in large definitions due to lack of <span>s (#360, Thomas Refis).
  • Missing table of contents on .mld pages (#361, Rizo Isrof).
  • Missing space before polymorphic class names (#339, Kevin Ji).
  • Module type definitions printed with : instead of = (#344, Geoff Reedy).
  • Conjunctive types printed with * instead of & (#353, Florian Angeletti).
  • Type extensions (+=) printed without CSS classes found in other items (#348, reported Stéphane Lavergne).
  • High memory usage on large codebases (#361, Thomas Refis).
  • Build: double underscores in internal filenames (#357, Thomas Refis).
  • Development: test suite assumed that html5-tidy supports --mute (#345, Geoff Reedy).
  • Internal: refactored AST (#351, #364, Jules Aguillon).

Mdx 1.4.0

See full changelog
  • Add --force-output option to force generation of diff file (#118 @clecat)
  • Support OCaml 4.08.0 (#121 @xclerc)
  • README and documentation fixes (#122 #118 @andreypopp @clecat @samoht)
  • Use latest ocaml-migrate-parsetree interfaces (@avsm)
See full changelog
  • Fix a bug in documentation publication where under certain circumstances the doc would be published in a _html folder instead of being published at the root of gh-pages (#157, @NathanReb)

Dune 1.10.0

On behalf of the dune team, I'm pleased to announce the 1.10.0 release of dune. This release is packed with bug fixes, but it also introduces a few interesting features. I'll highlight one important feature that we've introduced and plan to improve in future versions:

Dune allows you to specify package metadata in the dune project file and generate an appropriate opam file. This is advantageous to writing opam files manually as dune will correctly fill in some boilerplate such as the build command:

Here's a snippet from dune's own project file as a demonstration:

(generate_opam_files true) ;; necessary to enbale the generation

(license MIT)
(maintainers "Jane Street Group, LLC <opensource@janestreet.com>")
(authors "Jane Street Group, LLC <opensource@janestreet.com>")
(source (github ocaml/dune))
(documentation "https://dune.readthedocs.io/")

(package
 (name dune)
 (depends
  (ocaml (>= 4.02))
  base-unix
  base-threads)
 (conflicts
  (jbuilder (<> "transition"))
  (odoc (< 1.3.0))
  (dune-release (< 1.3.0)))
 (synopsis "Fast, portable and opinionated build system")
 (description "<redacted>"))

Generating the opam file is done via $ dune build @check (the @install, and @all aliases will also work).

Later, we plan to have dune do some sanity checks on the depends field. In the more distant future, we might even skip the generation step altogether by having opam invoke dune to get the generated opam file directly.

See full changelog
  • Restricted the set of variables available for expansion in the destination filename of install stanza to simplify implementation and avoid dependency cycles. (#2073, @aalekseyev, @jeremiedimino)

  • [menhir] call menhir from context root build_dir (#2067, @ejgallego, review by @jeremiedimino, @rgrinberg)

  • [coq] Add coq.pp stanza to help with pre-processing of grammar files (#2054, @ejgallego, review by @rgrinberg)

  • Add a new more generic form for the promote mode: (promote (until-clean) (into <dir>)) (#2068, @jeremiedimino)

  • Allow to promote only a subset of the targets via (promote (only <pred>)). For instance: (promote (only *.mli)) (#2068, @jeremiedimino)

  • Improve the behavior when a strict subset of the targets of a rule is already in the source tree for projects using the dune language < 1.10 (#2068, fixes #2061, @jeremiedimino)

  • With lang dune >= 1.10, rules in standard mode are no longer allowed to produce targets that are present in the source tree. This has been a warning for long enough (#2068, @jeremiedimino)

  • Allow %{...} variables in pps flags (#2076, @mlasson review by @jeremiedimino and @aalekseyev).

  • Add a 'cookies' option to ppx_rewriter/deriver flags in library stanzas. This allow to specify cookie requests from variables expanded at each invocation of the preprocessor. (#2106, @mlasson @jeremiedimino)

  • Add more opam metadata and use it to generate .opam files. In particular, a package field has been added to specify package specific information. (#2017, #2091, @avsm, @jonludlam, @rgrinberg)

  • Clean up the special support for findlib.dynload. Before, Dune would simply match on the library name. Now, we only match on the findlib package name when the library doesn't come from Dune. Someone writing a library called findlib.dynload with Dune would have to add (special_builtin_support findlib_dynload) to trigger the special behavior. (#2115, @jeremiedimino)

  • Install the future_syntax preprocessor as ocaml-syntax-shims.exe (#2125, @rgrinberg)

  • Hide full command on errors and warnings in development and show them in CI. (detected using the CI environment variable). Commands for which the invocation might be omitted must output an error prefixed with File . Add an --always-show-command-line option to disable this behavior and always show the full command. (#2120, fixes #1733, @rgrinberg)

  • In dune-workspace files, add the ability to choose the host context and to create duplicates of the default context with different settings. (#2098, @TheLortex, review by @jeremiedimino, @rgrinberg and @aalekseyev)

  • Add support for hg in dune subst (#2135, @jeremiedimino)

  • Don't build documentation for implementations of virtual libraries (#2141, fixes #2138, @jonludlam)

  • Fix generation of the -pp flag in .merlin (#2142, @rgrinberg)

  • Make dune subst add a (version ...) field to the dune-project file (#2148, @jeremiedimino)

  • Add the %{os_type} variable, which is a short-hand for %{ocaml-config:os_type} (#1764, @jeremiedimino)

  • Allow enabled_if fields in library stanzas, restricted to the %{os_type}, %{model}, %{architecture}, %{system} variables (#1764, #2164 @jeremiedimino, @rgrinberg)

  • Fix chdir on external and source paths. Dune will also fail gracefully if the external or source path does not exist (#2165, fixes #2158, @rgrinberg)

  • Support the .cc extension fro C++ sources (#2195, fixes #83, @rgrinberg)

  • Run ocamlformat relative to the context root. This improves the locations of errors. (#2196, fixes #1370, @rgrinberg)

  • Fix detection of README, LICENSE, CHANGE, and HISTORY files. These would be undetected whenever the project was nested in another workspace. (#2194, @rgrinberg)

  • Fix generation of .merlin whenever there's more than one stanza with the same ppx preprocessing specification (#2209 ,fixes #2206, @rgrinberg)

  • Fix generation of .merlin in the presence of the copy_files stanza and preprocessing specifications of other stanazs. (#2211, fixes #2206, @rgrinberg)

  • Run refmt from the context's root directory. This improves error messages in case of syntax errors. (#2223, @rgrinberg)

  • In .merlin files, don't pass -dump-ast to the future_syntax preprocessor. Merlin doesn't seem to like it when binary AST is generated by a -pp preprocessor. (#2236, @aalekseyev)

  • dune install will verify that all files mentioned in all .install files exist before trying to install anything. This prevents partial installation of packages (#2230, @rgrinberg)

Special thanks to Rudi Grinberg for helping us in reviewing and merging pull-requests.

See full changelog
  • backend

    • interpret -pp flag
    • backtrack warnings in all versions, not just 4.06
    • silence C compiler warnings (by David Allsopp and Bernhard Schommer)
    • remove sturgeon support
    • allow to select sections to log
    • better error message on ocaml version mismatch
    • locate:
      • handle functors and functor applications
      • do not use the location coming from the environment
    • tweaked caching policy
    • fix environment when a file disappears
    • fix -short-paths handling of classes and class types (by Leo White)
    • don't select deprecated paths in -short-paths (by Leo White)
    • return type info in outline query (by Andrey Popp)
    • properly handle new lines in the lexer
    • better tracking of errors reported by the parser and by preprocessors
    • add support for OCaml 4.08
    • tweaked the recovery strategy in presence of syntax errors
    • timing information in replies now includes wall clock time.
    • dump command can new dump the parsetree post preprocessing
  • editors modes

    • emacs

      • fix merlin-xref.el install (by Emilio Jesus Gallego Arias)
      • keep labels matching the prefix the user has typed rather than dropping them (by Mitchell Plamann)
      • remove unused merlin--overlay function (by Wilfred Hughes)
      • show the number of errors in the modline (by Wilfred Hughes)
      • call a logger on the client side if one is defined
      • allow user to disable completion inside comments and strings
      • show errors and types even when buffer is narrowed (by Wilfred Hughes)
      • make sure PATH is updated when merlin-command is 'opam
    • vim

      • better FindBinary
      • make the log buffer a scratch buffer (by Tom Johnson)
      • execute buffer switching silently (by Fabian)
      • restore view after updating merlin type buffer (by Fabian)
  • testsuite

    • Switched to mdx with cram syntax.
See full changelog
  • Add confirmation prompts in some commands. (#144, #146, @NathanReb)
  • Use github returned archive URL instead of guessing it. Fixes a bug when releasing a version with URL incompatible characters to github. (#143, @NathanReb)
  • Add logs to better describe commands behaviour. (#141, #137, #135, #150, #153, @NathanReb)
  • Fix a bug when publishing documentation to a repo for the first time (#136, @NathanReb)
  • Allow to submit package to a different opam-repository hosted on github. (#140, #152, @NathanReb)
  • Use dune subst for watermarking. (#147, @NathanReb)
  • Fix linting step so it checks for CHANGES, LICENSE and README again

Ppxlib 0.8.0

See full changelog

Oops, we went looking but didn't find the changelog for this release 🙈

Ppxlib 0.7.0

See full changelog

Oops, we went looking but didn't find the changelog for this release 🙈

Utop 2.4.0

See full changelog

General

  • Better support for wide and combined glyph (@kandu)
  • Added tips for simpe prompt without fancy features (Marshall Abrams, #279)
  • Correct quoting for Windows command shell (Dmitry Bely, #272)

Additions

  • 4.08 compatibility (#284)
  • module UTop: add get_load_path and set_load_path to manage the include directories (#284)

Breaking

  • module UTop: val load_path : string list ref is removed (#284)
See full changelog
  • Make sure opening Ast_408 doesn't shadow Int or Misc (#71, @hhugo)
  • Fix a couple of issues related to upgrading the AST from 4.07 to 4.08 (#71, @hhugo)

Dune 1.9.2

See full changelog
  • Put back library variants in development mode. We discovered a serious unexpected issue and we might need to adjust the design of this feature before we are ready to commit to a final version. Users will need to write (using library_variants 0.1) in their dune-project file if they want to use it before the design is finalized. (#2116, @diml)

  • Forbid to attach a variant to a library that implements a virtual library outside the current project (#2104, @rgrinberg)

  • Fix a bug where dune install would install man pages to incorrect paths when compared to opam-installer. For example dune now installs (foo.1 as man1/foo.1) correctly and previously that was installed to man1/man1/foo.1. (#2105, @aalekseyev)

  • Do not fail when a findlib directory doesn't exist (#2101, fix #2099, @diml)

  • [coq] Rename (coqlib ...) to (coq.theory ...), support for coqlib will be dropped in the 1.0 version of the Coq language (#2055, @ejgallego)

  • Fix crash when calculating library dependency closure (#2090, fixes #2085, @rgrinberg)

  • Clean up the special support for findlib.dynload. Before, Dune would simply match on the library name. Now, we only match on the findlib package name when the library doesn't come from Dune. Someone writing a library called findlib.dynload with Dune would have to add (special_builton_support findlib_dynload) to trigger the special behavior. (#2115, @diml)

  • Include permissions in the digest of targets and dependencies (#2121, fix #1426, @rgrinberg, @xclerc)

Dune 1.9.3

See full changelog
  • Fix .install files not being generated (#2124, fixes #2123, @rgrinberg)
See full changelog
  • Get rid of the ocamlbuild plugin. Nobody is using it in opam and it is more work to maintain (#63, @diml)
  • Set Location.input_name to the original filename when reading a binary AST (#66, @diml)
  • Add support 4.08 (#70, @xclerc)

Ppxlib 0.6.0

See full changelog
  • Set Location.input_name to the original filename when reading a binary AST (#.., @diml)

Dune 1.9.1

See full changelog
  • Fix invocation of odoc to add previously missing include paths, impacting mld files that are not in directories containing libraries (#2016, fixes #2007, @jonludlam)
If you want to contribute to a new release announcement, check out the Contributing Guide on GitHub.