Modifiche richieste per supportare il discorso su TruffleRuby

Vorrei richiedere le seguenti 3 modifiche per supportare l’esecuzione di Discourse su TruffleRuby:

Modifica Richiesta
Aggiorna bin/rails per disabilitare unicorn quando fork non è supportato.

Errore

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

File
bin/rails

Perché
TruffleRuby non supporta il forking.

Suggerimento
Disabilita unicorn se !Process.respond_to?(:fork)

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

Modifica Richiesta
Disabilita mini_profiler per TruffleRuby

Errore

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

File
config/initializers/006-mini_profiler.rb

Perché
Stackprof non è attualmente supportato su TruffleRuby

Suggerimento
Disabilita il caricamento di mini_profiler quando RUBY_ENGINE è “TruffleRuby”

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

Modifica Richiesta
Impedisci il caricamento di rbtrace

Utilizzi simili impediscono già il caricamento di rb_trace:

Errore
Failure/Error: require ‘rbtrace’

Suggerimento
Utilizza uno dei metodi nei link sopra per impedire il caricamento di rbtrace

File
spec/rails_helper.rb

2 Mi Piace

Sembrano richieste ragionevoli.

A proposito: è cambiato qualcosa riguardo al fatto che mini_racer non sia supportato su TruffleRuby? È un blocco importante.

4 Mi Piace

A proposito: è cambiato qualcosa riguardo al fatto che mini_racer non sia supportato su TruffleRuby? Questo è un blocco importante.

Ho un branch con la maggior parte delle funzionalità di mini_racer che supera la suite di test utilizzando GraalJS per TruffleRuby. Credo che gestisca tutte le funzionalità necessarie per Discourse. Deve solo essere revisionato e poi cercherò di farlo unire. Questo è come l’ho eseguito localmente: https://twitter.com/brandonfish/status/1486755128577253376

6 Mi Piace

Correzione:
Disabilita il caricamento di mini_profiler quando RUBY_ENGINE è “truffleruby”

2 Mi Piace

mini_profiler dovrebbe andare ancora bene, ti consiglio di non caricare rbtrace / stackprof ecc. Ci sono dipendenze allentate.

mini_profiler può ancora fornire molto valore nel mondo truffle, nulla di specifico per MRI a riguardo.

4 Mi Piace

Ecco una PR con le modifiche richieste.

Non sono ancora riuscito a farlo funzionare correttamente, c’è stato un java.lang.NullPointerException, ma potrebbe essere solo che ho disabilitato rudemente mini_racer. Non vedo l’ora di vedere un Discourse completamente funzionante in esecuzione su TruffleRuby.

Non ho approfondito ulteriormente, ma ho notato un errore quando ho semplicemente disabilitato il caricamento di stackprof e memory_profiler. Quindi per ora ho disabilitato completamente 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'>

Potrebbe essere stato un effetto collaterale di altri problemi. Immagino che potremmo indagare quando gli altri problemi saranno risolti.

6 Mi Piace