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.13.0
Name | Description |
---|---|
thing.FixedBufferDualList |
Dual-headed linked list for resource IDs allocation (active/available) |
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.1.0.tar.gz
The --save
option adds a new dependency called thi.ng
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("thi.ng", .{
.target = target,
.optimize = optimize,
}).module("thi.ng");
// declare module for importing via given id
exe.root_module.addImport("thi.ng", 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("thi.ng");
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 - 2024 Karsten Schmidt // Apache Software License 2.0