Zero Install Changelog

What's new in Zero Install 2.8

Nov 10, 2014
  • NEW FEATURES:
  • Allow source="true" on dependency elements to require the source code of a dependency (Tim Cuthbertson).
  • We now support separate source and binary selections of the same interface. An additional "source" attribute on the element says whether the root selection is source or binary.
  • Use .netrc settings when making a connection. This may be useful to access a private repository protected using HTTP basic authentication. Requested by Brad Hilton.
  • CHANGES:
  • Accept both _ and = when specifying sha256new digests to `0install store find` (Tim Cuthbertson).
  • Added info-level log message when applying bindings.
  • Add "0install/" user-agent header to download requests (Tim Cuthbertson).
  • "0install add" prefers ~/bin to any other paths in $PATH. Otherwise, if other programs have added local directories to $PATH then we might install there thinking that's the user's preferred bin directory.
  • Include the `extract` value when reporting illegal characters in it (Tim Cuthbertson).
  • runenv: use underscores instead of dashes for zeroinstall_runenv_* environment variables (Tim Cuthbertson).
  • BUG FIXES:
  • Restored support for implementation-dirs configuration file. Requested by Bastian Eicher.
  • Fixed default height for app list and cache explorer dialogs.
  • Process elements from sub-feeds too. Reported by Bastian Eicher.
  • Escape tooltip strings in GTK TreeView. GTK tries to interpret them as markup.
  • Treat EROFS (readonly fs) just like EACCES when saving a store path (Tim Cuthbertson).
  • Added diagnostic for implementations that weren't selected because they depend on a missing command in the same implementation.
  • Follow self-commands in decider. When directing the search towards the optimal selection, we ignored self-bindings and therefore didn't bother to optimise the selection of dependencies of commands used in this way.
  • Fixed error reporting of bad GPG signatures. Include stdout from gpg in the error report when checking a signature fails.
  • When calling gpg, read stdout and stderr in parallel. Otherwise, if gpg generated a (very) large amount of error output, we might deadlock.
  • Add armv6h->armv6l architecture mapping for Raspberry Pis running Arch Linux ARM (Bart van Strien).
  • Fixed typo in diagnostics message (s/compatibile/compatible). Reported by Bart van Strien.
  • If we don't have permission to remove a launcher, advise the user.
  • "0install select selections.xml" would always select a binary, even if the original selections were source.
  • CODE CLEANUPS:
  • Replaced (iface, source) pairs in solver and selections APIs with with more general abstract "role" concept.
  • Updated GUI to use roles. This means that the GUI can now cope with selecting separate source and binary implementations of a single interface.
  • Solver has been split into Solver (dealing with the concrete types) and Solver_core (a functor that can solve for abstract dependency graphs). There are abstract module signatures for selections and interactions with the solver in sigs.mli. The idea here is that instead of giving the solver access to everything (XML, attributes, bindings, etc), it uses a more limited interface with just the bits it needs. This should make the solver easier to understand. See http://roscidus.com/blog/blog/2014/09/17/simplifying-the-solver-with-functors/ for details.
  • Made Diagnostics a functor, like the new solver. One visible effect of this is that the diagnostics now put "#source" after interfaces being used to select source code.
  • Split Justify module out from Diagnostics.
  • There is a new Element module for type-safe XML handling. For example, a is now represented by the type [`command] Element.t rather than by just Qdom.element.
  • We now use the same (abstract) types in Selections and Solver. For example, Tree can now generate a tree for either a selections document or a solver result.
  • Moved collect_bindings to Selections. Collecting bindings is something you do to a selections document as a whole rather than to a single binding. This reverses the dependency direction, so that Selections now depends on Bindings, which also allows moving get_runner back into Command.
  • Cleaned up Selections API. We now always build the index, avoiding the need for a separate call, and always provide the iface (now role) when iterating.
  • Compile with safe-string if we have OCaml 4.02. Everything of "string" type is now immutable.
  • Split parts of feed.ml out into impl.ml.
  • Moved CLI command index into its own module.
  • Use a GADT to represent command nodes. Avoids needing to create an object for every command.
  • Removed Lwt_preemptive_copy module. This is no longer needed, as Debian has upgraded to a newer Lwt.
  • Cleaned up Version and Qdom APIs.
  • BUILD FIXES:
  • Fixed "make clean" for ocamlbuild 4.00.1.
  • Fixed some compiler warnings with OCaml 4.02.0.
  • Made running ocamlbuild directly easier:
  • Removed -cflags -g from arguments (we already turn on debug in the _tags file).
  • Set default build directory in myocamlbuild.ml.
  • Don't create static_0install.native link if invoked directly.