あたらしい「R 4.0.0」の主な新機能と変更点の紹介 part 2

前回に引き続き、Rの新機能をレビューします。

参照カウントの改良

C のベースコードでオブジェクトを安全に変更できるかどうかを判断するのに、NAMED メカニズムの代わりに参照カウントが使用されるようになりました。これにより、場合によってはコピーの必要性が減り、将来的にはさらなる最適化が可能になります。また、内部コードのメンテナンスも容易になります。この変更は、C/C++コードでサポートされているコーディング手法を使用しているパッケージにはほとんど影響を与えないと思われます。

昔Rを研究で使っていたときに周りの同僚にRはメモリ周りが弱いからと言われていましたが、全てのオブジェクトへの参照がカウントされるようになったようで、コピーをこのカウントに基づいてやればより効率的にになりそうです。普段あまり意識することはなさそうですが。さらに詳細を追いたい場合はここにNotesがあります。

https://developer.r-project.org/Refcnt.html

PCRE2へのマイグレーション

このバージョンのRは、Perlライクな正規表現のためのPCRE2ライブラリが利用可能な場合は、それに基づいてビルドされます。(Windows 以外のプラットフォームでは、ビルド時に PCRE2 が利用できない場合、オプションで PCRE1 を使用することができます)。使用されている PCRE のバージョンは extSoftVersion() で取得できます。PCRE1 (以前は ‘PCRE’ として知られていました) のバージョンは <= 8、PCRE2 のバージョンは >= 10 です。

R をソースからビルドする際には PCRE2 を使用することを強く推奨します(できればバージョン 10.30 以降)。

PCRE2では、PCRE1では受け入れられたいくつかの正規表現についてエラーが報告されます。ハイフンがリテラルとして解釈されるためには、文字クラスの中でエスケープされなければなりません(クラス定義の最初か最後でない限り)。\PCRE1 ではリテラルとして扱われていましたが、文字クラスでは ˶R、˶B、˶X は許可されません。

オプション PCRE_study は PCRE2 で使用されなくなり、使用されている場合は FALSE として報告されます。

手元のWindows10 R.4.0.5で試してみました。

確かにPCRE2が使用されています。ハイフンを含む正規表現に注意ですね。次回はいよいよ新機能の紹介です。数が多いので何回かに分けてレビューします。