تغييرات مطلوبة لدعم المناقشة حول TruffleRuby

أود أن أطلب التغييرات الثلاثة التالية للمساعدة في تشغيل Discourse على TruffleRuby:

التغيير المطلوب
تحديث bin/rails لتعطيل unicorn عندما لا يتم دعم fork.

خطأ

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

الملفات
bin/rails

لماذا
TruffleRuby لا يدعم fork.

اقتراح
تعطيل unicorn إذا كان !Process.respond_to?(:fork)

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

التغيير المطلوب
تعطيل mini_profiler لـ TruffleRuby

خطأ

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

الملفات
config/initializers/006-mini_profiler.rb

لماذا
Stackprof غير مدعوم حاليًا على TruffleRuby

اقتراح
تعطيل تحميل mini_profiler عندما يكون RUBY_ENGINE “TruffleRuby”

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

التغيير المطلوب
منع تحميل rbtrace

تستخدم استخدامات مشابهة بالفعل لمنع تحميل rb_trace:

خطأ
Failure/Error: require ‘rbtrace’

اقتراح
استخدم إحدى الطرق الموضحة في الروابط أعلاه لمنع تحميل rbtrace

الملفات
spec/rails_helper.rb

إعجابَين (2)

تبدو هذه طلبات معقولة.

بالمناسبة: هل تغير أي شيء بشأن عدم دعم mini_racer على TruffleRuby؟ هذا عائق كبير.

4 إعجابات

بالمناسبة: هل تغير أي شيء بخصوص عدم دعم mini_racer على TruffleRuby؟ هذا يمثل عائقًا كبيرًا.

لدي فرع به معظم وظائف mini_racer تجتاز مجموعة الاختبارات باستخدام GraalJS لـ TruffleRuby. أعتقد أنه يتعامل مع جميع الوظائف اللازمة لـ Discourse. إنها تحتاج فقط إلى مراجعة وسأحاول بعد ذلك دمجها. هذه هي الطريقة التي كنت أعمل بها محليًا: https://twitter.com/brandonfish/status/1486755128577253376

6 إعجابات

تصحيح:
تعطيل تحميل mini_profiler عندما يكون RUBY_ENGINE هو “truffleruby”

إعجابَين (2)

لا يزال mini_profiler جيدًا، وأوصي فقط بعدم تحميل rbtrace / stackprof وما إلى ذلك. هناك تبعيات مفكوكة.

يمكن لـ mini_profiler أن يوفر الكثير من القيمة في عالم truffle، ولا يوجد شيء خاص بـ MRI حول هذا.

4 إعجابات

إليك طلب سحب مع التغييرات المطلوبة.

لم أتمكن بعد من تشغيله بنجاح، كان هناك java.lang.NullPointerException، ولكن قد يكون هذا مجرد تعطيل ساذج لـ mini_racer. أتطلع حقًا لرؤية Discourse يعمل بكامل طاقته على TruffleRuby.

لم أتعمق في هذا الأمر أكثر، لكنني لاحظت خطأً عندما قمت فقط بتعطيل تحميل stackprof و memory_profiler. لذلك قمت بتعطيل 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'>

قد يكون هذا تأثيرًا جانبيًا لمشاكل أخرى. أعتقد أنه يمكننا التحقيق عندما يتم حل المشاكل الأخرى.

6 إعجابات