Skip to content

Latest commit

 

History

History

README.md

Succinctly Documentation

Welcome to the succinctly documentation! This page helps you find what you need.

Why Succinctly?

Succinctly uses semi-indexing to process JSON, YAML, and CSV/TSV files with dramatically less memory than traditional parsers:

vs Traditional Parsers Memory Speed
vs serde_json, simd-json 18-46x less memory 3-5x faster
vs jq (JSON queries) 5-25x less memory 1.2-6.3x faster
vs yq (YAML queries) similar memory 16-40x faster

How it works: Instead of building a full DOM tree, succinctly builds a lightweight structural index (~3-6% overhead) and extracts values lazily only when accessed. This is ideal when queries touch a small fraction of the document.

See architecture/semi-indexing.md for technical details, or benchmarks/ for full performance data.


Quick Links by Audience

First-Time Users

Start here: Getting Started Guide

Learn the basics:

Library Users

Using succinctly in your Rust project:

  • API Guide - Comprehensive API reference with examples
  • CLI Guide - Command-line tool reference

Contributors

Want to contribute?

Performance Engineers

Optimizing performance:

Researchers & Deep Divers

Understanding internals:

AI-Assisted Development

  • CLAUDE.md - Comprehensive guide for AI assistants

Documentation Structure

Quick tutorials for new users. Start here if you've never used succinctly.

Practical how-to documentation:

  • API usage (api.md)
  • CLI tool (cli.md)
  • Development (developer.md)
  • Releases (release.md)

Design documentation:

  • Core concepts (BitVec, BalancedParens, semi-indexing)
  • Module structure
  • Implementation decisions

Architecture Decision Records:

  • Core design choices (semi-indexing, PFSM JSON parser, YAML oracle)
  • Rejected optimizations (why P2.6/P2.8/P3/P5/P6/P7/P8 were not adopted)
  • Status-tracked, one decision per record

Parser implementation details:

  • JSON semi-indexing
  • YAML parser with P0-P10 optimizations
  • DSV (CSV/TSV) parsing

Performance optimization techniques:

  • 11 comprehensive technique guides
  • Decision framework
  • Successes AND failures documented

Performance comparisons:

  • vs jq (JSON queries)
  • vs yq (YAML queries)
  • vs Rust JSON parsers (serde_json, sonic-rs, simd-json)
  • Cross-language parser comparisons
  • DSV performance

Implementation plans for major features (all implemented).

Specification compliance documentation:

  • YAML 1.2 - type handling, Norway problem, booleans
  • YAML Known Limitations - YAML Test Suite conformance, unsupported features, why validation is opt-in
  • jq Known Limitations - jq error-message conformance against pinned jq, and the behaviour gaps behind the rest

Finding What You Need

I want to...


Contributing to Documentation

Found a typo or want to improve docs? See CONTRIBUTING.md.

Documentation follows these conventions:

  • US spelling (optimize, not optimise)
  • Breadcrumbs at top of nested docs
  • Links use descriptive text (not "click here")
  • Code examples are tested and runnable