Rの32bit版WindowsのサポートはR 4.1.xまで
R 4.1が来月リリースされますが、リリースノートの1番上にこんなことが書かれています。 32bit版Windowsのサポートは4.1系で終了、つまり、マイナーバージョンは年に1度のペースで上がるので4.2がリリースされる次の春までで終わります。
FUTURE DIRECTIONS
- It is planned that the 4.1.x series will be the last to support 32-bit Windows, with production of binary packages for that series continuing until early 2023.
Microsoftは32bit版Windowsの提供は1年前に終了しているので、いつか来るだろうと予想していましたが、思ったより早かったです。
32bit版Windowsとかそもそも誰も使ってなくない? 何が関係あるの?
...と思うじゃないですか。
CRANのパッケージはさまざまな環境(Linux、macOS、Windows、Solaris)でテストされていて、1つでもCRAN上のCIがコケると問題とみなされてパッケージ削除の憂き目に遭います。 中でも、つらみの二大巨塔と言われているのがWindowsとSolarisです。多くのパッケージ開発者はmacOSやLinuxを使っていて手元にないからです。
Solarisの話は置いておいて*1、Windowsをさらに難しくしているのは、 WindowsのRは64bit版と32bit版が提供されており、どちらでもパッケージがインストールできるようにする必要がある、という要求です。 多くのライブラリは64bitの環境でしか使われていないので、32bitにしたときに予期せぬエラーが発生したりします。 もちろん、アーキテクチャを考慮しきれていないコードが悪い、という評価もできますが、そうは言ってもサポート対象を広げるには労力が必要です。 Microsoftが開発しているLightGBMですら32bit版Windowsのエラーを時々踏んでいるので、況や一般の開発者をや、という感じはしますよね。
さて、なぜこんな要求がいまだにあるのか。 「32bit版とか誰も使ってなくない?」と私も思ってたんですけど、Twitterでツイートするとこういう情報を教えてもらって、なるほどなあとなりました。 64bit版Windowsを使っていても32bit版のアプリケーションが動いている、ということはけっこうあるようです。 なかなか難しいものですね。
I’m excited for this, but corporations using R might get hurt the most here. Many financial institutions using R are stuck on Windows machines with old versions of Microsoft Access that are 32 bit, requiring 32 bit R to get data out through odbc. It’s still for the best though.
— Davis Vaughan (@dvaughan32) 2021年4月17日
これがどう影響するか
4.2がリリースされても、更にその次のバージョンが出るまでは4.1(oldrel)のチェックが動いているので、その間は32bit関連の何らかの問題を踏む可能性があります。
そういう場合に手っ取り早い対処は、DESCRIPTION
に
Depends: R (>= 4.2)
と書くことです。R 4.1以前のサポートを切る、つまり、32bitのサポートを切る、ということです。 いちいち32bitでの動作確認をするよりは、こっちを選ぶ開発者が多くなるでしょう。
そうするとどうなるかというと、Windowsだけではなく、すべてのOSで、バージョン4.1以前のRではそのパッケージがインストールできなくなります。 これは、バージョンを上げづらい環境でRを使っているユーザーにはちょっと苦しいかもしれません。 たとえば、共用のLinuxサーバー上にインストールしているRとかはなかなかバージョンを上げられなかったりします。 もちろん過去のアーカイブは残ってるので remotes::install_version() などでインストールはできますが、依存関係の解決とかは自分でがんばる必要があり、やや面倒です。 RStudio Package Managerで在りし日のスナップショットを使う、といった対応が必要になるかもしれません。
まとめ
備えよう。