Sorbet, um sistema de verificação de tipo estático para Ruby, é de código aberto.

Empresa Stripe, especializada no desenvolvimento de plataformas para pagamentos online, aberto códigos fonte do projeto Sorvete, dentro do qual foi preparado um sistema de verificação de tipo estático para a linguagem Ruby. O código é escrito em C++ e distribuído por licenciado sob Apache 2.0.

As informações sobre os tipos no código podem ser calculadas dinamicamente e também podem ser especificadas na forma de simples anotações, que pode ser especificado no código usando o método sig (por exemplo, “sig {params(x: Integer).returns(String)}”) ou colocado em arquivos separados com a extensão rbi. É possível como preliminar análise de código estático sem executá-lo e verificando como ele é executado (liga adicionando “require ‘sorbet-runtime’” ao código.

Possibilidade fornecida tradução gradual projetos para usar Sorbet - o código pode combinar blocos digitados anotados e áreas não digitadas não cobertas pela verificação. Os recursos também incluem desempenho muito alto e capacidade de escalar para bases de código contendo milhões de linhas de código.

O projeto inclui um kernel para verificação de tipo estático,
um kit de ferramentas para criar novos projetos usando Sorbet, um kit de ferramentas para transferência passo a passo de projetos existentes para usar Sorbet, um tempo de execução com uma linguagem específica de domínio para escrever anotações sobre tipos e repositório com definições de tipo prontas para vários pacotes de gems Ruby.

Inicialmente, o Sorbet foi desenvolvido para verificar projetos internos da empresa Stripe, cuja maioria dos sistemas analíticos e de pagamento são escritos na linguagem Ruby, e foi transferido para a categoria de código aberto após um ano e meio de desenvolvimento e implementação. Antes de abrir o código, foram realizados testes beta, dos quais participaram mais de 30 empresas. No atual estágio de desenvolvimento, o Sorbet suporta o lançamento da maioria dos projetos padrão em Ruby, mas pode haver algumas incompatibilidades.

Fonte: opennet.ru

Adicionar um comentário