Various, still somewhat unstructured, raw-around-the-edges utilities / open learning with Zig, at some point hopefully culminating into a useful toolkit.
All code in this repo is compatible with Zig v0.15.1.
| Name | Description |
|---|---|
thing.FixedBufferDualList | Dual-headed linked list for resource IDs allocation (active/available) |
thing.HashGrid2 | 2D hash grid spatial indexing & neighborhood query |
thing.ndarray | Generic nD-Array base implementation |
thing.random | Additional std.rand.Random-compatible PRNGs and related utilities. |
thing.vectors | SIMD-based generic vector type & operations (incl. type specific additions) |
Tagged versions of this project are available and can be added as dependency to your project via zig fetch, like so:
zig fetch --save https://github.com/thi-ng/zig-thing/archive/refs/tags/v0.3.0.tar.gzThe --save option adds a new dependency called thing to your build.zig.zon project file.
You'll also need to update your main build.zig with these additions:
// <standard_boilerplate> const target = b.standardTargetOptions(.{}); const optimize = b.standardOptimizeOption(.{}); // main build step... const exe = b.addExecutable(.{ ... }); // </standard_boilerplate> // declare & configure dependency (via build.zig.zon) const thing = b.dependency("thing", .{ .target = target, .optimize = optimize, }).module("thing"); // declare module for importing via given id exe.root_module.addImport("thing", thing);Important: If you're having a test build step configured (or any other build step requiring separate compilation), you'll also need to add the .root_module.addImport() call for that step too!
With these changes, you can then import the module in your source code like so:
const thing = @import("thing");The package is not meant to be build directly (yet), so currently the build file only declares a module.
To run all tests:
zig test src/main.zig© 2021 - 2025 Karsten Schmidt // Apache Software License 2.0