DASL Differential Testing Tool

← Back to DASLint

CBOR / DAG-CBOR Libraries

These are the known DASL/DAG-CBOR implementations tested by the DASL Test Suite and used in DASLint. Each encodes and decodes CBOR differently — DASLint compares their output to surface discrepancies in real ATProto records.

Library Language Type Tag 42
CBOR Tag 42 is how DAG-CBOR encodes CID links — content identifiers that reference other data. Libraries that support Tag 42 correctly encode CID links as binary CBOR tags, producing the correct bytes and CID hashes. Without it, CID links are treated as plain objects, resulting in different bytes and broken content verification. Essential for ATProto and IPLD interoperability.
Notes GitHub
@atcute/cborIn DASLint TypeScript Strict DAG-CBOR ATProto ecosystem reference. Handles CID link tags correctly. mary-ext/atcute
@ipld/dag-cborIn DASLint JavaScript Strict DAG-CBOR Official IPLD JavaScript implementation. ipld/js-dag-cbor
dag-cbrrr Python Strict DAG-CBOR ATProto-focused. Fast, written for Bluesky tooling. DavidBuchanan314/dag-cbrrr
python-libipld Python / Rust Strict DAG-CBOR Rust libipld bindings for Python. MarshalX/python-libipld
go-dasl Go Strict DAG-CBOR Official DASL Go implementation. hyphacoop/go-dasl
go-ipld-prime Go DAG-CBOR IPLD data model for Go. Used in IPFS and Filecoin. ipld/go-ipld-prime
go-ipld-cbor Go DAG-CBOR Legacy IPLD CBOR for Go. ipfs/go-ipld-cbor
serde_ipld_dagcbor Rust Strict DAG-CBOR Serde-based DAG-CBOR for Rust. Used in performance-critical apps. ipld/serde_ipld_dagcbor
libipld Rust DAG-CBOR Core IPLD library for Rust. ipld/libipld
n0_dasl Rust Strict DAG-CBOR Number Zero's DASL implementation for Rust. n0-computer/dasl
java-dag-cbor Java DAG-CBOR Java DAG-CBOR implementation by Peergos. Peergos/dag-cbor
cborg JavaScript Generic CBOR IPLD team's encoder/decoder. Underlying engine for @ipld/dag-cbor. No tag 42 awareness standalone. rvagg/cborg
cbor-x JavaScript Generic CBOR Fast generic CBOR. No DAG-CBOR or tag 42 support. kriszyp/cbor-x