0install 2.12

Thomas Leonard <[email protected]> Mon, 5 Sep 2016 18:46:52 +0100
Newsgroups gmane.comp.file-systems.zero-install.devel
Message-ID <CAG4opy9FDePDWjv1j1cjtC=5jZt3A3tJtPFpC78TxmAcNT309Q@mail.gmail.com>
0install 2.12 is now available (source and generic binaries):

  http://0install.net/install-source.html
  http://0install.net/install-linux.html#generic

This is a very minor update in terms of features, but there are lots
of small cleanups to the code.


Since 2.11:

Bug fixes

- Fix rounding error in quick-test-mtime attribute. When writing the
attribute we rounded to the nearest int, but when checking we rounded
down. This meant that we might think the file had changed and
recalculate when we didn't need to.

Logging

- When using a launcher, log the JSON that will be passed to it too.

- Include 0install's version number in the log output.

Build

- Use the official Travis scripts
(https://github.com/ocaml/ocaml-ci-scripts) instead of our own.

- Test with OCaml 4.03 and 4.02.3 too.

- Fix build for OCaml 4.03.0.

- Add dependency on gnupg2 on OS X. This is needed to run the unit tests.

- Update opam dependencies (taken from
https://github.com/ocaml/opam-repository/pull/6086).

- Explain how to use opam to build on Windows. Use Appveyor to build and test.

- Remove build-in.ml script. It was only for compatibility with OCaml
< 4, and we don't support that now anyway.

- Add tests directory to the Merlin configuration (for editor completion).


Code cleanups:

- Remove all uses of the Lwt extension from the code. OCaml's camlp4
syntax extension system is now deprecated, so get ahead and remove it
now.
  There is a replacement syntax extension using the new PPX system,
but it turns out that asynchronous code is perfectly readable without
either.

- Tidy up Driver and Download modules:
  - Return `Unmodified as a value, not an exception.
  - Don't use an object for downloader.
  - Report redirect loops with `Network_failure.

- Uppercase variants. The language spec says they have to be
uppercase, although the compiler seems to allow lowercase ones too.

- Separate out the PackageKit stubs (which abstract over the various
different API versions of PackageKit) from the code using it, and put
them in their own file. This makes the logic clearer and should make
it easier to support future changes.

- Make packagekit an explicit argument to distributions. Avoids
needing a global mutable ref for the unit-tests.

- Rename a field to avoid a compiler warning (conflicted with ref.contents).

- Replace Bad_request exception with a return code.

- Add unit-test for "0install slave". Also, tidied up the Json_connection API.

- Use the Format module to display help text. Avoids needing to pass
in a whole system object just so we can print.

- Use the Format module for logging. This allows us to use the same
API for printing to strings and to channels, and handles some
formatting stuff for us automatically.


-- 
talex5 (GitHub/Twitter)        http://roscidus.com/blog/
GPG: 5DD5 8D70 899C 454A 966D  6A51 7513 3C8F 94F6 E0CC
GPG: DA98 25AE CAD0 8975 7CDA  BD8E 0713 3F96 CA74 D8BA

------------------------------------------------------------------------------