readInt takes a pointer to an array to enforce at compile time the length of the data. When slicing with comp-time known length, it actually returns a pointer to an array instead of a slice
ah but its not, the addition may overflow! Of course, with normal addition that is illegal so the compiler might be justified in being smart, but think about how that would work!
Is addition in the end position of slicing special when it includes the start position and a comptime known other operand? That would be inconsistent with the rest of the language.
Or does the compiler front end track such nuanced invariants across the whole language? That would make the compiler much more complicated, and certainly slower (but idk how much).
Both would need to be in the language spec as they affect types, but the latter would be pervasive across the entire spec as it would affect comptime evaluation. Either way it complicates the language which is an anti-goal.
Also being forced to use the [s..][0..N] syntax makes it explicit that it is an array pointer instead of a slice.