I am planning to implement a cryptographic library for several languages and looking for best practices. I have looked at several threads, especially this, this, and this one, which answer my questions partly only. I am interested in a couple of languages (among others, C, Haskell, Python) and have read how to package software projects for each language. So here are my questions:
- Do I create 1 repo for all languages or 1 repo for each language? In the former case, is there any "standard" folder structure?
- Is it a good idea to implement the logic in a DSL like Cryptol, then translate to/generate code in the desired target languages? I.e., which is less effort: implementing the same logic for each (Turing-complete) language or once for a DSL, then a generator for each language?
- Is it a good idea to implement the logic in one (Turing-complete) language, then call functions from all other languages? Or do I implement from scratch for each language?