Xdelata Command Line Closes Out Before I Can Read What It Outputs

Saturday, April 23, 2016

Xdelta3 License Change

I have re-licensed Xdelta version three.x under the terms of the Apache Public License (version 2).

The branches were based on the near recent (iii.0.11 and 3.1.0) releases. I intend to maintain these, not those, going forward.


Friday, January 08, 2016

Releases 3.1.0 and 3.0.11 are available.

iii.0.eleven is a problems-prepare release addressing a performance bug and several crashes in the decoder (discovered by afl-fuzz).

iii.1.0 is a beta release, supports source-window buffer values (-B) greater than 2GB.

The iii.one.0 release uses a 64-chip hash office, currently performs 3-5% slower and has 1-two% worse compression. This volition be addressed in future releases.

Saturday, July 25, 2015

Re: Release 3.0.10

Fixes XD3_TOOFARBACK #188.

New release script runs build & examination on a diversity of platforms, with and withoutXD3_USE_LARGEFILE64.

MinGW build & test in mainline:./configure --host=x86_64-w64-mingw32.

Monday, March thirty, 2015

Re: Release 3.0.9 on Github

Version 3.0.ix is a maintenance release. This release contains pocket-sized bug fixes and compiler / portability improvements.

The Github site is new. As explained in README, the site is yet under construction; issues and wiki pages were transferred from code.google.com. Checkins for iii.0.9 and a new "64bithash" branch are in the development repository, for now.

(The new co-operative is aimed at supporting -B flag values greater than 2GB and will be released as 3.ane.0 when information technology is passes testing.)

The following public key may be used to verify future Xdelta releases.

-----Begin PGP PUBLIC Key BLOCK----- Version: GnuPG v2

mQENBFUaKl8BCACtXVrndSXjMdbdqt2+EA5U7YFzqxUnBYGVNcd7Bg+F7lP0n5zp
r4odp7T0MVxcodpu3VpPcb64zNAnU0gWWg3NTIaNjV5LxTGz+ii9IFQiZRs33IR+
PiPsP0gl6OUSsf6KYAa5ploM1P3fWovDZ1QSGndSsCULCcSjOdEfC8vUKYebnDfh
ryoNQPcWtlgD0r0FFW79XGwLdPsbHyDX3TtWfxZHkp24Byl04gVg3GIfPHLL3Nyg
xnM97XPdW/u+zmgx++90QJ0jEm9+kFeLlLF2XuytrIcRPA7w5p9Mad8M41Fh19dn
+/fxz6Cnnm6vu8bzUDk20hntbXuuSmFFPqqRABEBAAG0KUpvc2ggTWFjRG9uYWxk
IDxqb3NoLm1hY2RvbmFsZEBnbWFpbC5jb20+iQE3BBMBCAAhBQJVGipfAhsDBQsJ
CAcCBhUICQoLAgQWAgMBAh4BAheAAAoJECue1N8Kv7ER3sQH/i8AHvnNX41Xs9uP
lkNyMl3jYsDyBktlx3gASUcI63BgYLBo88GxGfQzsKi3hmkJpl8LnZI0YQ6FBu8W
AQeur4LMd0phJGJLD1Ru7HNbA+IDRLWk+oWx7ZFfu4uRHj9hp4BqLGBjCjlIX9kP
jqUGpeDoO/oLEk2HkWq8QkbPTZhS8vZNudEmIGmpn2ZmVOzXxMF1FK/477caEwfY
7cx1ZazSTigCnTybELUCVYtSNv7G435nltR73r1uP9BOuR7leJY7vXiO+XEK5wSG
NTDwJe0kvdKIX4p3ykfgTy8Wn8TQDTS0Ab9qHPx1LKpm1gtr3n1+uK6xGWB0/9U9
SCxHhiK5AQ0EVRoqXwEIAMikTIsBGdyjgG7BuvkoJrOmSHNU+YU1qP3K+fdxIuTH
3Kr2qZ884ZsLVsJzF/VPrUHhWX1uvjZG20m5g7NNiKaKMzbgj9WfPlwVGb5+5tjd
ZKEfE88nacYRw/pXyWp3wcfcOlMZrUUJ3iaU7MNS7vdudNPzc+9cFXJajQjfLXxi
e0W8m+5YmrxSZPTIuT1V5qe+bHl4CRtmfHkzVlsiyoVz8Km+oaD+vj1VWndbI/YC
W9FzHquUdfX+BdtnAUdKTZbnbAwuNmmr6x56YrKsAvfoGbA3FbTljZZMm89vGZMp
e1B2HQddSIf8N2+bSFxDxzQbChCh5GUZHjapVaWoHV8AEQEAAYkBHwQYAQgACQUC
VRoqXwIbDAAKCRArntTfCr+xEf2FB/40SIxSC1oHSLp6Gl4bAj66f7RFX+KQxCVl
AaUbcr5gGY2JFGQwXjnKNdxp88tFnHSvjEbDptqgpgG4rEbrAJLjBdSRn3rRxGDv
K3Q7rCD2RZR5X+2wdB/bO2iHJFvDcBPqc7RVpFfRbZGuWEquwyIFMjowUf9ZBStP
oKkZTqYdn5iiZ8aXy13Jil83ZbaeKpLTxSj4gQFm2O/bP6CwFige2e0DBuUEMopD
Ozhqyo6S84yCTOEqVTudIK7TzH+ZluoNS0426kEmbJZ2L5eHlQeC6l9BXLBHBNbL
73v03V6uiL1mgqZomD9xsoo0mMVf3d0QWag/Mszv6po9iZA80t/v
=PyHl
-----End PGP PUBLIC Primal Cake-----

