Lançamento da linguagem de programação Crystal 1.2

Foi publicado o lançamento da linguagem de programação Crystal 1.2, cujos desenvolvedores estão tentando combinar a conveniência do desenvolvimento na linguagem Ruby com o alto desempenho de aplicação característico da linguagem C. A sintaxe do Crystal é próxima, mas não totalmente compatível com Ruby, embora alguns programas Ruby sejam executados sem modificação. O código do compilador é escrito em Crystal e distribuído sob a licença Apache 2.0.

A linguagem usa verificação de tipo estática, implementada sem a necessidade de especificar explicitamente os tipos de variáveis ​​e argumentos de método no código. Os programas Crystal são compilados em arquivos executáveis, com macros avaliadas e código gerado em tempo de compilação. Nos programas Crystal, é possível conectar ligações escritas em C. A paralelização da execução do código é realizada por meio da palavra-chave “spawn”, que permite executar uma tarefa em segundo plano de forma assíncrona, sem bloquear o thread principal, na forma de threads leves chamados fibras.

A biblioteca padrão fornece um grande conjunto de funções comuns, incluindo ferramentas para processamento de CSV, YAML e JSON, componentes para criação de servidores HTTP e suporte WebSocket. Durante o processo de desenvolvimento, é conveniente utilizar o comando “crystal play”, que gera uma interface web (localhost:8080 por padrão) para execução interativa de código na linguagem Crystal.

Grandes mudanças:

  • Adicionada a capacidade de atribuir uma subclasse de uma classe genérica a um elemento de uma classe pai. class Foo(T); end class Bar(T) < Foo(T); end x = Foo x = Bar
  • Agora, as macros podem usar o caractere de sublinhado para ignorar um valor em um loop `for`. {% for _, v, i in {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% end %}
  • O método "file_exists?" foi adicionado às macros para verificar a existência de um arquivo.
  • A biblioteca padrão implementa suporte para números inteiros de 128 bits.
  • Adicionado o módulo Indexable::Mutable(T) com implementação de operações estendidas para coleções como BitArray e Deque. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = true # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • Adicionado o método XML::Node#namespace_definition para extrair um namespace específico do XML.
  • Os métodos IO#write_utf8 e URI.encode foram descontinuados e, em vez disso, devem ser usados ​​IO#write_string e URI.encode_path.
  • O suporte para a arquitetura x86 de 32 bits foi movido para o nível 2 (pacotes pré-compilados não são mais gerados). O suporte para a arquitetura ARM64 está sendo atualizado para o nível 1.
  • Продолжена работа по обеспечению полноценной поддержи платформы WindowsSuporte adicionado. Windows-сокетов.
  • Para macOS добавлен универсальный пакет, работающих как на устройствах с процессорами x86, так и на оборудовании с чипом Apple M1.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção DDoS, servidores VPS VDS 🔥 Compre hospedagem de sites confiável com proteção contra DDoS, servidores VPS/VDS | ProHoster