Pure Go implementation of bsdiff and bspatch for generating and applying binary patches.
go-bsdiff is a pure Go implementation of the bsdiff and bspatch tools, which are used for generating and applying patches to binary files. It solves the problem of efficiently updating binary executables or data by creating small delta patches that transform an old version into a new version, reducing bandwidth and storage needs for updates.
Go developers and system engineers who need to implement binary delta updates in applications, such as software updaters, game patchers, or embedded systems.
Developers choose go-bsdiff because it offers a native, dependency-free Go solution with both library and CLI interfaces, making it easy to integrate into Go projects without relying on external C libraries or tools.
Pure Go bsdiff and bspatch libraries and CLI tools.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses pure Go code with no external C libraries, ensuring easy integration and cross-platform portability without dependency management headaches.
Provides both programmatic APIs (pkg/bsdiff, pkg/bspatch) and command-line tools (cmd/bsdiff, cmd/bspatch) for flexibility in scripting or embedding into Go applications.
Includes reader/writer interfaces in addition to byte slices, allowing efficient handling of large files by streaming data rather than loading everything into memory.
Implements the established bsdiff 4 format, ensuring generated patches are interoperable with other tools and systems using the same standard.
As a pure Go implementation, it may not match the raw speed of native C-based bsdiff tools, especially for very large files or high-throughput scenarios where C optimizations are leveraged.
The suffix sorting algorithm (qsufsort) used during patch generation can consume significant memory, which might be problematic for resource-constrained environments or with extremely large binaries.
Solely focused on binary patching with bsdiff4, lacking support for other delta algorithms or formats, which reduces versatility for use cases like text-based or proprietary patch methods.