Monday, January 13, 2014

Re: Release 3.0.eight (source) (win32) (x86-64)

Windows build at present includes support for liblzma secondary compression with "-South lzma". (Pitiful for the delay.)

(I would like to say not thank you to lawmaking.google.com for disabling download support two days hence.)

Monday, January 21, 2013

Re: Release 3.0.6 (source) (win32) (win-x64)

This is a bug fix for a performance regression in 3.0.5, which I made bachelor on November 12, 2012 without declaration. The 3.0.5 encoder would achieve poor compression for inputs larger than the source window, due to an improper fix for issue 149.

Please accept my apologies! This has demonstrated several needed improvements in the release process I'thou using, which I'll work on putting in the side by side release.

Sunday, August 19, 2012

Re: 3.0.4

Includes issues-fixes for Windows, issues noted 143, 144, 145 (incorrect UNICODE setting).

Non-Windows build now includes support for liblzma secondary compression with "-South lzma". Windows liblzma support coming soon.

Sunday, July 15, 2012

Release three.0.3 (source)

This release fixes issues with external compression and potential buffer overflows when using the -5 setting (verbose output) with very large input files.

This release includes automake / autoconf / libtool back up.

A sample iOS application is included, demonstrating how to use xdelta3 with the iPad / iPhone.

I've updated the 32-bit Windows binary here, I'll mail an update when a 64-bit build is available.

Saturday, January 08, 2011

Release 3.0.0 (source)

A pocket-size change in behavior from previous releases. If you run xdelta3 on source files smaller than 64MB, yous may detect xdelta3 using more memory than it has in the past. If this is an issue, lower the -B flag (see issue 113).

3.0 is a stable release series.

Monday, August 02, 2010

Release 3.0z (source)

This release includes both 32-fleck and 64-bit Windows executables and adds support for reading the source file from a Windows named pipe (consequence 101).

External compression updates. three.0z prints a new warning when it decompresses externally-compressed inputs, since I've received a few reports of users dislocated by checksum failures. Remember, it is not possible for xdelta3 to decompress and recompress a file and ensure it has the aforementioned checksum. 3.0z improves error handling for externally-compressed inputs with "trailing garbage" and as well includes a new flag to force the external compression command. Pass '-F' to xdelta3 and it will pass '-f' to the external pinch command.

Monday, Feb 15, 2010

Re: 3.0y (source)
Re: 3.0x (source)

Version iii.0x three.0y fixes several regressions introduced in iii.0w related to the new support for streaming the source file from a FIFO. This was a long-requested characteristic and I'k pleased to study that now, with the fixes in 3.0x 3.0y, it appears to be working quite well. The upshot of this feature is that you lot can encode or decode based on a compressed source file, without decompressing it to an intermediate file. In fact, you can expect the aforementioned compression with or without a streaming source file.

At that place were also reports of the encoder becoming I/O leap in previous releases, caused by the encoder improperly seeking backwards further than the settings (namely, the -B flag) allowed. This is likewise fixed, and there'south a new test to ensure information technology won't happen once more.

Windows users: I need to investigate upshot 101 before building a release of3.0x 3.0y. Until I tin can confirm that streaming-source-file support works on Windows, please continue using the 3.0u release.

Update: The congenital-in support for automated decompression of inputs is interacting desperately with the new source handling logic, results in poor compression.

Sunday, October 25, 2009

Re: 3.0w (source)

With such a good land of affairs (i.e., no problems reports), I was able to tackle a top-requested feature (59, 73). Many of you take asked to exist able to encode deltas using a FIFO as the source file, because it ways you lot can encode/decode from a compressed-on-disk source file when you don't take enough deejay infinite for a temporary uncompressed re-create. This is now supported, with one caveat.

When decoding with a non-seekable source file, the -B flag, which determines how much space is dedicated to its cake cache, must be gear up at least as large every bit was used for encoding. If the decoder cannot go on because -B was not set up large enough, yous will see:

xdelta3: non-seekable source: copy is too far back (effort raising -B): XD3_INTERNAL

The stream->src->size field has been eliminated. Internally, a new stream->src->eof_known country has been introduced. This was a big comeback in code quality considering, now, the source and target files are treated the same with respect to external (de)compression and several branches of code are gone for good.

Update Issue 95: control-line decode I/O-bound in 3.0w

Wednesday, May 06, 2009

Re: MS "Linker Version Info" in 3.0u

I tin't explicate this problem written report *Meet Beneath*, indicating that Xdelta on Microsoft platforms is slower than the previous build past a factor of two.

?

            
How-do-you-do ... !

First of all I want to thanks for creating XDelta tool.
Realy nice and well documented stuff which sometimes helps a lot.
When I changed from v3.0t to v3.0u I've noticed some slowdown
in processing time. Well, it was but visual ascertainment so I decided
to conduct a couple of tests. Here's what I've washed.
Examination was conducted on virtual memory disk using RAMDiskXP v2.0.0.100
from Cenatek Inc. It was done to exclude any impact from IO system.
Processing time was measured with Timer v8.00 tool by Igor Pavlov.
Test files size is about 275 MB. More exactly speaking 288 769 595
bytes for Test.dat.sometime and 288 771 262 bytes for Test.dat
Command line for XDelta is:
timer xdelta3 -five -9 -A= -B ten -Due west x -I 0 -P ten -south Exam.dat.old Test.dat Diff.dat
where x is one of the values given below with the test results.

