(Sorry for the very slow reply, my inbox is a mess.) -Kenton
On Mon, Jan 30, 2023 at 6:09 PM Kenton Varda <[email protected]> wrote: > Hi Yorhel, > > Cool stuff. It's neat that Zig can run code at compile time. > > Question, though: are you calling the C++ parser library to parse Cap'n > Proto schema language, or did you write a whole new parser for it? If the > latter, I'm worried as the algorithm to decide the layout of structs is > quite complex, especially when unions of groups are involved. If you are > re-implementing that, it would be pretty easy to get wrong leading to > subtle incompatibilities. Is it possible to invoke the parser from the C++ > implementation as a library, to convert from capnp IDL into schema.capnp > format, which could then be interpreted by your implementation? > > -Kenton > > On Thu, Jan 12, 2023 at 6:06 AM 'Yorhel' via Cap'n Proto < > [email protected]> wrote: > >> Hi list, >> >> I've been working on a Cap'n Proto implementation for the Zig language. >> This implementation is unusual in that it leverages the language's >> compile-time code execution capabilities to read a schema file - written >> in Cap'n Proto's schema language, no separate compilation step required >> - and then make the interfaces defined in the schema available to >> library users. >> >> I wasn't 100% sure if this was going to work, but I now have a parser, >> struct layouting algorithm and some rudimentary experiments with a >> type-safe struct read/write API that compiles down to code that *should* >> be just as efficient as if a code generation step was involved. >> >> Sadly, now that I've convinced myself that this might actually work out, >> I've lost the motivation to do the remaining 80% of the work and turn it >> into a usable library. So instead I'm publishing the unfinished product >> with the hope that it might inspire or prove useful to someone. And, who >> knows, maybe I'll continue to work on it some time in the future. >> >> The code is at https://code.blicky.net/yorhel/capnzig >> >> Documentation's kind of lacking - the code is commented here and there, >> but making sense of everything may take effort. I'll be around to answer >> questions if there are any. >> >> Here's hoping we'll have a mature Cap'n Proto implementation for Zig at >> some point, regardless of which code generation strategy is taken. >> >> Yorhel. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Cap'n Proto" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/capnproto/Y7/3v1VZfkFIFO5s%40gmai021. >> > -- You received this message because you are subscribed to the Google Groups "Cap'n Proto" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/capnproto/CAJouXQnHZsYcGMMtQW_Gu74uZu%2BnALdCRkL_XPZiP7x63UD-Lg%40mail.gmail.com.
