Foi lançada uma nova versão do Crystal, uma linguagem de programação compilada com sintaxe Ruby, cujas principais características são um runtime com um loop de eventos 'embutido', onde todas as operações de entrada e saída são assíncronas, suporte à multithreading (atualmente ativado com uma flag na compilação) e uma interação extremamente simples e conveniente com bibliotecas em C.
A partir da versão 0.34.0, a linguagem começa oficialmente a avançar firmemente em direção ao seu primeiro verdadeiro lançamento (ou seja, a versão 1.0).
Na nova versão do Crystal, podemos destacar as seguintes mudanças e melhorias em ordem de importância:
Uma nova biblioteca de registro foi adicionada à API Log, que, ao contrário da antiga, pode direcionar mensagens para diferentes backends e filtrar essas mensagens de diferentes maneiras dependendo da 'origem'.
Rudimentos do mundo do desenvolvimento em C, Errno e WinError, usados para primitivos de entrada e saída, estão se tornando coisa do passado graças à hierarquia de exceções IO::Error (no entanto, ninguém proíbe o uso de Errno por enquanto).
A substituição automática de else nil foi removida do operador case/when/else. Isso foi feito para evitar que o desenvolvedor acidentalmente pule uma das ramificações when ao combinar casos determinísticos como enums e passagem por tipos de Union. Em outras palavras, o seguinte código não funcionará mais sem especificar mais uma when (when Char) ou definir uma else-ramificação:
a = 1 || 'x' || "foo"
case a
when Int32
# …
when String
# …
end
A opção do compilador disable_overflow não está mais disponível. Para operações com overflow, use os métodos &+, &-, &*.
Array#fill agora é extremamente rápido, graças à substituição de um loop ineficiente por um simples memset;
O gerenciador de shards (pacotes), que paradoxalmente se chama shards, agora usa um algoritmo de satisfação de dependências mais rápido e eficiente chamado Molinillo, inspirado no CocoaPods (Swift) e no Builder (Ruby).
Suporte adicionado LLVM 10, o que, em teoria, nos proporcionará um aumento na performance, estabilidade, etc.
… e muitas outras melhorias menos significativas, na minha opinião subjetiva.
Gostaria de destacar que o Crystal é uma linguagem construída sobre LLVM, permitindo escrever aplicações às vezes mais rápidas, simples e concisas do que em suas "irmãs" interpretadas, enquanto produz um binário bastante ágil. Em comparação ao Golang, é completamente orientado a objetos, suporta generics e possui uma sintaxe muito simples e compreensível. Sua finalidade é muitas vezes análoga à do Nim, mas é claramente orientada para a aplicação prática "aqui e agora", tendo em seu arsenal de API uma variedade de ferramentas bem documentadas, úteis e de qualidade, apoiadas pelos desenvolvedores da linguagem e, portanto, bastante estáveis.
Fonte: linux.org.ru
