Languages and Architecture
https://verdagon.dev/ (RSS)
Committing language interop sins for science June 17, 2024 — Anyone trying to make a new mainstream language is completely insane, unless they're backed by a huge corporation.
Committing language interop sins for science May 24, 2024 — Languages like C++, Typescript, Kotlin, and Swift had a brilliant approach: they were created to harness an existing ecosystem of libraries from another pre-existing language. But that's easier said than done!...
Linear types + whitelisted destroyers = powers yet unimagined! May 14, 2024 — Also posted today: Layer-wise inferencing + batching: Small VRAM doesn't limit LLM throughput anymore, on how even a normal small computer can now run...
Also posted today: Higher RAII, and the Seven Arcane Uses of Linear Types, about how linear types let us control the future! Currently, the general consensus is that you can't really run larger LLMs on ordinary computers.
The Memory Safety Grimoire, Part 1 April 24, 2024 — A fellow named Zeke came into my server one day. Zeke: "Wait, so with generational references, we now have four ways to do memory safety?" Evan: "In fact, there are fourteen by my count....
Results and measurements! July 11, 2023 — — Sponsor on GitHub or Patreon! Three...
Generational references are a memory management technique, an alternative to reference counting, tracing garbage collection, or borrow checking. 0 In this technique, every reference remembers the ID ("generation") of the object it's pointing at. If the user dereferences an object and Vale isn't certain it's still...
Let's unleash some memory-safety mixed martial arts June 22, 2023 — Adding memory safety to C++ is a very difficult problem, to say the least. I've spent most of the last decade exploring this area (mainly to design Vale's memory...
this one simple trick language designers don't want you to know June 15, 2023 — Single ownership is one of those concepts that's both easier and more powerful than we realize. People often think it's complex, because it most often appears in languages that are already complex for...
In my recent article, I showed how Vale's linear types can provide memory safety without a borrow checker, generations, reference counting, or tracing GC. My friend Mike asked, "So linear types give zero-overhead memory safety, like borrow checking?" "Perhaps," I said. "What do you mean by zero-overhead...
In the Unexpected Quest post, I talked about how we had to transition Vale's templates to full generics in order to implement Vale's region borrowing feature which blends borrowing with shared mutability. I wanted so badly to write...
And some ancient egyptian hieroglyphic slates! June 1, 2023 — I've had some pretty surreal experiences while making Vale. 0 The weirdest was when I realized the hidden fundamental truth beneath a lot of the programming...
Generics help us avoid code size explosions! May 9, 2023 — A few years ago, a 2am realization changed the course of my life forever, and eventually turned me into a nomadic hermit
Stay on top of your testing In a small project, only a few thousand lines, it's easy to fix a bug without causing any more bugs because you know the system in and out. Once you start approaching 10,000 lines, fixing one bug will often cause multiple other bugs. Not just easy bugs, but obscure bugs that your users find six months...
Part 2 of the Memory Safety Expedition! Jan 16, 2023 — Every March, developers worldwide each try to make a roguelike game in less than 168 hours as part of the 7DRL Challenge. Roguelike games are hard, involving procedural level generation, pathfinding,...
A new paradigm, for easy and flexible speed and safety! Nov 20, 2022 — A few years ago, I was lying in bed at 2am listening to my favorite fanfiction podcast for the 47th time, drifting in and out of sleep, brain spinning on various features and bugs I'd...
Watch regions eliminate memory safety overhead! Nov 14, 2022 — Note: Regions are still a work-in-progress. Part 1 has been successfully prototyped, but parts 2-5 are only a preview describing...
Until recent events, I've firmly believed the most terrifying thing known to mankind is the kraken. The kraken is a colossal eldritch sea horror which resembles a giant squid. It's known to crush entire ships. They say that 60% of all ships lost at sea fell victim to krakens, probably. 0
Part 1 of the Memory Safety Expedition Oct 8, 2022 — A few weeks ago, I was asked four questions all on the same day: "When would we use C-like languages?" "What language should I use for my game?" "Why don't more people use Rust for web servers?" "What are the benefits of borrow...
Overview In short, we eliminate all undefined behavior, remove as many sources of nondeterminism 3 as possible, and record the rest. Let's start with how we can record inputs! Recording Inputs We can start up our program in "recording mode",...
Vale 0.2 is out, and it includes the beginnings of a feature we like to call Fearless FFI. This is part of Vale's goal to be the safest native language. 0 Most languages compromise memory safety in some way which can lead to difficult bugs and security...
Concept Functions Vale now supports concept functions, a way to specify that certain functions must exist for given generic parameters, without making them implement any traits. For example, List's clone function can require that there exists a clone function for its elements: func...
Like traits, but way more straightforward!
A compile-time for-each operator!
The longest yak-shave in history!
Such shenanigans, right under our noses!
How a language can enforce that we call an arbitrary function before destroying an object.
We can combine the best parts of different structured concurrency approaches!
Watch regions eliminate reference-counting overhead!
How constraint references enable easy safety, speed, and much more powerful RAII!