iii.0t three.0u
----- ----- --------------
16384 3.687 6.391 73.three% slower
65536 three.469 6.125 76.vi% slower
1048576 ii.578 5.453 111.five% slower
4194304 iii.281 6.625 101.9% slower
8388608 iii.953 7.718 95.2% slower

As you meet v3.0u is averagely 91.7% SLOWER !!! I don't think it'south a
some evil coincidence cause I redone every test twice. I have only one
clue. I see Linker Version Info in v3.0t exe-file is 8.0 while is nine.0
for the v3.0u exe-file so I suppose you changed or compilator itself
or its version.
I'll be very glad to hear from you.
Truly yours, ...

Wed, March 11, 2009

Re: three.0v source release

I'm releasing SVN 281, which has an API set (meet issue 79). There's a new group for future announcements.

Thursday, January 29, 2009

The wiki has keen comments:

All I desire to do if create a delta (diff) of two binary files.

How practise I do that? If indeed xdelta tin can do this?


Make patch:
xdelta3.exe -e -s old_file new_file delta_file

Apply patch:
xdelta3.exe -d -s old_file delta_file decoded_new_file

(From Batch file for xdelta1/xdelta3 compatibility)


I am using xdelta in windows. If a file is opened in microsoft give-and-take and while the file is still open I effort to use xdelta to produce difference with another file, the following error happens. xdelta3: file open up failed: read: : The procedure cannot admission the file because it is being used by another process.

I suspect that this is because xdelta tries to open up the file in non share mode. I found that if ms word is using a file and we try to open that file in a c# program in non shared mode the same fault is thrown equally above but if we open the the file in shared style while in employ by MS give-and-take,no mistake occurs.


Yep, I too can ostend the problem that a xdelta file cannot be created if the source file is being shared with another application.

if you are using either Windows 2003 server or Windows 2008 server, yous can apply 'volume shadow re-create' vssadmin create shadow /For=C:

then employ dosdev.exe to map a drive to the shadow, y'all can so access the files without there being an result with locks, this applies to whatever file that was located on that drive including sql databases and any other locked files.

if you are running .Cyberspace Framework v3.five I have written a small utility to automate the creation and deletion of the shadows and map the drive, delete the drive. Email me straight at alex at intralan dot co dot great britain and I will transport a copy.


my friend and i r using this program but he gets better pinch than me and is not tellin me how he is getting almost double the compression, i make the file 650mb from 1gb but he makes it 349mb, same source files r used the command m using is delta3.exe -e -ix -S djw -southward source target patch what is the control line for maximum compression

How tin can I become the python version to work?

This is what I become when I run setup. I compiled information technology with Cygwin and so with Visual Studio, both times I become the same msg when running setup. Any suggestions?

c:/xdelta3> python setup.py install --verbose --compile --force running install running build running build_ext fault: Python was built with Visual Studio 2003; extensions must be built with a compiler than can generate compatible binaries. Visual Studio 2003 was not found on this system. If you have Cygwin installed, yous can try compiling with MingW32?, past passing "-c mingw32" to setup.py.


What are the commands for the new merging/combining features?

Is there a way to get xdelta to take two binder path, recurse through them and practise a delta for dir1 vs dir2?

Thank yous for xdelta! <3

Answers to the final two questions:

To merge/combine:

xdelta3.exe merge -chiliad file.1.2 -m file.2.3 file.iii.four patch.1.4


There is non a way to take two dirs, recurse through them and exercise a delta for dir1 vs dir2, but that would be a corking characteristic. (Issue 21)

Other top problems and requests:

one. Source file from a FIFO: currently xdelta3 does not support reading the source file from a not-seekable file, but information technology's not because the of algorithm, it's a small lawmaking limitation and can exist stock-still. (Issue 59 is a dup of 73, which includes a patch).
ii. Smart ISO paradigm pinch: If you lot accept a set up of files and produce ISO1, then produce a afterward fix of files every bit ISO2, just the files are in a completely different order, pinch suffers. Try setting -B size equal to the ISO size, if possible. (Issue 71)

Saturday, September 13, 2008

Re: Xdelta-3.0u (source)

2008.10.12 update: Windows executable posted

Release Notes:

  • New xdelta3 merge control (upshot 36)
  • Windows stdin/stdout-related fixes (event 34)
  • Fix API-only infinite loop (result 70)
  • Various portability and build fixes (gcc4, DJGPP, MinGW, Big-endian, Solaris, C++)
  • New regression test (yeah!)

The new merge command allows you to combine a sequence of deltas, to produce a unmarried output that represents the net effect of the sequence. The command is reasonably efficient because it computes the result directly, without constructing whatsoever intermediate copies (and without admission to the first-of-chain source). I say "reasonably" because there's a soft spot in this algorithm.

A VCDIFF encoding contains two kinds of copy instructions: (1) copies from the source file, which the merge control tin can interpret with direct-forrad arithmetic, and (2) copies from the target file (itself), which are more difficult. Considering a target copy can copy from another target re-create before in the window, merging from a target re-create at the terminate of a window may involve post-obit a long concatenation of target copies all the way to the beginning of the window. The merge command implements this today using recursion, which is not an efficient solution. A better solution involves calculating a couple of auxiliary data structures so that: (i) finding the origin of a target re-create is a abiding-fourth dimension operation, (2) finding where (if at all) the origin of a target copy is copied by a subsequent delta in the chain. The 2nd of these structures requires, essentially, a function to compute the inverse mapping of a delta, which is a characteristic that has its own applications.

