The way we're thinking about breaking changes is silly
Published on: 2025-05-20 18:59:43
The way we're thinking about breaking changes is really silly
26 Mar, 2025
A major problem plaguing modern compilers is that they have no concept of time. When run on a codebase, a compiler treats it as if it had always been in the exact state it is in at that moment and updating a dependency literally just updates the code that is downloaded to your hard drive without modifying its call sites in any way. Any errors that occur as a result are treated as fundamental to your program and not as temporary annoyances caused by the update.
In practice, what this means is that we essentially don't directly allow changing a function's type ever. The only reason non-breaking changes exist at all is because sometimes the same syntax that used to work with a previous instance of some function happens to also work with the new one. For example, if a function previously took an Int , modifying it to take an Int | null is not a breaking change because any value of type Int also implicitly has typ
... Read full article.