This is so awesome. There’s a lot to geek out about here, but I was personally enamored with the extra effort to make good renders/visualizations in software. Thanks for the read!
Oh neat I’ve never heard of NativeAOT. I’ve only used Unity’s AOT compiler “Burst” for C# (I assume that is something different?).
Cool stuff.
edit: Actually I meant to say Unity’s IL2CPP, which transpiles IR to C++. Burst is a different tool with similar goals—it compiles IR straight down to native via LLVM.
Superficially this language appears to be very similar to Swift. Beyond the syntax, it also has first class refcounting, C language binding, and no external runtime (compiles straight to binary).
I wonder, does Vala have a stable ABI, or native compatibility with other higher-level languages like C++ or ObjC? These are other difficult challenges which Swift attempts to tackle (and depending on who you ask, with varying levels of success).
In any case this is an interesting language. Thanks for sharing
I agree with the sentiment but in practice I’ve found that most C++ STL exceptions throw in a “fatal error” type of scenario like a bad allocation and generally not an “expected error”. For example, basic_ifstream::open() sets a fail bit on error, and doesn’t throw an exception.
This is in contrast to python or Swift for example, their standard libraries are more “throw-prone”. Building off the previous example Swift’s String.init(contentsOf:encoding:) throws on error on failure.
So in practice, IMO it is usually safe to disable exceptions in C++. Though, I have run into tricky ABI breaks when you link multiple libraries in a chain of exceptions->noexcept->exceptions and so on! You’re of course at the mercy of nonstandard behavior so buyer-beware. I definitely wouldn’t advocate for turning them off -just- for a binary size reduction.
Matlab is awesome. I had to learn it for a class in Computational Photography back in school. The matrix-centric language design is an interesting change from traditional languages and the amazing linear solvers available give you a shocking amount of power sometimes. For example, the language has really good SIMD/parallelism support out of the box, because you are steered towards making all of your variables into vectors and performing batch processing. Backslash is also an incredibly powerful tool in the right hands, and lends itself to some beautiful oneliners (it’s sort of like a shell language in that way).
Very happy that Aras is fighting the good fight, doing some great OSS work after his departure from Unity. The speed up numbers are quite impressive!
I remember when I was first getting into shader programming 10+ years ago, I asked a question on the Unity forums and Aras was one of the first to respond. Even then he was a titanic figure behind Unity’s graphics stack. I never forgot how kind he was to help a kid like me out, I’m sure he was quite busy!
This is going to sound a bit hyperbolic but I haven’t been truly impressed with any new features in Unity since the introduction of PBR and dynamic indirect lighting in Unity 5.0. If your game doesn’t require cutting-edge technology then you would be hard-pressed to find a significant difference between the latest version and say version 5.4. If your game does require excellent optimization, rendering tech, etc, then Unreal is simply the better option.
What a treat to have this kind of event on Christmas. Though, my heart goes out to the hard working engineers/technicians/astronauts at NASA who are slaving over the holidays.