Irmin is a distributed database that follows the same design principles as Git
ISC License
Bot releases are hidden (Show)
Published by icristescu over 2 years ago
CHANGES:
forbid_empty_dir_persistence
in store configuration. (#1789,Store.Snapshot
to expose the inodes for tezos snapshots (#1757,Tree.fold ~uniq:`True
by a factor of 2.Published by craigfe over 2 years ago
CHANGES:
irmin-pack
ppx_irmin
. (#1782, @hhugo)irmin-unix
push
, pull
, fetch
andclone
(#1776, @zshipko)Mimic.ctx
. Aremote
function now returns an Lwtlibirmin
package providing a C interface to the irmin APIPublished by craigfe over 2 years ago
CHANGES:
irmin
Irmin.Tree
objects to use theirmin-pack
irmin-unix
irmin
Read_only.S
and Read_only.Maker
module types (#1343, @samoht)close
and batch
functions (#1345, @samoht)close
functionStore.Tree.singleton
for building trees with a singlewith_handler
and head
to Store.Backend.Node
andStore.Backend.Node_portable
to work with recursive node structures fromproof
, to_proof
and of_proof
to Store.Backend.Node_portable
hash_exn
to Store.Backend.Node.Val
and Store.Backend.Node_portable
Store.Tree.kinded_hash
function. (#1767, @Ngoguey) Forward portedContents.String_v2
, Node.Generic_key.Make_v2
andCommit.Generic_key.Make_v2
for backward compatibility with older stores.irmin-bench
irmin-mem
Irmin_mem.Content_addressable
(#1369, @samoht)irmin-pack
stat-store
command to irmin-fsck
to output stats on the treeStats
(#1570, @Ngoguey42).irmin-unix
irmin
CLI to raise an exception when an invalid/non-existent--commit
flag to CLI to load a store from a specific commit hashirmin-tezos
tezos-context.encoding
library.irmin
Irmin.Sync
is now a namespace: use Irmin.Sync.Make(S)
instead of
Irmin.Sync(S)
(#1338, @samoht)
Irmin.Private
is now Irmin.Backend
(#1530, @CraigFe)
Store.master
is now Store.main
. The existing Store.master
function is
deprecated and will be removed in a future release. (#1564, @CraigFe)
Store.Private
is now Store.Backend
(#1530, @CraigFe)
Store.Private.Sync
is now Store.Backend.Remote
(#1338, @samoht)
Irmin.Branch.S.master
is now Irmin.Branch.S.main
(#1564, @CraigFe)
Irmin.Private.{Commit,Node}
are now Irmin.{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 to X.S
:
APPEND_ONLY_STORE
is now Append_only.S
CONTENT_ADDRESSABLE_STORE
is now Content_addressable.S
ATOMIC_WRITE_STORE
is now Irmin.Atomic_write.S
X_STORE_MAKER
have moved to X.Maker
:APPEND_ONLY_STORE_MAKER
is now Append_only.Maker
CONTENT_ADDRESSABLE_STORE_MAKER
is now Content_addressable.Maker
ATOMIC_WRITE_STORE_MAKER
is now Atomic_write.Maker
Content_addressable
is now Content_addressable.Make
Content_adddressable.Check_closed
and Atomic_write.Check_closed
Rename Irmin.Make
into Irmin.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
into Irmin.Maker_ext
; stage its result to
return Make
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 use Lwt.Syntax
in the codebase
(#1401, @samoht)
Info
implementations are not part of store: use S.Info.v
instead of Irmin.Info.v
(#1400, @samoht)
Rename Commit.V1
to Commit.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 every Maker
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
and Node.empty
now both take a unit argument. (#1566 #1629,
@CraigFe)
Rename key
type to path
and Key
module to Path
when it is in a path
context in Tree
and Store
. (#1569, @maiste)
Move Node.default
metadata default values into a Node.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:
Store.{Commit,Contents,Tree}.of_key
.Irmin.{Node,Commit}.Generic_key
modules.Node.Portable
andCommit.Portable
.Irmin.Indexable.S
.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 several Store.Tree
functions (#1744 @Ngoguey42). Forward ported from #1583.
irmin-containers
Irmin_containers.Store_maker
; this is now equivalent toIrmin.Content_addressable.S
(#1369, @samoht)Irmin_containers.CAS_maker
toIrmin_containers.Content_addressable
(#1369, @samoht)irmin-fs
Irmin_fs.Make
into Irmin_fs.Maker
(#1369, @samoht)Irmin_fs.Make_ext
into Irmin_fs.Maker_ext
(#1369, @samoht)irmin-git
Irmin_git.root
is now Irmin_git.Conf.root
Irmin_git.head
is now Irmin_git.Conf.head
Irmin_git.bare
is now Irmin_git.Conf.bare
Irmin_git.level
is now Irmin_git.Conf.level
Irmin_git.buffers
is now Irmin_git.Conf.buffers
Irmin_git.dot_git
is now Irmin_git.Conf.dot_git
Irmin_git.Make
into Irmin_git.Maker
(#1369, @samoht)git.3.7.0
in the codebase (#1632, @dinosaure)irmin-graphql:
master
to main
in theKey
type is now called Path
to match the new name in irmin
key
fields and parameters have been renamed to path
irmin-mirage
Irmin_mirage_git.Make
into Irmin_mirage_git.Maker
irmin-pack
Irmin_pack.Maker
module type now no longer takes a Conf
argument.Conf.S
requires a new parametercontents_length_header
that (optionally) further specifies the encodingirmin-pack.2.x
versions, but notirmin-unix
Irmin_unix.Resolver.load_config
and make command line optionsIrmin_unix.Resolver.destruct
has been removed (and partially replaced byResolver.spec
). (#1603, @CraigFe)irmin
CLI to support empty path in list
subcommand.branches
for listing available branches andlog
which is similar to git log
(#1609, #1727, @zshipko)irmin watch
to take parameters to specify a command that shouldirmin-pack
irmin-pack.layered
library. Support for the layered storeirmin-pack
. (#1651, @CraigFe)clear
operation in irmin-pack
. This operationirmin-layers
Published by craigfe over 2 years ago
CHANGES:
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)
Store.Private.Node.Val.hash_exn
(#1741, @Ngoguey42)Published by icristescu over 2 years ago
CHANGES:
Tree.seq
and Tree.list
toPublished by icristescu almost 3 years ago
CHANGES:
Published by samoht almost 3 years ago
CHANGES:
irmin
irmin-pack
Repo.close
(#1707, @zshipko)irmin
Tree.produce_proof
and Tree.verify_proof
to produce and verifyproduce_proof
and verify_proof
Tree
API can now be used in proofs,Tree.produce_stream
and Tree.verify_stream
to produce andirmin-pack
irmin-unix
tezos
store type for irmin
command-line (#1678, @zshipko)irmin
Tree.Proof.of_keys
. Use Tree.produce_proof
insteadTree.empty
now takes a unit argument. (#1566, @CraigFe)Tree.length
now takes a tree as argument (#1676, @samoht)Tree.Proof.t
now uses a more precise datatype to encode valueirmin-pack
irmin-git
git.3.7.0
in the codebase (#1637, @dinosaure)Published by samoht almost 3 years ago
CHANGES:
Published by icristescu about 3 years ago
CHANGES:
Tree
operations now raise a Dangling_hash
exception when called with aTree.export
where nodes could be exported beforeNode.seq
and Node.of_seq
are added to avoid allocating intermediatecache
parameter to Tree.hash
, Tree.Contents.hash
,Tree.list
, Node.list
, Node.seq
and Node.find
to control the storingNode.clear
to clear internal caches (#1526, @Ngoguey42)tree
argument to Tree.fold
to manipulate the subtrees (#1527,Store.Tree.pruned
for building purely in-memory treeorder
argument to specify the order of traversal in Tree.fold
irmin
Node.v
is renamed to Node.of_list
(#1508, @samoht)Tree.export
in order to minimise the memory footprint.~force:`And_clear
case parameter from Tree.fold
,~force:`True ~cache:false
is the new equivalent. (#1526, @Ngoguey42) `Tree.fold ~force:`True
and `Tree.fold ~force:`False
don't~cache:true
to enable itIrmin.Tree.clear
(#1515, @samoht)irmin-git
irmin-git
to git.3.5.0
. (#1495, @dinosaure)Published by icristescu over 3 years ago
CHANGES:
integrity-check-index
command in irmin-fsck
. (#1480, #1487reconstruct_index
is now traverse_pack_file
, it allows for both indexPublished by craigfe over 3 years ago
CHANGES:
Published by craigfe over 3 years ago
CHANGES:
irmin
Store.Tree.length
. (#1316, @Ngoguey42)irmin-layers
irmin-pack
irmin-pack
Irmin_pack.Version.{V1,V2}
modules for convenience. (#1457,irmin-pack.mem
package (#1436, @icristescu, @craigfe)irmin-graphql
last_modified
field to GraphQL interface (#1393, @kluvin)irmin-layers
copy_in_upper
from the repo configuration. The default is now tofreeze
. It is now possible to specify two distinctIrmin_layered_pack.Make
and Irmin_layers.Makeinto
Irmin_layered_pack.Makerand
Irmin_layers.Maker` (#1369, @samoht)Irmin_layered_pack.Make_ext
and and Irmin_layers.Make_extinto into
Irmin_layered_pack.Maker_extand
Irmin_layers.Maker_ext`Irmin_layered_pack.Config
into Irmin_layered_pack.Conf
irmin-pack
inode
that doesn't point to the rootentries
to astable_hash
. (#1292, @Ngoguey42)stat-pack
command inirmin-fsck
. (#1311, @icristescu)Version
module type into Version.S
and io_version
intoversion
. The Pack.File
and Atomic_write
functors now takeVersion
as their first parameter (#1352, @samoht)Irmin_pack.Make
into Irmin_pack.V1
(#1369, @samoht)Irmin_pack.Config
into Irmin_pack.Conf
(#1370, @samoht)Irmin_pack.Pack
into Irmin_pack.Content_addressable
andIrmin_pack.Pack.File
into Irmin_pack.Content_addressable.Maker
Irmin_pack.Store.Atomic_write
into its own module (#1378, @samoht)Checks.Reconstruct_index.run
now takes an optional index_log_size
Published by craigfe over 3 years ago
CHANGES:
This release contains 2.6.0 plus the changes described in 2.5.4.
Published by samoht over 3 years ago
CHANGES:
irmin-pack
Index.try_merge
.Index.try_merge
is buggy and stacks mergesIndex.try_merge
(#1409, @CraigFe)irmin
Tree.update_tree
and Tree.add_tree
forPublished by craigfe over 3 years ago
CHANGES:
irmin
Fix stack overflow exception when working with wide trees (#1313, @zshipko)
Tree.of_concrete
now prunes empty subdirectories, and raises
Invalid_argument
if the input contains duplicate bindings. (#1385,
@CraigFe)
irmin-chunk
irmin-git
with git.3.4.0
. (#1392, @dinosaure)Published by craigfe over 3 years ago
CHANGES:
Store.tree_t
to returnStore.Tree.is_empty
. (#1373, @CraigFe)Published by craigfe over 3 years ago
CHANGES:
irmin
Tree.update_tree
and Tree.add_tree
functions now interpret addingirmin-pack
Store.sync
when using the V1 format (#1360, @samoht)Published by craigfe over 3 years ago
CHANGES:
Published by craigfe over 3 years ago
CHANGES:
irmin
Store.Tree.remove
is now much faster when operating on large directories.
The commits following removals are also much faster. (#1289, @Ngoguey42)
Changed Store.Tree.{of_hash, shallow}
to take kinded hashes, allowing the
creation of unforced contents values. (#1285, @CraigFe)
Changed Tree.destruct
to return lazy contents values, which may be forced
with Tree.Contents.force
. (#1285, @CraigFe)
irmin-bench
Published by craigfe over 3 years ago
CHANGES:
irmin-pack
inode
where the remove
function could cause hashingirmin
Tree.add_tree t k v
complexity does not depend on v
size.irmin
Added a Perms
module containing helper types for using phantom-typed
capabilities as used by the store backends. (#1262, @CraigFe)
Added an Exported_for_stores
module containing miscellaneous helper types
for building backends. (#1262, @CraigFe)
Added new operations Tree.update
and Tree.update_tree
for efficient
read-and-set on trees. (#1274, @CraigFe)
irmin-pack:
integrity-check-inodes
command to irmin-fsck
for checking theirmin-bench
irmin-mem
package is now included with the irmin
package under theirmin.mem
. It keeps the same top-level module name ofIrmin_mem
. (#1276, @CraigFe)Irmin_mem
no longer provides the layered in-memory store Make_layered
.Irmin_layers.Make
. (#1276, @CraigFe)