久々のネタ更新(さらに久々の lctags 更新)

github に上げている個人的なツールの中で、 スターの付いている数少ないプロジェクトの1つである lctags。

これを久し振りに更新した。

更新内容は以下の通り。

  • docker による環境構築対応
  • C++ の auto 型推論対応
  • libclang15 対応

暫くノーメンテだった lctags を、このタイミングで更新したのは、 イマドキの C++ に使うには色々と不備があった為。

仕事で新しいプロジェクトに入り、そこで C++ をメインで利用していたので、 ソースを読む補助ツールとして lctags を導入しようと思ったが、 新しい環境で lctags のビルドをするのが困難だった。

「なにが困難か」というと、 lctags は libclang 10 以降ではビルドできなくなっていた。 さらに libclang 9 以前は、 ubuntu 22.04 の apt でインストールできない。

ということで、 まずは libclang 9 を取ってこれる ubuntu 20.04 上で lctags を ビルドする docker 対応を実施。

これで、新プロジェクト環境で lctags を利用できるようになったが、 新プロジェクトに lctags を掛けると、解析処理がフリーズすることが判った。

このフリーズの原因を調べると、 C++ の auto 推論を利用している箇所を lctags で解析すると、 そこの処理でフリーズしていた。

まぁ、 lctags はあくまでも C のプロジェクトのソース解析がメインで、 C++ はオマケ程度なので仕方がない。

特に比較的に新しい規格は、 lctags 開発当初はまったくと言って良い程、触っていなかったので、 動作確認も全くやってなく、新しい規格で不具合が出るのはある意味当然。

そして最後の libclang16 対応。

これは、折角久し振りに lctags を更新するので、 これを機会に最新バージョンに対応しておこう、ということで対応。

特に apt で libclang9 を取ってこれる ubuntu が、20.04 と世代的に少し古めなので、 いくら docker 内とはいえ、更新しておいた方が良いだろうと判断し、 最新の libclang16 対応を行なった。

lctags はかなりマイナーな用途のツールではあるが、 スターの数は未だに微妙に増えている & 自分自身の新しい仕事のプロジェクトでも C++ を使っているので、 今後もメンテはやっていく。