Discurso sobre Truffleruby

Alguém já tentou rodar o Discourse no truffleruby?
Faz sentido olhar nessa direção?

Interessante. Por que decidiram fazer um fork em vez de contribuir, eu me pergunto?

@merefield O Truffleruby é uma implementação da linguagem Ruby para o GraalVM desenvolvida pela equipe da Oracle. Apresenta boa performance e interoperabilidade com outras linguagens no GraalVM.
Não se trata de um fork.

Tenho experiência com Rails no Truffleruby e pretendo testar o Discourse na próxima semana.

Algumas informações adicionais - Running Rack and Rails Faster with TruffleRuby - Speaker Deck

Parece fascinante. Você esperaria conseguir executar a base de código existente do Discourse sem alterações significativas? Que tipo de alterações poderia ser necessário?

Resposta curta: Não, atualmente não funciona no TruffleRuby.

@gerhard Obrigado pelo link, isso facilitará para mim entender os problemas existentes.

O bloqueador atual é o mini_racer, veja mini_racer: `rb_context_init_unsafe': External function cannot be found. · Issue #1827 · truffleruby/truffleruby · GitHub

Dito isso, pelo menos todas as gems são instaladas no TruffleRuby; testamos isso no CI (para uma versão um pouco mais antiga do Discourse).

Este problema foi corrigido há 5 dias.

Infelizmente, o Mastodon, e não o Discourse, será o primeiro a funcionar no TruffleRuby :dotted_line_face:

@volanar sim - não tenho tempo suficiente para voltar a esta pergunta agora - dia de trabalho intenso.

@eregon está aqui, e não estou ciente de nenhum bloqueio no truffle, nós mesclamos as correções para o mini racer no ano passado

Brandon colocou o Discourse para funcionar há um ano:
https://twitter.com/brandonfish/status/1486755128577253376
https://twitter.com/brandonfish/status/1519726230936993792

Um problema, se bem me lembro, era que algumas gems dependem do Hash ser thread-safe, para o qual temos uma solução geral, mas que ainda não foi mesclada/integrada no TruffleRuby. Por outro lado, é muito raramente correto usar Hash concorrentemente, isso muitas vezes resulta em ocultar bugs de concorrência de maneiras mais difíceis de encontrar. Portanto, é argumentavelmente melhor apenas corrigir as gems que dependem disso, mas isso leva tempo.
Precisamos fazer benchmark de desempenho e, para que isso seja significativo/representativo, devemos fazer benchmark multi-threaded. Isso precisa de A way to mark C extensions as thread-safe, so they can be executed in parallel · Issue #2136 · truffleruby/truffleruby · GitHub

Espero que seja resolvido rapidamente :face_with_peeking_eye:
Quanto você acha que os indicadores de desempenho do discourse melhorarão com o uso do truffleruby (TTFB, desempenho geral, etc.)?

O Brandon está neste servidor?

@Matthias_Schuster Uma rápida pesquisa traz

aqui no Meta.