Änderungen zur Unterstützung der Diskussion über TruffleRuby angefordert

Ich möchte die folgenden 3 Änderungen beantragen, um die Ausführung von Discourse auf TruffleRuby zu unterstützen:

Angefragte Änderung
Aktualisieren Sie bin/rails, um Unicorn zu deaktivieren, wenn Fork nicht unterstützt wird.

Fehler

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

Dateien
bin/rails

Warum
TruffleRuby unterstützt das Forken nicht.

Vorschlag
Deaktivieren Sie Unicorn, wenn !Process.respond_to?(:fork)

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

Angefragte Änderung
Deaktivieren Sie mini_profiler für TruffleRuby

Fehler

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

Dateien
config/initializers/006-mini_profiler.rb

Warum
Stackprof wird derzeit auf TruffleRuby nicht unterstützt.

Vorschlag
Deaktivieren Sie das Laden von mini_profiler, wenn RUBY_ENGINE “TruffleRuby” ist.

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

Angefragte Änderung
Verhindern Sie das Laden von rbtrace

Ähnliche Verwendungen verhindern bereits das Laden von rb_trace:

Fehler
Failure/Error: require ‘rbtrace’

Vorschlag
Verwenden Sie eine der Methoden in den obigen Links, um das Laden von rbtrace zu verhindern.

Dateien
spec/rails_helper.rb

2 „Gefällt mir“

Das scheinen vernünftige Anfragen zu sein.

Übrigens: Hat sich etwas daran geändert, dass mini_racer auf TruffleRuby nicht unterstützt wird? Das ist ein großes Hindernis.

4 „Gefällt mir“

Übrigens: Hat sich etwas daran geändert, dass mini_racer auf TruffleRuby nicht unterstützt wird? Das ist ein großes Hindernis.

Ich habe einen Branch mit den meisten mini_racer-Funktionen, der die Testsuite mit GraalJS für TruffleRuby besteht. Ich glaube, dass er alle für Discourse benötigten Funktionen abdeckt. Er muss nur noch überprüft werden und dann werde ich versuchen, ihn zu mergen. So habe ich ihn lokal ausgeführt: https://twitter.com/brandonfish/status/1486755128577253376

6 „Gefällt mir“

Korrektur:
mini_profiler-Laden deaktivieren, wenn RUBY_ENGINE „truffleruby“ ist

2 „Gefällt mir“

mini_profiler sollte immer noch in Ordnung sein. Ich würde empfehlen, dass wir rbtrace / stackprof usw. einfach nicht laden. Es gibt lose Abhängigkeiten.

mini_profiler kann in der Truffle-Welt immer noch viel Wert bieten, nichts Spezifisches für MRI daran.

4 „Gefällt mir“

Hier ist ein PR mit den angeforderten Änderungen.

Ich konnte es immer noch nicht erfolgreich zum Laufen bringen, es gab einen java.lang.NullPointerException, aber das könnte nur daran liegen, dass ich mini_racer grob deaktiviert habe. Ich freue mich wirklich darauf, ein voll funktionsfähiges Discourse auf TruffleRuby laufen zu sehen.

Ich habe das nicht weiter untersucht, aber ich habe einen Fehler bemerkt, als ich nur das Laden von stackprof und memory_profiler deaktiviert habe. Daher habe ich mini_profiler vorerst komplett deaktiviert.

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

Es könnte ein Nebeneffekt anderer Probleme gewesen sein. Ich schätze, wir könnten das untersuchen, wenn andere Probleme gelöst sind.

6 „Gefällt mir“