Skip to content

mertishere/zeP

Repository files navigation

zeP

A Fast, Minimalist Package & Version Manager for Zig, under GPLv3 License.

Introduction

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.

Installation

Releases / Pre-Releases

Windows (PowerShell, as Administrator)

powershell -c "irm https://zep.run/install.ps1|iex"

Linux

curl -fsSL https://zep.run/install.sh | bash

AUR

yay -S zep-bin

macOS

brew tap XerWoho/homebrew-zep
brew install zep

Features

Package Management

  • Install packages from:

    • Github/Gitlab/Codeberg
    • Centralized zeP registry
    • Custom registry (your own .json package 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

Zig Version Management

  • Install multiple Zig versions side-by-side
  • Set a global version
  • Automatically updates symlinks
  • Fetches official Zig releases

Cross-Platform Support

  • Windows: operational
  • Linux: operational
  • macOS: functional but not tested

Why zeP?

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.

Benchmark: clap@0.11.0 Install (Fresh VM, Kali Linux) [OUTDATED]

All tools executed on the same VM with identical network conditions.

Disk Footprint

Tool Installed Size Cache Size
zeP 120 KB 20 KB
zigmod 884 KB
zig 168 KB
zigp 168 KB

Performance

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%

Test Notes

  • 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).

Command Overview

Quick Start

zep bootstrap --zig <zig-version> --pkgs <package1>@<version>,<package2>@<version>
  • Quick starts a project
  • Installs zig version and packages if missing
  • Configures project automatically

Quicker Start

zep init
  • Inits a simple zeP project [Zig is required]

Documentation

About

A new package- and version manager for zig.

Topics

Resources

License

Unknown, GPL-3.0 licenses found

Licenses found

Unknown
LICENSE
GPL-3.0
COPYING

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages