A fast, zero-copy EDN (Extensible Data Notation) reader written in C11 with SIMD acceleration.
TL;DR - What is EDN?
EDN (Extensible Data Notation) is a data format similar to JSON, but richer and more extensible. Think of it as "JSON with superpowers":
JSON-like foundation : Maps {:key value} , vectors [1 2 3] , strings, numbers, booleans, null ( nil )
: Maps , vectors , strings, numbers, booleans, null ( ) Additional built-in types : Sets #{:a :b} , keywords :keyword , symbols my-symbol , characters
ewline , lists (1 2 3)
: Sets , keywords , symbols , characters , lists Extensible via tagged literals : #inst "2024-01-01" , #uuid "..." —transform data at parse time with custom readers
: , —transform data at parse time with custom readers Human-friendly : Comments, flexible whitespace, designed to be readable and writable by both humans and programs
: Comments, flexible whitespace, designed to be readable and writable by both humans and programs Language-agnostic: Originally from Clojure, but useful anywhere you need rich, extensible data interchange
Why EDN over JSON? More expressive types (keywords, symbols, sets), native extensibility through tags (no more {"__type": "Date", "value": "..."} hacks), and better support for configuration files and data interchange in functional programming environments.
... continue reading