来るべきNetBSD-10で提供される新機能を調べてみる

[NetBSD Advent Calendar 2023](https://qiita.com/advent-calendar/2023/netbsd) 4日目の記事です。今日はNetBSD-10に搭載される新機能を調べてみようと思います。

[2日目](https://qiita.com/furandon_pig/items/6373fdf0bd7995f0fcee)と[3日目](https://qiita.com/furandon_pig/items/0e509155944e38df4061)の記事でNetBSD-current(開発版)の環境を作ることができました。開発版ではNetBSDの次期リリースに含まれる機能が実装・テストされており、新しい機能を先取りして試してみることができます。せっかくなので、NetBSD-currentに搭載されている、NetBSD-10リリースで提供予定の機能を調べてみます。

## NetBSD-10で提供予定の新機能

さっそくNetBSD-10で提供される新機能を調べてみようと思います。[wg(4)](https://man.netbsd.org/wg.4)などのmanページを見ると、以下のような記述があります。

```sh
# man wg
...
HISTORY
     The wg interface first appeared in NetBSD 10.0.
```

どうやらmanページの中から"first appeared in NetBSD 10.0."という記述を含むものを抽出すれば良さそうです。以下のようなコマンドで探してみます。

```sh
# find /usr/share/man/ -type f \
    | grep '\.[0-9]' \
    | xargs grep -A1 'first appeared in' \
    | grep '.Nx 10\.0' \
    | sed -e "s/-.*$//"
```

抽出したリストは以下になります。一部誤判定も含まれてしまっていますが、これくらいの数であれば抽出後に目視で確認する方法でも良さそうです。

```
/usr/share/man/man1/scmdctl.1
/usr/share/man/man2/getrandom.2
/usr/share/man/man2/poll.2
/usr/share/man/man2/pollts.2
/usr/share/man/man2/ppoll.2
/usr/share/man/man3/perror.3
/usr/share/man/man3/strerror.3
/usr/share/man/man3/strerror_l.3
/usr/share/man/man3/strerror_r.3
/usr/share/man/man3/sys_errlist.3
/usr/share/man/man3/sys_nerr.3
/usr/share/man/man4/amiga/zz9k.4
/usr/share/man/man4/aht20temp.4
/usr/share/man/man4/bmx280thp.4
/usr/share/man/man4/eqos.4
/usr/share/man/man4/iavf.4
/usr/share/man/man4/igpio.4
/usr/share/man/man4/ixl.4
/usr/share/man/man4/lagg.4
/usr/share/man/man4/mcommphy.4
/usr/share/man/man4/mos.4
/usr/share/man/man4/qat.4
/usr/share/man/man4/scmd.4
/usr/share/man/man4/scmdi2c.4
/usr/share/man/man4/scmdspi.4
/usr/share/man/man4/sgp40mox.4
/usr/share/man/man4/sht3xtemp.4
/usr/share/man/man4/sht4xtemp.4
/usr/share/man/man4/vio9p.4
/usr/share/man/man4/wg.4
/usr/share/man/man8/certctl.8
/usr/share/man/man8/wg
/usr/share/man/man8/wg
/usr/share/man/man8/wgconfig.8
/usr/share/man/man9/strlist.9
/usr/share/man/man9/strlist_append.9
/usr/share/man/man9/strlist_count.9
/usr/share/man/man9/strlist_index.9
/usr/share/man/man9/strlist_match.9
/usr/share/man/man9/strlist_next.9
/usr/share/man/man9/strlist_pmatch.9
/usr/share/man/man9/strlist_string.9
```

参考までに、[manページ](https://ja.wikipedia.org/wiki/Man%E3%83%9A%E3%83%BC%E3%82%B8)(wikipedia)を見ると、セクション番号と内容の対応は以下のようになっています。

| 章 | 内容 |
| --- | --- |
| 1 | 汎用コマンド |
| 2 | システムコール |
| 3 | ライブラリ関数、特に標準Cライブラリ関数 |
| 4 | 特殊なファイル（主に/devにあるデバイス）とドライバ |
| 5 | ファイル形式とその使用法 |
| 6 | ゲームとスクリーンセーバー |
| 7 | その他 |
| 8 | システム管理コマンドとデーモン |
| 9 | カーネルルーチン |

## 新機能を調べてみる

試しに[scmdctl(1)](https://man.netbsd.org/scmdctl.1)コマンドを見てみます。

```sh
# man scmdctl
...
NAME
     scmdctl – Command line utility to interact with a Sparkfun Serial
     Controlled Motor Driver
...
DESCRIPTION
     The scmdctl utility interacts with a Sparkfun Serial Controlled Motor
     Driver (SCMD) and provides a set of convient commands for most of the
     functions that the SCMD has.

```

どうやら[SparkFun Serial Controlled Motor Driver](https://www.marutsu.co.jp/pc/i/2238915/)というモータドライバを制御するためのコマンドのようです(リンク先では販売終了とあるけど、流通分が大量にある感じなのですかね？)。

[scmdctl(1)](https://man.netbsd.org/scmdctl.1)の"SEE ALSO"を見ると、関連マニュアルとして[scmdi2c(4)](https://man.netbsd.org/scmdi2c.4)や[scmdspi](https://man.netbsd.org/scmdspi.4)が挙げられています。

```sh
SEE ALSO
     iic(4), spi(4), scmdi2c(4), scmdspi(4),
```

```sh
# man scmdi2c
...
NAME
     scmdi2c – I2C frontend to the Sparkfun Serial Controlled Motor Driver
#
# man scmdspi
...
NAME
     scmdspi – SPI frontend to the Sparkfun Serial Controlled Motor Driver
```

これはNetBSD-10に `scmdi2c` と `scmdspi` というドライバが追加され、ユーザランドから操作するためのコマンドとして `csmdctl` が追加された、という話のようです。

このようにして、新たに追加されたmanページからNetBSD-10に追加される新機能を洗い出せるようです。

## まとめ

NetBSD-currentで時期リリースされるNetBSD-10の新機能を調べてみました。こまめにNetBSD-currentを更新して、随時追加されている新機能を試してみるのも面白そうです。