Changements demandés pour soutenir le discours sur TruffleRuby

Je voudrais demander les 3 changements suivants pour aider à exécuter Discourse sur TruffleRuby :

Changement demandé
Mettre à jour bin/rails pour désactiver unicorn lorsque fork n’est pas pris en charge.

Erreur

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

Fichiers
bin/rails

Pourquoi
TruffleRuby ne prend pas en charge le fork.

Suggestion
Désactiver unicorn si !Process.respond_to?(:fork)

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

Changement demandé
Désactiver mini_profiler pour TruffleRuby

Erreur

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

Fichiers
config/initializers/006-mini_profiler.rb

Pourquoi
Stackprof n’est actuellement pas pris en charge sur TruffleRuby

Suggestion
Désactiver le chargement de mini_profiler lorsque RUBY_ENGINE est “TruffleRuby”

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

Changement demandé
Empêcher le chargement de rbtrace

Des utilisations similaires empêchent déjà le chargement de rb_trace :

Erreur
Failure/Error: require ‘rbtrace’

Suggestion
Utiliser l’une des méthodes des liens ci-dessus pour empêcher le chargement de rbtrace

Fichiers
spec/rails_helper.rb

2 « J'aime »

Ces demandes semblent raisonnables.

Au fait : y a-t-il eu des changements concernant la non-prise en charge de mini_racer sur TruffleRuby ? C’est un obstacle majeur.

4 « J'aime »

AU fait : y a-t-il eu des changements concernant la non-prise en charge de mini_racer sur TruffleRuby ? C’est un obstacle majeur.

J’ai une branche avec la plupart des fonctionnalités de mini_racer qui réussissent la suite de tests en utilisant GraalJS pour TruffleRuby. Je pense qu’elle gère toutes les fonctionnalités nécessaires pour Discourse. Il faut juste qu’elle soit revue et je vais ensuite essayer de la faire fusionner. Voici comment je l’ai exécutée localement : https://twitter.com/brandonfish/status/1486755128577253376

6 « J'aime »

Correction :
Désactiver le chargement de mini_profiler lorsque RUBY_ENGINE est « truffleruby »

2 « J'aime »

mini_profiler devrait toujours fonctionner, je recommanderais simplement de ne pas charger rbtrace / stackprof etc. Il existe des dépendances lâches.

mini_profiler peut toujours apporter beaucoup de valeur dans le monde de truffle, rien de spécifique à MRI à ce sujet.

4 « J'aime »

Voici une PR avec les modifications demandées.

Je n’ai toujours pas réussi à le faire fonctionner correctement, il y avait une java.lang.NullPointerException, mais c’est peut-être juste moi qui ai désactivé grossièrement mini_racer. J’ai vraiment hâte de voir un Discourse entièrement fonctionnel fonctionnant sur TruffleRuby.

Je n’ai pas approfondi cela, mais j’ai remarqué une erreur lorsque j’ai seulement désactivé le chargement de stackprof et memory_profiler. J’ai donc complètement désactivé mini_profiler pour l’instant.

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

Cela pourrait avoir été un effet secondaire d’autres problèmes. Je suppose que nous pourrions enquêter une fois les autres problèmes résolus.

6 « J'aime »