(I’ll answer here partly and will create another thread for the requested details)
First of all, I just happen to use Go, right, and I am enthusiastic about that but the interesting part here is “statically linked [compiled] binary”.
it’s just easier to produce completely statically compiled binaries in Go.
you could do the same in C or Fortran. or JavaScript+Emscripten+Rust. or just Rust. (you could also try to do the same in C++)
the language doesn’t matter here, just the mechanism by which you get the binary.
I don’t think I am being unreasonable.
I am just talking about a different implementation of the ROOT file format (that happens to be written in Go), that works at a different point in the n-dimensional phase space of all quantities that matter for the set of all possible programs and use cases in the known universe.
this implementation has pros and cons wrt the C++/ROOT implementation.
it strikes a different compromise, one that better suits my needs.
For small command-line executables that need to be executed quickly, for which loading gazillions of .so
completely dwarfs the command’s runtime, it hits the sweet spot.
here is the report:
cheers,
-s
PS: I must say I was actually surprised to find out rootls
was actually a ~1K lines PyROOT script.
I thought it was a simple C++ application (but the same slow startup behaviour does happen for my own C++ ROOT reading files benchmark applications.)