Sorbet, ein statisches Typprüfungssystem für Ruby, ist Open Source.

Stripe-Unternehmen, spezialisiert auf die Entwicklung von Plattformen für Online-Zahlungen, geöffnet Projektquellcodes Sorbet, in dem ein statisches Typprüfungssystem für die Ruby-Sprache vorbereitet wurde. Der Code ist in C++ geschrieben und vertrieben von lizenziert unter Apache 2.0.

Informationen zu Typen im Code können dynamisch berechnet oder auch in einfacher Form angegeben werden Anmerkungen, die im Code mithilfe der sig-Methode angegeben werden kann (z. B. „sig {params(x: Integer).returns(String)}“) oder in separaten Dateien mit der Erweiterung rbi abgelegt werden kann. verfügbar als vorläufig Statische Code-Analyse ohne es auszuführen und zu prüfen, wie es ausgeführt wird (anmachen durch Hinzufügen von „require ‚sorbet-runtime‘“ zum Code.

Möglichkeit gegeben schrittweise Übersetzung Projekte zur Verwendung von Sorbet – der Code kann sowohl annotierte typisierte Blöcke als auch untypisierte Bereiche kombinieren, die nicht von der Überprüfung abgedeckt werden. Zu den Funktionen gehören außerdem eine sehr hohe Leistung und die Möglichkeit der Skalierung für Codebasen mit Millionen von Codezeilen.

Das Projekt umfasst einen Kernel zur statischen Typprüfung,
ein Toolkit zum Erstellen neuer Projekte mit Sorbet, ein Toolkit zur schrittweisen Übertragung bestehender Projekte auf die Verwendung von Sorbet, eine Laufzeit mit einer domänenspezifischen Sprache zum Schreiben von Anmerkungen zu Typen und Repository mit vorgefertigten Typdefinitionen für verschiedene Ruby-Gems-Pakete.

Ursprünglich wurde Sorbet entwickelt, um interne Projekte des Unternehmens Stripe zu überprüfen, dessen Zahlungs- und Analysesysteme größtenteils in der Ruby-Sprache geschrieben sind, und wurde nach anderthalb Jahren Entwicklung und Implementierung in die Kategorie Open Source überführt. Vor der Öffnung des Codes wurde ein Betatest durchgeführt, an dem mehr als 30 Unternehmen teilnahmen. Im aktuellen Entwicklungsstadium unterstützt Sorbet den Start der meisten Standardprojekte in Ruby, es kann jedoch zu einigen Inkompatibilitäten kommen.

Source: opennet.ru

Kommentar hinzufügen