Hello,
Thanks to the amazing job Lizmat did to implement runtime signatures it can be done. You could also probably add some caching of the signatures and the functions. I didn’t benchmark. Here the code: use NativeCall; sub pera-int-f(Str $format, *@args) { state $ptr = cglobal(Str, "printf", Pointer); my $signature = Signature.new( params => ( Parameter.new(type => Str), |(@args.map: { Parameter.new(type => .WHAT) }) ), returns => int32); my &f = nativecast($signature, $ptr); f($format, |@args) } pera-int-f("Pera + Mela = %d + %d %s\n", 25, 12, "cippas");