@samoht samoht released this Jun 7, 2018 · 261 commits to master since this release

Assets 3

1.4.0 (2018-06-06)

  • Add types for Contents.hash, Tree.hash and Commit.hash (#512, @samoht)
  • Tree.hash and Tree.of_hash now work on leaf nodes. To do this, Tree.hash
    has to return a more complex type (#512, @samoht)
  • support for webmachine 0.6.0 (#505, @ansiwen)

@samoht samoht released this Jan 3, 2018 · 261 commits to master since this release

Assets 3

1.3.3 (2018-01-03)

@samoht samoht released this Nov 23, 2017 · 266 commits to master since this release

Assets 3

1.3.2 (2017-11-22)

  • support OCaml 4.06 where -safe-string is enabled by default (#477, @djs55)

@samoht samoht released this Aug 25, 2017 · 278 commits to master since this release

Assets 3

1.3.1 (2017-08-25)

@samoht samoht released this Aug 1, 2017 · 283 commits to master since this release

Assets 3

1.3.0 (2017-07-27)

irmin-chunk

Add a new package: irmin-chunk, which was initially in a separate repository
created by @mounirnasrallah and @samoht and ported to the new Irmin API by
@g2p (#464)

irmin-unix

Re-add the irmin binary, the example application which used to be
installed by irmin-unixbefore we switched to usejbuilder`
(#466, @samoht -- reported by @ouenzzo and @dudelson)

irmin

That releases saw a nice series of patches to improve the performance of
Irmin.Tree contributed by the Tezos team:

  • Improve complexity of Irmin.Tree operations: on trivial benchmarks with
    a lot of values, this patch introduces a 10-times speed-up
    (#457, @OCamlPro-Henry)

  • Add missing equality for Irmin.Type primitives (#458, @OCamlPro-Henry)

  • Change the type of Hash.digest to also take a type representation
    (#458, @OCamlPro-Henry)

  • add Irmin.Type.{encode,decode}_cstruct (#458, @OCamlPro-Henry)

  • remove Irmin.Contents.RAW (#458, @OCamlPro-Henry)

  • avoid unecessary serialization and deserialization when computing hashes
    of cstructs (#459, @OCamlPro-Henry)

  • remove {Type,Merge}.int which might cause some issue on 32 bits platforms.
    Intead use the more explicit (and portable) {Type,Merge}.int32 or
    {Type,Merge}.int64 (#469, @samoht)

@samoht samoht released this Jun 6, 2017 · 367 commits to master since this release

Assets 3

1.2.0 (2017-06-06)

This release changes the build system to use
jbuilder. By doing so, it introduces
two new packages: irmin-mem and irmin-fs -- containing Irmin_mem and
Irmin_fs respectively. That release also fixes a bunch of regressions
introduced in the big 1.0 rewrite.

all

irmin

  • Fix Irmin.Contents.Cstruct: pretty-print the raw contents, not the hexdump
    (#442, @samoht)
  • Irmin.Hash.X.of_string should not raise an exception on invalid hash
    (#443, @samoht)

irmin-mem

  • New package! Use it if you want to use the Irmin_mem module.

irmin-fs

  • New package! Use it if you want to use the Irmin_fs module.

irmin-git

@samoht samoht released this Apr 25, 2017 · 406 commits to master since this release

Assets 3

1.1.0 (2017-04-24)

irmin

  • Change the type of S.Tree.find_tree to return a tree option instead of
    tree. This is a breaking API change but it let distinguish between
    the empty and non-existent cases (#431, @samoht)
  • Allow to specify branches in urls for fetch using the url#branch syntax
    (#432, @samoht)
  • Expose Irmin.Merge.idempotent for values with idempotent operations
    (#433, @samoht)
  • Add a S.repo type as an alias to the S.Repo.t (#436, @samoht)
  • Fix regression in S.Tree.diff intoduced in the 1.0 release: nested
    differences where reported with the wrong path (#438, @samoht)

irmin-unix

  • Update to irmin.1.1.0 API changes (@samoht)

irmin-git

  • Update to irmin.1.1.0 API changes (@samoht)

@samoht samoht released this Mar 31, 2017 · 426 commits to master since this release

Assets 3

1.0.2 (2017-03-27)

irmin

  • Add a cstruct type combinator (#429, @samoht)
  • Fix regression introduced in 1.0.1 on merge of base buffers (strings,
    cstruct). For these types, updates are idempotent, e.g. it is fine
    if two concurrent branches make the same update. (#429, @samoht)

irmin-unix

@samoht samoht released this Mar 14, 2017 · 439 commits to master since this release

Assets 3

1.0.1 (2017-03-14)

irmin

  • Default merge function should not assume idempotence of edits
    (#420, @kayceesrk)
  • Wrap the merge functions for pair and triple with the default case.
    (#420, @kayceesrk)

irmin-unix

  • Support all versions of cmdliner, 1.0.0 included (@samoht)

@samoht samoht released this Feb 23, 2017 · 452 commits to master since this release

Assets 3

1.0.0 (2017-02-21)

Major API changes:

  • It is now simpler to define mergeable contents, using new
    combinators to describe data-types (see Type).
  • The mutable views have been replaced by immutable trees, and made
    first-class citizen in the API (see available S.Tree).
    Transactions now only ensure snapshot isolation instead of full
    serialisability.
  • Creating a store with default path and branch implementations
    is now easier using the KV functors which just take one parameter:
    the contents.
  • the backend and user-facing API are now totally independant (instead
    of being half-included in each other in irmin.0.*), so that
    backends have to implement the minimum set of functions to be
    Irmin-compatible, and users can have many convenient high-level
    functions when using the Irmin API. The backends implement
    AO and RW, the frontend provides S.

The package is also now split into 5 opam packages: irmin, irmin-git, irmin-http,irmin-unixandirmin-miragewith similarly named ocamlfind` libraries.

More detailled changes:

irmin

  • [info] rename Task into Info to denote commit info (#397, @samoht)
  • [info] remove Task.uid (#397, @samoht)
  • [info] Commit messages are now plain strings (instead of a lists of
    strings): change Task.messages into Info.message, take a string
    instead of a list of strings as parameter and remove Task.add
    (#397, @samoht)
  • [info] change Info.f to only takes unit as argument. Previously
    it was taken an 'a which was used by the update functions. The
    update functions now take a full Info.f function as parameter,
    which should be less confusing (#397, @samoht)
  • [merge] replace the dependency to mirage-tc by a new internal module
    Type using type-based combinators. This makes defining new mergeable
    data-types much easier, especially records and variants (#397, @samoht)
  • [merge] change [Merge.t] to be an abstract type (#397, @samoht)
  • [merge] add [Merge.f] to transform a [Merge.t] value into a merge function
    (#397, @samoht)
  • [merge] add base merge combinators: Merge.unit, Merge.bool,
    Merge.char, Merge.int, Merge.int32, Merge.int64,
    Merge.float (#397, @samoht)
  • [merge] simplify the type of Merge.option, Merge.pair, Merge.tripleand Merge.alist` (#397, @samoht)
  • [merge] simplify and rename Merge.MSet into Merge.MultiSet (#397, @samoht)
  • [merge] simplify and rename Merge.set into Merge.Set (#397, @samoht)
  • [merge] rename Merge.OP into Merge.Infix and rename operators to
    avoid name-clashing with other monads (#397, @samoht)
  • [merge] remove the path argument from the merge functions (#397, @samoht)
  • [merge] remove the need to defined a Path submodule in Contents.S
    (#397, @samoht)
  • [merge] add a (very simple at the moment) Diff module (#397, @samoht)
  • [api] read operations do not take a task parameter anymore (#397, @samoht)
  • [api] write operations not take a full commit info instead of a confusing
    'a parameter (#397, @samoht)
  • [api] rename [Ref] into [Branch](#397, @samoht)
  • [api] replace S.read by S.find (#397, @samoht)
  • [api] replace S.read_exn by S.get (#397, @samoht)
  • [api] add S.kind to check the kind of store entries (files, directories)
    (#397, @samoht)
  • [api] remove the View functor, replaced by first-class support for
    immutable trees S.Tree (#397, @samoht)
  • [api] add S.find_tree to find immutable subtrees (#397, @samoht)
  • [api] add S.find_all to find contents and metadat (#397, @samoht)
  • [api] change S.mem to only check for contents, not subtree (#397, @samoht)
  • [api] add S.mem_tree to check for subtrees (similar behavior to
    S.mem in irmin.0.*) (#397, @samoht)
  • [api] add S.with_tree for atomic update of subtrees. This
    operation replaces with_hrw_view, but a weaker consistency
    guarantee: instead of providing full seriasilabilty, S.with_tree
    provides snapshot isolation, which is consistent enough for most of
    the users. (#397, @samoht)
  • [api] rename S.update into S.set and ensure that the operation is
    atomic by using a combination of test-and-set and optimistic concurrency
    control. (#397, @samoht)
  • [api] change S.remove to ensure the operation is atomtic.
  • [api] add S.status to mimick git status. (#397, @samoht)
  • [api] remove all the _id suffixes. (#397, @samoht)
  • [api] add S.merge_with_commit and S.merge_with_branch (#397, @samoht)
  • [api] more precise return type for S.Head.fast_forward (#401, @samoht)
  • [api] add S.Commit, S.Branch (#401, @samoht)
  • [api] add KV_MAKER to ease the creation of store with string lists
    as paths and strings as branches (#405, @samoht)
  • [backend] replace RO.read by RO.find (#397, @samoht)
  • [backend] no more RO.read_exn (#397, @samoht)
  • [backend] no more RO.iter, replaced by RW.list (#397, @samoht)
  • [backend] replace RW.update by RW.set (#397, @samoht)
  • [backend] rename RW.compare_and_set into RW.test_and_set (#397, @samoht)
  • [backend] new RW.watch, RW.watch_key and RW.unwatch functions
    to set-up low-level notifications (#397, @samoht)

irmin-git

  • Adapt to git.0.10.0 (#397, @samoht)
  • Remove the LOCK modules (#397, @samoht)
  • Rename S.Internals into S.Git (#397, @samoht)
  • Rename S.Internals.commit_of_id into S.Git.git_commit (#397, @samoht)
  • Add S.Git.of_repo to convert an Irmin repo into a Git repo (#397, @samoht)
  • Add S.Git.to_repo to convert a Git repo into an Irmin repo (#397, @samoht)
  • Expose S.Git_mem.clear and S.Git_mem.clear_all for in-memory Git
    backends (#397, @samoht)
  • Rename Memory into Mem.Make (#405, @samoht)
  • Rename FS into FS.Make (#405, @samoht)
  • Remove CONTEXT and fold it into IO (#405, @samoht)
  • Add Mem.KV and FS.KV to ease creatin of store with default
    implementations for branches and paths (#405, @samoht)
  • Add Mem.Ref and FS.Ref access tags, remotes and other Git references
    (#407, @samoht)
  • Allow to set-up a custom .git path (#409, @samoht)

irmin-mirage

  • Adapt to Mirage3 (@hannesm, @yomimono, @samoht)
  • Rename the Task module into Info to reflect the core API changes
  • Change Info.f to accept an optional author argument and a format
    string as a message parameter (#261, #406 @samoht)
  • Rename Irmin_git into Git (#405, @samoht)

irmin-http

  • Remove the high-level HTTP API (#397, @samoht)
  • Rewrite the low-level (backend) API using ocaml-webmachine (#397, @samoht)
  • Add KV to ease creatin of store with default implementations for
    branches and paths (#405, @samoht)

irmin-unix