If compile time is a major bottleneck and you want to use Julia, I highly recommend using -O1. Julia uses -O2 by default which is faster, but has a quite notable compile time impact (often 2x or so).
Latency / "ttfx" for all sorts of things has also dropped dramatically over the past ~year, and will get another big boost with the native code caching PR
Why don't they just add an interpreter and only compile when needed, like V8 does?
"just"
Julia actually already has an interpreter that it uses for some stuff (like code in the global scope). adding more of a teired jit approach is on the Todo list, but it's a very large project.
It is already doing what V8 does. It's only compiling when needed. The problem is when you start to put in too many things in the startup script, which is going to compile the things it says it "needs", even though you may never use when running.