Summary: the merge command handles target copies inefficiently, and the code to solve this problem volition let united states reverse deltas. Together, the

merge

and

contrary

commands make a powerful combination, making it possible to shop O(N) delta files and construct deltas for updating between O(N^2) pairs using efficient operations. This was the basis of xProxy: A transparent caching and delta transfer system for web objects, which used an older version of Xdelta.

I'm making a source-only release, which I haven't done in a while, because I don't have the necessary build tools for Windows (due to a cleaved machine) and I don't want to delay this release considering of it.

Th, September 04, 2008

Re: Google's open-vcdiff

Google released a new open-source library for RFC 3284 (VCDIFF) encoding and decoding, designed to support their proposed Shared Lexicon Compression over HTTP (SDCH, a.k.a. "Sandwich") protocol.

This is great news. The author and I have had numerous discussions over a couple of features that VCDIFF lacks, and now that we have 2 open-source implementations nosotros're able to make existent progress on the standard. Both Google'due south open-vcdiff and Xdelta-three.x implement a extensions to the standard, but I ran a simple interoperability examination and things look good. Run xdelta3 with "-n" to disable checksums and "-A" to disable its awarding header.

A big thank you to Lincoln Smith and Google'south contributors. (Disclaimer: I am an employee of Google, only I did not contribute any code to open-vcdiff.)

P.S. I'1000 nevertheless debugging the

xdelta3 merge

command, stay tuned to upshot 36.

Wed, July 09, 2008

Re: Regression test framework

iii.0t released in December 2007 has turned out to be extremely stable, and I'm decorated preparing the first non-beta release candidate. The problem with being stable is the risk of regression, so I've been nervously putting together a new regression testing framework to help do obscure bugs.

The almost critical issues reported since 3.0t is a non-blocking API-specific trouble. Sure bugs only affect the API, non the

xdelta3

command-line application, considering the command-line application uses blocking I/O fifty-fifty though the API supports non-blocking I/O. Result 70 reported an space loop processing a certain pair of files. The reporter graciously included sample inputs to reproduce the problem, and I fixed it in SVN 239.

But I wasn't happy with the prepare until at present, thanks to the new regression testing framework. With ~l lines of code, the test creates an in-memory file descriptor, and then creates ii slight variations intended to trigger the bug. SVN 256 contains the new exam.

So just what is it that makes me feel three.x is and so stable? It'south e-mails similar this from Alex White at intralan.co.britain:

    Hello Josh,

    FYI:-

    Been using XDelta for a while now, been working flawlessly (I wish all software could be this stable), been patching upwards to 1tb of data per day (across many servers), largest single file to date 70gb!!!

    Did some functioning testing and with standard SATAII drives with both sources and the patch being created on the aforementioned drive the processing was around 300mb per infinitesimal (creating patches), setup a dual drive configuration where one of the sources was on a second bulldoze and so the processing was effectually 1gb per minute (creating patches) .

    All-time big file patch to original file size ratio,

    Original file size: 56,147,853,312

    Patch file size: 299,687,049

    Patch file reduction over original file size 99.47%

    This file took 2 hours and 21 minutes to patch in a real globe setting.

Thanks for all the feedback! I similar stable software as well.

Monday, April 21, 2008

Update for Apr 2008:

I started making beta releases for Xdelta-3.x 4 years agone. There were a lot of bugs and then. Now the bug reports are dwindling, so much so that I've had a chance to work on new features, such as ane requested by upshot 36. Announcing the

xdelta3 merge

command. Syntax:

xdelta3 merge -m input0 [-m input1 [-k input2 ... ]] inputN output

This command allows you to combine a sequence of deltas, producing a single delta that combines the effect of applying two or more than deltas into one. Since I oasis't finished testing this feature, the lawmaking is but available in subversion. Run into here and savour.

Thursday, December 06, 2007

Xdelta-3.0t release notes:

  • Improves compression by fugitive inefficient small copies (eastward.one thousand., copies of length 4 at a distance >= 2^xiv are skipped)
  • Fixes an uninitialized array chemical element in -S djw which did not crusade a crash, but caused less than platonic compression and test failures
  • Fixes bugs in xdelta3 recode, tests added
  • All tests pass under Valgrind

Thursday, November 08, 2007

Xdelta-three.0s release notes:

  • Faster! Several optimizations to avoid unnecessary arithmetic
  • xdelta3 -1 has faster/poorer compression (xdelta3 -2 is the former configuration)
  • -S djw exposes secondary pinch levels as -S djw1 .. -S djw9
  • Removes "source file too large for external decompression" error check
  • API support for transcoding other formats into VCDIFF

Xdelta-iii.0r release notes:

  • Fixes an encoder crash acquired past -S djw (secondary compressor) on sure data, new tests for code-length overflow
  • Adds new recode control for re-encoding a delta with unlike secondary compression settings
  • Fixes API-specific bugs related to non-blocking calls to xd3_encode_input and xd3_decode_input
  • Adds new examples/encoder_decoder_test.c programme for the non-blocking API

Equally an instance of the new

recode

control and secondary compression options:

