bjfish
(Brandon Fish)
1
我希望对以下 3 项更改提出请求,以帮助支持在 TruffleRuby 上运行 Discourse:
请求的更改
更新 bin/rails 以在不支持 fork 时禁用 unicorn。
错误
<internal:core>:764:in `fork': fork is not available (NotImplementedError)
文件
bin/rails
原因
TruffleRuby 不支持 fork。
建议
如果 !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
顺便问一下:mini_racer 不支持 TruffleRuby 的情况有变化吗?这是一个主要的障碍。
我有一个分支,使用 GraalJS for 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,但这可能只是我粗暴地禁用了 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 个赞