v1.0.0 2017-03-02 La Forclaz (VS)
---------------------------------
**IMPORTANT** The `Arg.converter` type is deprecated in favor of the
`Arg.conv` type. For this release both types are equal but the next
major release will drop the former and make the latter abstract. All
users are kindly requested to migrate to use the new type and **only**
via the new `Arg.[p]conv` and `Arg.conv_{parser,printer}` functions.
- Allow terms to be used more than once in terms without tripping out
documentation generation (#77). Thanks to François Bobot and Gabriel
Radanne.
- Disallow defining the same option (resp. command) name twice via two
different arguments (resp. terms). Raises Invalid_argument, used
to be undefined behaviour (in practice, an arbitrary one would be
ignored).
- Improve converter API (see important message above).
- Add `Term.exit[_status]` and `Term.exit_status_of[_status]_result`.
improves composition with `Pervasives.exit`.
- Add `Term.term_result` and `Term.cli_parse_result` improves composition
with terms evaluating to `result` types.
- Add `Arg.parser_of_kind_of_string`.
- Change semantics of `Arg.pos_left` (see #76 for details).
- Deprecate `Term.man_format` in favor of `Arg.man_format`.
- Reserve the `--cmdliner` option for library use. This is unused for now
but will be in the future.
- Relicense from BSD3 to ISC.
- Safe-string support.
- Build depend on topkg.
### End-user visible changes
The following changes affect the end-user behaviour of all binaries using
cmdliner.
- Required positional arguments. All missing required position
arguments are now reported to the end-user, in the correct
order (#39). Thanks to Dmitrii Kashin for the report.
- Optional arguments. All unknown and ambiguous optional argument
arguments are now reported to the end-user (instead of only
the first one).
- Change default behaviour of `--help[=FMT]` option. `FMT` no longer
defaults to `pager` if unspecified. It defaults to the new value
`auto` which prints the help as `pager` or `plain` whenever the
`TERM` environment variable is `dumb` or undefined (#43). At the API
level this changes the signature of the type `Term.ret` and values
`Term.ret`, `Term.man_format` (deprecated) and `Manpage.print` to add the
new `` `Auto`` case to manual formats. These are now represented by the
`Manpage.format` type rather than inlined polyvars.
### Doc specification improvements and fixes
- Add `?envs` optional argument to `Term.info`. Documents environment
variables that influence a term's evaluation and automatically
integrate them in the manual.
- Add `?exits` optional argument to `Term.info`. Documents exit statuses of
the program. Use `Term.default_exits` if you are using the new `Term.exit`
functions.
- Add `?man_xrefs` optional argument to `Term.info`. Documents
references to other manpages. Automatically formats a `SEE ALSO` section
in the manual.
- Add `Manpage.escape` to escape a string from the documentation markup
language.
- Add `Manpage.s_*` constants for standard man page section names.
- Add a `` `Blocks`` case to `Manpage.blocks` to allow block splicing
(#69). This avoids having to concatenate block lists at the
toplevel of your program.
- `Arg.env_var`, change default environment variable section to the
standard `ENVIRONMENT` manual section rather than `ENVIRONMENT
VARIABLES`. If you previously manually positioned that section in
your man page you will have to change the name. See also next point.
- Fix automatic placement of default environment variable section (#44)
whenever unspecified in the man page.
- Better automatic insertions of man page sections (#73). See the API
docs about manual specification. As a side effect the `NAME` section
can now also be overriden manually.
- Fix repeated environment variable printing for flags (#64). Thanks to
Thomas Gazagnaire for the report.
- Fix rendering of env vars in man pages, bold is standard (#71).
- Fix plain help formatting for commands with empty
description. Thanks to Maciek Starzyk for the patch.
- Fix (implement really) groff man page escaping (#48).
- Request `an` macros directly in the man page via `.mso` this
makes man pages self-describing and avoids having to call `groff` with
the `-man` option.
- Document required optional arguments as such (#82). Thanks to Isaac Hodes
for the report.
### Doc language sanitization
This release tries to bring sanity to the doc language. This may break
the rendering of some of your man pages. Thanks to Gabriel Scherer,
Ivan Gotovchits and Nicolás Ojeda Bär for the feedback.
- It is only allowed to use the variables `$(var)` that are mentioned in
the docs (`$(docv)`, `$(opt)`, etc.) and the markup directives
`$({i,b},text)`. Any other unknown `$(var)` will generate errors
on standard error during documentation generation.
- Markup directives `$({i,b},text)` treat `text` as is, modulo escapes;
see next point.
- Characters `$`, `(`, `)` and `\` can respectively be escaped by `\$`,
`\(`, `\)` and `\\`. Escaping `$` and `\` is mandatory everywhere.
Escaping `)` is mandatory only in markup directives. Escaping `(`
is only here for your symmetric pleasure. Any other sequence of
character starting with a `\` is an illegal sequence.
- Variables `$(mname)` and `$(tname)` are now marked up with bold when
substituted. If you used to write `$(b,$(tname))` this will generate
an error on standard output, since `$` is not escaped in the markup
directive. Simply replace these by `$(tname)`.
## 2017/06/07
* Removed an undeclared dependency of MenhirSdk on Unix. (Reported and fixed
by Frédéric Bour.)
## 2017/05/09
* Menhir now always places OCaml line number directives in the generated `.ml`
file. (Until now, this was done only when `--infer` was off.) Thus, if a
semantic action contains an `assert` statement, the file name and line
number information carried by the `Assert_failure` exception should now be
correct. (Reported by Helmut Brandl.)
## 2017/04/18
* Changed Menhir's license from QPL to GPLv2.
MenhirLib remains under LGPLv2, with a linking exception.
* Moved the repository to
[gitlab.inria.fr](https://gitlab.inria.fr/fpottier/menhir/).
* Introduced a new command line switch, `--cmly`, which causes Menhir to
create a `.cmly` file, containing a description of the grammar and
automaton. (Suggested by Frédéric Bour.)
* Introduced a new library, MenhirSdk, which allows reading a `.cmly` file.
The purpose of this library is to allow external tools to take advantage
of the work performed by Menhir's front-end. (Suggested by Frédéric Bour.)
* Introduced new syntax for attributes in a `.mly` file. Attributes are
ignored by Menhir's back-ends, but are written to `.cmly` files, thus
can be exploited by external tools via MenhirSdk. (Suggested by Frédéric Bour.)
* The definition of a `%public` nonterminal symbol can now be split into several
parts within a single `.mly` file. (This used to be permitted only over
multiple `.mly` files.) (Suggested by Frédéric Bour.)
* New functions in the incremental API:
`shifts`, `acceptable`, `current_state_number`.
* New functions in the incremental API and inspection API:
`top`, `pop`, `pop_many`, `get`, `equal`,
`force_reduction`, `feed`, `input_needed`,
`state_has_default_reduction`,
`production_index`, `find_production`.
(Suggested by Frédéric Bour.)
* New module `MenhirLib.ErrorReports`. This module is supposed to offer
auxiliary functions that help produce good syntax error messages.
This module does not yet contain much functionality and is expected
to evolve in the future.
* Incompatible change in the incremental API: the type `env` becomes `'a env`.
* Incompatible change in the incremental API: the function
`has_default_reduction` is renamed `env_has_default_reduction`.
* The type `stack` and the function `stack` in the incremental API are
deprecated. The new functions `top` and `pop` can be used instead to
inspect the parser's stack. The module `MenhirLib.General` is deprecated
as well. Deprecated functionality will be removed in the future.
* Incompatible change in the incremental API: the type of the function
`print_stack` in the result signature of the functor
`MenhirLib.Printers.Make` changes to `'a env -> unit`.
(Anyway, as of now, `MenhirLib.Printers` remains undocumented.)
* Improved the syntax error message that is displayed when a `.mly` file
is incorrect: the previous and next token are shown.
* Fixed a bug where the module name `Basics` was shadowed (that is, if the user's
project happened to contain a toplevel module by this name, then it could not
be referred to from a `.mly` file). (Reported by François Thiré.)
## 2017/01/01
* Add `$MENHIR_STDLIB` as a way of controlling where Menhir looks for the file
`standard.mly`. This environment variable overrides the installation-time
default setting, and is itself overridden by the `--stdlib` command line
switch. (Requested by Jonathan Protzenko.)
* `Makefile` fix: filter out `'\r'` in the output of `menhir --suggest-ocamlfind`,
so that the `Makefile` works when Menhir is compiled as a Windows executable.
(Suggested by Jonathan Protzenko.)
## 2016/12/01
* Updated the Coq back-end for compatibility with Coq 8.6.
(Jacques-Henri Jourdan.)
## 2016/11/15
* Fix in `--only-preprocess-for-ocamlyacc` mode: avoid printing newline characters
inside a `%type` declaration, as this is forbidden by `ocamlyacc`. (Reported by
Kenji Maillard.)
* Fix in `--only-preprocess-for-ocamlyacc` mode: avoid variable capture caused by
`ocamlyacc` internally translating `$i` to `_i`. (Reported by Kenji Maillard.)
## 2016/09/01
* New command line switch `--only-preprocess-for-ocamlyacc`, supposed to print the
grammar in a form that `ocamlyacc` can accept. As of now, this feature is
incomplete (in particular, support for Menhir's position keywords is missing),
untested, and undocumented. It could be removed in the future.
## 2016/08/26
* Fixes in the output of `--only-preprocess`:
* The order of productions is now preserved.
(It was not. This matters if there are reduce/reduce conflicts.)
* `%parameter` directives are now printed. (They were not).
* `%on_error_reduce` directives are now printed. (They were not.)
## 2016/08/25
* `Makefile` fix, undoing a change made on 2016/03/03, which caused installation
to fail under (some versions of?) Windows where dynamic linking is not
supported. (Reported by Andrew Appel.)
## 2016/08/05
* `%on_error_reduce` declarations now have implicit priority levels, so as to
tell Menhir what to do when two such declarations are applicable.
Also, the well-formedness checks on `%type` and `%on_error_reduce` declarations
have been reinforced.
## 2016/06/23
* A small change in the generated code (both in the code and table back-ends) so
as to avoid OCaml's warning 41. The warning would arise (when compiling a
generated parser with OCaml 4.03) because Menhir's exception `Error` has the
same name as the data constructor `Error` in OCaml's pervasive library.
(Reported by Bernhard Schommer.)
## 2016/05/18
* Anonymous rules now work also when used inside a parameterized rule.
(This did not work until now.) When an anonymous rule is hoisted out
of a parameterized rule, it may itself become parameterized. Menhir
parameterizes it only over the parameters that it actually needs.
## 2016/05/04
* In the Coq backend, split the largest definitions into smaller
ones. This circumvents a limitation of vm_compute on 32 bit
machines. This also enables us to perform sharing between
definitions, so that the generated files are much smaller.
## 2016/04/10
* When printing a grammar (which is done by the `--only-preprocess` options),
remove the leading bar `|`, for compatibility with `yacc` and `bison`.
## 2016/03/11
* In the code back-end, generate type annotations when extracting a semantic
value out of the stack. When working with a semantic value of some function
type, OCaml would incorrectly warn that this function does not use its
argument. This warning should now be gone.
* Version 0.4.10
* Quick followup release to use OASIS 0.4.10 to generate the setup.ml because
the setup.ml of OASIS 0.4.9 was generated with 0.4.8 that contains a bug.
* New releases will be generated using the version released to catch earlier
the kind of bug with destdir that has appeared in 0.4.8.
(See [issue 1007](https://github.com/ocaml/oasis/issues/107))
* Version 0.4.9
* Major changes:
* Plugin "omake":
* Use correctly sorted internal library deps for OCAML_LIBS
(Closes: #1736)
* Delay the interpretation of $(CMXS_ENABLED) for the install suffixes.
Also, take the environment variable "destdir" into account when
installing data files.
* Do not install the component modules of a packed library, but the
packed module. (Close: #1737)
* Solve ocamlmklib instability, re-enable test "OMake/Complex".
(Closes: #1739)
* Only link those libraries into executables that are really needed.
(Closes: #1747).
* Fix problems with the automatic addition of deps when building
executables on platforms with case-insensitive file system.
* Make OMake tests optional since it is complex to install OMake 0.10.2
with OPAM.
* Minor changes:
* Make sure --destdir is really used when installing (Closes: #107).
* Try to register only when a glob pattern matches at least one file (#102)
* Clean up setup.cmt after compiling setup.exe
* By default, use Github for bug reporting (Closes: #97)
* Simplify conditional expressions (Close: #95)
* Document CLISubCommand.register, CLISubCommand.default_fspecs
* Version 0.4.8
* Major changes:
* Fix various problems of parsing present in OASIS 0.4.7:
* Only issue a warning when extraneous blanks are present. (Closes: #1665)
* Fixes ocamlbuild plugin argument handling bug. (Closes: #1659)
* Re-add MyOCamlbuildBase.env_filename.
* Script to test reverse build depends (Closes: #1672).
* Enable creation of OASIS plugin and OASIS command line plugin:
* Add examples/plugins to demonstrate how to build plugins.
* Update HACKING.md.
* Ensure they work, using a test.
* Plugin "omake":
* Workaround for a problem in omake-0.9.8.6: variables accumulated
via foreach cannot be private.
* Passing the title string down to ocamldoc
* Fix compilation of pack-level mli's.
* Move definition of some variables in subdirectories to use them
correctly (OCAMLINCLUDES, OCAMLPACKS and a few others)
Thanks to Gerd Stolpmann for these contributions.
* Improve CI/tests:
* Split quickstart tests out of the main tests, because it fails too
often and often need to be disabled.
* Reorganize test/ directories.
* Use OCaml 4.04 for Travis-CI.
* Reorganize my CI scripts in src/tools/ci.
* Get rid of ardivink and switch to OPAM for travis and jenkins builders.
* Create 2 branches (opam/unstable and opam/testing) to provide pinning
capabilities to OPAM:
* It allows OPAM to track the development version of OASIS
* Update information in README.md
* Add a makefile target to allow to create opam/ in a local copy for
testing a locally hacked version of OASIS.
* Setup auto-generation of opam/unstable branch and auto-promotion of
opam/unstable to opam/testing when integration tests have succeeded.
* Minor changes:
* Quick hack to solve #1674 and allow to use flambda, upstream notified of
the problem. (Closes: #1674)
* Use OASISFormat 0.4 for OASIS itself:
* Use source_patterns feature to precisely locate .mlify files.
* Use markdown to generate standard files.
* Add BugReports to generated README in StdFiles.
* Version 0.4.7
* Drop support for OASISFormat 0.2 and 0.1.
As per the version policy in HACKING.md, this change syncs with OASIS
version in Debian. Debian Jessie has OASIS v0.4.4, so it is possible to
drop support for older version.
* Provide stable API in setup.ml using BaseCompat.
This change introduces BaseCompat and opens by default the version
matching OASISFormat in setup.ml. This allows to make changes to OASIS
and still provides a stable API in setup.ml. The only side effect is that
it requires to update the setup.ml of DynRun at every major version updates.
Unfortunately, providing compatibility for ALL changes is an hard task.
Users are welcome to file bugs whenever their customized setup.ml breaks
because of an incompatible change.
* Plugin "omake":
This new plugin provides build, doc and install capabilities using
OMake. Some features are not supported, like Object sections.
It requires 'OCamlVersion: >= 4.01'.
Example:
OASISFormat: 0.4
OCamlVersion: >= 4.01
[...]
BuildTools: omake
BuildType: omake (0.4)
Library simplelib
[...]
Document simplelib
BuildTools+: ocamldoc
[...]
Thanks to Gerd Stolpmann for this huge contribution.
* Create OASIFileSystem and use it in OASISContext.t.srcfs.
The new module OASISFileSystem is a filesystem abstraction layer that
allows to better represents (through types) where the files are (e.g.
source or build directory).
The very first use of it is to add in OASISContext.t as srcfs. The
filesystem object is itself limited to only use
OASISContext.source_filename, which allows to use types to enforce
location of files.
The various default_filename across the code are now typed according to
their location (e.g. "setup.log" and "setup.data" are
OASISContext.source_filename). The only way to actually open, read and
write the corresponding file is to apply methods provided in OASISFileSystem
object.
This change also delays enough the evaluation of the location of
"setup.log" and "setup.data", which solves the bug 1473.
(Closes: #1473)
* Improve automatic tests:
* Use OPAM to install dependencies.
* Use Travis to test and compile with all major OCaml version since 3.12.1
on Linux.
* Use AppVeyor to compile on Cygwin.
* Test for dynamic mode mode compilation on Cygwin with AppVeyor.
* Rename test files to reflect what files they are testing.
* Split test/data/TestFull/* tests to reflect what plugins/files they are
testing.
* Add some badges for build status on Travis and AppVeyor in README.md.
* Test the parsing of examples/oasis/*.oasis files.
* Check all examples are tested, add examples/ocamlbuild tests.
* Check that all examples use the latest version of OASIS.
* Disable test 'external source rebuild' which tends to be flaky.
* Refactor TestFull to remove boilerplates and make it more readable.
* Create a test function to check all subdirectories are listed and tested,
add tests for the missing ones.
* Reduce the number of skipped tests.
* Refine constraint to produce .cmt to >=4.01.
* Trim down the dependencies:
* Stop depending on ocaml-data-notation and type_conv.
* Create a trim down, internval version of ocaml-data-notation. The
conversion functions need to be manually written -- not perfect
but a good way to drop the dependency and still be compatible with OCaml
3.12.1.
* Stop depending on ocaml-gettext, this was never really used.
* Get rid of camlp4:
* Replace most genlex parser, by standard yacc/lex parsers.
* Replace OASISRecDescParser by OASISAst_parser using ocamlyacc.
(Closes: #298)
* The "flag(...)" in expression is now case sensitive, to avoid conflict
with the "Flag ..." section.
* Some parts still use Genlex, but don't need camlp4 anymore.
* Trimming down the dependencies allows to make it easier to port OASIS on
other platforms (like Windows) where some former dependencies were tricky
to compile (like camlp4).
* Stop using -install-lib-dir on Windows.
This change prevents the use of -install-lib-dir on Windows, for OCaml
version greater than 3.11.1. The bug in ocamlbuild has been fixed in OCaml
3.11.1 [1]. This is a bit a shot in the dark, since testing on Windows is
not setup.
[1]: https://github.com/ocaml/ocamlbuild/commit/79cf4029b
* Minor changes:
* Consistently use choices type in OASISExpr module.
* Make OCamlbuild plugin not assume that dynamic linking is supported.
(Patch: #1536) (Closes: #1251)
* Improve setup.log parsing, by using Genlex.
* Enforce using a published version of OASIS to generate its own setup.ml,
provide explanations in HACKING.md.
* Fix problem reading files on Cygwin (esp. setup.log), reported size after
an append doesn't reflect the real size of the file in some cases.
* Always compile src/tools/* and move dist.ml there.
* Refactor string version comparison into its own sub-module.
* Fix missing rules for headache.
* Remove unused userconf library.
* Pass -thread to C files as well.
* Don't use $< in explicit DevFiles build rule (BSD make compatibility).
* Example to override cc when compiling C source files.
* Remove the need for Bytes altogether.
* Add fields "Tags" and "BugReports" to export them to OPAM.
* Big documentation cleanup (`\_oasis` synopsis, doc/*).
* Reformat source files using ocp-indent and start to use merlin.
* Allow to use a string when testing values in `\_oasis`, for example it is
now possible to use expression like 'ocaml_version("4.02.1")'
* Improve OASISVersion.comparator_reduce. Now, it transforms the given
comparator into its disjunctive form and order the version number.
* Rename all executables so that their names match OCaml policy for module.
* Move all executables into their own directories to prevent dependencies
leak.
* Transform tools into executables.
* Always compile executables to check they still work.
* Features:
* no_automatic_syntax (alpha): don't disable the -package injection logic.
* compiled_setup_ml (alpha):
* Fix the configure file when using the compiled_setup_ml feature and
improve the Makefile.
* Recompile when needed while executing the configure script.
* findlib_directory (beta, new):
Findlib allows to specify a "directory" in a META file. This can be used
to store some files of the library in sub-directories. This change
allows to set and use this "directory" field.
The InternalInstall plugin now handles installing files in
sub-directories. However there is no flag to specify this when using
`ocamlfind install`, so we use a standard file installation, with a
best-guess computation of the target directory.
The META plugin can now set the "directory" field according to what has
been set in the `_oasis` file. Note that, for nested package the install
directory is relative to the install directory of the parent package.
Example:
BetaFeatures: findlib_directory
Plugins: META(0.4)
Library library
[...]
FindlibDirectory: lib
Thanks to Gabriel Radanne for this contribution. (Closes: #1305)
* findlib_extra_files (beta, new):
This change allows to use a new `_oasis` field 'FindlibExtraFiles' to
install extra files along the matching library/object in findlib.
Example:
BetaFeatures: findlib_extra_files
Library library
[...]
FindlibName: foobar
FindlibExtraFiles: myfile.txt
In this case `myfile.txt` will be installed in the same directory as the
'foobar' package.
Thanks to Evgenii Lepikhin for the contribution. (Closes: #802)
* source_patterns (alpha, new):
This change allows to override the built-in source files search. It uses
user-provided 'InterfacePatterns' and 'ImplementationPatterns' fields and
a small DSL to define how to find a file matching a given module. The
fields can be defined at the top level or in the Library section.
The DSL is based on Genlex and Buffer.add_substitute. It has two
functions `capitalize_file` and `uncapitalize_file` and one variable
`module`.
Example:
AlphaFeatures: source_patterns
Library library
[...]
Modules: FooBar
InterfacePatterns+: ${module}.eliomi
ImplementationPatterns+: ${module}.eliom
It is particularly useful to get rid of the warnings like:
W: Cannot find source file matching module [...]
Thanks to Petter Urkedal for this contribution.
Thanks to Spiros Eliopoulos, Paul Snively, Jeremie Dimino, Christopher
Zimmermann, Christophe Troestler, Max Mouratov, Jacques-Pascal Deplaix, Geoff
Shannon, Simon Cruanes, Vladimir Brankov, Gabriel Radanne, Evgenii Lepikhin,
Petter Urkedal, Gerd Stolpmann and Anton Bachin for their contributions.
0.11.0 (5 Mar 2017):
--------------------
OCamlbuild 0.11.0 introduces a change to the way `.cmxs` files are
produced when no `.mldylib` file is absent: it will now use the exact
same semantics as `.cmxa` and `.mllib` file -- in particular, it
should not be necessary anymore to have identical
`foo.{mllib,mldylib}` files, only `foo.mllib` should suffice. See the
detailed changelog below for details.
- added "nostdlib" flag for corresponding ocaml{c,opt} options
(Thomas Wood)
- add `node_modules` to the list of directories ignored by default
(.svn/, CVS/, .bzr/, .hg/, .git/, _darcs/, node_modules/)
(Yunxing Dai)
- added "-toolchain" option for corresponding ocamlfind option.
(whitequark)
- install ocamlbuild's man pages, missing since 4.02
(Adam Sampson and Gabriel Scherer)
- make sure that -just-plugin always stops after the plugin-build phase
(Gabriel Scherer, report by whitequark)
* remove the rule ".cmx -> .cmxs"
Previously, there was a ".cmx -> .cmxa" rule that would
pull a module and its dependencies in a .cmxa, and a separate
".cmx -> .cmxs" rule that would pull only a module as a .cmxs.
The latter is a reasonable default choice, the idea being that
a module's dependencies may often be statically linked with the
program instead of being dynamically linked. But it conflicts with
the presence of a rule ".cmxa -> .cmxs" as soon as the library has
the same name as one of the modules it contains.
The reason why the rule ".cmxa -> .cmxs" matter is that it can be
composed with the rule ".mllib -> .cmxa" to build .cmxs files from
.mllib files, without having to copy each .mllib file into
a separate .mldylib file.
In other terms, the previous behaviour would, by default (in absence
of .mldylib file who always takes priority), only link the module in
the .cmxs file, and people wishing otherwise would have to write
a list of modules in a .mldylib file. The new behavior will, by
default, take the .mllib file or the module dependencies (as for
.cmxa) to build a .cmxs file, and people wishing otherwise will have
to write just the module name in a .mldylib file.
It is unclear whether this change will break some projects on which
users relied on the previous semantics. It seems equally likely that
the previous semantics, when it applied, was a source of bugs
(the .cmxs files didn't have the expected modules) that would not be
discovered by people not testing dynamic linking. Such bugs have
been found and fixed in the following cases:
- <https://github.com/dbuenzli/uucp/pull/9>
- <https://github.com/dbuenzli/uunf/pull/4>
- <https://github.com/dbuenzli/uuseg/pull/4>
(Daniel Bünzli, Jérémie Dimino, Armaël Guéneau, Gabriel Scherer, whitequark)
- do not explicitly pass -shared when building shared libraries;
let the compiler decide what to build.
(whitequark)
- migration of Mantis bugtracker issues to the github issue tracker
(Damien Doligez)
- setting up Continuous Infrastructure (CI) testsuite checks
(whitequark)
- install license, changes and readme in opam's docdir for `odig`
(Gabriel Scherer, request and review by Daniel Bünzli)
* new heuristic for handling the OCAMLLIB environment variable.
`ocamlbuild -where` will ignore OCAMLLIB completely if OCAMLBUILD_LIBDIR is
not a lexical subdirectory of OCAML_LIBDIR (i.e. an opam installation).
Otherwise, it now returns $OCAMLLIB with the difference between
OCAMLBUILD_LIBDIR and OCAML_LIBDIR appended (i.e. for a normal findlib
installation, it now returns $OCAMLLIB/site-lib/ocamlbuild)
(David Allsopp, review by Gabriel Schere)
- "noautolink" tag for ocaml{c,opt}
(Gabriel Scherer)
0.10.{0,1} (Dec 2016):
----------------------
These releases were never widely distributed, because of
a quickly-caught regression due to the change of .cmxs compilation
behavior, fixed with the help Daniel Bünzli, Jérémie Dimino
and, in particular, whitequark.
0.9.3 (6 Oct 2016):
-------------------
OCamlbuild 0.9.3 introduces several features contributed or requested
by our users. See the detailed changelog below.
- new ".o -> .clib" rule to build libraries out of single C stubs
(Gabriel Scherer, request by whitequark)
- Integrate the in-progress OCamlbuild manual, previously located at
https://github.com/gasche/manual-ocamlbuild
into the ocamlbuild repository, in the manual/ subdirectory.
The most current version of the manual can thus be accessed at
https://github.com/ocaml/ocamlbuild/tree/master/manual/manual.adoc
(Gabriel Scherer)
- added "noassert" and "unsafe" flag for corresponding ocaml{c,opt} options
(François Pottier)
- added "cc", "cclib", and "ccopt" flags which correspond to the
respective ocaml{c,opt} options
(Rudi Grinberg)
- add infer_interface support for various type-checking-time flags:
color, keep_docs, no_alias_deps, nolabels, nopervasives, open,
strict_formats, strict_sequence, warn, warn_error
(Gabriel Scherer, report by Knuth Posern)
- Allocate Zlib data structures outside the OCaml heap for compatibility
with recent versions of Zlib
(Github issue #1, pull request #2, report and fix by Einar Lielmanis).
- Don't pass -L and -I options to the C compiler unless necessary.
- Compile and install the shared library zip.cmxs.
(Contributed by E. Millon.)
- ocamlfind: install under 'zip' and 'camlzip' package names.
allows for installation of .cmxs files, changes include:
1.7.3:
Fix regarding num-top: this library is now also optional, as num.
1.7.2:
Trying to protect against failures when several package installs are done in
parallel.
New subpackage "findlib.top" for the toploop (Jeremie Dimino).
The "num" library is now optional.
Shell scripts are started via "sh" command when there is no /bin/sh (ygrek)
OCaml 4.04.2 (23 Jun 2017):
---------------------------
### Security fix:
- Local privilege escalation issue with ocaml binaries.
(Damien Doligez, report by Eric Milliken, review by Xavier Leroy)
OCaml 4.04.1 (14 Apr 2017):
---------------------------
### Code generation and optimizations:
- Consider arrays of length zero as constants
when using Flambda.
(Pierre Chambart, review by Mark Shinwell and Leo White)
### Standard library:
- fix a bug in Set.map as introduced in 4.04.0
(Gabriel Scherer, report by Thomas Leonard)
### Tools:
- ocamldoc, avoid nested <pre> tags in module description.
(Florian Angeletti, report by user 'kosik')
- ocamldoc, wrong Latex output for variant types
with constructors without arguments.
(Florian Angeletti, report by Xavier Leroy)
### Build system:
- New flexlink target in Makefile.nt to bootstrap the
flexlink binary only, rather than the flexlink binary and the FlexDLL C
objects.
(David Allsopp)
### Bug fixes
- Str.regexp raises "Invalid_argument: index out of bounds"
(Damien Doligez, report by John Whitington)
- Fix ocamlmklib with bootstrapped FlexDLL. Bootstrapped
FlexDLL objects are now installed to a subdirectory flexdll of the Standard
Library which allows the compilers to pick them up explicitly and also
ocamlmklib to include them without unnecessarily adding the entire Standard
Library.
(David Allsopp)
- fix incorrect timestamps returned by Unix.stat on Windows
when either TZ is set or system date is in DST.
(David Allsopp, report and initial fix by Nicolás Ojeda Bär, review and
superior implementation suggestion by Xavier Leroy)
- s390x: Fix address of caml_raise_exn in native dynlink modules
(Richard Jones, review by Xavier Leroy)
- ensure 16 byte stack alignment inside caml_allocN on x86-64
for ocaml build with WITH_FRAME_POINTERS defined
(Christoph Cullmann)
- fix slow compilation on source files containing a lot
of similar debugging information location entries
(Mark Shinwell)
- a case of double free in the systhreads library (POSIX implementation)
(Xavier Leroy, report by Chet Murthy)
- catch uncaught exception when unknown files are passed
as argument (regression in 4.04.0)
(Bernhard Schommer, review by Florian Angeletti and Gabriel Scherer,
report by Stephen Dolan)
- Memory cannot be released after calling
Bigarray.Genarray.change_layout.
(Damien Doligez and Xavier Leroy, report by Liang Wang)
- Fix segfault in Unix.create_process on Windows caused by wrong header
configuration.
(David Allsopp)
- add dynlink options to ocamlbytecomp.cmxa to allow ocamlopt.opt
to load plugins. See http://github.com/OCamlPro/ocamlc-plugins for examples.
(Fabrice Le Fessant, review by David Allsopp)
- caml-types.el: Fix missing format argument, so that it can show kind
of call at point correctly.
(Chunhui He)
- Allow Windows CRLF line-endings in ocamlyacc on Unix and Cygwin.
(David Allsopp, review by Damien Doligez and Xavier Leroy)
- Fix segfault in Sys.runtime_parameters when exception backtraces
are enabled.
(Olivier Andrieu)
that application, without starting up an HTTP server.
This provides convenient full-stack testing of applications written with any
WSGI-compatible framework.
* issue 901: build issue on OSX introduced in last-time commit in 2.6
was fixed (contributed by Francis Ricci)
* tcmalloc_minimal now works on 32-bit ABI of mips64. This is issue
845. Much thanks to Adhemerval Zanella and github user mtone.
* Romain Geissler contributed build fix for -std=c++17. This is pull
request 897.
* As part of fixing issue 904, tcmalloc atfork handler is now
installed early. This should fix slight chance of hitting deadlocks
at fork in some cases.
-------------
- Updated zoneinfo file to 2017b.
- Added Python 3.6 to CI testing
- Removed duplicate test name that was preventing a test from being run.
- Fixed testing of folds and gaps, particularly on Windows
- Fixed deprecated escape characters in regular expressions.
- Many PEP8 style violations and other code smells were fixed.
- Improved performance of tzutc and tzoffset objects.
- Fixed issue with several time zone classes around DST transitions in any
zones with +0 standard offset (e.g. Europe/London)
- Fixed issue with fuzzy parsing where tokens similar to AM/PM that are in the
end skipped were dropped in the fuzzy_with_tokens list.
- Fixed issue with parsing dates of the form X m YY.
- Added support for parser weekdays with less than 3 characters.
- Fixed issue with the addition and subtraction of certain relativedeltas.
- Fixed issue where the COUNT parameter of rrules was ignored if 0.
- Updated documentation to include the new tz methods.
- Update documentation to reflect that the parser can raise TypeError.
- Fixed an incorrect year in a parser doctest.
- Moved version information into _version.py and set up the versions more
granularly.
aria2 1.32.0
============
Release Note
------------
This release fixes several minor bugs, and spelling mistakes.
Changes
-------
* Clarify --max-concurrent-downloads option
GH-833
* Fix compile error with toolchain which lacks IPV6_TCLASS
GH-895
* Log directed URI in notice log level
GH-884
* Fix typo
Patch from Tse Kit Yam
GH-879, GH-899
* Spelling fixes
Patch from klemens
GH-870
* Remove unused Android parts
These parts where unused after merging
https://github.com/aria2/aria2/pull/736
Patch from Fredrik Fornwall
GH-868
* Save control file early
GH-859
* Update links in Dockerfile.raspberrypi
Some links used in Dockerfile.raspberrypi are not accessible
anymore, because they were pointing to old versions of some source
packages and new versions were released. This commit fixes this by
changing the links to point to the newest versions.
Patch from Michał Leśniewski
GH-860
* Propagate disk full error on pre-allocation to last error code
GH-856