Linux Daily Topics

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

この記事を読むのに必要な時間:およそ 1 分

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のリプレースが行われたことになる。

著者プロフィール

階戸アキラ(かいとあきら)

起きてからまず海外ニュースサイトのハシゴをしないと1日を始められない海外ニュースウォッチャー。英語は英検準一級の資格を持ち,日本人と話すより英語圏の人のほうがウマが合う。