1a42735f11
missed one parseError allocator
Generic zig build / build (push) Successful in 18s
2026-04-10 17:08:22 -07:00
5e47d9e71d
remove conditional errdefer
Generic zig build / build (push) Successful in 19s
2026-04-10 17:01:25 -07:00
91269f604d
clean up diagnostics pattern
Generic zig build / build (push) Successful in 27s
2026-04-10 14:46:59 -07:00
390b2f3a23
add passing test for blank lines
Generic zig build / build (push) Successful in 21s
2026-03-09 16:47:35 -07:00
353f8bca35
add string-based boolean coercion
Generic zig build / build (push) Successful in 28s
2026-03-09 16:28:56 -07:00
f4facdb700
add created/modified to fmt()
Generic zig build / build (push) Failing after 13m22s
2026-03-09 15:19:21 -07:00
ca9e5cf09c
document directives
2026-03-09 15:17:01 -07:00
e45a5ffe34
add created/modified directives
Generic zig build / build (push) Successful in 21s
2026-03-09 15:12:09 -07:00
3da4860ad2
move structs out of tests (removes srfParse/srfFormat from docs)
Generic zig build / build (push) Failing after 12m4s
2026-03-09 13:41:06 -07:00
1f922c0b33
update readme and docs
2026-03-09 13:39:54 -07:00
fcce8e48d4
add comment about allocations, reduce footprint for fielditerator
Generic zig build / build (push) Successful in 24s
2026-03-09 10:08:53 -07:00
8e12b7396a
introduce iterator version of to()
Generic zig build / build (push) Successful in 34s
2026-03-09 09:45:21 -07:00
bb4a5e0bf3
handle multiple recorditerator.next() without processing fields
2026-03-09 09:45:05 -07:00
3f7953be74
cleanup and optimization
2026-03-07 17:39:11 -08:00
1a47ad0ad2
iterator - not optimized
Generic zig build / build (push) Successful in 25s
2026-03-07 14:18:16 -08:00
95036e83e2
introduce emit_directives format option so consumers can implement append-only
Generic zig build / build (push) Successful in 30s
2026-03-06 17:30:07 -08:00
ad894ff74a
add enum tests (code already handled properly)
Generic zig build / build (push) Successful in 19s
2026-03-06 13:49:34 -08:00
7aa7ec112a
rename is_fresh -> isFresh
Generic zig build / build (push) Successful in 19s
2026-03-06 10:36:36 -08:00
b314b0fd0f
union deserialization
Generic zig build / build (push) Successful in 28s
2026-03-06 10:19:57 -08:00
14d82a13b7
use @hasDecl
2026-03-06 09:44:15 -08:00
b807ff8768
support for unions in fmtFrom
Generic zig build / build (push) Successful in 30s
2026-03-06 09:33:56 -08:00
18a4558b47
use a bound function for srfFormat
Generic zig build / build (push) Failing after 36s
2026-03-04 16:42:33 -08:00
84b8be4b25
add generic fmtFrom to serialize arrays of concrete data types
Generic zig build / build (push) Failing after 22s
2026-03-04 16:32:13 -08:00
996d91ba17
add from method to allow concrete data type to SRF record object
2026-03-04 00:23:52 -08:00
a414bacfec
downgrade err -> debug
2026-03-03 21:01:42 -08:00
569d7c8773
fix is_fresh
Generic zig build / build (push) Successful in 29s
2026-03-03 20:53:47 -08:00
8df8c93df1
add expires and to methods
Generic zig build / build (push) Successful in 27s
2026-03-03 20:49:54 -08:00
c4a59cfbd3
add forgejo ci
Generic zig build / build (push) Successful in 42s
2026-02-27 09:32:52 -08:00
1ef493f282
fix bug with length-prefixed string as the last field
2026-02-27 09:27:36 -08:00
0b8ec4aa89
fix tests
2026-02-05 16:02:45 -08:00
bbb65e08b9
update versions
2026-02-04 16:46:08 -08:00
d5f6266e7c
add format functions and round trip tests
2026-01-29 08:33:45 -08:00
2846ee1cff
rename all the things/update documentation/add docs build target
2026-01-25 09:51:21 -08:00
4fbc08230e
add alloc_strings parse option/update docs
2026-01-24 13:32:25 -08:00
0e1d8bd424
pull out temporary fixed buffer allocator
...
performance now almost twice as fast as json:
Benchmark 1: /home/lobo/shared/srf/zig-out/bin/srf srf <.zig-cache/o/51f43613e6e43ed5/test-srf-compact.srf
Time (mean ± σ): 65.2 ms ± 4.0 ms [User: 37.6 ms, System: 27.5 ms]
Range (min … max): 60.7 ms … 79.6 ms 45 runs
Benchmark 2: /home/lobo/shared/srf/zig-out/bin/srf srf <.zig-cache/o/c105a3d3b0472f2e/test-srf-long.srf
Time (mean ± σ): 67.8 ms ± 3.5 ms [User: 38.8 ms, System: 29.0 ms]
Range (min … max): 63.5 ms … 76.6 ms 42 runs
Benchmark 3: /home/lobo/shared/srf/zig-out/bin/srf json <.zig-cache/o/cb2a4e8b89e72422/test-json.json
Time (mean ± σ): 126.0 ms ± 3.8 ms [User: 77.6 ms, System: 48.4 ms]
Range (min … max): 120.9 ms … 135.3 ms 22 runs
Summary
/home/lobo/shared/srf/zig-out/bin/srf srf <.zig-cache/o/51f43613e6e43ed5/test-srf-compact.srf ran
1.04 ± 0.08 times faster than /home/lobo/shared/srf/zig-out/bin/srf srf <.zig-cache/o/c105a3d3b0472f2e/test-srf-long.srf
1.93 ± 0.13 times faster than /home/lobo/shared/srf/zig-out/bin/srf json <.zig-cache/o/cb2a4e8b89e72422/test-json.json
Prior to this change:
Benchmark 1: /home/lobo/shared/srf/zig-out/bin/srf srf <.zig-cache/o/51f43613e6e43ed5/test-srf-compact.srf
Time (mean ± σ): 98.9 ms ± 2.8 ms [User: 51.3 ms, System: 47.7 ms]
Range (min … max): 95.4 ms … 106.6 ms 29 runs
Benchmark 2: /home/lobo/shared/srf/zig-out/bin/srf srf <.zig-cache/o/c105a3d3b0472f2e/test-srf-long.srf
Time (mean ± σ): 103.1 ms ± 3.4 ms [User: 53.8 ms, System: 49.4 ms]
Range (min … max): 99.0 ms … 112.8 ms 28 runs
Benchmark 3: /home/lobo/shared/srf/zig-out/bin/srf json <.zig-cache/o/cb2a4e8b89e72422/test-json.json
Time (mean ± σ): 122.6 ms ± 4.4 ms [User: 75.1 ms, System: 47.6 ms]
Range (min … max): 117.7 ms … 130.7 ms 22 runs
Summary
/home/lobo/shared/srf/zig-out/bin/srf srf <.zig-cache/o/51f43613e6e43ed5/test-srf-compact.srf ran
1.04 ± 0.04 times faster than /home/lobo/shared/srf/zig-out/bin/srf srf <.zig-cache/o/c105a3d3b0472f2e/test-srf-long.srf
1.24 ± 0.06 times faster than /home/lobo/shared/srf/zig-out/bin/srf json <.zig-cache/o/cb2a4e8b89e72422/test-json.json
2026-01-23 15:59:07 -08:00
415aa30f75
use arena in parse method - no perf change
2026-01-23 15:57:28 -08:00
b37fb7fb1a
switch to f64 for numbers (matches json)
...
That change improves performance. Before:
Benchmark 1: /home/lobo/shared/srf/zig-out/bin/srf srf <.zig-cache/o/51f43613e6e43ed5/test-srf-compact.srf
Time (mean ± σ): 113.8 ms ± 3.8 ms [User: 61.2 ms, System: 52.5 ms]
Range (min … max): 109.4 ms … 128.5 ms 26 runs
Benchmark 2: /home/lobo/shared/srf/zig-out/bin/srf srf <.zig-cache/o/c105a3d3b0472f2e/test-srf-long.srf
Time (mean ± σ): 115.5 ms ± 4.0 ms [User: 59.1 ms, System: 56.3 ms]
Range (min … max): 110.8 ms … 127.1 ms 26 runs
Benchmark 3: /home/lobo/shared/srf/zig-out/bin/srf json <.zig-cache/o/cb2a4e8b89e72422/test-json.json
Time (mean ± σ): 131.5 ms ± 3.1 ms [User: 83.2 ms, System: 48.3 ms]
Range (min … max): 127.7 ms … 138.0 ms 23 runs
Summary
/home/lobo/shared/srf/zig-out/bin/srf srf <.zig-cache/o/51f43613e6e43ed5/test-srf-compact.srf ran
1.01 ± 0.05 times faster than /home/lobo/shared/srf/zig-out/bin/srf srf <.zig-cache/o/c105a3d3b0472f2e/test-srf-long.srf
1.16 ± 0.05 times faster than /home/lobo/shared/srf/zig-out/bin/srf json <.zig-cache/o/cb2a4e8b89e72422/test-json.json
After:
Benchmark 1: /home/lobo/shared/srf/zig-out/bin/srf srf <.zig-cache/o/51f43613e6e43ed5/test-srf-compact.srf
Time (mean ± σ): 98.9 ms ± 2.8 ms [User: 51.3 ms, System: 47.7 ms]
Range (min … max): 95.4 ms … 106.6 ms 29 runs
Benchmark 2: /home/lobo/shared/srf/zig-out/bin/srf srf <.zig-cache/o/c105a3d3b0472f2e/test-srf-long.srf
Time (mean ± σ): 103.1 ms ± 3.4 ms [User: 53.8 ms, System: 49.4 ms]
Range (min … max): 99.0 ms … 112.8 ms 28 runs
Benchmark 3: /home/lobo/shared/srf/zig-out/bin/srf json <.zig-cache/o/cb2a4e8b89e72422/test-json.json
Time (mean ± σ): 122.6 ms ± 4.4 ms [User: 75.1 ms, System: 47.6 ms]
Range (min … max): 117.7 ms … 130.7 ms 22 runs
Summary
/home/lobo/shared/srf/zig-out/bin/srf srf <.zig-cache/o/51f43613e6e43ed5/test-srf-compact.srf ran
1.04 ± 0.04 times faster than /home/lobo/shared/srf/zig-out/bin/srf srf <.zig-cache/o/c105a3d3b0472f2e/test-srf-long.srf
1.24 ± 0.06 times faster than /home/lobo/shared/srf/zig-out/bin/srf json <.zig-cache/o/cb2a4e8b89e72422/test-json.json
2026-01-23 15:27:24 -08:00
0aacc8b37b
add benchmarking (we are faster than json if using FBA)
2026-01-23 14:54:39 -08:00
6acf4f4fb1
remove a bunch of debug logs
2026-01-13 16:37:49 -08:00
4f7d1b930c
passing tests
2026-01-13 14:21:24 -08:00
040f84cdef
initial implementation with long format tests passing
2026-01-13 12:12:51 -08:00
1262322d18
zig init + config
2026-01-12 13:16:27 -08:00
64da60621e
add README with initial thoughts
2026-01-12 13:13:25 -08:00
34bd62d4be
add MIT license
2026-01-12 13:13:09 -08:00
cdb00e212f
initial commit
2026-01-12 13:10:25 -08:00