Open
Description
One of the missing features around trimming currently is what I'm calling "delayed" calls. Basically operations that mean that a call will be performed using a specificic signature, but instead of going through the typical Expr(:invoke
path, they might happen eventually.
An incomplete list of operations is
- cfunction
- tasks
- Opaque Closures
- atexit
- Finalizers
They all could be represented by something like a :virtual_invoke
, which serves just as a token that indicates to typeinf_ext_toplevel/create_native
that code must be compiled for those code_instances. ccallable
is already an example of a delayed call, but it's more well behaved since it depends only on function definitions