Ruby 3.3
O lançamento do Ruby 3.3 é visto por muitos como o mais significativo em uma década, trazendo um JIT pronto para produção (YJIT), o novo parser Prism, ferramentas IRB melhoradas e primitivas mais fortes de async e concorrência, como fibers e Ractors. Os comentaristas debatem se esses ganhos mudam materialmente a reputação do Ruby de baixo desempenho — especialmente em comparação com Go, Rust, Java e Python — e quanto Rails e seu ecossistema, e não a linguagem em si, são responsáveis pela lentidão e pela perda de relevância. Outros argumentam que Ruby e Rails continuam altamente produtivos para backends web e scripting, com desempenho agora “bom o suficiente” para a maioria das cargas de trabalho de negócios, mesmo que não seja competitivo em benchmarks brutos.
Significance do Ruby 3.3
- Muitos veem o 3.3 como o lançamento mais importante do Ruby em uma década: YJIT pronto para produção, parser Prism, IRB melhorado, fibras/async e Ractors.
- Outros não se convencem e perguntam o que há de fundamentalmente novo além de ganhos incrementais de velocidade e ferramentas.
Desempenho, YJIT e Benchmarks
- Há relatos de acelerações de 10–15% em grandes apps Rails com YJIT ativado; microbenchmarks mostram ganhos de 2–3x em algumas cargas de trabalho limitadas por CPU.
- Críticos argumentam que, mesmo com esses ganhos, Ruby continua ordens de magnitude mais lento que Go/Java/Rust e que isso não mudará a reputação de Ruby como “lento”.
- Contraponto: em aplicativos web típicos, a latência é dominada por DB/IO; Ruby é “rápido o suficiente”, e o custo de servidor muitas vezes é pequeno em comparação com o tempo de desenvolvimento.
- Alguns descrevem casos reais em que o overhead e o uso de recursos de Django/Rails viraram gargalo em uma escala modesta.
Concorrência e Runtime (Ractors, Fibers, RUBY_MAX_CPU)
- Ractors e fibras assíncronas são vistos como recursos importantes, porém pouco discutidos, embora a adoção prática em Rails ainda seja incerta.
- O novo RUBY_MAX_CPU tem padrão 8; alguns querem que ele seja ligado aos núcleos lógicos, outros observam contagens de núcleos reportadas incorretamente e preferem um padrão conservador.
- A resolução de nomes (getaddrinfo) agora roda em threads de trabalho para poder ser interrompida; isso adiciona um pequeno overhead, mas permite comportamento assíncrono.
Ferramentas: Prism, LSP e Depuração
- O parser Prism é elogiado como base para análise estática mais rápida, integração com RuboCop e servidores de linguagem.
- O IRB recebe melhorias importantes (autocompletar, depuração), e as ferramentas de debug do Ruby (rdbg, Pry) são destacadas, embora a metaprogramação pesada continue difícil de depurar.
Filas de Jobs e Interoperabilidade entre Linguagens
- Vários lamentam a falta de uma fila de tarefas de fato padrão entre linguagens para integração Ruby–Python; muitas empresas simplesmente usam Sidekiq (Ruby) e Celery (Python) separadamente.
- Opções mencionadas: um sistema agnóstico de linguagem baseado em Redis/RabbitMQ, Faktory, o protocolo do Celery, beanstalkd, Gearman, dirq, SQS e filas DIY em Postgres/Redis.
- Debate sobre monetização: alguns recursos de confiabilidade “essenciais” (por exemplo, não perder jobs em caso de crash) ficam atrás de planos pagos, algo que alguns desaprovam e outros defendem como necessário para a sustentabilidade.
Imports e Namespace Global
- O namespace global único de constantes do Ruby e a falta de imports de módulos dividem opiniões.
- Alguns gostam do estilo C de “basta carregar arquivos” e das convenções de autoloading do Rails/Zeitwerk; outros preferem imports explícitos no estilo Python e acham a resolução de constantes do Ruby pouco prática.
- Bibliotecas experimentais e propostas tentam semânticas de import mais explícitas e modulares.
Saúde do Ecossistema e Casos de Uso
- Uma visão forte: Ruby/Rails atingiu seu auge anos atrás, está em declínio de longo prazo em comparação com Python, TypeScript, Go, Rust e Java/Spring; muitas empresas web já migraram para outras opções.
- Visão oposta: embora não esteja no pico de 2007–2009, Ruby/Rails está estável ou se recuperando — novas conferências, livros, gems e recursos (Rails 7, Hotwire, Turbo 8) indicam uma comunidade ativa.
- Há consenso de que a maior parte do uso de Ruby ainda é em apps web Rails; usos fora de Rails (CLIs, infraestrutura, ferramentas de segurança, gestão de configuração) existem, mas são de nicho.
Ruby vs Outras Linguagens: Velocidade vs Produtividade
- Um grupo enfatiza a lentidão do Ruby e o mercado de trabalho encolhendo, argumentando que trabalhos sérios e sensíveis a desempenho pertencem a Go, Rust, Java, C#, etc.
- Outro grupo valoriza a expressividade do Ruby, a forte biblioteca padrão (Strings/Arrays/Hashes), a cultura de testes (RSpec/MiniTest) e a “felicidade do desenvolvedor”, defendendo que produtividade e simplicidade superam a velocidade bruta na maioria dos aplicativos de negócio.
- Alguns observam que Go/Rust podem reduzir drasticamente o número de servidores para APIs pesadas, mas também reconhecem iteração mais lenta e curvas de aprendizado mais íngremes.
Aprendendo Ruby e “Bash Melhorado”
- As recomendações variam: se você já é produtivo em Python/Node, Ruby talvez não desbloqueie capacidades fundamentalmente novas, mas é agradável e elegante.
- Vários elogiam Ruby como um “bash/Perl melhorado” para scripting, processamento de texto e trabalho exploratório de sistema, especialmente com Pry/IRB, Sequel e APIs enumerable fortes.
- Outros acham a sintaxe, os blocos e a cultura de metaprogramação do Ruby mais difíceis de abordar do que o estilo mais minimalista e centrado em funções do Python.