Skip to content

Small collection of data types/structures, utilities & open-learning with Zig

License

Notifications You must be signed in to change notification settings

thi-ng/zig-thing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

zig.thi.ng

About

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

Current modules (all WIP)

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)

Usage with Zig's package manager

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");

Building & Testing

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

License

© 2021 - 2024 Karsten Schmidt // Apache Software License 2.0

About

Small collection of data types/structures, utilities & open-learning with Zig

Topics

Resources

License

Stars

Watchers

Forks

Languages