3.0.0
CHANGES:
Fixed
-
irmin
- Fix the implementation of comparison on
Irmin.Tree
objects to use the
comparison defined on hashes. The previous implementation was unstable.
(#1519, @craigfe) - Default implementation for contents, nodes and commits can no longer trigger
pre_hash collisions. This changes their hash. (#1715, @Ngoguey42,
@icristescu)
- Fix the implementation of comparison on
-
irmin-pack
-
irmin-unix
Added
-
irmin
- Add
Read_only.S
andRead_only.Maker
module types (#1343, @samoht) - Append-only and content-addressable backend implementations have to
provideclose
andbatch
functions (#1345, @samoht) - Atomic-write backend implementations have to provide a
close
function
(#1345, @samoht) - Add a function
Store.Tree.singleton
for building trees with a single
contents binding. (#1567, @craigfe) - Add
with_handler
andhead
toStore.Backend.Node
and
Store.Backend.Node_portable
to work with recursive node structures from
irmin core. (#1712, #1746 @Ngoguey42). Forward
port of #1692 and #1670. - Add
proof
,to_proof
andof_proof
toStore.Backend.Node_portable
(#1716, @Ngoguey42). Forward port from #1583. - Add
hash_exn
toStore.Backend.Node.Val
andStore.Backend.Node_portable
(#TODO, @Ngoguey42) Forward ported from #1741. - Add a
Store.Tree.kinded_hash
function. (#1767, @Ngoguey) Forward ported
from #1625. - Add
Contents.String_v2
,Node.Generic_key.Make_v2
and
Commit.Generic_key.Make_v2
for backward compatibility with older stores.
(#1715, @icristescu)
- Add
-
irmin-bench
- Many improvements to the actions trace replay:
- Support for the layered store (#1293, @Ngoguey42)
- Fix replay for the first ~650k commits (was ~13k) (#1314, @Ngoguey42)
- Can change inode configuration prior to replay (#1326, @Ngoguey42)
- Check hash of commits (#1328, @icristescu)
- Fix the path flattening technique (#1357, @Ngoguey42)
- Introduce a new actions trace that can support replaying up to ~1300k
commits. (#1358, @Ngoguey42) - Improve the stats collection and stats report (#1367, #1384, #1403,
#1404, #1416, #1429, #1438, #1501, #1616, @Ngoguey42, @maiste) - Enable replay in CI (#1430, @Ngoguey42)
- Enable replay in CB (#1441, @Ngoguey42)
- Many improvements to the actions trace replay:
-
irmin-mem
-
irmin-pack
- Add a
stat-store
command toirmin-fsck
to output stats on the tree
under a specified commit (#1391, @icristescu, @Ngoguey42, @craigfe). - Add new counters in
Stats
(#1570, @Ngoguey42). - Add an option to configure the index function and pick the relevant bits
in a cryptographic hash by default (#1677 #1699, @samoht) - Verify inode depth invariants (#1711, @Ngoguey42). Forward port of #1665.
- Add a
-
irmin-unix
-
irmin-tezos
Changed
-
irmin
-
Irmin.Sync
is now a namespace: useIrmin.Sync.Make(S)
instead of
Irmin.Sync(S)
(#1338, @samoht) -
Store.master
is nowStore.main
. The existingStore.master
function is
deprecated and will be removed in a future release. (#1564, @craigfe) -
Store.Private.Sync
is nowStore.Backend.Remote
(#1338, @samoht) -
Irmin.Branch.S.master
is nowIrmin.Branch.S.main
(#1564, @craigfe) -
Irmin.Private.{Commit,Node}
are nowIrmin.{Node,Commit}
. (#1471,
@craigfe) -
All module types are now using snake-case and are not capitalized anymore.
(#1341, @samoht) -
Move signatures for backend stores into their own modules. All the
X_STORE
sigs have moved toX.S
:APPEND_ONLY_STORE
is nowAppend_only.S
CONTENT_ADDRESSABLE_STORE
is nowContent_addressable.S
ATOMIC_WRITE_STORE
is nowIrmin.Atomic_write.S
And all theX_STORE_MAKER
have moved toX.Maker
:APPEND_ONLY_STORE_MAKER
is nowAppend_only.Maker
CONTENT_ADDRESSABLE_STORE_MAKER
is nowContent_addressable.Maker
ATOMIC_WRITE_STORE_MAKER
is nowAtomic_write.Maker
This gives some space to move convenient functors closer to where they
belong:Content_addressable
is nowContent_addressable.Make
- New
Content_adddressable.Check_closed
andAtomic_write.Check_closed
(#1342, @samoht)
-
Rename
Irmin.Make
intoIrmin.Maker
; stage its result to return
Make
functor once provided with a content-addressable and an
atomic-writes stores (#1369, @samoht) -
Rename
Irmin.Make_ext
intoIrmin.Maker_ext
; stage its result to
returnMake
functor once provided with a content-addressable and an
atomic-writes stores, as well as node and commit makers (#1369, @samoht) -
Require at least
lwt.5.3.0
to useLwt.Syntax
in the codebase
(#1401, @samoht) -
Info
implementations are not part of store: useS.Info.v
instead ofIrmin.Info.v
(#1400, @samoht) -
Rename
Commit.V1
toCommit.V1.Make
. This functor now takes separate
hash and key implementations as arguments. (#1431 #1634, @craigfe
@icristescu) -
Introduce a
Schema
module to hold all the types that users can
define in an Irmin store. Use this as a parameter to everyMaker
functor. This is a large change which touches all the backends.
(#1470, @samoht, @craigfe) -
Add
Irmin.Backend.Conf.Schema
for grouping configuration keys. Now
Irmin.Backend.Conf.key
takes an additional~spec
parameter.
(#1492, @zshipko) -
Tree.empty
andNode.empty
now both take a unit argument. (#1566 #1629,
@craigfe) -
Rename
key
type topath
andKey
module toPath
when it is in a path
context inTree
andStore
. (#1569, @maiste) -
Move
Node.default
metadata default values into aNode.Metadata.default
to give room for other metadata values (#1611, @samoht) -
Add support for non-content-addressed ("generic key") backend stores. This
allows Irmin to work with backends in which not all values are addressed by
their hash. In particular, this includes: -
Cache hits in several
Tree
functions are more frequent than before.
(#1724, @Ngoguey42, @craigfe) -
Add a new
Pruned_hash
tag to the error case of severalStore.Tree
functions (#1744 @Ngoguey42). Forward ported from #1583.
-
-
irmin-containers
-
irmin-fs
-
irmin-git
- All of the configuration keys have moved into their own namespace:
- Renamed
Irmin_git.Make
intoIrmin_git.Maker
(#1369, @samoht) - Require at least
git.3.7.0
in the codebase (#1632, @dinosaure)
-
irmin-graphql:
-
irmin-mirage
-
irmin-pack
- Changed the implementation of backend store keys to use direct pointers to
store contents (by offset in the pack file) when possible, rather than
querying the index on each lookup. (#1659, @craigfe @Ngoguey42 @icristescu) - The
Irmin_pack.Maker
module type now no longer takes aConf
argument.
(#1641, @craigfe) - The backend configuration type
Conf.S
requires a new parameter
contents_length_header
that (optionally) further specifies the encoding
format used for commits in order to improve performance. (#1644, @craigfe) - Upgraded on-disk format of pack files to support more efficient lookups and
reduce indexing overhead. This change is fully backwards-compatible with
existing stores usingirmin-pack.2.x
versions, but not
forwards compatible. (#1649 #1655, @craigfe @Ngoguey42) - Added support for user-specified indexing strategies. The default strategy
is to index all objects appended to the pack file (as before), but users may
now choose to index fewer objects in order to improve the write performance
of the store, at the cost of introducing potential duplicate values to the
pack file. (#1664, #1761, @craigfe, @maiste)
- Changed the implementation of backend store keys to use direct pointers to
-
irmin-unix
- Clean up command line interface. Allow config file to be specified when
usingIrmin_unix.Resolver.load_config
and make command line options
take precedence over config options.
(#1464, #1543, #1607 @zshipko) Irmin_unix.Resolver.destruct
has been removed (and partially replaced by
Resolver.spec
). (#1603, @craigfe)- Update
irmin
CLI to support empty path inlist
subcommand.
(#1575, @maiste) - Add new commands to CLI:
branches
for listing available branches and
log
which is similar togit log
(#1609, #1727, @zshipko) - Update
irmin watch
to take parameters to specify a command that should
be executed when there are new changes (#1608, @zshipko)
- Clean up command line interface. Allow config file to be specified when
Removed
-
irmin-pack
-
irmin-layers
- This experimental package has been removed.