mirror of
https://github.com/zap-proto/nim.git
synced 2026-10-30 15:04:34 +00:00
Rename the capnp/ module set to zap/ and the capnpc compiler to zapc; rename all .capnp schemas and fixtures to .zap; update every import, include guard (isInZap), generated-code emission, exception type (ZapFormatError), and the macro-generated zapUnpackStructImpl/ zapPackStructImpl identifiers to the ZAP brand. Zero capnp/Cap'n Proto references remain in source or build files; upstream MIT attribution (Sandstorm, Michał Zieliński) is preserved. Raise the nimble nim floor from the fictional 0.12.0 to the locked, verified 0.15.2 (matches nimenv.cfg/build.sh; code carries fixes through Nim 0.18). Rewrite TODO.md as honest, source-anchored known-limitations (two-word intersegment pointers, nested/named-union codegen, RPC interface inheritance) instead of a bare wishlist.
20 lines
422 B
Nim
20 lines
422 B
Nim
import zap, collections
|
|
|
|
proc check(s: string) =
|
|
assert s.len mod 8 == 0, s
|
|
let a = compressZap(s)
|
|
assert decompressZap(a) == s
|
|
|
|
for s in ["fooobar!", "\0\0\0\0\0\0\0\0", "\0\0\0\0aaaabbbb\0opp\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", "foobar!foobar!foobar!aaa"]:
|
|
check(s)
|
|
|
|
let data = readFile("/bin/bash")
|
|
|
|
check(data)
|
|
|
|
var i = 0
|
|
let chunk = 2048*2
|
|
while i + chunk <= data.len:
|
|
check(data[i..<i + chunk])
|
|
i += chunk
|