Sorbet, een statisch typecontrolesysteem voor Ruby, is open source.

Stripe bedrijf, gespecialiseerd in de ontwikkeling van platforms voor online betalingen, geopend broncodes van projecten Sorbet, waarbinnen een statisch typecontrolesysteem voor de Ruby-taal werd voorbereid. De code is geschreven in C++ en gedistribueerd door gelicentieerd onder Apache 2.0.

Informatie over typen in de code kan dynamisch worden berekend en kan ook in de vorm van simple worden gespecificeerd annotaties, die in code kan worden gespecificeerd met behulp van de sig-methode (bijvoorbeeld "sig {params(x: Integer).returns(String)}") of in afzonderlijke bestanden kan worden geplaatst met de rbi-extensie. Beschikbaar als voorlopig statische codeanalyse zonder het uit te voeren, en te controleren terwijl het wordt uitgevoerd (gaat aan door "require 'sorbet-runtime'" aan de code toe te voegen.

Mogelijkheid geboden geleidelijke vertaling projecten om Sorbet te gebruiken - de code kan zowel geannoteerde getypte blokken als ongetypeerde gebieden combineren die niet onder verificatie vallen. Kenmerken omvatten ook zeer hoge prestaties en de mogelijkheid om te schalen voor codebases die miljoenen regels code bevatten.

Het project bevat een kernel voor statische typecontrole,
een toolkit voor het maken van nieuwe projecten met Sorbet, een toolkit voor het stapsgewijs overbrengen van bestaande projecten naar Sorbet, een runtime met een domeinspecifieke taal voor het schrijven van annotaties over typen en opslagplaats met kant-en-klare typedefinities voor verschillende Ruby-edelstenenpakketten.

Aanvankelijk werd Sorbet ontwikkeld om interne projecten van het bedrijf Stripe te controleren, waarvan de meeste betalings- en analysesystemen in de Ruby-taal zijn geschreven, en werd na anderhalf jaar ontwikkeling en implementatie overgebracht naar de categorie open source. Voordat de code werd geopend, werden bètatests uitgevoerd, waaraan meer dan 30 bedrijven deelnamen. In de huidige ontwikkelingsfase ondersteunt Sorbet de lancering van de meeste standaardprojecten in Ruby, maar er kunnen enkele onverenigbaarheden zijn.

Bron: opennet.ru

Voeg een reactie