Skip to content

Releases: 1ay1/vibe

libvibe 1.1.0 β€” VIBE is now a real C library 🌊

Choose a tag to compare

@1ay1 1ay1 released this 20 Jul 16:28

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 app

The 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.port

Library highlights

  • πŸ“¦ Static (libvibe.a) + versioned shared (libvibe.so.1, .dylib on macOS) library, a vibe.pc pkg-config file, and make install / uninstall
  • ✍️ Emitter: vibe_emit() / vibe_emit_file() serialise a value tree back to canonical VIBE (idempotent fmt)
  • 🧡 Length-aware vibe_parse_buffer() and stateless one-shot vibe_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(), *_or defaulted getters, vibe_type_name(), container-size helpers
  • 🏷️ extern "C" + -fvisibility=hidden: the shared object exports only the 48 public vibe_* symbols

Hardening

  • ctype calls take unsigned 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 reports encoding-error
  • Clean under -Wall -Wextra -Werror -pedantic and ASan/UBSan

Quality

  • 25/25 unit tests Β· 18/18 conformance (tree-equality on valid, error-category on invalid) Β· committed make conformance runner Β· CI now runs the unit suite, conformance, a CLI smoke test, and a dedicated ASan/UBSan job

Docs & website

Full changelog: https://github.com/1ay1/vibe/blob/main/CHANGELOG.md

VIBE v1.0.0 - Initial Release 🌊

Choose a tag to compare

@1ay1 1ay1 released this 15 Oct 00:41

1.0.0 - 2025-01-15

Added

  • πŸŽ‰ Initial release of VIBE format specification v1.0
  • ✨ Complete C parser implementation with single-pass O(n) parsing
  • πŸ“š Comprehensive format specification (SPECIFICATION.md)
  • πŸ”§ Full API for parsing, value access, and memory management
  • πŸ“– Detailed README with examples and documentation
  • πŸ§ͺ Example configuration files (simple, web server, database)
  • 🀝 Contributing guidelines (CONTRIBUTING.md)
  • πŸ“„ MIT License
  • πŸš€ GitHub Actions CI/CD pipeline
  • πŸ” Memory leak detection with Valgrind
  • πŸ“Š Code coverage reporting

Features

  • Support for all basic data types:
    • 64-bit integers
    • Double-precision floats
    • Booleans (true/false)
    • UTF-8 strings (quoted and unquoted)
    • Arrays (inline and multi-line)
    • Nested objects
  • Comments with #
  • String escape sequences (\", \\, \n, \t, \r, \uXXXX)
  • Path-style value access with dot notation
  • Detailed error reporting with line/column information
  • No reserved words - maximum flexibility
  • Whitespace-insensitive (no significant indentation)

Implementation Details

  • Maximum nesting depth: 64 levels
  • Initial capacity: 16 elements (dynamic growth)
  • POSIX-compliant (strdup usage)
  • C11 standard required
  • Zero external dependencies

Examples

  • Simple configuration
  • Complex web server setup
  • Database cluster configuration
  • Error test cases

Documentation

  • API reference in vibe.h
  • Usage examples in examples/
  • Complete specification document
  • Contributing guidelines
  • Installation instructions

Testing

  • Automated CI on Ubuntu and macOS
  • GCC and Clang compiler support
  • Valgrind memory leak detection
  • Static analysis with extra warnings
  • Code coverage reporting

[Unreleased]

Planned

  • Python bindings
  • Rust implementation
  • JavaScript/Node.js implementation
  • Go implementation
  • VS Code syntax highlighting extension
  • Conversion tools (JSON↔VIBE, YAML↔VIBE, TOML↔VIBE)
  • Schema validation support
  • Comprehensive benchmark suite
  • Windows support testing

Legend:

  • πŸŽ‰ Major release
  • ✨ New feature
  • πŸ› Bug fix
  • πŸ“š Documentation
  • πŸ”§ Tooling
  • πŸš€ Performance
  • ⚠️ Breaking change
  • πŸ”’ Security fix