$ ./xdelta3 -Southward none -s xdelta3.h xdelta3.c OUT  # 53618 bytes
$ ./xdelta3 recode -S djw1 OUT OUT-djw1 # 51023 bytes
$ ./xdelta3 recode -S djw3 OUT OUT-djw3 # 47729 bytes
$ ./xdelta3 recode -S djw6 OUT OUT-djw6 # 45946 bytes
$ ./xdelta3 recode -S djw7 OUT OUT-djw7 # 45676 bytes
$ ./xdelta3 recode -S djw8 OUT OUT-djw8 # 45658 bytes
$ ./xdelta3 recode -S djw9 OUT OUT-djw9 # 45721 bytes

Secondary compression remains off by default. Passing

-Due south djw

is equivalent to

-S djw6

.

Wednesday, July 18, 2007

I'm happy near an eastward-mail from a manager at Pocket Soft, clarifying what was written in my previous post. Apparently, Pocket Soft deserves recognition here because, commercially speaking, they're the simply basis for comparison sent by users. I am posting the entire content here.

    Hi, Josh. I'm the Manager of Software Engineering at Pocket Soft, makers of RTPatch. I'd like to accost a misquote contained in your June 28th postal service and hopefully clear the air and explicate Pocket Soft's official position with respect to open source, patents and caput-to-head comparing with XDelta. I'grand happy for y'all to employ all or part of my email inside your site, if yous feel it is appropriate.

    First of all, the quote "xdelta likely infringes on our patents as well" is inaccurate (nobody from Pocket Soft made that specific remark to anyone at anytime); nonetheless, it does embody the essence of a statement fabricated past 1 of our salesmen to a company in Australia that could have been *construed* to suggest a patent infringement merits. This was a 1-time incident, and was not representative of Pocket Soft'due south corporate position. In fact, our CEO spoke to the CEO of the Australian outfit who received this message and explained that it was the result of an overzealous salesman. We have also addressed this issue internally with all staff.

    In fact, Pocket Soft is a supporter of open source software, and understand that it serves a great purpose in our manufacture. Farther, having spent the last 15+ years on the specific problems associated with byte-level differencing, nosotros have a great appreciation for the work that you accept done on XDelta. The purpose of patents for Pocket Soft'southward apply are in fact defensive and to serve every bit a sales "check list" for our Enterprise customers. Consider the post-obit [article].

    In detail, the department of "Legal Risk" comes into play oftentimes with the OEM and fifty-fifty shrink-wrap sales we brand to Enterprise. When you lot are selling to the Oracles of the earth, we are virtually always asked "what about indemnity?". The beingness of a patent on the core technology helps to alleviate fears of legal adventure - regardless of your, or fifty-fifty our own, opinions on software patents themselves.

    Regarding caput-to-caput comparison, nosotros are well aware of specific places where nosotros could meliorate speed or patch file size in RTPatch to gain a few points hither and in that location; nonetheless, the needs of our customers regarding reliability trump that. Your reader wrote that they had a iv.5 twelvemonth old version of RTPatch. Some of our users cling to 12 year old versions fearing the possibility of destabilization with a new release. Our Enterprise customers like to hear that we tin can claim with absolute sincerity that the current patch file format, Build engine, etc., have been thoroughly tested and that the same algorithms are being used for the 1000000+ patches applied every single day by users of RTPatch (McAfee and Trend Micro alone put out that many patches). When the US Navy began using RTPatch for their digitized nautical charts used by ships at body of water, they cared less about gaining a few more than points on size reduction or even speed of Build. They needed
    reliability and robustness.

    This is not to say that your product lacks these characteristics. I am speaking only to the problems that we are faced with daily by our customers and potential customers. We also accept to bargain with the extended feature-set of RTPatch, including support for Windows Installer, automatic patch commitment mechanisms, as well as a host of Windows-specific features and options (cocky-registering files, registry support, etc.). The core algorithm is, of grade, important, but in our market, in that location is much more than merely byte-level differencing at play.

    Finally, on a personal note, I wanted to say that we're not a big, bad corporation out to squash or bang-up innovators of open up source software. On the contrary, we appreciate the attending y'all draw to yourself, which in turns brings companies who are in our market, to the attention of RTPatch. I understand that yous piece of work at Google now, so I'yard sure that you lot know that not *all* companies are evil. :)

    I hope you took the time to read this far. I certainly appreciate the opportunity to clear the air. Feel complimentary to call or email anytime, and I'd be happy to conversation.

    Best of luck to you,

    Tony O-
    Manager, Software Applied science
    Pocket Soft, Inc.
    713-460-5600

I've received a steady stream of electronic mail regarding Xdelta ever since version 0.xiii was released (Oct 12 1997) and this is 1 of the nicest ones ever. Cheers.

Re: Patents and the Oracles of the world

The threat model is: I will sell a software license excluding you from the (copyright-related) terms of the GPL, giving you unlimited utilize for a apartment fee, but it's done without representations, warranties, liabilities, indemnities, etc. The statement is, your company could exist sued over intellectual property rights if any of the following technologies and programs should fall to a claim (although they accept never to my knowledge been in doubt): Zlib-one.x, Xdelta-1.x, and the draft-standard RFC 3284 (VCDIFF).

I will say this:

    In the event [Company] discovers that Licensor is not the legal owner and title holder of whatsoever code sequence inside Xdelta delivered under this Agreement, [Company] shall notify Licensor of such discovery in writing, including the specific software code sequence in question, and shall give Licensor I Hundred Eighty (180) days to replace same with a functionally equivalent code sequence that Licensor is the legal owner and title holder of, all prior to invoking any class of relief which may exist permitted under this Understanding. (contact me for a sample license)

