A Fast, Minimalist Package & Version Manager for Zig, under GPLv3 License.
zeP is a fast, lightweight package manager and Zig version manager designed with simplicity, and comfort for the end-user. No "copy-this add it here", we handle everything for you. Just install packages, and manage Zig versions - quickly.
powershell -c "irm https://zep.run/install.ps1|iex"curl -fsSL https://zep.run/install.sh | bashyay -S zep-binbrew tap XerWoho/homebrew-zep
brew install zep-
Install packages from:
- Github/Gitlab/Codeberg
- Centralized zeP registry
- Custom registry (your own
.jsonpackage definitions)
-
Automatic hash tracking for installed packages
- prevents redundant installs
-
Resolving zig versions
- stores zig versions of all packages
- mentions mismatches with project
-
Maintains:
zep.lock(package definitions & exact installed package state)build.zig.zon(points dependencies to installed folders).zep/injector.zig(injects dependencies into specified modules)
-
Handles:
- Adding packages
- Removing packages
- Re-writing package and lock files cleanly
- Injecting into build.zig
- Updating build.zig.zon
- Install multiple Zig versions side-by-side
- Set a global version
- Automatically updates symlinks
- Fetches official Zig releases
- Windows: operational
- Linux: operational
- macOS: functional but not tested
zeP takes a different route then other package managers, like zigmod, zon, gyro or zig itself. Instead of importing packages using the built-in zig fetch, we fetch, and verify them independently via our own program.
This allows for fast installs, and fast caching. Furthermore, zeP uses an approach similar to pnpm, where installed packages are stored on a main folder within your system, and symlinked inbetween projects making installs very quick and efficient.
Also, because of this approach of installing projects, you simply know what you are typing. Our system allows for intellisense across the whole project, meaning that you get automatic function completion, and parameter declaration. Zig fetch, leaves you guessing, no intellisense, no auto-complete.
Lastly, are you really not sick of adding garbage into your build.zig? First run
$ zig fetch --save <package>
Then, you have to manually add the dependency into your build.zig. Compatibility with your Zig version isn’t guaranteed.
That is not efficient, it is bad. We take EVERYTHING off your hands, you install whatever you want, ANY VERSION of our available packages, and we tell you whether or not it is compatible or not (yes, we checked all projects). Furthermore, we inject the imports within your build.zig, using a function. The function? A simple injector, no hidden code, or obfuscation, you can even view it within .zep/injector.zig, no secrets, only efficiencies.
All tools executed on the same VM with identical network conditions.
| Tool | Installed Size | Cache Size |
|---|---|---|
| zeP | 120 KB | 20 KB |
| zigmod | 884 KB | — |
| zig | 168 KB | — |
| zigp | 168 KB | — |
| Tool | real | user | sys | CPU |
|---|---|---|---|---|
| zeP | 1.03s | 0.02s | 0.01s | 2% |
| zigmod | 0.74s | 0.08s | 0.08s | 21% |
| zig | 0.61s | 0.01s | 0.02s | 4% |
| zigp | 1.0s | 0.01s | 0.04s | 4% |
- zigmod pulled the latest version defined in zigmod.yml
- zeP installed a specific version (clap@0.11.0)
- VM: Kali Linux, fresh boot, clean network cache
- Measurements collected using time
These numbers aren't meant to declare zeP the "winner." The point is to give a rough idea of its baseline overhead. As the project grows, more extensive benchmarks will be added (dependency trees, cold/hot caching, uninstall cycles, and remote registry latency).
zep bootstrap --zig <zig-version> --pkgs <package1>@<version>,<package2>@<version>- Quick starts a project
- Installs zig version and packages if missing
- Configures project automatically
zep init- Inits a simple zeP project [Zig is required]