Nice job. I'd like to add that surprisingly OCaml can be considered a Unix scripting language because it supports both #! shebang scripts and one-shot evaluations e.g. `ocaml -e 'print_endline "hello"'`. In these modes it uses bytecode rather than native compilation.
Startup time is not the strong point of Rakudo. And it will be a long time before it will.
Beyond startup, performance definitely has attention of the core developers: that's when hot code gets inlined, and JITted to machine code if you're on Intel hardware. But before that, currently not so much.
The best possible startup time that could potentially be reached in the current implementation of Rakudo, is the bare startup time of NQP in which Rakudo is basically implemented. Compare NQP on an Intel 2.4 GHz i9 on MacOS:
% time nqp -e ''
real 0.04s
user 0.03s
sys 0.01s
with:
% time rakudo -e ''
real 0.15s
user 0.15s
sys 0.03s
With NQP taking about 16MB of memory.
Raku as a language is selected for its features, its community and possibly for its promise. Whether that is a disaster or not, is up to the user.
Finally, if you want fast startup, don't use a scripting language.
>Finally, if you want fast startup, don't use a scripting language.
Huh? Isn't startup speed one of the points of simpler, less optimized interpretation strategies? I mean, unless you compare it to AOT compilation, which is another story.
Those numbers show that Perl and Tcl, both "full featured" scripting languages, don't have the least issue on the matter.
I'm not the kind to freely rain on parades, especially when Raku is already not a popularity king, but I don't think my use of the word "disaster" was unfounded, even if not "very nice".
> those numbers show that Perl and Tcl, both "full featured" scripting languages, don't have the least issue on the matter.
Anybody using modern Perl will most likely also use Moose, and probably big integers as well. If you compare startup times with Perl / Moose / big integers with Rakudo (on the same Intel hardware as before):
% time perl -MMoose -Mbigint -e ''
real 0.20s
user 0.14s
sys 0.02s
% time rakudo -e ''
real 0.16s
user 0.15s
sys 0.04s
And suddenly, Raku starts up faster than Perl! Because Raku comes with a Moose like object system and big integers out of the box, it doesn't need to do anything special to give you those features.
So in a way, you're comparing apples with oranges when you're just comparing bare startup times. Because you are not considering the feature set you get with a bare startup.
I don't remember where I saw the inspiration for that, but I greatly extended the idea at some point. After a small cleanup today, I thought it could bring some good discussion.