Blog post: Review of trimming for AoC 2025

I think the near future of the language will have formal interfaces and a strict sublanguage. This is just what it has been building towards: write the simple code to get things work, but for core packages, then take the time to refactor towards a static sublanguage with more guarantees, lock it down and have it compile time checked.

Solving the two language problem isn’t about making any code work fast, it’s about making it so that there is a way to write a code that is very simple and easy, but then there’s a gradual process to get a very fast and statically inferable program. The key is that no rewrite is required: rewrites are brutal and always have issues. Instead, it’s about having a process whereby you can gradually change one line at a time, one function, and finally one package at a time, towards more guarantees. What is lacking right now is then the ability to lock it down in the end, to say okay, this is now in the strict mode, this well-defined acting part of the language, and now everything has compile-time errors and complete static guarantees.

34 Likes