Per the docs:
The difference is that for version 2 it is optional to provide the JIT function at [the time of NewFunction].
Except that functions may be destroyed before you ever assign them a JIT function.CleanFunction is never called if the JIT function pointer is null. Perhaps it should be?
AFAICT, without assigning a dummy jitFunction the JIT v2 interface doesn't let you hold onto functions safely.