Releases: mirage/irmin
Releases · mirage/irmin
Support backend-specific push/pull protocols
- Support backend specific protocols for push/pull
- The Irmin Git backend can now sync with remote Git repositories
- Simplify the organisation of the libraries: irmin, irmin.backend,
irmin.server and irmin.unix (check how the example are compiled) - Small refactoring to ease the use of the API. Now use
open Irmin_unix
at the top of your file and use less functor in your code (again,
check the examples)
Javascript graphs & fix IrminMemory.create to create a shared store
- Fix the behavior of
IrminMemory.Make
to return an hanlder to a
shared datastore instead of creating a fresh one. Add
IrminMemory.Fresh
to return a fresh in-memory datastore maker. - The HTTP server now outputs some nice graph (using dagre-d3). Don't
expect to display very large graphs - More friendly tag names in the Git backend (no need to prefix
everything byrefs/heads/
anymore) - Partial support for recursive stores (WIP)
Cleaner external API
- Spring clean-ups in the API. Separation in IrminBranch for
fork/join operations, IrminSnapshot for snapshot/revert
operations and IrminDump for import/export operations.
The later two implementation can be derived automaticaly
from a base IrminBranch implementation. The update and merge
operations are supported on each backend - IrminGit does not depend on unix anymore and can thus be
compile to javascript or xen with mirage - No need to have bin_io converter for contents anymore
- No need to have JSON converter for contents anymore
- No more IrminDispatch
- Add an optional branch argument to Irmin.create to use
an already existing branch - Fix order of arguments in Irmin.merge
Support for views, speed improvement
- Feature: support for in-memory transactions. They are built
on top of views. - Feature: add support for views: these are temporary stores with
lazy reads + in-memory writes; they can be used to convert back
and forth an OCaml value into a store, or to have a fast stagging
area without the need to commit every operation to the store. - Support custom messages in commit messages
- Improve the IrminMerge API
- Backend: add a 'dispatch' backend for combining multiple backends
into one. This can be used to have a P2P store where there is
well-defined mapping between keys and host (as a DHT). - Fix: limit the number of simulteanous open files in the Git and
the file-system backend - Speed-up the in-memory store
- Speed-up the import/export codepath
- Speed-up the reads
- Speed-up IrminValue.Mux
- Deps: use ocaml-sha instead of cryptokit
Support for merge and user-defined contents
- Support for user-defined contents (with custom merge operators)
- Support for merge operations
- Rename
IrminTree
toIrminNode
to reflect the fact that we
can support arbitrary immutable graphs (it's better if they are
DAGs but that's not mandatory) - Rename
IrminBlob
toIrminContents
to reflect the fact that
we also support structured contents (as JSON objects) - Support for linking the library without linking to camlp4 as well (#23)
Support for cohttp 0.10.*
0.5.1 Bump version to 0.5.1
Support non-UTF8 blobs and consistent support for watches across backends
- More consistent support for notifications.
irmin watch
works
now for all backends. - Support for different blob formats on the command-line
- Support for JSON blobs
- More flexible
irmin fetch
command: we can now choose the backend to
import the data in - Fix import of Git objects when the blobs were not imported first
- Support non-UTF8 strings as path name and blob contents (for all
backends, including the JSON one) - Speed-up the
slow
tests execution time - Improve the output graph when objects of different kinds might have
the same SHA1
API changes and Git backend
- The command-line tool now looks in the environment for the variable
IRMIN
to configure its default backend - Add a Git backend
- Add Travis CI scripts to the repo
- Use
Lwt_bytes
andLwt_unix
instead of the custom-madeIrminChannel
- Use
bin_prot
instead of a custom binary protocol - Major refactoring:
Value
is nowBlob
,Revision
is nowCommit
andTag
becomesReference
(rational: consistency with Git names) - Use
core_kernel
instead of building a customIdentiable.S
- Use
dolog
instead of a custom log library - Use
mstruct
(mutable buffers on top ofcstruct
) which is now
released independently
switch to oasis
CHANGES:
- Fix a fd leak in the filesystem bakend
- Functorize the CRUD interface over the HTTP client implementation
- Use oasis to build the project
- Use the now released separately
ezjsonm
andalcotest
libraries