Cambios solicitados para apoyar el discurso sobre TruffleRuby

Me gustaría solicitar los siguientes 3 cambios para ayudar a ejecutar Discourse en TruffleRuby:

Cambio Solicitado
Actualizar bin/rails para deshabilitar unicorn cuando fork no es compatible.

Error

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

Archivos
bin/rails

Por qué
TruffleRuby no soporta forking.

Sugerencia
Deshabilitar unicorn si !Process.respond_to?(:fork)

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

Cambio Solicitado
Deshabilitar mini_profiler para TruffleRuby

Error

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

Archivos
config/initializers/006-mini_profiler.rb

Por qué
Stackprof no es compatible actualmente en TruffleRuby

Sugerencia
Deshabilitar la carga de mini_profiler cuando RUBY_ENGINE es “TruffleRuby”

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

Cambio Solicitado
Evitar que rbtrace se cargue

Usos similares que ya evitan que rb_trace se cargue:

Error
Failure/Error: require ‘rbtrace’

Sugerencia
Utilizar uno de los métodos en los enlaces anteriores para evitar cargar rbtrace

Archivos
spec/rails_helper.rb

2 Me gusta

Esas parecen solicitudes razonables.

Por cierto: ¿Ha cambiado algo sobre que mini_racer no sea compatible con TruffleRuby? Ese es un bloqueo importante.

4 Me gusta

Por cierto: ¿Ha cambiado algo sobre mini_racer no ser compatible con TruffleRuby? Ese es un bloqueo importante.

Tengo una rama con la mayor parte de la funcionalidad de mini_racer pasando la suite de pruebas usando GraalJS para TruffleRuby. Creo que maneja toda la funcionalidad necesaria para Discourse. Solo necesita ser revisada y luego intentaré que se fusione. Así es como lo he estado ejecutando localmente: https://twitter.com/brandonfish/status/1486755128577253376

6 Me gusta

Corrección:
Deshabilitar la carga de mini_profiler cuando RUBY_ENGINE es “truffleruby”

2 Me gusta

mini_profiler debería seguir funcionando bien, recomendaría que simplemente no carguemos rbtrace / stackprof, etc. Hay dependencias sueltas.

mini_profiler aún puede aportar mucho valor en el mundo de truffle, nada específico de MRI al respecto.

4 Me gusta

Aquí tienes una PR con los cambios solicitados.

Todavía no he conseguido que funcione correctamente, hubo un java.lang.NullPointerException, pero eso podría ser solo que deshabilité burdamente mini_racer. Tengo muchas ganas de ver un Discourse totalmente funcional ejecutándose en TruffleRuby.

No investigué más a fondo, pero noté un error cuando solo deshabilité la carga de stackprof y memory_profiler. Así que deshabilité completamente mini_profiler por ahora.

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

Podría haber sido un efecto secundario de otros problemas. Supongo que podríamos investigar cuando se resuelvan otros problemas.

6 Me gusta