frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

Show HN: Duper – The Format That's Super

https://duper.dev.br/
20•epiceric•8h ago
An MIT-licensed human-friendly extension of JSON with quality-of-life improvements (comments, trailing commas, unquoted keys), extra types (tuples, bytes, raw strings), and semantic identifiers (think type annotations).

Built in Rust, with bindings for Python and WebAssembly, as well as syntax highlighting in VSCode. I made it for those like me who hand-edit JSONs and want a breath of fresh air.

It's at a good enough point that I felt like sharing it, but there's still plenty I wanna work on! Namely, I want to add (real) Node support, make a proper LSP with auto-formatting, and get it out there before I start thinking about stabilization.

Comments

notpushkin•6h ago
https://xkcd.com/927/
hshdhdhehd•4h ago
The X on the date time support means we need a new standard :)
ACAVJW4H•6h ago
Nice work this actually looks great. Of course, it’s only a matter of time before someone drops the XKCD about standards proliferation, so I’ll save them the trouble. Pre-emptive XKCD #927 deployed.
jitl•6h ago
I think a neat route would be to use this as an authoring plugin in VS Code, like prettier: write Duper (or JSON5, or whatever), and then downlevel it to regular json automatically when pressing cmd-s. You wouldn't get to keep your comments (or they could be transformed to { "//": "comment text" }).

Outside of that, it's tough to compete with JSON in the "human readable unschematized serialization format" market, especially targetting JavaScript:

Use in the browser requires some degree of bundle size increase, since the parser code needs to be loaded before your format can be used. WebAssembly libraries are usually quite large compared to a pure-JS implementation. According to [bundlejs](https://bundlejs.com/?q=%40duper-js%2Fwasm&treeshake=%5B*%5D), @duper-js/wasm weighs in at about 488 kB uncompressed, 159 kB gzip.

Use in any JavaScript runtime means you're competing against the runtime's native `JSON.parse` and `JSON.stringify`. In v8, these are very quick and have runtime-level tricks to go faster, for example see [v8's recent post on making JSON.stringify 2x faster](https://v8.dev/blog/json-stringify) when serializing plain objects with no funny business .toJSON methods, replacer, or indent formatting.

Besides those points, my major complaint about JSON is how expensive it is to encode binary data for transmission; in JSON I usually do base64, with your format it's transformed to escape characters that are less efficient than base64, right? \xNN is base16 with 2 extra bytes wasted on the \ and x, or \uNNNN which is base 10 with 2 extra bytes. Is there a way you can fit binary with no expensive encode/decode step into the format?

So, for me this seems suitable as a config file format: there you get good benefit from comments, identifiers, easier string authoring. Not sure I need the binary raw string thingy in config files that much, but I guess it doesn't hurt.

notpushkin•2h ago
> I think a neat route would be to use this as an authoring plugin in VS Code, like prettier: write Duper (or JSON5, or whatever),

This actually somewhat works right now. If you pass this JSON5 example through Prettier:

    {
      // comments
      unquoted: 'and you can quote me on that',
      singleQuotes: 'I can use "double quotes" here',
      lineBreaks: "Look, Mom! \
    No \\n's!",
      hexadecimal: 0xdecaf,
      leadingDecimalPoint: .8675309, andTrailing: 8675309.,
      positiveSign: +1,
      trailingComma: 'in objects', andIn: ['arrays',],
      "backwardsCompatible": "with JSON",
    }
You’ll get:

    {
      // comments
      "unquoted": "and you can quote me on that",
      "singleQuotes": "I can use \"double quotes\" here",
      "lineBreaks": "Look, Mom! \
    No \\n's!",
      "hexadecimal": 0xdecaf,
      "leadingDecimalPoint": 0.8675309,
      "andTrailing": 8675309,
      "positiveSign": +1,
      "trailingComma": "in objects",
      "andIn": ["arrays"],
      "backwardsCompatible": "with JSON"
    }
Which is still invalid JSON... but it does fix unquoted keys, floats, trailing comma, and single → double quote strings with correct escaping. So if you have “format on save” enabled in your editor, it might just work!
aappleby•4h ago
Where the ** is the grammar specification? Prose is nice, but with a BNF I could plug this into my parsing expression grammar library right quick and give it a rundown.
epiceric•11m ago
Good point. I'll see about making one.
anilgulecha•3h ago
The object notation format that's going to win is the one that's going to maximally support LLM output. I've come across BAML before, but it's not widely used for some reason.

Today JSON is winning, but for more complex structures, there's still syntax issues in output. XML does reasonably well (given the deep react jsx/HTML in the training corpos), so perhaps that will make a comeback.

Are there benchmarks on this? I think the SOTA models are fine -- they can work with most models, but the fun is that models that are 90% of SOTA performance and cost 90% less - which output format do they work best with. This is where the winner will be found.

TLDR: probably JSON or XML will remain the config format for a while.

anonzzzies•2h ago
Why no date and time?
epiceric•2m ago
My reasoning is that they are normally transmitted as strings in JSON, and you could use an identifier like DateTime("2025-11-02T02:33:00Z") if you need to be explicit.

Making them part of the language would increase the complexity of parsers - how would you validate that a date is actually valid?

Show HN: Why write code if the LLM can just do the thing? (web app experiment)

https://github.com/samrolken/nokode
302•samrolken•14h ago•215 comments

Show HN: Strange Attractors

https://blog.shashanktomar.com/posts/strange-attractors
749•shashanktomar•1d ago•73 comments

Show HN: KeyLeak Detector – Scan websites for exposed API keys and secrets

https://github.com/Amal-David/keyleak-detector
18•amaldavid•9h ago•6 comments

Show HN: A simple drag and drop tool to document and label fuse boxes

https://github.com/alexadam/fuse-box-labels
13•eg312•1d ago•3 comments

Show HN: Duper – The Format That's Super

https://duper.dev.br/
20•epiceric•8h ago•10 comments

Show HN: Find and download fonts from any website (weekend project)

https://typecatch.com
11•zdenham•9h ago•0 comments

Show HN: Pipelex – Declarative language for repeatable AI workflows

https://github.com/Pipelex/pipelex
115•lchoquel•4d ago•24 comments

Show HN: UnisonDB – Log-native KV database that replicates like a message bus

https://unisondb.io
10•ankuranand•13h ago•0 comments

Show HN: I made a YouTube thumbnail always display the latest comment [video]

https://www.youtube.com/watch?v=HbUgsprjNVY
2•dotspencer•2h ago•0 comments

Show HN: In a single HTML file, an app to encourage my children to invest

https://roberdam.com/en/dinversiones.html
243•roberdam•2d ago•430 comments

Show HN: Quibbler – A critic for your coding agent that learns what you want

https://github.com/fulcrumresearch/quibbler
112•etherio•2d ago•26 comments

Show HN: Micro-RLE ≤264-byte compression for UART/MCU logs, zero RAM growth

https://github.com/CoreLathe/Micro-RLE
7•CoreLathe•13h ago•2 comments

Show HN: Proxmox-GitOps: Container Automation Framework

https://github.com/stevius10/Proxmox-GitOps
4•gitopspm•14h ago•1 comments

Show HN: Settling the Score – A point-and-click adventure rhythm game

https://easel.games/@raysplaceinspace/settling-the-score/
19•BSTRhino•5d ago•7 comments

Show HN: Run a GitHub Actions step in a gVisor sandbox

https://github.com/geomys/sandboxed-step
85•FiloSottile•1w ago•3 comments

Show HN: Learn German with Games

https://www.learngermanwithgames.com/
122•predictand•3d ago•104 comments

Show HN: Front End Fuzzy and Substring and Prefix Search

https://github.com/m31coding/fuzzy-search
54•kmschaal•4d ago•4 comments

Show HN: I made a heatmap diff viewer for code reviews

https://0github.com
262•lawrencechen•2d ago•68 comments

Show HN: Just vibe coded a HN TV dashboard

https://github.com/fellowgeek/hacker-news-dashboard
2•pcbmaker20•13h ago•0 comments

Show HN: Bash Screensavers

https://github.com/attogram/bash-screensavers
245•attogram•4d ago•77 comments

Show HN: Research Hacker News, ArXiv & Google with Hierarchical Bayesian Models

https://sturdystatistics.com/deepdive-search
83•kianN•4d ago•23 comments

Show HN: LocalSend Alternative Built with Iroh

https://github.com/tonyantony300/alt-sendme
4•SandraBucky•17h ago•0 comments

Show HN: ekoAcademic – Convert ArXiv papers to interactive podcasts

https://www.wadamczyk.io/projects/ekoacademic/index.html
52•wadamczyk•2d ago•14 comments

Show HN: ISS in Real Time – 25 Years Aboard the International Space Station

https://issinrealtime.org
160•bfeist•5d ago•24 comments

Show HN: C Generic Queue Data Structure

https://github.com/kostakis/Generic-Queue
2•kostakisgr•19h ago•0 comments

Show HN: Chess960v2 – Stockfish tournament with different starting positions

https://chess960v2.com/en
3•lavren1974•19h ago•4 comments

Show HN: Text Generator – online font generator

https://text-generator.app/
19•epistemovault•1d ago•2 comments

Show HN: Build your own Bracket City puzzle

https://builder.bracket.city
30•brgross•1d ago•8 comments

Show HN: Ellipticc Drive – open-source cloud drive with E2E and PQ encryption

https://ellipticc.com
20•iliasabs•2d ago•13 comments

Show HN: Status of my favorite bike share stations

https://blog.alexboden.ca/toronto-bike-share-status/
49•alexboden•1w ago•8 comments