But, patents aren't the real issue to me, in this postal service or the last, information technology's most support and features. This really is more than "just byte-level differencing at play".

Re: Support

In the unlikely issue that y'all discover an Xdelta crash or incorrect upshot, I'k really interested in fixing it. I go along runway of issues. I respond to email, like this one most directory-diff support:

    hi, i'one thousand using your AMAZING(!) xdelta 1.1.three and is fantastic...i employ it for brand the patches for my translations and stuff like these...i was wondering...is it possible to implement a feature that expand the process to all the subdirectories? using a for similar this for %%i in (*.*) do xdelta delta "OLD\%%i" "NEW\%%i" "%%i.patch" it doesn't recreate the dir tree and information technology doesn't accept the subdirectories...what practise y'all call up almost that?

Here's a user-submitted perl script for recursive directory unequal. (To which the sender replied, "I don't know barely goose egg about perl," making two of us.) If y'all have your ain engineers, if Xdelta passes your tests, you lot probably don't need back up. If you're McAfee or the US Navy, you need support. Here's someone who needs back up:

    Nosotros are using xdelta3 to shrink our backups downwardly at my workplace and information technology is working excellently, however whichever motorcar it is run on is put out of commission for the duration due to the xdelta3 executable window popping up for each file. Would it be possible to build the xdelta3 program every bit a DLL, much like zlib is? I take absolutely no cognition of C/C++ so I don't know if this is a huge inquire or not :)

I'd rather piece of work on my machine project than self-registering files, thank you lot very much. =)

Thursday, June 28, 2007

No new versions posted since March, and then a few updates. One user sent a MSDOS .bat script for xdelta1/xdelta3 control-line compatibility, some other sent a perl script for recursive directory diff, one user reports skillful performance for an in-kernel application (sample code), and some feature requests. Given the lack of bug reports, it's nigh time to take xdelta3 out of beta.

Several of yous have requested a feature for supporting in-place updates, allowing you to apply deltas without making a copy of the file, which brings me to another flake of user feedback:

    Firstly, I'd just like to permit y'all know that we did a lilliputian benchmark at work and xdelta3 came out on top from several utilities in terms of both execution speed and final output size.

    One of those utilities is a iv.five year quondam version of RTPatch which we take a license for.

    One of my work colleagues emailed Pocket Soft most this, and as well as the obvious "you're using an old version" response, and "open up source software has no support" arguments, they also said something along the lines of: "xdelta likely infringes on our patents also", implying that using it may exist illegal.

    Being a great supporter and user of open source in my spare time, I am totally against this sort of spreading of F.U.D., equally well as the very idea that software is patentable.

    I'm not sure if my work colleague emailed yous as well, but I merely thought I'd permit you know. :)

And the funny role is, users were proverb 5 years agone that Xdelta 1.x beats RTPatch. :)

I take to give thanks the IETF and previous work in open source (e.g., RFC 1950 – Zlib, RFC 3284 – VCDIFF) for making this possible. Zlib bills itself "A Massively Spiffy Even so Delicately Unobtrusive Compression Library (Also Free, Not to Mention Unencumbered by Patents)", and in fact Zlib inspired Xdelta'due south API from the start (information technology'due south "unobtrusive"). Permit'southward non forget Zlib'due south other master advantage (it's "unencumbered"). As for the the previous request (in-place updates), involvement is stiff but patents could become an issue.

Multi-threaded encoding/decoding is another frequent request. The thought is that more than CPUs can encode/decode faster by running in parallel over interleaved segments of the inputs. That'southward futurity piece of work, and probably a lot of information technology, simply I like the idea.

Xdelta 3.0q has 11,480 downloads. It's you the user that feeds open up source, and thanks for the peachy feedback!

Sunday, March 25, 2007

Xdelta three.0q features a new MSI installer for Windows.

Thanks to many of yous for your feedback on Windows installation (issues xvi, 26, 27). Thank you particularly to Nikola Dudar for explaining how to do it.

Release iii.0q fixes Windows-specific issues: (i) do not buffer stderr, (2) allow file-read sharing. Thanks for the feedback!

Thanks for the following build tools:

Windows Installer XML (WiX) toolset
Microsoft Visual C++ 2005 Redistributable Package (x86)
Microsoft Visual C++ 2005 Express Edition
Microsoft Platform SDK for Windows Server 2003 R2

Tuesday, February 27, 2007

Plot shows the performance of variable compression-level settings, 10 (time) and y (compressed size), tested on a specific pair of buried 130MB inputs.

Pinch has an inverse relation between time and space operation. The green line is a hyperbola for reference, f(x) = 1.33MB + (30KB*s) / (x - 2.45s). Sample points:

1.49MB in 2.9sec at ~45MB/sec (98.9% compression)
i.34MB in 6.5sec at ~20MB/sec (99.0% compression)

Sunday, Feb 18, 2007

Re: Xdelta 3.0p (download)

Xdelta-3.ten processes a window of input at a time, using a fixed memory budget. This release raises some of the default maximums, for ameliorate large-file compression. The default retentiveness settings for large files add up to nearly 100Mb. (*)

A user wrote to confirm good functioning on three.7Gb WIM files, keen!

    Then, to answer the question in your postal service on January 28th, yes we are using xdelta3 with files larger than 1Gb and it's working well.

    I'm off to attempt boosting the compression and see how much nosotros can scrunch the patch down. Thank-yous for an extremely useful tool that is going to hugely improve our ability to distribute updates to our build images.

At the other extreme, a developer wrote to ask near using xdelta3 in the Xen kernel. Here'southward an instance of xdelta3 configured for a 4Kb page using 32Kb.

A user writes about code size:

    I saw your mail service where you lot said you'd improved the compression in Xdelta3 and that it was at present slightly faster than 1.1. Exercise you lot happen to know where the 2 stand without compression enabled? (We don't utilize Xdelta's compression considering nosotros shrink all of our files after the fact with Rar solid compression.) Thanks too for the link to those benchmarks. Those were quite helpful, and information technology'due south absurd to see Xdelta come out on top. ;)

    I will say this: One nice matter about the new Xdelta is its smaller size! Xdelta 1.i'southward exe is 1Mb when not compressed via UPX, whereas Xdelta3 is 100Kb. Nice. :)

