I don't know about the current state of Smalltalk, but it definitely has a JIT. Many other languages (JavaScript, all JVM languages) have JITs but not always AOT because a JIT gives much better performance.
But what difference does it make if you get a single native binary file with the runtime statically linked (like Go), or with the runtime in its own shared library (like with the JVM)? In either case you can create a native binary to launch the program if you don't want to run `vm program.file`.
I don't know about the current state of Smalltalk, but it definitely has a JIT. Many other languages (JavaScript, all JVM languages) have JITs but not always AOT because a JIT gives much better performance.
But what difference does it make if you get a single native binary file with the runtime statically linked (like Go), or with the runtime in its own shared library (like with the JVM)? In either case you can create a native binary to launch the program if you don't want to run `vm program.file`.