Talk apresentada no evento gratuito Ruby Summit Brasil 2020 organizado pela comunidade e para comunidade.
Falei um pouco sobre as principais novidades no Ruby 3 (Ractor, Scheduler, RBS, Type profiler) e o poder dos linters nesse momento.
6. ● Declaração de atribuição à direita
● Definição de método sem fim
● Ractor (experimental)
● Scheduler (Experimental)
● RBS (Ruby Signature)
● “Type-profiler”
Principais Novidades do Ruby 3
7. Qual o melhor jeito de conferí-las?
● rvm
● rbenv
● chruby
● asdf
10. Ractor
● Funcionalidade Experimental
● Modelo de Atores
● Permite executar programas de forma paralela sem se
preocupar com thread-safety
● Nem tudo é compartilhado como nas Threads
○ Compartilhando frozen objects, classes e módulos
11. Modelo de Atores (Resumido)
Ator 1 Ator 2 Ator 3
Mensagem A
Mensagem B
mensagem B
desenfileirada
aqui
processa
mensagem A
processa
mensagem B
Objeto 1 Objeto 2 Objeto 3
métodoA()
métodoB()
retorno
retorno
14. Scheduler
● Também Experimental
● Interface para interceptar operações bloqueantes
● Caso de uso em wrappers (EventMachine ou Async)
● Nome da feature pode mudar (Fiber Scheduler)
15. RBS - Ruby Signature
● Linguagem para descrever tipos de programas Ruby
● gem `rbs` já vem com o Ruby 3
● Podemos escrever as definições de classes e módulos
○ Assim como métodos, variáveis de instância, herança,
etc
○ Suporta duck typing com tipos de interface
25. sorbet
● Também é um type-checker
● Criado pelo Stripe
● Extensão .rbi
● Fornece página de teste
● Funciona no Ruby 2.5 e 2.6
● Alguns problemas no Ruby 2.7
40. is a tool that analyzes source code to flag
programming errors, bugs, stylistic errors,
and suspicious constructs
- Wikipedia
O que é um linter?
“
41. ● Complexidade Ciclomática
● Estilo e padrões de Codificação
● Performance
● Trechos de código não-utilizado
● Relatórios
● Pacotes/dependências desatualizadas
● Código sem cobertura de testes
● Detector de números mágicos
O que um Linter pode verificar?
46. Referências
● Ruby 3.0.0 Preview 1 Released
● The State of Ruby 3 Typing
● Types in Ruby 3, RBS, and Sorbet
● RubyConf 2019 - Opening Keynote - Ruby Progress Report by Yukihiro
Matzumoto (Matz)
● TypeProf: A type analysis tool for Ruby code based on abstract
interpretation
● What Is MJIT in Ruby 2.6 & How Does It Work?
● asdf - Extendable version manager
47. Mais Referências
● chruby - Changes the current ruby
● Ractor documentation
● Scheduler documentation
● Types in Ruby 3, RBS, and Sorbet
● Brakeman
● Reek
● Rubocop
● RBS, duck-typing, meta-programming, and typing at httpx
● A Walkthrough of Ruby 3 Scheduler
● Gradual typing of Ruby at Scale