bjfish
(Brandon Fish)
1
TruffleRuby で Discourse を実行するための、以下の 3 つの変更をリクエストします。
リクエストされた変更
fork がサポートされていない場合に unicorn を無効にするように bin/rails を更新します。
エラー
<internal:core>:764:in `fork': fork is not available (NotImplementedError)
ファイル
bin/rails
理由
TruffleRuby はフォークをサポートしていません。
提案
!Process.respond_to?(:fork) の場合に unicorn を無効にします。
========================================================
リクエストされた変更
TruffleRuby の mini_profiler を無効にします。
エラー
<internal:core>:236:in `gem_original_require': cannot load such file -- stackprof (LoadError)
ファイル
config/initializers/006-mini_profiler.rb
理由
Stackprof は現在 TruffleRuby ではサポートされていません。
提案
RUBY_ENGINE が “TruffleRuby” の場合に mini_profiler の読み込みを無効にします。
========================================================
リクエストされた変更
rbtrace の読み込みを防ぎます。
既に rb_trace の読み込みを防いでいる類似の例:
エラー
Failure/Error: require ‘rbtrace’
提案
上記のリンクにあるいずれかの方法を使用して、rbtrace の読み込みを防ぎます。
ファイル
spec/rails_helper.rb
「いいね!」 2
gerhard
(Gerhard Schlager)
5
それらは妥当な要求のようです。
ところで、mini_racer が TruffleRuby でサポートされていないことについて、何か変更はありましたか?それは大きなブロッカーです。
「いいね!」 4
bjfish
(Brandon Fish)
6
BTW: mini_racer が TruffleRuby でサポートされなくなったことについて、何か変更はありましたか? それは大きなブロッカーです。
GraalJS を使用して TruffleRuby で mini_racer の機能のほとんどがテストスイートをパスするブランチがあります。 Discourse に必要なすべての機能に対応していると思います。 レビューが必要で、その後マージを試みます。 ローカルで実行する方法は次のとおりです: https://twitter.com/brandonfish/status/1486755128577253376
「いいね!」 6
bjfish
(Brandon Fish)
7
修正:
RUBY_ENGINEが「truffleruby」の場合、mini_profilerの読み込みを無効にする
「いいね!」 2
sam
(Sam Saffron)
8
mini_profiler は問題なく動作するはずです。rbtrace や stackprof などを読み込まないことをお勧めします。依存関係が緩いです。
mini_profiler は truffle 環境でも十分な価値を提供できます。これは MRI 固有のものではありません。
「いいね!」 4
gerhard
(Gerhard Schlager)
9
リクエストされた変更を含むPRはこちらです。
まだ正常に実行できませんでした。java.lang.NullPointerException が発生しましたが、これは私が crudely mini_racer を無効にしただけかもしれません。TruffleRuby で完全に機能する Discourse が実行されるのを楽しみにしています。
これ以上詳しく見ていませんが、stackprof と memory_profiler のロードを無効にしただけでエラーが発生することに気づきました。そのため、現時点では mini_profiler を完全に無効にしました。
2022-05-04 21:48:13 +0200 Rack app ("POST /mini-profiler-resources/results" - (127.0.0.1)): #<SystemStackError: stack level too deep
from StackOverflowCheckImpl.java:328:in `com.oracle.svm.core.graal.snippets.StackOverflowCheckImpl.newStackOverflowError0'>
他の問題の副作用だったのかもしれません。他の問題が解決したら調査できると思います。
「いいね!」 6