Thoughts
I'm now a `*local T` hater (even though I was a supporter of the proposal as it was being brainstormed this morning).
My reasoning is that
it doesn't effect codegen. Unlike almost every other Zig feature, it is exclusively a programmer-aid. And when you're looking at static analysis tools to aid the programmer, all of them are imperfect and all of them are complicated. So *local probably isn't different.
This is in stark contrast to *const and *volatile, both of which effect code-gen (I believe *const can be used for optimizations similar to const).
To the complicated point: knowing when to create it is easy and knowing that you can't return it from functions is easy, and realizing the potential of those rules is genius. The issue is assignment. In an expression like `x = &y` where y is a local and &y is a *local, determining whether this is allowed is non-trivial. You can't solve it perfectly without a borrow checker (equivalent to determining if the lifetime of x outlives the lifetime of y). But you can't solve it simply without rejecting any assignment to an x outside of the current scope.
And maybe that would be fine. I guess it would be fine. Still, good to break down; and does make it a little messier than it originally looks.