Welcome! Please see the About page for a little more info on how this works.

+1 vote
in Contrib libs by

Hello, I'm very new to Clojure related technologies and I may be asking the wrong question.

I am looking into making a IPFS like proof of concept using EDN which can be integrated with classical system languages (namely the old duo of C/C++). I would like to create an interface for C++ that takes a template data structure from compile time and from a filename create and populate a data structure matching that template. In C, it would be some ugly thing with structs composed of an enum to indicate the current primitive (either a list, set, or bytes), a void pointer, and all that C hackiness. Then from these, similarly have serializes.

The reason for EDN in particular is that it appears to be a technically superior specification based on it's foundations. The lack of need for a top level containing data structure, and extensible types look like a very good foundation for any work. It looks like EDN is missing the same level of support as formats like JSON. That makes this tough, but I think I can justify contributing something here. I am looking for a solution that can be reused at some point as a part of a Linux kernel module for embedding this functionality as a file system, but that's a ways off.

How do I start on this kind of project? What details am I missing?

1 Answer

+1 vote
by
selected by
 
Best answer

There are some existing impls here in case any of these are useful to you:

https://github.com/edn-format/edn/wiki/Implementations

by
It looks like there is no C implementation.  How does it compare to the ANTLR4 grammar which also compiles down to a C++ target  It looks like there's been no work on the C++ library in the last 8 years which is a red flag.
by
Looks like there's no writer or serializer.  The C++ implementation and ANTLR4 grammars look to be insufficient.  Is this something that I should add?
by
Well, edn hasn't changed (almost at all) in the last 8 years, so that's not necessarily a problem. If there's a gap here, happy to have someone fill it!
...