Uh, let-binding dynamic variables is as old as the hills.
It's older than Emacs (and that's saying something).
It's still no good. Dynamic variables are global mutable state, with all its downsides.
Early Lisps had only dynamic binding because people didn't know better. But now we know that global mutable state is almost always undesirable and avoid id wherever we can.