{"id":34616349,"url":"https://github.com/hypernewbie/vark","last_synced_at":"2026-05-27T02:34:06.266Z","repository":{"id":330238572,"uuid":"1122044834","full_name":"hypernewbie/vark","owner":"hypernewbie","description":"Vark - Simple LZAV Archive","archived":false,"fork":false,"pushed_at":"2026-04-05T20:55:24.000Z","size":17750,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-27T02:33:55.692Z","etag":null,"topics":["archive","cli","compression","cpp","game-dev","gamedev","header-only","high-performance","lzav","mmap"],"latest_commit_sha":null,"homepage":"https://uaasoftware.com/vark.html","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hypernewbie.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-24T02:35:36.000Z","updated_at":"2026-04-05T20:55:29.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/hypernewbie/vark","commit_stats":null,"previous_names":["hypernewbie/vark"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/hypernewbie/vark","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hypernewbie%2Fvark","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hypernewbie%2Fvark/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hypernewbie%2Fvark/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hypernewbie%2Fvark/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hypernewbie","download_url":"https://codeload.github.com/hypernewbie/vark/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hypernewbie%2Fvark/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33548246,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-27T02:00:06.184Z","response_time":53,"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":["archive","cli","compression","cpp","game-dev","gamedev","header-only","high-performance","lzav","mmap"],"created_at":"2025-12-24T14:37:19.962Z","updated_at":"2026-05-27T02:34:06.261Z","avatar_url":"https://github.com/hypernewbie.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Vark - Simple LZAV Archive\r\n\r\n[![build](https://github.com/hypernewbie/vark/actions/workflows/build.yml/badge.svg)](https://github.com/hypernewbie/vark/actions/workflows/build.yml)\r\n[![Windows](https://img.shields.io/badge/Windows-0078D6?style=for-the-badge\u0026logo=windows\u0026logoColor=white)](https://github.com/hypernewbie/vark/releases/download/v1.04/vark-windows-v1.04.zip) [![Linux](https://img.shields.io/badge/Linux-FCC624?style=for-the-badge\u0026logo=linux\u0026logoColor=black)](https://github.com/hypernewbie/vark/releases/download/v1.04/vark-linux-v1.04.zip) [![macOS](https://img.shields.io/badge/macOS-000000?style=for-the-badge\u0026logo=apple\u0026logoColor=white)](https://github.com/hypernewbie/vark/releases/download/v1.04/vark-macos-v1.04.zip)\r\n\r\n### Load stuff at DDR2 RAM speed!\r\n\r\nVark is a minimal LZAV archive library and tool, designed for speed and simplicity. It uses the LZAV compression algorithm, which is fast and efficient.\r\nFor more information about LZAV, see [LZAV on GitHub](https://github.com/avaneev/lzav).\r\n\r\n\u003e NOTE: Vark is vibe coded using Gemini AI, albeit closely instructed and architected by the author, who is a professional software engineer. Use at your own risk.\r\n\r\n## Features\r\n\r\n- Simple C-style C++ interface\r\n- Fast LZAV compression and decompression\r\n- Minimal archive format\r\n- Sharded compression support for fast partial reads\r\n- Memory-Mapped I/O support (MMAP)\r\n\r\n## Performance\r\n\r\n* **CPU** AMD Ryzen Gen 3\r\n* **SSD** Samsung 970 Evo Plus M2\r\n* **Test Data:** 12.58 MB (Mixed File Types)\r\n* **Sharded Test Data:** 9.02 MB (PNG File)\r\n\r\n| Mode | Task | Throughput |\r\n| --- | --- | --- |\r\n| **Normal** (Single-threaded) | Compression | 0.486 GB/s |\r\n|  | Decompression | 1.689 GB/s |\r\n| **Persistent** (FP + TempBuffer) | Decompression | 2.549 GB/s |\r\n| **Persistent** (MMAP) | **Decompression** | **6.486 GB/s** |\r\n| **LZAV In-Memory** (Raw Ref) | Compression | 4.721 GB/s |\r\n|  | Decompression | 10.013 GB/s |\r\n| **Sharded** (MMAP) | Random 4KB Read | 1.037 GB/s |\r\n|  | **Sequential 256KB Read** | **16.215 GB/s** |\r\n\r\n\r\n## Usage\r\n\r\n### C++ API\r\n\r\n```cpp\r\n#include \"vark.h\"\r\n\r\n// Define implementation in one C++ file\r\n#define VARK_IMPLEMENTATION\r\n#include \"vark.h\"\r\n\r\nVark vark;\r\n\r\n// Create a new archive\r\nVarkCreateArchive( vark, \"data.vark\", VARK_WRITE );\r\n\r\n// Append a file\r\nVarkCompressAppendFile( vark, \"file.txt\" );\r\n\r\n// Append a file with sharded compression (optimized for random access)\r\nVarkCompressAppendFile( vark, \"large_asset.dat\", VARK_COMPRESS_SHARDED );\r\n\r\n// Load an existing archive for reading\r\nVarkLoadArchive( vark, \"data.vark\", VARK_MMAP );\r\n\r\n// Decompress a full file\r\nstd::vector\u003cuint8_t\u003e data;\r\nVarkDecompressFile( vark, \"file.txt\", data );\r\n\r\n// Partially decompress a sharded file (e.g., read 1KB at offset 512)\r\n// This is significantly faster for large files as it only decodes necessary shards\r\nVarkDecompressFileSharded( vark, \"large_asset.dat\", 512, 1024, data );\r\n\r\n// Always close when done\r\nVarkCloseArchive( vark );\r\n```\r\n\r\n#### Flags\r\n\r\n| Flag | Description |\r\n| --- | --- |\r\n| `VARK_PERSISTENT_FP` | Keeps the file handle open between operations. Recommended for batch tasks. |\r\n| `VARK_MMAP` | Uses Memory-Mapped I/O for zero-copy reads. Incompatible with `VARK_WRITE`. |\r\n| `VARK_WRITE` | Enables write/append operations. Disables read operations. |\r\n\r\n### CLI\r\n```\r\nUsage: vark [--help] [--version] [-c] [-cs] [-a] [-as] [-x] [-l] [-v] archive [files]...\r\n\r\nA minimal LZAV archive tool for fast compression and decompression. Supports sharded compression for efficient random access to large files. Use without flags for smart mode: extracts existing archives or creates new ones automatically.\r\n\r\nPositional arguments:\r\n  archive        archive file path \r\n  files          input files or directories [nargs: 0 or more] \r\n\r\nOptional arguments:\r\n  -h, --help     shows help message and exits \r\n  -v, --version  prints version information and exits \r\n  -c             Create archive \r\n  -cs            Create archive (sharded compression) \r\n  -a             Append to archive \r\n  -as            Append to archive (sharded) \r\n  -x             Extract archive \r\n  -l             List archive contents \r\n  -v             Verify archive integrity \r\n\r\nExamples:\r\n  vark data.vark                    Extract archive (smart mode)\r\n  vark -c game.vark assets/         Create archive from directory\r\n  vark -cs textures.vark images/    Create with sharded compression\r\n  vark -a game.vark newfile.dat     Append file to existing archive\r\n  vark -l game.vark                 List archive contents\r\n```\r\n## Build\r\n\r\nVark uses CMake for building. \r\n\r\n```bash\r\n# Configure the project\r\ncmake -S . -B build\r\n\r\n# Build the tool and tests\r\ncmake --build build --config Release\r\n\r\n# Run tests\r\nctest --test-dir build -C Release --output-on-failure\r\n```\r\n\r\nThe build will produce `vark` (the CLI tool) and `vark_tests` (the test suite) in the build directory.\r\n\r\n## License\r\n\r\nVark is released under the MIT License:\r\n\r\n```\r\n\tCopyright 2026 UAA Software\r\n\r\n\tPermission is hereby granted, free of charge, to any person obtaining a copy of this software and\r\n\tassociated documentation files (the \"Software\"), to deal in the Software without restriction,\r\n\tincluding without limitation the rights to use, copy, modify, merge, publish, distribute,\r\n\tsublicense, and/or sell copies of the Software, and to permit persons to whom the Software is\r\n\tfurnished to do so, subject to the following conditions:\r\n\r\n\tThe above copyright notice and this permission notice shall be included in all copies or substantial\r\n\tportions of the Software.\r\n\r\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT\r\n\tNOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n\tNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES\r\n\tOR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r\n\tCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n```\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhypernewbie%2Fvark","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhypernewbie%2Fvark","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhypernewbie%2Fvark/lists"}