Thanks! Xdelta3 is faster and better than Xdelta1 with compression disabled (the

-0

flag), thanks to VCDIFF and other improvements.

I'm looking for your ideas on recursive directory diff. 1 solution uses tar:

    XDELTA="-s source" tar --use-shrink-program=xdelta3 -cf ...

This arroyo is better than computing pairwise differences, since data can be copied across files/directories. Pay attention to file order and source buffer size. Microsoft developers, consider using the WIM deejay image format.

Thank you for the feedback (file a new upshot).

(*) Xdelta-1.x processes the whole input at one time, and its information construction takes linear space,

(source file size/2)+O(one)

. Xdelta-1.x reads the the entire source file fully two times (to generate checksums, to match the input), using at least half as much retentivity equally the source file size.

Wednesday, February 07, 2007

Users desire speed, especially video gamers. I tested with some of your data: Unreal tournament and Wesnoth patches. These patches save fifty-100MB per download.

Xdelta1 remains popular today considering of speed, and xdelta3 until now hasn't been as fast (debdev has tests). Xdelta-3.0o has improved compression levels (download).

Over my sample data, the new default pinch level (aforementioned as the command-line flag

-1

) is a little faster than, with compression roughly the same equally Xdelta-1.x. Compression levels

-3

,

-six

, and

-9

are also improved.

This release also features Swig support, e.g.,

    import xdelta3

    # retentiveness interface
    source = 'source source input0 source source'
    target = 'source source target source source'

    result1, patch = xdelta3.xd3_encode_memory(target, source, len(target))
    result2, target1 = xdelta3.xd3_decode_memory(patch, source, len(target))

    assert result1 == 0
    assert result2 == 0
    assert target1 == target
    affirm len(patch) < len(target)

    # command-line interface

    source_file = ...
    target_file = ...
    command_args = ['xdelta3', '-f', '-s', source_file, target_file, output_file]

    xdelta3.xd3_main_cmdline(command_args)

Re: SVN teaser

SVN 125 has a new

XDELTA

environment variable for passing flags off the control-line, and then yous tin can use xdelta3 in conjunction with tar:

    consign XDELTA
    XDELTA="-s source-i.tar"
    TAR="tar --use-compress-plan=xdelta3"
    $TAR -cvf source-1-source2.tar.vcdiff source-2/
    ...
    $TAR -xvf source-1-source2.tar.vcdiff source-two/file

This creates/extracts-from a delta-compressed tar file, without using intermediate files.

Thursday, Feb 01, 2007

Re: Performance

From The Old Joel on Software Forum:

    I checked out rtpatch and xdelta a petty while agone - unless there'south something wrong with the demo version rtpatch has on their website, xdelta is significantly faster at making patches, and they are a tiny bit smaller.

    The test I ran was on a 200 Million awarding, where about xxx megs of random parts of files was different. Rtpatch took around an hour (not sure since I wandered off while waiting) and xdelta took a couple minutes.

    We ended upward rolling our own organization anyhow, considering our awarding has pretty serious requirements on robustness. Maybe we should attempt selling it?

Thanks! 5 years afterwards.

Another mail in the same thread writes:

    I did some inquiry on 'patching' similar issues, read some papers on the "Longest Mutual Subsequence" problem, wrote some prototype code... And we ultimately decided to defer the effect in our product. Notation that we weren't trying to patch our software, we were interested in including tools in our production that would allow administrators to build patches for applications they back up in firm.

    Long story short...it's a heavily researched issue in Estimator Science, just it'southward still a difficult problem to solve well. At that place are both infinite and time considerations, although running on a 'modern' Os with virtual memory eases the space consideration. After my evaluation, my approximate was that RTPatch was in no way producing an optimal solution, but that they were relying on compression to proceed the size of the patch small. Their genius lies in being able to generate a patch so rapidly...

Longest mutual subsequence isn't quite the same problem, but it'southward true that pinch performance should be measured in several dimensions: size (of compression), memory usage, and speed. Xdelta3 supports compression levels -1 (fast) through -9 (best).

Virtual memory does not ease the space consideration. Reading from disk is terribly slow, so Xdelta3 avoids seeking backwards in the source file during compression. Read more than about xdelta3 memory settings.

Re: SVN 100

If yous're keeping up-to-date by subversion, with the xdelta source code, version 100 has a few contempo changes: (1) compiles on cygwin (ane.x and 3.x), (2) responding to issues written report 17.

