TruffleRubyでDiscourseを試した人はいますか?
この方向性を検討するのは妥当でしょうか?
興味深いですね。なぜ彼らは貢献するのではなく、フォークする決断をしたのでしょうか。
@merefield Truffleruby は、Oracle の開発者が作成した GraalVM 向けの Ruby 実装です。GraalVM 上での優れた パフォーマンス と、他の言語との相互運用性が特徴です。
これはフォークではありません。
私は Truffleruby 上の Rails についてある程度の経験があり、来週 Discourse を確認したいと考えています。
追加情報 - Running Rack and Rails Faster with TruffleRuby - Speaker Deck
非常に興味深いですね。既存の Discourse コードベースを大幅な変更なしに実行できるとお考えですか?必要となる変更にはどのようなものがあるでしょうか?
簡潔に答えると、現時点では TruffleRuby では動作しません。
@gerhard リンクをありがとうございます。既存の課題を理解しやすくなります。
現在のブロック要因は mini_racer です。詳細は mini_racer: `rb_context_init_unsafe': External function cannot be found. · Issue #1827 · truffleruby/truffleruby · GitHub をご覧ください。
とはいえ、少なくともすべての gem は TruffleRuby でインストール可能です。私たちは CI でそれをテストしています(やや古い Discourse 向けです)。
この問題は5日前に修正されました。
残念ながら、ディスコースではなくマストドンが最初に TruffleRuby で動作することになります ![]()
@volanar そうですね。今は本業が忙しくて、この質問に戻る時間がありません。
@eregon が参加しました。Truffle に関してブロッカーがあるとは認識していません。昨年、Mini Racer の修正をマージしました。
Brandon は 1 年前に Discourse を実行しました。
https://twitter.com/brandonfish/status/1486755128577253376
https://twitter.com/brandonfish/status/1519726230936993792
私が記憶している問題の 1 つは、一部の gem が Hash のスレッドセーフ性に依存していることでした。これには一般的な解決策がありますが、TruffleRuby ではまだマージ/統合されていません。一方で、Hash を並行して使用することが正しいケースは非常にまれであり、多くの場合、見つけにくい方法で並行処理のバグを隠蔽することになります。したがって、それに依存している gem を修正する方が良いかもしれませんが、それには時間がかかります。
パフォーマンスをベンチマークする必要があります。ベンチマークが意味のある/代表的なものになるためには、マルチスレッドでベンチマークする必要があります。これには A way to mark C extensions as thread-safe, so they can be executed in parallel · Issue #2136 · truffleruby/truffleruby · GitHub が必要です。
それがすぐに解決されることを願っています ![]()
TruffleRubyを使用することで、Discourseのパフォーマンス指標(TTFB、全体的なパフォーマンスなど)はどの程度改善されると思いますか?
ブランドンはこのサーバーにいますか?
@Matthias_Schuster すばやい検索で、Meta のこちらが見つかりました。