Linux Daily Topics

2020年8月26日Linuxカーネル、約2500の"フォールスルー"をリプレース

Linus Torvaldsは8月24日(米国時間⁠⁠、2020年10月のリリースに向けて開発中の「Linux 5.9」において、カーネルエンジニアのGustavo Silvaの修正パッチをマージした。このパッチではカーネル全体で使われていた2484もの「/* fall through */」および類似のコメント部分をすべて「fallthrough;」にリプレースしているほか、不要なfall-throughの削除も行われている。

Merge tag 'fallthrough-pseudo-keyword-5.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux -Linux kernel source tree

Linuxカーネルのメインライン開発では、今回のパッチを提供したSilvaを中心に、switch文のコメントとして記述されるさまざまな"fall-through"(⁠⁠/* Fall through */」⁠/* fall through */」など)を統一する努力が続けられてきた。C言語で認められている"暗黙のフォールスルー(implicit fall-through)" - switch文で各case文の最後にbreakを記述しないスタイルは、開発者が意図的にbreakを記述しなかったのか、それとも単に記述忘れなのか、その判断があいまいになりやすく、バグも発生しやすい。Linuxカーネルではコーディングをコンパクトにし、開発者の負荷を軽減することを目的に、GCC 7から実装された暗黙のフォールスルーに警告を出す「-Wimplicit-fallthrough」機能(フォールスルーさせたいcase文の最後に属性を記述)をベースにした「fallthrough;」マクロ(pseudo-keyword)を採用している。

しかし、これまでメインラインで適用してきた-Wimplicit-fallthroughのレベルは3という比較的ゆるやかなカバーであり

/* Falls through. */
/* fall-thru */
/* Else falls through. */
/* FALLTHRU */
/* … falls through … */

などもシンタックスとして許容されてきた。今回のパッチでは8月24日に公開された「Linux 5.9-rc2」に存在していた2484の"fail-through"コメントをすべてfailthrough;に置き換えており、RC2以前にリプレースされていた1167のfailthrough;を含めると、トータルで3651のリプレースが行われたことになる。

おすすめ記事

記事・ニュース一覧