Crystal, a fantástica irmã prodígio do Ruby

E se eu te dissesse que existe uma linguagem de programação orientada a objetos que tem a sintaxe tão expressiva quanto o Ruby e tão performática quanto a linguagem C, você acreditaria? Parece ser bom demais pra ser verdade, não é mesmo?

Mas é exatamente isso que a linguagem Crystal propõe em seu slogan “Fast as C, Slick as Ruby” (Rápido como C, liso como Ruby).

Não sei se isso te deixa tão entusiasmado quanto fiquei, mas uma linguagem ser capaz de uma façanha como esta me deixou bastante intrigado e com muitas perguntas, do tipo:

  • Como uma linguagem orientada a objetos consegue ter tanta performance?
  • Já que a linguagem tem a mesma sintaxe do Ruby, deve dar pra rodar o Rails, certo?
  • Já posso usar Crystal em produção?

Para responder isso, vamos explorar um pouco as características da linguagem Crystal.

1. Como o Crystal consegue ser tão rápido?

O grande segredo da performance no Crystal, é seu compilador baseado em LLVM. O LLVM (Low Level Virtual Machine) é uma infraestrutura de compilador escrita em C++ capaz de otimizar a performance durante a compilação, ligação e execução do código. Provendo várias camadas de compilação e otimização em baixo nível, ele garante a ótima performance do Crystal.

2. O Crystal tem seu próprio gerenciador de pacotes

O Crystal vem com um gerenciador de dependências instalado por padrão, o Shards. Ele funciona de forma simples, basta apenas adicionar suas dependências em um arquivo .yml, desta forma abaixo. Depois basta rodar o comando “shards install”.

name: shards
version: 0.1.0

dependencies:
openssl:
github: datanoise/openssl.cr
branch: master

development_dependencies:
minitest:
git: https://github.com/ysbaddaden/minitest.cr.git
version: ~> 0.3.1

license: MIT

3. Sistema de macros poderoso

A linguagem ruby é bem conhecida pela sua grande capacidade de metaprogramação. O Crystal não fica pra trás em relação a este quesito, ele trás um sistema de macros muito poderoso que funciona basicamente como uma linguagem de template para o próprio código Crystal.

Abaixo um pequeno exemplo da sua sintaxe.

macro define_method(name, content)
def {{name}}
{{content}}
end
end

4. Cuidado, Crystal não é Ruby!

É bom lembrar que apesar do Crystal ter a sintaxe muito semelhante ao Ruby, ela é uma linguagem tipada e possue suas próprias bibliotecas e particularidades. Se você espera instalar o Crystal e sair programando como se estivesse no Ruby é melhor ir com calma por que você pode acabar se frustrando.

5. Em que “pé” o projeto do Crystal está?

Apesar de todas as características que citei nesse post estarem funcionando bem até o momento, o Crystal atualmente está na sua versão 0.22.0 com previsão de lançamento da sua primeira versão estável ainda neste ano (2017).

Conclusão

O Crystal promete ser uma forte alternativa ao Ruby para quem precisa de mais performance e não quer abrir mão do uso de uma linguagem expressiva, mas no momento a linguagem ainda não está madura o suficiente para ser utilizada em produção.

A sintaxe ainda pode mudar bastante e muitas features importante ainda estão pra chegar como o paralelismo e suporte ao windows.

Eu acredito que o seu ecosistema ainda precisa amadurecer para bater de frente com concorrentes como o Ruby e Elixir.

Gostaria de ouvir sua opinião

O que achou do Crystal? Eu gostaria muito de ouvir sua opinião, então comenta aí abaixo!