# I explored and created persistent data structures and functional tools to operate over them

> Source: <https://ziggit.dev/t/i-explored-and-created-persistent-data-structures-and-functional-tools-to-operate-over-them/16971#post_3>
> Published: 2026-07-29 17:19:54+00:00

[bneb](https://ziggit.dev/u/bneb)
1
PROJECT NAME: Zimple

persistent data structures for Zig

I’ve been exploring/making persistent data structures for Zig (Vector, HAMT, HashSet).

The project uses arenas to avoid manual lifetime tracking. The whole tree is allocated into an arena and dropped when done.

There are also lazy iterators (map, filter, fold) using anytype callables to avoid virtual dispatch overhead.

Benchmarking and a writeup vs standard Zig and OCaml are included for comparing the memory density and allocation speed to measure the trade-offs.

Here is the repo: [GitHub - bneb/zimple: Functional programming in Zig. No runtime. No GC. Just comptime and arenas. · GitHub](https://github.com/bneb/zimple)

Supported Zig versions

*what versions are supported?* `0.16`

1 Like

[bneb](https://ziggit.dev/u/bneb)
3
I wrote it using an AI-augmented workflow.

I’m not sure if you are trying to say that this is slop, or genuinely curious about the setup. I’ll assume you are engaging in good faith, and so I’ll respond earnestly.

My setup uses a custom harness that controls cost by leveraging on device Gemma 4 when it can, Deepseek and Gemini flash and pro models depending on retry logic, task complexity, etc…

I break up the work into a design phase, where I tend to steer a lot more. Once I have a fairly tight design, I spin up coding agents to edit one file or function at a time, with success/exit criteria of good test coverage. Then I’ll go and fix or de-slop the code if necessary.
