github mirage/irmin 2.3.0

latest releases: 3.9.0, 3.8.0, 3.7.2...
3 years ago

CHANGES:

Fixed

  • irmin-git

    • Update irmin to the last version of ocaml-git (#1065)
      It fixes an issue on serialization/deserialization of big tree object
      (see #1001)
  • irmin-pack*

    • Fix a major bug in the LRU which was never used (#1035, @samoht)
  • irmin*

    • Improve performance of last_modified (#948, @pascutto)

    • Changed the pattern matching of the function last_modified. The case of a
      created key is now considered a modification by the function. (#1167,
      @clecat)

    • Make Tree.clear tail-recursive (#1171, @samoht)

    • Fix Tree.fold ~force:(False f) where results where partially skipped
      (#1174, @Ngoguey42, @samoht and @craigfe )

    • Fix Tree.kind. Empty path on a tree used to return a None instead of a
      `Node. (#1218, @Ngoguey42)

  • ppx_irmin

    • Fix a bug causing certain type derivations to be incorrect due to unsound
      namespacing. (#1083, @craigfe)
  • irmin-unix

    • Update irmin config path to respect XDG_CONFIG_HOME. (#1168, @zshipko)

Added

  • irmin-layers (new):

    • Created a new package, irmin-layers that includes common signatures for
      layered stores. It contains a stub Make_layers functor (#882, @icristescu)
  • irmin-bench (new):

    • Created a new package to contain benchmarks for Irmin and its various
      backends. (#1142, @craigfe)
    • Added ability to get json output and a make target to run layers benchmark.
      (#1146, @gs0510)
  • irmin

    • Added Tree.Contents module exposing operations over lazy tree contents.
      (#1022 #1241, @craigfe @samoht)

    • Added Type.Unboxed.{encode_bin,decode_bin,size_of} to work with unboxed
      values (#1030, @samoht)

    • Remove the headers option in Type.{encode_bin,decode_bin,size_of}. Use
      Type.Unboxed.<fn> instead (#1030, @samoht)

    • Type.v now takes an extra mandatory unit argument (#1030, @samoht)

    • Added Type.pp_dump, which provides a way to pretty-print values with a
      syntax almost identical to native OCaml syntax, so that they can easily be
      copy-pasted into an OCaml REPL for inspection. (#1046, @liautaud)

    • Generic functions in Irmin.Type are now more efficient when a partial
      closure is constructed to the type representation (#1030 #1093, @samoht
      @craigfe). To make this even more explicit, these functions are now staged
      and Type.{unstage,stage} can manipulate these. The goal is to encourage
      users to write this kind of (efficent) pattern:

      let encode_bin = Type.(unstage (encode_bin ty))
      let _ = <begin loop> ... encode_bin foo ... <end loop>
    • Added a clear function for stores (#1071, @icristescu, @craigfe)

    • Requires digestif>=0.9 to use digestif's default variants
      (#873, @pascutto, @samoht)

    • Added iter_commits and iter_nodes functions to traverse the commits and
      nodes graphs (#1077, @icristescu)

    • Added Repo.iter to traverse object graphs (#1128, @samoht)

  • irmin-pack:

    • Added index_throttle option to Irmin_pack.config, which exposes the
      memory throttle feature of Index in Irmin-Pack. (#1049, @icristescu)

    • Added Pack.clear and Dict.clear (#1047, @icristescu, @craigfe, @samoht)

    • Added a migrate function for upgrading stores with old formats (#1070,
      @icristescu, @craigfe)

    • Added a flush function for a repo (#1092, @icristescu)

    • Added `Layered.Make functor, to construct layered stores from irmin-pack.
      (#882, @icristescu)

    • Added `Checks.Make which provides some offline checks for irmin-pack
      stores. (#1117, @icristescu, @craigfe)

    • Added reconstruct_index to reconstruct an index from a pack file. (#1097,
      @icristescu)

    • Added reconstruct-index command to irmin-fsck for reconstructing an index from
      the command line (#1189, @zshipko)

    • Added integrity-check command to irmin-fsck for checking the integrity of
      an irmin-pack store (#1196, @zshipko)

  • ppx_irmin:

    • Added support for deriving type representations for types with type
      parameters. Type 'a t generates a representation of type
      'a Type.t -> 'a t Type.t (#1085, @craigfe)

    • Added a --lib command-line option which has the same behaviour as the
      lib run-time argument (i.e. --lib Foo will cause ppx_irmin to derive
      type representations using combinators in the Foo module). (#1086,
      @craigfe)

    • Added an extension point [typ: <core-type>] for deriving type
      representations inline. (#1087, @craigfe)

Changed

  • irmin

    • Renamed the Tree.tree type to Tree.t. (#1022, @craigfe)

    • Replaced Tree.pp_stats with the type representation Tree.stats_t. (#TODO, @craigfe)

    • Changed the JSON encoding of special floats. Float.nan, Float.infinity
      and Float.neg_infinity are now encoded as "nan", "inf" and "-inf"
      respectively. (#979, @liautaud)

    • The functions Type.{v,like,map} no longer take a ~cli argument, and now
      take separate ~pp and ~of_string arguments instead. (#1103, @craigfe)

    • The Irmin.Type combinators are now supplied by the repr package. The
      API of Irmin.Type is not changed. (#1106, @craigfe)

    • Irmin.Type uses staging for equal, short_hash and compare to
      speed-up generic operations (#1130, #1131, #1132, @samoht)

    • Make Tree.fold more expressive and ensure it uses a bounded memory
      (#1169, @samoht)

    • Changed list and Tree.list to take optional offset and length
      arguments to help with pagination. Also return direct pointers to the
      subtrees to speed up subsequent accesses (#1241, @samoht, @zshipko,
      @craigfe, @Ngoguey42 and @icristescu)

  • irmin-pack:

    • sync has to be called by the read-only instance to synchronise with the
      files on disk. (#1008, @icristescu)

    • Renamed sync to flush for the operation that flushes to disk all buffers
      of a read-write instance. (#1008, @icristescu)

    • Changed the format of headers for the files on disk to include a generation
      number. Version 1 of irmin-pack was used for the previous format, version 2
      is used with the new format. (#1047, @icristescu, @craigfe, @samoht)

    • Use Repo.iter to speed-up copies between layers (#1149, #1150 @samoht)

    • Add an option to bypass data integrity checks on reads (#1154, @samoht)

    • Add heads parameter to check-self-contained command in Checks (#1224, @zshipko)

  • ppx_irmin:

    • The [@generic ...] attribute has been renamed to [@repr ...]. (#1082,
      @craigfe)

Don't miss a new irmin release

NewReleases is sending notifications on new releases.