2,050 karma · joined December 29, 2022
Regarding #4, is this actually a done deal? I haven't dug into the JVM specifics, but I thought they would avoid allocating objects. And for now they just want to get the model right, while continue to optimize as time moves on. I think that's the right approach.
I actually see this way less critical because if you truly have performance-critical usage of structs, you know what you are doing. And if you know what you are doing, you will know about opting-in.
And for everything else? I think it's nice to have a range of benefits that come from having a value type without handing a gun to a monkey. Because the feature will be misused by people that don't know about tearing, thinking "value" is a free performance upgrade. And I do believe that it is the right mental model to reason about it.
I just don't see the huge issue. If the CLR has a way to provide atomic access to non-tearable structs, surely the JVM can too? We are talking CPU instructions here after all. Or am I missing something?
It's pretty much impossible that anything organic or creative could be created by Facebook at this point.
It's no surprise they let their own brands completely languish.
I could imagine that they simply didn't want to have weeks or months of limbo while the world situation is as unstable as it is. Labour very much campaigned on "being different than Tories". And you could argue that a lengthy contest is counter productive. Especially if it turns into a media circus that only binds attention and resources, giving Farage room to attack.
Damned if you do, damned if you don't.
But replacing it with another guy that has no mandate is a fatal mistake. What Labor needed was an internal contest to fight for the best ideas, even if the winner was already pre-determined. A single local poll can't possibly decide the future of the country.
But perhaps the idea is to trigger a re-election because a "continue as usual" will be fatal for Labour and the country.
Structs in most languages simply bunch a couple constraints together to get another set of performance benefits, but there's no law stating that they couldn't be singled out. In the design of Valhalla, it states that types can come in 4 buckets:
1: Fully identity classes (total control, mutable)
2: Value Based classes (no mutability, but full integrity and dense memory layout)
3: Implicitly constructed values (forced empty default constructor for swift bulk array initialization)
4: Tearable Values (No cross-field integrity during runtime for parallel access)
And I bet that for a vast majority of developers, #4 will come to a shocking surprise, thinking "values are threat safe" because they are told to use immutables.
This way of splitting up structs is the real interesting part of Valhalla, but this shitty AI-generated article buries everything interesting.
This is fine if you hand-roll all your code yourself, but I often use mapping libraries to lower the code footprint and the problems resulting from schema changes are subtle and fly under the radar. This is different from classes with hard construction guarantees, which Java would offer with their "integrity by default" mantra. Where you can opt out of integrity for performance benefits (which is also part of the design).
And Nullability in C# is an absolute nightmare. The type system has completely different rules for nullable types that generalize over classes and structs and there is no generic such as a "Nullable type".
It's just lots of minor annoyances that don't form a cohesive whole.
So where in other languages, the struct/class taxonomy is binary, Java allows more granular control, reflection the semantics of the underlying domain. Snd as it turns out, structs have a wide range of footguns, especially in a parallel context.
I’ve been reading the mailing lists and watched all videos on the topic and it is truly inspiring how much they managed to consolidate the design to something that always looked like java.
But while also going far deeper in granularity and understanding what it even means to be a value type and what optimizations can be done where
It is easy to spot AI generated garbage.
My bad, the satellite business is profitable. It's the space rocket division that operate at a loss, which they state clearly in their IPO filing.
> xAI is a money burning furnace
Even Mistral is earning more revenue than xAI and the french seem well on the way of having a sustainable business who becomes a key player in Europe.
But I might be biased, my information is mostly based on: https://www.youtube.com/watch?v=IHD8BDFYyGI