Workers have a max size of 10 MB at the moment, including everything. Hard to fit everything in there. Even with Python WASM embedded in the runtime they're having issues with slow cold starts due. Quite afew issues like how Workers spin up new a lot -- there's no affinity to servers already running the worker. Requests just get routed to any server in the location and spin up the worker if needed, and that Workers run V8 - Chromium's JS Engine and everything in a isolate. Also no matter the language, as long as it's not Javascript, to use Workers you'd need to bind back to the Javascript methods/calls/etc. You don't run web servers in Workers, just handle incoming requests
even if you get that to work, and bind back to the javascript side of things/make a nice loader, it's going to be slower then native js by a decent margin thanks to size and such, might as well just use typescript lol
Hello World with Native AOT is currently at around 2.7 MB. I spent a couple hours to see what would it take to bring it down to the same size as Golang (2 MB). It might actually be achievable with ...
Isolates provided by V8 provide a nice fast isolation layer, super fast to spin up and cheap resources wise. Allows Cloudflare to run your worker everywhere, on every metal, in every CF location. There's no Load balancer between the server that handles your request and workers, they're just right there on the receiving server