-
Notifications
You must be signed in to change notification settings - Fork 96
Implementations
Boaz Rosenan edited this page Aug 9, 2021
·
64 revisions
What is a recommended implementation?
To be recommended, a implementation MUST parse any valid EDN and follow EDN specifications for how to handle tagged elements. Unless an implementation is for a specific use, like ring-edn
, a recommended implementation SHOULD emit any data as EDN. Parsing and emitting SHOULD be transitive: if EDN is read in, and then the results are written back up, the resulting EDN should produce equivalent data. Some leniency is currently accepted for symbolic types, as well as lists vs vectors, but should become more strict as EDN matures.
If your implementation meets these guidelines, please feel free to recommend it.
- Clojure:
- clojure.edn (built-in)
- fogus/ring-edn
- clojure/tools.reader
- Ruby: relevance/edn-ruby
- Optimized Ragel-based parser gem plugin for
edn-ruby
: edporras/edn_turbo
- Optimized Ragel-based parser gem plugin for
- Go: go-edn/edn
- C++: shaunxcode/edn-cpp
- Javascript: shaunxcode/jsedn
- Java: bpsm/edn-java
- CLR: edn-format/edn-dot-net
- ObjC:
- Python:
- C: brandonbloom/libclj
- Ruby: meh/ruby-clj
- Python:
- sunng87/pyclj (only for Python 2)
- gns24/pydatomic
- Amotoen: potentially-done peg grammar
- Javascript: jsedn
- Chicken Scheme: zilti/edn
- Chibi Scheme (reader only): edw/scheme-edn
- Erlang:
- Haskell: http://hackage.haskell.org/package/hedn
- PHP: igorw/edn
- Scala:
- Rust:
- Elm: robx/elm-edn (github)
- Common Lisp (read-only, doesn't support emitting EDN): fiddlerwoaroof/cl-edn
- Emacs Lisp: expez/edn.el
- TypeScript: jorinvo/edn-data