On Feb 22, 2014, at 16:12 , Open Nota <[email protected]> wrote: > If one wants to develop lucy bindings for a new language, what should he > know and do? Can someone explain in general the process of creation of lucy > bindings, step by step? Should one make use of the clownfish (why?) or is > it sometimes desirable dispense with it? Is there a C library, that can be > linked against? Are there useful links and documentation? Anything you can > spare will be gratefully appreciated.
If you want to write bindings for a dynamic programming language like Perl, Python, or Ruby, you’re encouraged to build upon the Clownfish object system. It is designed to integrate very tightly with the host language and we expect the resulting bindings to be highly idiomatic and user-friendly. If you want to extend Clownfish, you’ll also get lots of support from the Lucy community. For Python and Ruby, people have already started working on Clownfish support but we're still at an early stage. User documentation for Clownfish can be found here: https://git-wip-us.apache.org/repos/asf?p=lucy-clownfish.git;a=blob;f=runtime/perl/lib/Clownfish.pod To implement support for a language, you’ll have to write a backend and bindings for the Clownfish compiler (CFC) and some glue code for the Clownfish runtime and the build system of the host language. The code for the Perl bindings should give you an idea what needs to be implemented: CFCPerl* files in compiler/src (CFC backend) to autogenerate the code for the bindings: https://git-wip-us.apache.org/repos/asf?p=lucy-clownfish.git;a=tree;f=compiler/src CFC Perl bindings: https://git-wip-us.apache.org/repos/asf?p=lucy-clownfish.git;a=tree;f=compiler/perl Perl code for Clownfish runtime (especially the code in the xs subdirectory): https://git-wip-us.apache.org/repos/asf?p=lucy-clownfish.git;a=tree;f=runtime/perl We also have an as-yet-unreleased C library which you can find in the ‘c’ directory of the Lucy Git repository. It depends on the Clownfish C library and tools. Feel free to ask more questions on this mailing list or on IRC (#lucy_dev on irc.freenode.net). Nick
