3.0.0
CHANGES:
Fixed
-
irmin
- Fix the implementation of comparison on
Irmin.Treeobjects 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.SandRead_only.Makermodule types (#1343, @samoht) - Append-only and content-addressable backend implementations have to
providecloseandbatchfunctions (#1345, @samoht) - Atomic-write backend implementations have to provide a
closefunction
(#1345, @samoht) - Add a function
Store.Tree.singletonfor building trees with a single
contents binding. (#1567, @craigfe) - Add
with_handlerandheadtoStore.Backend.Nodeand
Store.Backend.Node_portableto work with recursive node structures from
irmin core. (#1712, #1746 @Ngoguey42). Forward
port of #1692 and #1670. - Add
proof,to_proofandof_prooftoStore.Backend.Node_portable
(#1716, @Ngoguey42). Forward port from #1583. - Add
hash_exntoStore.Backend.Node.ValandStore.Backend.Node_portable
(#TODO, @Ngoguey42) Forward ported from #1741. - Add a
Store.Tree.kinded_hashfunction. (#1767, @Ngoguey) Forward ported
from #1625. - Add
Contents.String_v2,Node.Generic_key.Make_v2and
Commit.Generic_key.Make_v2for 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-storecommand toirmin-fsckto 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.Syncis now a namespace: useIrmin.Sync.Make(S)instead of
Irmin.Sync(S)(#1338, @samoht) -
Store.masteris nowStore.main. The existingStore.masterfunction is
deprecated and will be removed in a future release. (#1564, @craigfe) -
Store.Private.Syncis nowStore.Backend.Remote(#1338, @samoht) -
Irmin.Branch.S.masteris 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_STOREsigs have moved toX.S:APPEND_ONLY_STOREis nowAppend_only.SCONTENT_ADDRESSABLE_STOREis nowContent_addressable.SATOMIC_WRITE_STOREis nowIrmin.Atomic_write.S
And all theX_STORE_MAKERhave moved toX.Maker:APPEND_ONLY_STORE_MAKERis nowAppend_only.MakerCONTENT_ADDRESSABLE_STORE_MAKERis nowContent_addressable.MakerATOMIC_WRITE_STORE_MAKERis nowAtomic_write.Maker
This gives some space to move convenient functors closer to where they
belong:Content_addressableis nowContent_addressable.Make- New
Content_adddressable.Check_closedandAtomic_write.Check_closed
(#1342, @samoht)
-
Rename
Irmin.MakeintoIrmin.Maker; stage its result to return
Makefunctor once provided with a content-addressable and an
atomic-writes stores (#1369, @samoht) -
Rename
Irmin.Make_extintoIrmin.Maker_ext; stage its result to
returnMakefunctor 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.0to useLwt.Syntaxin the codebase
(#1401, @samoht) -
Infoimplementations are not part of store: useS.Info.v
instead ofIrmin.Info.v(#1400, @samoht) -
Rename
Commit.V1toCommit.V1.Make. This functor now takes separate
hash and key implementations as arguments. (#1431 #1634, @craigfe
@icristescu) -
Introduce a
Schemamodule 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.Schemafor grouping configuration keys. Now
Irmin.Backend.Conf.keytakes an additional~specparameter.
(#1492, @zshipko) -
Tree.emptyandNode.emptynow both take a unit argument. (#1566 #1629,
@craigfe) -
Rename
keytype topathandKeymodule toPathwhen it is in a path
context inTreeandStore. (#1569, @maiste) -
Move
Node.defaultmetadata 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
Treefunctions are more frequent than before.
(#1724, @Ngoguey42, @craigfe) -
Add a new
Pruned_hashtag 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.MakeintoIrmin_git.Maker(#1369, @samoht) - Require at least
git.3.7.0in 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.Makermodule type now no longer takes aConfargument.
(#1641, @craigfe) - The backend configuration type
Conf.Srequires a new parameter
contents_length_headerthat (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.xversions, 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_configand make command line options
take precedence over config options.
(#1464, #1543, #1607 @zshipko) Irmin_unix.Resolver.destructhas been removed (and partially replaced by
Resolver.spec). (#1603, @craigfe)- Update
irminCLI to support empty path inlistsubcommand.
(#1575, @maiste) - Add new commands to CLI:
branchesfor listing available branches and
logwhich is similar togit log(#1609, #1727, @zshipko) - Update
irmin watchto 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.