Tridge in his blog post describes people as "foaming at the mouth"?!
Did you see the picture in the article where the user posted a picture of them strangling the maintainer? I think “foaming at the mouth” is probably gentler than how I would characterise that.
I always remember when, as a young geek writing games for my C64, I was thrilled when I saw the Terminator and a lot of the code scrolling past in its HUD was 6502 assembly code!
That is really interesting, and very clever - thanks for the details! What you describe is indeed what I meant by whole world, I'm not sure if there's a better term of art for it.
I can't speak for the core team, but from memory invokedynamic took a long time to become performant. So if you still want to support older JVM versions, the performance will be pretty terrible on those older systems if invokedynamic is used for something as integral as var lookups.
Clojure (AFAIK) does not use invokedynamic, except perhaps in the latest version for some of the new interop stuff. It still officially supports JVM 1.8 bytecode. It’s a language which greatly values stability and backwards compatibility, so it’s been very slow to adopt newer JVM features.
No, it doesn't. In JVM Clojure's case, the vars are usually compiled to the moral equivalent of a global variable holding a pointer to a function. This allows you to update the function if the developer redefines it in the REPL, but it comes at a performance cost (the JVM can't inline it or otherwise optimise it). Clojure also allows you to compile with "direct linking", e.g. for production deployments, where you know you're unlikely to be wanting to dynamically update the code. In those cases defns are compiled down to static methods which call each other - much faster since the JVM can perform its magic with them, but you can't update them at the REPL.
I'm unsure exactly how jank works WRT this tradeoff, but the article makes it sound like it's closer to the direct linking version, but with the inlining etc being done by jank rather than the JVM. I don't know if this is only for AOT or also in JIT cases.
There is one thing that I think is important to bear in mind when discussing inlining, especially in the context of Clojure. This is that once a function has been inlined, you can no longer update the definition of that function in the REPL and have that update the behaviour of functions which use it, unless you recompile those as well. This is not a criticism of course, it’s just part of the natural tension between dynamism and performance.
When I was in NYC a while back, I met a woman at a friend's dinner party. She sounded totally American, but was in fact Brazilian. She worked as a lawyer, and said that she'd had to get extensive voice training in order to sound American so that people would take her more seriously professionally. I have no idea if the professional part worked, but the accent, mannerisms etc was amazing - I would never have guessed.
Sure, but the article talks about flourishing populations of deer, elk, and bison. I assume that means we’re talking about herds of each, all in the same space. And they have to survive over winter, which sounds pretty cold there - presumably they don’t migrate, which I guess they usually would? It’s definitely not ideal conditions.
What's amazing to me is how little space is required to have a completely self-sustaining ecosystem. A 60km diameter circle just doesn't seem like a very big space to have enough plants to support "flourishing" numbers of multiple types of large herbivores, without migration, as well as all the different prey species required to keep things in balance.
Regardless of the arguments about radiation, it seems pretty clear that lack of humans is really the most important thing for animals to flourish.
We need to have a conversation about wombats
https://theoatmeal.com/comics/wombats
Possibly NSFW, depending on your W.