From 8d9e190ced36718a1969f6974835c8e1db2eee5f Mon Sep 17 00:00:00 2001 From: Boris Batkin Date: Fri, 12 Jun 2026 00:47:06 -0700 Subject: [PATCH] blog: add "Bye-bye Elvis" post on the tFixedArray rework MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Also backtick das_sort in do-u-even-sort — build_blog.py passes raw HTML through, so the browser swallowed as an unknown tag and the published post rendered "vs das_sort)". Co-Authored-By: Claude Fable 5 --- site/blog/_posts/do-u-even-sort.md | 2 +- .../_posts/elvis-have-left-the-building.md | 37 +++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 site/blog/_posts/elvis-have-left-the-building.md diff --git a/site/blog/_posts/do-u-even-sort.md b/site/blog/_posts/do-u-even-sort.md index 7caa986f28..2fcaf821e1 100644 --- a/site/blog/_posts/do-u-even-sort.md +++ b/site/blog/_posts/do-u-even-sort.md @@ -42,7 +42,7 @@ Problem is - das has sort, sort, and only sort. No heap, no nth_element, no nada It never is. I can't just merge. I have to measure. Take the ruler, take it out, and see where it lands. This is how das became das. So a matrix was born. The matrix of the benchmarks, that is. -std::sort vs another std::sort (because Apple Clang is more awesome more often), vs qsort (which was later dropped for being dog slow), vs das_sort (and later vs das_sort). repeat for nth_element, make_heap, heap_sort. Different sizes too. +std::sort vs another std::sort (because Apple Clang is more awesome more often), vs qsort (which was later dropped for being dog slow), vs das_sort (and later vs `das_sort`). repeat for nth_element, make_heap, heap_sort. Different sizes too. Guess what? It instantly showed that what I had was not IT. A few hours later, what I had became IT enough. Did I mention the Apple Clang runtime? Its good. diff --git a/site/blog/_posts/elvis-have-left-the-building.md b/site/blog/_posts/elvis-have-left-the-building.md new file mode 100644 index 0000000000..29bf906c74 --- /dev/null +++ b/site/blog/_posts/elvis-have-left-the-building.md @@ -0,0 +1,37 @@ +--- +title: Bye-bye Elvis +date: 2026-06-11 23:30:24 +tags: + - daScript + - Claude +--- + +I'm happy. I'm feeling glad. + + + +Because the proverbial Elvis has left the proverbial building. + +```daslang +def foo ( a : auto(TT) ) { + var b : TT = a +} +var arr : int[4] +foo(arr) +``` + +This is about as fundamental as it gets. Or at least it should be. Only it was not. Well, it mostly was. It pretended that it was. But it was not. Not really. Elvis - I hate your guts. Won't miss u. Don't let the door hit u on the way out. + +Two words. Fixed arrays. Since the dawn of day. Since the inception of daScript. From before generics were part of the language, I decided that having `vector dim` as part of the base type was a good idea. Like float[4][4] is baseType=Type::tFloat, and dim = {4,4}. Awesome. Cool beans. + +By the time generics landed, it was too late. There was the game running, and 'changing everything' was already not an option. I did not know it yet, until few months later someone decided to push int[4] into `array`. Thats when it dawned on me. Until yesterday in the example above TT would resolve to 'int'. Just like that. + +Inheriting the full line was not it either. typedef mat = float[4][4] and then passing mat[3] to an auto(TT)[] generic - and u don't know where to split it. At least int was manageable. Just add [], [][], and [][][] override. 640kb is enough for everyone. + +The longer it dragged, the more it annoyed me. But, the transition cost was off-putting. "Touch five execution tiers, every classifier, three native modules, the IDE plugin, the doc toolchain, and don't break a language people ship games on". I'll just add another generic. No one uses fixed array anyways. And it kept dragging on. + +Sometimes stars align. 10k tests (10920 on the day of the refactor) make it possible to break things. Solid CI matrix is there to check the infrastructure breakdown. MCP allowed rapid iterations. The whole ecosystem is organized to be sweepable. Thats how a story turns into a fable. + +Bye Elvis. Until we meet again. One dead Elvis at a time. + +The future is coming on.