Sorbet, un sistema di controllo del tipo statico per Ruby, è open source.

Società Stripe, specializzata nello sviluppo di piattaforme per pagamenti online, ha aperto codici sorgente del progetto Sorbetto, all'interno del quale è stato preparato un sistema di controllo statico dei tipi per il linguaggio Ruby. Il codice è scritto in C++ e distribuito da concesso in licenza con Apache 2.0.

Le informazioni sui tipi nel codice possono essere calcolate dinamicamente e possono anche essere specificate sotto forma di semplice annotazioni, che può essere specificato nel codice utilizzando il metodo sig (ad esempio, "sig {params(x: Integer).returns(String)}") o inserito in file separati con estensione rbi. disponibile come preliminare analisi del codice statico senza eseguirlo e controllando mentre viene eseguito (si accende aggiungendo "richiedi 'sorbet-runtime'" al codice.

Possibilità fornita traduzione graduale progetti che utilizzano Sorbet: il codice può combinare sia blocchi digitati con annotazioni che aree non digitate non coperte dalla verifica. Le funzionalità includono anche prestazioni molto elevate e la capacità di scalare per basi di codice contenenti milioni di righe di codice.

Il progetto include un kernel per il controllo del tipo statico,
un toolkit per creare nuovi progetti utilizzando Sorbet, un toolkit per il trasferimento passo passo di progetti esistenti per utilizzare Sorbet, un runtime con un linguaggio specifico del dominio per scrivere annotazioni su tipi e deposito con definizioni di tipo già pronte per vari pacchetti di gemme Ruby.

Inizialmente, Sorbet è stato sviluppato per controllare i progetti interni dell'azienda Stripe, la maggior parte dei cui sistemi di pagamento e analitici sono scritti in linguaggio Ruby, ed è stato trasferito nella categoria open source dopo un anno e mezzo di sviluppo e implementazione. Prima dell'apertura del codice è stato effettuato il beta testing, al quale hanno preso parte più di 30 aziende. Allo stadio attuale di sviluppo, Sorbet supporta il lancio della maggior parte dei progetti standard in Ruby, ma potrebbero esserci alcune incompatibilità.

Fonte: opennet.ru

Aggiungi un commento