result dependency (@hannesm, mirage/ocaml-git#634)carton into https://git.robur.coop/robur/carton (@dinosaure)Lwt.pause to insert a cooperative point when we verify a PACK file (@dinosaure, @hannesm, #631)*.idx file and be able to map entries (@dinosaure, #619)ctx computed by the first-pass of a PACK file (@dinosaure, #584)bigarray-compat and mmap dependencies (@dinosaure, @hannesm, #568)Cstruct.length instead of Cstruct.len (@dinosaure, #522)decompress and checkseum (@dinosaure, @talex5, @tmcgilchrist, #523)sector_size argument when we make a PACK decoder (@dinosaure, #493, #497)trunc argument when we process a thin PACK file breaking changes An optional argument is added on the record which abstract the file-system. It should be correctly handled by underlying implementation of the file-system. It appears that, at top, we need to figure out such option, specially for Git and Cstruct_append to correctly access to memories.De.Lz77.window instead of De.windowUnmonad mmap (@dinosaure, #454) mmap is a syscall which does not block. The ability to use it outside the scheduler monad (like LWT) permits us to detach multiple processes to analyze a PACK file.
With this PR, we take the advantage of Thread or Lwt_preemptive (or more acccurately, the concurrency) to analyze a large PACK file and speed-up the clone/fetch process.
The distribution comes with a new binary, carton.verify-pack which is git verify-pack.