libvibe 1.1.0 β the reference implementation is now a real C library
VIBE's C reference parser graduates to libvibe: an installable static +
shared library, a vibe CLI, an emitter, stable error codes, and enforced
resource limits β all 100% source-compatible with the previous API. The
VIBE format itself is unchanged (still 1.0).
Install
git clone https://github.com/1ay1/vibe && cd vibe
make && sudo make install
cc app.c $(pkg-config --cflags --libs vibe) -o appThe vibe CLI
vibe check config.vibe # validate; structured error on failure
vibe fmt config.vibe -w # canonical reformat, in place
vibe get config.vibe server.portLibrary highlights
- π¦ Static (
libvibe.a) + versioned shared (libvibe.so.1,.dylibon macOS) library, avibe.pcpkg-config file, andmake install/uninstall - βοΈ Emitter:
vibe_emit()/vibe_emit_file()serialise a value tree back to canonical VIBE (idempotentfmt) - π§΅ Length-aware
vibe_parse_buffer()and stateless one-shotvibe_parse() - π§― Stable error codes on the API (
VibeErrorCode+vibe_error_code_string()), matching the spec's ten categories 1:1 - ποΈ Configurable, enforced
VibeLimits(spec-minimum defaults) β fails closed on untrusted input - π Pluggable allocator, version queries,
vibe_value_clone(),*_ordefaulted getters,vibe_type_name(), container-size helpers - π·οΈ
extern "C"+-fvisibility=hidden: the shared object exports only the 48 publicvibe_*symbols
Hardening
ctypecalls takeunsigned char(no UB on bytes β₯ 0x80); quoted strings use a growable buffer (was a fixed 4 KiB stack cap); allocation-failure paths no longer leak or crash; a leading UTF-8 BOM reportsencoding-error- Clean under
-Wall -Wextra -Werror -pedanticand ASan/UBSan
Quality
- 25/25 unit tests Β· 18/18 conformance (tree-equality on valid, error-category on invalid) Β· committed
make conformancerunner Β· CI now runs the unit suite, conformance, a CLI smoke test, and a dedicated ASan/UBSan job
Docs & website
- New API reference, rewritten
INSTALL.md, a refreshed website with an Install / CLI / C-API section, and a regenerated specification page viamake docs
Full changelog: https://github.com/1ay1/vibe/blob/main/CHANGELOG.md