Skip to content

EpicEric/duper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

The Duper logo, with a confident spectacled mole wearing a flailing blue cape.

Duper: The format that's super!

GitHub stars GitHub license

Duper aims to be a human-friendly extension of JSON with quality-of-life improvements, extra types, and semantic identifiers.

Check out the official website for examples, quick start guides, and more.

UserProfile({
  id: Uuid("f111c275-b4ce-4392-8e5b-19067ce39b53"),
  username: "EpicEric",
  email: EmailAddress("[email protected]"),
  settings: {
    "dark mode": true,
    language: Locale("pt-BR"),
    metadata: null,
  },
  score: 120.25,
  // Support for bytes, woohoo!
  avatar: Png(b64"iVBORw0KGgoAAAANSUhEUgAAAGQ="),
  bio: r#"Hello! I'm a super "duper" user!"#,
  last_logins: [
    (IPv4Address("192.168.1.100"), Instant('2024-03-20T14:30:00Z')),
  ],
})

Why Duper?

Duper excels in a variety of use cases:

  • In configuration files, where users are expected to swap out values, its explicit types can be a helpful guide.
  • Thanks to its extended type support and self-documenting identifiers, Duper feels right at home in REST APIs.
  • With a simple and readable syntax for logs, Duper is a breath of fresh air for both manual and tool-assisted debugging.

For implementers

See the specification for more details.

Workspace structure

  • duper: Core implementation of the Duper parser and serializer in Rust, as well as Serde support. Used by Rust libraries and bindings in other languages.
  • duperq: A fast Duper and JSON filter/processor.
  • duper_lsp: Duper LSP.
    • duper-vs-code: Duper extension for Visual Studio Code with syntax highlighting and LSP.
  • duper_website: Official website for Duper, including the specification and WebAssembly-based playground.
  • tree-sitter-duper: tree-sitter implementation of Duper.
    • duperfmt: Duper formatter based on Topiary.