NAME

Vcdiff::OpenVcdiff - open-vcdiff backend for Vcdiff

SYNOPSIS

use Vcdiff::OpenVcdiff;

my $delta = Vcdiff::OpenVcdiff::diff($source, $target);

## ... send the $delta string to someone who has $source ...

my $target2 = Vcdiff::OpenVcdiff::patch($source, $delta);

## $target2 is the same as $target

This module is a backend to the Vcdiff module and isn't usually used directly.

DESCRIPTION

This module uses Alien::OpenVcdiff which is a module that configures, builds, and installs Google's open-vcdiff library.

The alien package installs the vcdiff binary for your convenience but this module uses the libvcdenc.so and libvcddec.so shared libraries so that the diffing computation is done in-process instead of forking processes.

PROS

  • Apache licensed

  • open-vcdiff supports re-using "hashed dictionaries" (but this module doesn't expose that yet).

CONS

  • Even with the streaming API open-vcdiff has a hard upper-limit of 2G file sizes and the default (which this module hasn't changed) is 64M so be warned.

  • If the source argument is a file handle, Vcdiff::OpenVcdiff will try to mmap(2) the entire file into memory with Sys::Mmap. As well as adding a dependency, this means that source files must be able to fit in your address space. Because of the file size limitation described above, this shouldn't be an issue. See the "STREAMING API" section of Vcdiff for more details.

TODO

Implement the re-usable "hashed dictionary" API.

SEE ALSO

Vcdiff-OpenVcdiff github repo

Vcdiff

Alien::OpenVcdiff

Official open-vcdiff website

AUTHOR

Doug Hoyte, <doug@hcsw.org>

COPYRIGHT & LICENSE

Copyright 2013 Doug Hoyte.

This module is licensed under the same terms as perl itself.