Skip to content

Allow custom differ and patcher format implementations #11

Open
@nyurik

Description

@nyurik

bsdiff format uses two somewhat unrelated concepts that fit many, but not all use cases: diffing algorithm and patch storage format.

There are multiple diffing algorithms which could be fine-tuned depending on the data being diffed, resulting in multiple implementations. This is usually the complicated part of the library, requiring a lot of testing and profiling.

Patch storage is far simpler, but may be optimized with different compressions (e.g. brotli), or removal of the magic BSDIFF40 prefix (e.g. in case when there are millions of small diffs being stored in the same sqlite file). Patch storage format is not affected by how the patch was generated.

I would like to discuss how qbsdiff can allow user-implemented patch storage. This way I could choose to have my own compression without the magic prefix, and store the patch in my own envelope format, while qbsdiff would pass me the raw patch data or take patch data and apply it. What do you think?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions