Alterações Solicitadas para Apoiar o Discurso sobre TruffleRuby

Gostaria de solicitar as seguintes 3 alterações para ajudar a executar o Discourse no TruffleRuby:

Alteração Solicitada
Atualizar bin/rails para desativar o unicorn quando o fork não for suportado.

Erro

internal:core/kernel.rb:764:in `fork': fork is not available (NotImplementedError)

Arquivos
bin/rails

Por quê
O TruffleRuby não suporta fork.

Sugestão
Desativar o unicorn se !Process.respond_to?(:fork)

========================================================

Alteração Solicitada
Desativar mini_profiler para TruffleRuby

Erro

internal:core/kernel.rb:236:in `gem_original_require': cannot load such file -- stackprof (LoadError)

Arquivos
config/initializers/006-mini_profiler.rb

Por quê
O Stackprof não é suportado atualmente no TruffleRuby

Sugestão
Desativar o carregamento do mini_profiler quando RUBY_ENGINE for “TruffleRuby”

========================================================

Alteração Solicitada
Impedir o carregamento do rbtrace

Usos semelhantes já impedem o carregamento do rb_trace:

Erro
Failure/Error: require ‘rbtrace’

Sugestão
Use um dos métodos nos links acima para impedir o carregamento do rbtrace

Arquivos
spec/rails_helper.rb

2 curtidas

Essas parecem ser solicitações razoáveis.

A propósito: algo mudou sobre o mini_racer não ser suportado no TruffleRuby? Esse é um bloqueador importante.

4 curtidas

Aliás: Algo mudou sobre o mini_racer não ser suportado no TruffleRuby? Esse é um bloqueador importante.

Tenho um branch com a maior parte da funcionalidade do mini_racer passando na suíte de testes usando GraalJS para TruffleRuby. Acredito que ele lida com toda a funcionalidade necessária para o Discourse. Só precisa ser revisado e então tentarei fazer com que seja mesclado. É assim que tenho executado localmente: https://twitter.com/brandonfish/status/1486755128577253376

6 curtidas

Correção:
Desabilitar o carregamento do mini_profiler quando RUBY_ENGINE for “truffleruby”

2 curtidas

mini_profiler ainda deve funcionar bem, eu recomendaria apenas não carregar rbtrace / stackprof etc. Existem dependências soltas.

mini_profiler ainda pode fornecer muito valor no mundo truffle, nada específico do MRI sobre isso.

4 curtidas

Aqui está um PR com as alterações solicitadas.

Ainda não consegui fazê-lo rodar com sucesso, houve um java.lang.NullPointerException, mas isso pode ser apenas eu desabilitando rudemente o mini_racer. Estou realmente ansioso para ver um Discourse totalmente funcional rodando no TruffleRuby.

Não investiguei mais a fundo, mas notei um erro quando apenas desabilitei o carregamento de stackprof e memory_profiler. Então, desabilitei completamente o mini_profiler por enquanto.

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'>

Pode ter sido um efeito colateral de outros problemas. Acho que poderíamos investigar quando outros problemas forem resolvidos.

6 curtidas