Дискурс о Truffleruby

Кто-нибудь пробовал запускать Discourse на truffleruby?
Имеет ли смысл двигаться в этом направлении?

Интересно. Интересно, почему они решили форкнуть, а не внести свой вклад?

@merefield Truffleruby — это реализация Ruby от команды Oracle для GraalVM. Отличная производительность и совместимость с другими языками на GraalVM.
Это не форк.

У меня есть опыт работы с Rails на Truffleruby, и на следующей неделе я планирую проверить Discourse.

Дополнительная информация — Running Rack and Rails Faster with TruffleRuby - Speaker Deck

Звучит увлекательно. Ожидаете ли вы, что сможете запустить существующую кодовую базу Discourse без существенных изменений? Какие именно изменения могут потребоваться?

Короткий ответ: нет, в настоящее время это не работает в TruffleRuby.

@gerhard Спасибо за ссылку, так мне будет проще разобраться с существующими проблемами.

Текущий блокатор — mini_racer, см. mini_racer: `rb_context_init_unsafe': External function cannot be found. · Issue #1827 · truffleruby/truffleruby · GitHub

Тем не менее, по крайней мере все gems устанавливаются на TruffleRuby; мы проверяем это в CI (для несколько более старой версии Discourse).

Эта проблема была исправлена 5 дней назад.

К сожалению, первым к работе над TruffleRuby приступит не Discourse, а Mastodon :dotted_line_face:

@volanar да — сейчас у меня нет времени возвращаться к этому вопросу, слишком загружен работой.

@eregon здесь, и мне не известно о каких-либо блокировках в truffle; мы объединили исправления для mini racer в прошлом году

Брендон запустил Discourse год назад:
https://twitter.com/brandonfish/status/1486755128577253376
https://twitter.com/brandonfish/status/1519726230936993792

Одна из проблем, насколько я помню, заключалась в том, что некоторые гемы полагаются на то, что Hash потокобезопасен. У нас есть общее решение для этого, но оно ещё не объединено и не интегрировано в TruffleRuby. С другой стороны, крайне редко бывает корректно просто использовать Hash одновременно; это часто приводит к скрытию проблем с конкурентностью более сложными способами. Поэтому, возможно, лучше просто исправить гемы, полагающиеся на это, но это требует времени.
Нам нужно провести бенчмарки производительности, и чтобы они были значимыми и репрезентативными, следует тестировать в многопоточном режиме. Для этого требуется A way to mark C extensions as thread-safe, so they can be executed in parallel · Issue #2136 · truffleruby/truffleruby · GitHub

Надеюсь, это будет решено быстро :face_with_peeking_eye:
Как вы думаете, насколько улучшатся показатели производительности Discourse при использовании TruffleRuby (TTFB, общая производительность и т. д.)?

Брэндон есть на этом сервере?

@Matthias_Schuster Быстрый поиск выдает

здесь, на Meta.