GraalVM Rランタイムの互換性
GraalVM RランタイムはGNU Rに基づいており、ベース・パッケージを再利用します。現在、これはGNU R 4.0.3に基づいており、Rの新しいメジャー・バージョンが使用可能になり安定したら、それらに移行します。GraalVMのRランタイム開発者は、R言語および組込み機能のあらゆる側面に関する広範なユニット・テストを保持しており、これらのテストはRソース・コードの一部として使用可能です。
GraalVMのRランタイムは、R拡張機能で使用されるネイティブ・インタフェースを含め、GNU Rとの完全な互換性を確保することを目的としています。これは、ggplot2
、Shiny
、Rcpp
など、未変更の複雑なRパッケージをインストールして実行できます。パッケージの中には、GNU Rの明示されていない動作または実装の詳細に依存しているものがあるため、パッケージのサポートについては作業が進行中であり、一部のパッケージが正常にインストールされなかったり、予期したとおりに動作しないことがあります。
パッケージのインストール
パッケージは、install.packages
関数またはR CMD INSTALL
シェル・コマンドを使用してインストールできます。デフォルトでは、GraalVMのRランタイムはCRANリポジトリの固定スナップショットを使用します1。この動作をオーバーライドするには、install.packages
関数のrepos
引数を明示的に設定します。この機能は、checkpoint
パッケージには影響しません。プロキシ・サーバーの背後にいる場合は、必ず、環境変数またはJVMオプション(--vm.Djava.net.useSystemProxies=true
など)を使用してプロキシを構成してください。
GraalVMのRランタイム用に特別にパッチが適用された一部のパッケージのバージョンは、GitHubリポジトリからそれらをダウンロードするinstall.fastr.packages
関数を使用してインストールできます。現在、これらはrJava
およびdata.table
です。
制限事項
GNU Rと比較して、GraalVM Rランタイムにはいくつかの制限があります:
- 下位の
graphics
パッケージのごく一部のみが機能します。ただし、grid
パッケージはサポートされており、それに基づくパッケージ(ggplot2
など)をRでインストールおよび実行できます。Rでのgraphics
パッケージのサポートは、将来のリリースで予定されています。 - 文字ベクターのエンコーディング: 関連する組込み(
Encoding
など)を使用できますが、有用なコードは実行されません。文字ベクターはJava文字列として表されるため、UTF-16形式でエンコードされます。GraalVMのRランタイムには、将来のリリースでエンコーディングのサポートが追加される予定です。 - ネイティブAPIの一部(
DATAPTR
など)では、Rの代替実装用にエミュレートするのが困難な実装の詳細が公開されています。これらは、様々なCRANパッケージを使用してGraalVM Rランタイムをテストしながら、必要に応じて実装されます。
1 より技術的に言えば、GraalVMのRランタイムは$R_HOME/etc/DEFAULT_CRAN_MIRROR
の固定MRAN URLを使用します。これは、URL文字列から特定の日付に表示されたときのCRANリポジトリのスナップショットです。