「今度から、現状の{|a,b| }の書式でブロックローカルが実現されるようになりました」、で いいじゃん。

{<a,b> }だとかlet:{}の導入って、結局は「互換性を保つため」という前提だよね。
本当にそのまま互換性を取れると思うの?
過去を気にして醜くなるより、諦めた方が幸せなこともあると思うぞ。

問題になっているブロック内ローカル変数の名前衝突は、知らない人がほとんど。
ということは、(運良く)名前は衝突していないわけで、互換性は問題なし。

{|a|}や{|$a|}とかいうのは、ブロック内で何もしていないことを検知して「旧書式臭い」ことを通知してもらえれば結構。

これで9割がた問題ないだろ。
残りの1割は、バージョンアップによって仕様が変わったんだから、ソース変えろや!そのまま動くと思うなんざ甘いんじゃゴルァ!ということで。