Recursion performance: why so slow?

Also this is fun, output binary file sizes:

╰─➤  ls -lah test_*
-rwxrwxr-x. 1 <user> <user> 8.9K Oct 24 12:02 test_cpp
-rwxrwxr-x. 1 <user> <user> 1.9M Oct 24 11:22 test_go
-rwxrwxr-x. 1 <user> <user>  99K Oct 24 11:25 test_ml
-rwxrwxr-x. 1 <user> <user> 3.9M Oct 24 11:39 test_rs

C++'s is utterly tiny at 8.9K (which is funny because I’m using iostreams and other such large inefficient things).
OCaml’s is quite decent at a respectable 99K.
Go is massive at 1.9M (unsure why? Probably include it’s stdlib like Rust, I did compile it optimized).
Rust is of course massive at 3.9M because it includes it’s stdlib, including pthreads and its high performance memory allocator, blehg, though it could be shrunk a bit via messing with optimization levels and LTO)

/me loves OCaml, such an amazing language and compiler both