有人尝试在 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 上运行的 ![]()
@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
我希望它能很快得到解决 ![]()
您认为使用 truffleruby 后 discourse 的性能指标(TTFB、整体性能等)会有多大改善?
布兰登在这个服务器上吗?
@Matthias_Schuster 快速搜索一下,可以在 Meta 上找到 https://meta.discourse.org/u/bjfish。