atproto relay implementation in zig zlay.waow.tech

feat: cross-compile workflow + minimal Dockerfile

zig cross-compiles to x86_64-linux natively — no Docker emulation
needed. Dockerfile is now just alpine + pre-built static binary.
added Spindle CI workflow for format check + build verification.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

+21 -10
+19
.tangled/workflows/ci.yml
··· 1 + when: 2 + - event: ["push", "pull_request"] 3 + branch: main 4 + 5 + engine: nixery 6 + 7 + dependencies: 8 + nixpkgs: 9 + - zig 10 + - sqlite 11 + 12 + steps: 13 + - name: check formatting 14 + command: | 15 + zig fmt --check . 16 + 17 + - name: build 18 + command: | 19 + zig build -Doptimize=ReleaseSafe --summary all
+2 -10
Dockerfile
··· 1 - FROM alpine:3.21 AS builder 2 - RUN apk add --no-cache curl sqlite-dev xz musl-dev 3 - RUN curl -L https://ziglang.org/download/0.15.2/zig-x86_64-linux-0.15.2.tar.xz | tar -xJ -C /usr/local 4 - ENV PATH="/usr/local/zig-x86_64-linux-0.15.2:${PATH}" 5 - WORKDIR /src 6 - COPY . . 7 - RUN zig build -Doptimize=ReleaseSafe 8 - 9 1 FROM alpine:3.21 10 - RUN apk add --no-cache sqlite-libs ca-certificates 11 - COPY --from=builder /src/zig-out/bin/zlay /usr/local/bin/zlay 2 + RUN apk add --no-cache ca-certificates 3 + COPY zig-out/bin/zlay /usr/local/bin/zlay 12 4 RUN mkdir -p /data/events 13 5 ENV RELAY_DATA_DIR=/data/events 14 6 ENV RELAY_DB_PATH=/data/relay.sqlite