ORC JIT Weekly #23 -- C API Extensions, DefinitionGenerator changes, OrcV1 removal.

Hi All,

The OrcV1 removal patch is still under development at https://github.com/lhames/llvm-project/tree/orcv1-removal. I’ve been working with Andres Freund to extend the C API to the point where Postgres’s JIT can migrate to it. In the process Andres tracked down a number of bugs and memory leaks that have now been fixed – Thanks Andres!

There is one further change that I’d like to land and test in the orcv1-removal branch before I start moving this code to the mainline: Updating definition generators to support asynchronous execution outside the session lock. This change would allow definition generators to take arbitrarily long without blocking core state updates. This is likely to be beneficial even for simple generators (e.g. TCPDynamicLibrarySearchGenerator, where JIT state updates could continue in parallel with the RPC call to look up symbols in the remote). For more complex generators (e.g. something that needs to index new source to find a definition) this scheme may allow substantial work to be done while waiting on generation. Doing this work on the orcv1-removal branch may save us some churn in the C APIs on the mainline so if I can get it working there in the next day or so then that is what I will do. Otherwise I will land orcv1-removal more-or-less as-is this week and we can continue this on the mainline.

If you’re coming to the LLVM dev meeting next week – I’ll ping the JIT BoF topics-of-interest thread tomorrow with the current list of discussion topics. If you’ve thought of anything you’d like to discuss that will be a good opportunity to add it to the list.

– Lang.