{"id":13643546,"url":"https://github.com/zchunk/zchunk","last_synced_at":"2025-10-21T04:56:01.145Z","repository":{"id":30191359,"uuid":"124198735","full_name":"zchunk/zchunk","owner":"zchunk","description":"A file format designed for highly efficient deltas while maintaining good compression","archived":false,"fork":false,"pushed_at":"2025-08-08T09:39:39.000Z","size":4347,"stargazers_count":258,"open_issues_count":14,"forks_count":38,"subscribers_count":12,"default_branch":"main","last_synced_at":"2025-10-21T04:55:53.883Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zchunk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-03-07T07:46:20.000Z","updated_at":"2025-10-21T02:01:19.000Z","dependencies_parsed_at":"2023-12-20T10:55:21.707Z","dependency_job_id":"1dfc6673-c53a-40b4-8e64-11f19ef3422a","html_url":"https://github.com/zchunk/zchunk","commit_stats":{"total_commits":496,"total_committers":21,"mean_commits":23.61904761904762,"dds":"0.14717741935483875","last_synced_commit":"c8538d6ddb1f78a819952b20b9510618b6573192"},"previous_names":[],"tags_count":70,"template":false,"template_full_name":null,"purl":"pkg:github/zchunk/zchunk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zchunk%2Fzchunk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zchunk%2Fzchunk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zchunk%2Fzchunk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zchunk%2Fzchunk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zchunk","download_url":"https://codeload.github.com/zchunk/zchunk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zchunk%2Fzchunk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280207209,"owners_count":26290616,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-21T02:00:06.614Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T01:01:49.086Z","updated_at":"2025-10-21T04:56:01.116Z","avatar_url":"https://github.com/zchunk.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"# zchunk\n\n[![Coverity Scan Build Status](https://img.shields.io/coverity/scan/16509.svg)](https://scan.coverity.com/projects/zchunk-zchunk)[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fzchunk%2Fzchunk.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Fzchunk%2Fzchunk?ref=badge_shield)\n\u003cbr\u003e\n[![GitHub Actions Test Status](https://github.com/zchunk/zchunk/actions/workflows/main.yml/badge.svg)](https://github.com/zchunk/zchunk/actions)\n\nzchunk is a compressed file format that splits the file into independent chunks.\nThis allows you to only download changed chunks when downloading a new version\nof the file.  Files can hosted on any web server that supports HTTP ranged\nrequests, with no special software required to serve the files (though to\ndownload only the changed chunks, your client must be zchunk-aware).\n\nzchunk files are protected with strong checksums to verify that the file you\ndownloaded is, in fact, the file you wanted.\n\n**As of zchunk-1.0, the ABI and API have been marked stable, and the only changes\nallowed are backwards-compatible additions**\n\n## Installation\nTo build and install zchunk, first install meson and run\n```\nmeson build\ncd build\nninja\nninja test\nsudo ninja install\n```\n\nIf you're building on an operating system where some libraries are stored in\n/usr/local, you'll need to replace `meson build` above as follows:\n```\nCFLAGS=-I/usr/local/include CXXFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib meson build\n```\n\n## Using the utilities\nTo decompress a zchunk file, simply run:\n```\nunzck \u003cfilename\u003e\n```\n\nTo compress a new zchunk file, run:\n```\nzck \u003cfilename\u003e\n```\n\nTo download a zchunk file, run:\n```\nzckdl -s \u003csource\u003e \u003curl of target\u003e\n```\n\nTo read a zchunk header, run:\n```\nzck_read_header \u003cfile\u003e\n```\n\n\n## Zchunk dictionaries\n\nBy default, each chunk in a zchunk file is compressed independently.  However,\nif you're creating a zchunk file that has any repetitive data, you may\nbe able to reduce the overall file size by using a [zstd dictionary](https://facebook.github.io/zstd/#small-data).\nThe dictionary takes up extra space at the beginning of the zchunk file, but is\nused as an identical initial dictionary for compressing each chunk, which can\ngive a significant overall savings.\n\nIt is important that all further revisions of the zchunk file use the same\ndictionary.  If the dictionary changes, none of the chunks will match from the\nold file, and the full new file will be downloaded.\n\nZchunk can use any zstd dictionary, but also includes a utility to generate the\nideal zstd dictionary for a zchunk file.\n\nTo create an ideal dictionary for a zchunk file, run:\n```\nzck_gen_zdict \u003cfile.zck\u003e\n```\n\nThe dictionary will be saved as `\u003cfile.zdict\u003e`.\n\nYou will then need to recompress the file with the dictionary:\n```\nzck -D \u003cuncompressed file\u003e\n```\n\nNote that `zck_gen_zdict` does require that the `zstd` binary be installed on\nyour system.\n\n\n## Documentation\n- [Format definition](zchunk_format.txt)\n- [Initial announcement](https://www.jdieter.net/posts/2018/04/30/introducing-zchunk)\n- [How zchunk works (with pretty pictures)](https://www.jdieter.net/posts/2018/05/31/what-is-zchunk)\n\n\n## License\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fzchunk%2Fzchunk.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fzchunk%2Fzchunk?ref=badge_large)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzchunk%2Fzchunk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzchunk%2Fzchunk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzchunk%2Fzchunk/lists"}