In order to explore the ideas expressed by @tonsky, I hacked up zprint to do what I think he proposed. I may, of course, have misinterpreted what he had in mind. I have put the resulting build artifacts here.
This is not a fully tested release, and is highly experimental. I have barely tested it. All of the files read from stdin and write to stdout, formatting the source along the way. The default formatting is what I believe @tonsky was recommending -- which is not much, really. Which made it easy to prototype.
The files are:
zprintm-std-0.1.1 macOS graalvm version
zprintl-std-0.1.1 Linux graalvm version
zprint-std-0.1.1 uberjar
The macOS and Linux versions start up in <50ms.
If you need to use the uberjar, get the appcds file from any regular zprint release, and look at the zprint documentation for how to use it -- it will cause the uberjar to start in <1s.
This experimental version does the @tonsky formattng by default.
If you want, you can give it an options map with {:std? false}
, and it will be a regular version of zprint. Pretty much like the 0.4.13 release -- with almost no testing. That would look like:
./zprintm-std-0.1.1 '{:std? false}' <stuff.clj
I'm not particularly fond of this formatting (or zprint would already do it), but it certainly does have a compelling simplicity.