Кто-нибудь пробовал запускать 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 ![]()
@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
Надеюсь, это будет решено быстро ![]()
Как вы думаете, насколько улучшатся показатели производительности Discourse при использовании TruffleRuby (TTFB, общая производительность и т. д.)?
Брэндон есть на этом сервере?
@Matthias_Schuster Быстрый поиск выдает
здесь, на Meta.