> How come Zombiezen came out faster ? I’d expect the opposite
(OP here) Honestly, me too. Maybe it has to do with leaving out that database/sql driver layer. I guess it would need another round of pprof to find out the real reason.
Maybe because Go devs are more allergic to 'non-Go' solutions that Java devs are to 'non-Java' solutions? (Explain: Java's xerial driver is a DLL/SO wrapped in a Java library)
Perhaps someone should define a new C compatible threading API to allow C libraries (including glibc or a wrapper around glibc) to work with something other than native pthreads. Such as goroutines or Java threads and so on.
Many general M:N threading solutions have been tried over the years. As far as I know current thinking is still that you need substantial cooperation from a language runtime to make it worthwhile. (And even then it's hard - Java's first attempt failed and they went 1:1 essentially between 1998-2022.)
Sqinn author here. Yes, sqinn performs quite well compared to the 'standard' mattn driver. The only use case it clearly breaks down is when SELECTing very large (gigabytes) resultsets.
For sqinn it's because of its design: Shuffling that much data over process boundaries takes time. For zombie, more pprof would be needed to explain the behaviour.
At the risk of being overly critical sour grapes, I really had tools like Monibot in mind when creating Catalyst.
Out of the box, Monibot throws a bunch of data at you like database size, CPU %, requests, etc. None of these metrics really tell you if something in your webapp is broken. And if you want more useful metrics, you gotta instrument them yourself.
It does do some things that Catalyst critically misses (health checks, e-mail notifications). But at the same time, if you're going to prod, Monibot by itself is not something you'd be comfortable with. You're going to need to add other monitoring tools to get that peace of mind.