On 2018-02-07 06:54:05 -0800, Andres Freund wrote:
> I've pushed v10.0. The big (and pretty painful to make) change is that
> now all the LLVM specific code lives in src/backend/jit/llvm, which is
> built as a shared library which is loaded on demand.
> The layout is now as follows:
> Part of JITing always linked into the server. Supports loading the
> LLVM using JIT library.
> General code generation and optimization infrastructure
> llvmjit_error.cpp, llvmjit_wrap.cpp:
> Error / backward compat wrappers
> Cross module inlining support
> Expression compilation
> Deform compilation
I've pushed a revised version that hopefully should address Jeff's
wish/need of being able to experiment with this out of core. There's now
a "jit_provider" PGC_POSTMASTER GUC that's by default set to
"llvmjit". llvmjit.so is the .so implementing JIT using LLVM. It fills a
set of callbacks via
extern void _PG_jit_provider_init(JitProviderCallbacks *cb);
which can also be implemented by any other potential provider.
The other two biggest changes are that I've added a README
and that I've revised the configure support so it does more error
checks, and moved it into config/llvm.m4.
There's a larger smattering of small changes too.
I'm pretty happy with how the separation of core / shlib looks now. I'm
planning to work on cleaning and then pushing some of the preliminary
patches (fixed tupledesc, grouping) over the next few days.