Sunday, Jan 28, 2007

Re: Xdelta 1.i.4

An specially grateful user wrote me to say thanks for the open-source software:

    Firstly, Xdelta is an impressive piece of software, and I appreciate you writing it. I've done some tests and establish it to be orders of magnitude faster than RTPatch, the expensive commercial diffing tool!

    I'k using a Windows ported version of Xdelta ane.1.3 in a project I'm working on hither, and it works cracking. (I realize that XDelta 1.1.3 is old, but I similar how fast it is relative to the results). Because that version is licensed under the GPL, I am including a copy of XDelta.exe with the program instead of integrating the lawmaking directly. I'm content to continue doing this, as evidently I want to respect your licensing wishes for the software. (*)

Thanks! Another writes:

    I hope you can release a bugfix and rub off the beautymarks. xdelta-1.1.ten is notwithstanding used widely and a maintenance release would be appreciated.

Thanks once more! =)

This is a maintenence release: Xdelta 1.ane.4 remains essentially unchanged since 1999. This release fixes a problems: Compressed data from 32-bit platforms failed to decompress on 64-chip platforms. This is fixed in the decoder (it was a badly-designed "hint", now ignored), so you lot can now read old 32-flake patches on 64-bit platforms. Patches produced by 1.1.4 are still readable by ane.1.3 on the same platform. Still, Xdelta one.1.x is losing its edge.

Xdelta3 compresses faster and meliorate, using a standardized information format—VCDIFF, and has no dependence on gzip or bzip2. If using a standardized encoding is not particularly important for you, Xdelta3 supports secondary compression options. Xdelta3 (with the

-9 -S djw

flags) is comparible in terms of pinch, but much faster than bsdiff. Xdelta3 includes a Windows

.exe

in the official release.

As always, I'grand interested in your feedback (file a new issue). Are you compressing gigabyte files with Xdelta3? Have you used dfc-gorilla (past the makers of RTPatch)?

Sunday, January 21, 2007

Xdelta3 has a stream-oriented C/C++ interface. The application program can compress and decompress information streams using methods named

xd3_encode_input()

and

xd3_decode_input()

. With a not-blocking API, it'due south near equally easy every bit programming Zlib.

Read nigh information technology here.

Cheers for your feedback (file a new issue).

Monday, January 15, 2007

Release 3.0l (download)

This release raises the instruction buffer size and documents the related performance event. Issues related to setting

-W

(input window size) peculiarly minor or especially large were fixed: the new minimum is 16KB, the new maximum is 16MB. A regression in the unit test was stock-still: the compression-level changes in three.0k had broken several hard-coded exam values.

The encoder has compression-level settings to optimize variously for time and infinite, such as the width of the checksum part, the number of duplicates to check, and what length is considered skillful enough. At that place are 10 parameters (Zlib, past comparision, has 4), just the flag which sets them (

-C

) is undocumented. I am documenting these and developing experiments to find improve defaults.

At that place's a new page about external compression.

Thanks for your feedback (file a new issue).

Friday, January 12, 2007

Release 3.0k (download)

This is the first release making only performance improvements, non bug fixes. The default source buffer size has increased from viii to 64 megabytes, and I've written some notes on tuning retention performance for large files. I've been running experiments to find better compression-level defaults. This release has two default compression levels, fast (-one through -5) and the default slow (-vi through -9), both of which are faster and better than the previous settings. There'due south more work to do on tuning in both regards, memory and pinch level, but this is a starting bespeak.

There is a new wiki on command line syntax. Thanks for your feedback (file a new issue).

Sunday, January 07, 2007

Release 3.0j (download)

The self-test (run past xdelta3 test) now passes. In that location had been a regression related to external-compression, and several tests had to exist disabled on Windows. Also fixes VCDIFF info commands on Windows (e.one thousand., xdelta3 printdelta input ) and memory errors in the Python module.

Thanks for your continued feedback (file a new issue). A user reports that xdelta3.exe should not depend on the C++ eight.0 Runtime. I agree—this is written in C. The source release includes a .vcproj file, in example yous'd like to attempt for yourself.

Saturday, December xvi, 2006

Thanks for your feedback. (Submit a new report).

Release 3.0i builds with native Windows I/O routines (enabled by

/DXD3_WIN32=1

) and has been tested on 64 bit files. (Issue airtight).

Windows: download
Source: download

Sunday, December x, 2006

#include <windows.h>

Ladies and Gents,
Version 3.0h runs on Windows.
Please head straight for the latest download of your choice:

Source
Windows x86-32
OSX PPC

I idea I'd share this outset and test it afterward, let you be the gauge.

In that location are non a lot of platform dependencies. The main() routine has helpful options:

  • /DXD3_STDIO=1 builds with portable I/O routines
  • /DEXTERNAL_COMPRESSION=0 builds without external pinch, which requires POSIX system calls

A call to gettimeofday() had to exist replaced:

            
static long
get_millisecs_now (void)
{
#ifndef WIN32
struct timeval tv set;
gettimeofday (& tv, NULL);
return (tv.tv_sec) * 1000L + (idiot box.tv_usec) / 1000;
#else
SYSTEMTIME st;
FILETIME ft;
__int64 *pi = (__int64*)&ft;
GetLocalTime(&st);
SystemTimeToFileTime(&st, &ft);
return (long)((*pi) / 10000);

0 Response to "Xdelata Command Line Closes Out Before I Can Read What It Outputs"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel