关于 Truffleruby 的讨论

有人尝试在 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 天前修复。

不幸的是,Mastodon 而不是 Discourse 将是第一个在 TruffleRuby 上运行的 :dotted_line_face:

@volanar 是的——我现在没有足够的时间来回答这个问题——白天工作很忙。

@eregon 在这里,我不知道有任何阻碍 truffle 的问题,我们去年合并了 mini racer 的修复程序。

Brandon 一年前让 Discourse 运行起来了:
https://twitter.com/brandonfish/status/1486755128577253376
https://twitter.com/brandonfish/status/1519726230936993792

我记得有一个问题是一些 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

我希望它能很快得到解决 :face_with_peeking_eye:
您认为使用 truffleruby 后 discourse 的性能指标(TTFB、整体性能等)会有多大改善?

布兰登在这个服务器上吗?

@Matthias_Schuster 快速搜索一下,可以在 Meta 上找到 https://meta.discourse.org/u/bjfish。