Releases: mirage/irmin
3.1.0
CHANGES:
Fixed
-
irmin-pack
-
irmin-unix
Added
Changed
- irmin-bench
- Make trace replay API public and simpler (#1781, @Ngoguey42)
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 ...
2.10.2
CHANGES:
Fixed
- irmin
-
Fixed a bug causing stream proof extender nodes to have their segments be
returned in reverse order (i.e. bottom to top, rather then top-down).
(#1742, @craigfe) -
Fixed a bug that allowed the creation of overly-large stable inodes via
stream proofs. (#1741, @Ngoguey42)
-
Added
- irmin
- Add
Store.Private.Node.Val.hash_exn
(#1741, @Ngoguey42)
- Add
2.10.1
CHANGES:
Fixed
- irmin
- Fix bug introduced in #1683 which causes
Tree.seq
andTree.list
to
produce pruned children (#1720, @Ngoguey42)
- Fix bug introduced in #1683 which causes
2.9.1
2.10.0
CHANGES:
Fixed
-
irmin
- Conversion between proofs and trees are now done in CPS (#1624, @samoht)
- Better support for s390x to workaround ocaml/ocaml#10857
(#1694, @icristescu)
-
irmin-pack
- Fix proofs for large inodes by tracking side-effects reads inside the
inode implementation (#1670, @samoht, @Ngoguey42) - Flush branch store without calling
Repo.close
(#1707, @zshipko)
- Fix proofs for large inodes by tracking side-effects reads inside the
Added
-
irmin
- Add
Tree.produce_proof
andTree.verify_proof
to produce and verify
proofs from complex computations.produce_proof
andverify_proof
takes a callback over tree and instead of a static list of operations
-- this now means that the fullTree
API can now be used in proofs,
including sub-tree operations, folds and paginated lists
(#1625, #1663, #1683, @samoht, @Ngoguey42) - Add
Tree.produce_stream
andTree.verify_stream
to produce and
verify stream proofs (#1684, #1692, #1691, @samoht, @Ngoguey42, @icristescu)
- Add
-
irmin-pack
-
irmin-unix
Changed
-
irmin
-
irmin-pack
-
irmin-git
- Require at least
git.3.7.0
in the codebase (#1637, @dinosaure)
- Require at least
2.9.0
CHANGES:
Fixed
- irmin-pack
- Improved the performance of Index encode and decode operations by
eliminating intermediate allocations (up to 5% fewer minor words
allocated) (#1577, @craigfe) - Reduce the number of backend nodes built during export
(up to 20% fewer minor words allocated) (#1553, @Ngoguey42)
- Improved the performance of Index encode and decode operations by
Added
- irmin
- Add Merkle Proofs and expose function to convert a proof to and from a tree.
Once converted, normal tree operations can be performed on the proof, as
long at it access values contained in the proof.
(#1583, @samoht, @Ngoguey42, @icristescu)
- Add Merkle Proofs and expose function to convert a proof to and from a tree.
Changed
- irmin-pack
- Limit inode depth (#1596, #samoht)
- Adapt to index 1.5.0 (#1593, @icristescu)
2.8.0
CHANGES:
Fixed
- irmin
Tree
operations now raise aDangling_hash
exception when called with a
path that contains dangling hashes in the underlying store, rather than
interpreting such paths as ending with empty nodes (#1477, @craigfe)- Fix the pre-hashing function for big-endian architectures. (#1505,
@Ngoguey42, @dinosaure) - Fix a bug in
Tree.export
where nodes could be exported before
some of their contents, resulting in indirect hashes in irmin-pack
(#1508, @Ngoguey42)
Added
- irmin
Node.seq
andNode.of_seq
are added to avoid allocating intermediate
lists when it is not necessary (#1508, @samoht)- New optional
cache
parameter toTree.hash
,Tree.Contents.hash
,
Tree.list
,Node.list
,Node.seq
andNode.find
to control the storing
of lazily loaded data (#1526, @Ngoguey42) - Add
Node.clear
to clear internal caches (#1526, @Ngoguey42) - Added a
tree
argument toTree.fold
to manipulate the subtrees (#1527,
@icristescu, @Ngoguey42) - Add a function
Store.Tree.pruned
for building purely in-memory tree
objects with known hashes. (#1537, @craigfe) - Added a
order
argument to specify the order of traversal inTree.fold
(#1548, @icristescu, @craigfe)
Changed
-
irmin
Node.v
is renamed toNode.of_list
(#1508, @samoht)- Rewrite
Tree.export
in order to minimise the memory footprint.
(#1508, @Ngoguey42) - Remove the
~force:`And_clear
case parameter fromTree.fold
,
~force:`True ~cache:false
is the new equivalent. (#1526, @Ngoguey42) `Tree.fold ~force:`True
and`Tree.fold ~force:`False
don't
cache the lazily loaded data any more. Pass~cache:true
to enable it
again. (#1526, @Ngoguey42)- Do not allocate large lists in
Irmin.Tree.clear
(#1515, @samoht)
-
irmin-git
- Upgrade
irmin-git
togit.3.5.0
. (#1495, @dinosaure)
- Upgrade
2.7.2
CHANGES:
Added
- irmin-pack
- Added
integrity-check-index
command inirmin-fsck
. (#1480, #1487
@icristescu, @samoht)
- Added
Changed
- irmin-pack
reconstruct_index
is nowtraverse_pack_file
, it allows for both index
reconstruction and index checking (#1478, @Ngoguey42)