Trufflerubyに関する談話

TruffleRubyでDiscourseを試した人はいますか?
この方向性を検討するのは妥当でしょうか?

「いいね!」 2

興味深いですね。なぜ彼らは貢献するのではなく、フォークする決断をしたのでしょうか。

「いいね!」 2

@merefield Truffleruby は、Oracle の開発者が作成した GraalVM 向けの Ruby 実装です。GraalVM 上での優れた パフォーマンス と、他の言語との相互運用性が特徴です。
これはフォークではありません。

私は Truffleruby 上の Rails についてある程度の経験があり、来週 Discourse を確認したいと考えています。

追加情報 - Running Rack and Rails Faster with TruffleRuby - Speaker Deck

「いいね!」 1

非常に興味深いですね。既存の Discourse コードベースを大幅な変更なしに実行できるとお考えですか?必要となる変更にはどのようなものがあるでしょうか?

「いいね!」 1

簡潔に答えると、現時点では TruffleRuby では動作しません。

「いいね!」 5

@gerhard リンクをありがとうございます。既存の課題を理解しやすくなります。

「いいね!」 1

現在のブロック要因は mini_racer です。詳細は mini_racer: `rb_context_init_unsafe': External function cannot be found. · Issue #1827 · truffleruby/truffleruby · GitHub をご覧ください。

とはいえ、少なくともすべての gem は TruffleRuby でインストール可能です。私たちは CI でそれをテストしています(やや古い Discourse 向けです)。

「いいね!」 4

この問題は5日前に修正されました。

「いいね!」 2

残念ながら、ディスコースではなくマストドンが最初に TruffleRuby で動作することになります :dotted_line_face:

「いいね!」 1

@volanar そうですね。今は本業が忙しくて、この質問に戻る時間がありません。

「いいね!」 1

@eregon が参加しました。Truffle に関してブロッカーがあるとは認識していません。昨年、Mini Racer の修正をマージしました。

「いいね!」 1

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 が必要です。

「いいね!」 3

それがすぐに解決されることを願っています :face_with_peeking_eye:
TruffleRubyを使用することで、Discourseのパフォーマンス指標(TTFB、全体的なパフォーマンスなど)はどの程度改善されると思いますか?

「いいね!」 2

ブランドンはこのサーバーにいますか?

@Matthias_Schuster すばやい検索で、Meta のこちらが見つかりました。

「いいね!」 2