エイリアスをコンパイルタイム検証して衝突防止するzsh-abbr互換実装のabbrs
DRANK
をエイリアスにすると壊れるよというのが書かれていました。自分も gcc 自体は知っていたものの cc というコマンドは知らなかったので、なるほどと言う感じ。ただ、既存エイリアスや内部コマンドをいちいち覚えて壊れないか、みたいなのは人がやるものじゃないので、安全なやつを作ろうと思いました。 では、設定ファイルに書いたエイリアスがzshの組み込みコマンドやPATHに登録されているコマンドとコンフリクトしていないか、コンパイルタイムで検証します。これにより、例えば cc を登録しようとすると Error: "cc" conflicts with command on PATH: /usr/bin/cc (exact match) のようなエラーになります。以下が動作イメージです。見た方がわかりやすいと思います。 abbrs の特徴です。これは計算を2段階に分割して余計なオーバーヘッドを逃すという面と、「できちゃだめなことはできない」という安全機構を両立するための仕組みです。別のRust製ツールでoctorusというのを書いているときにこの思想に自然と行きつきました。やはりRustはいい言語。Unix domain socketによるdaemon化と非線形展開abbrs は zsh-abbr 互換を目指しつつ、パフォーマンスがよくなるようにし…