Компания Stripe, специализирана в разработването на платформи за онлайн плащания, изходен код на проекта , в рамките на който е подготвена система за статичен анализ на типовете за езика Ruby. Кодът е написан на C++ и е под лицензия Apache 2.0.
Информацията за типовете в кода може да се изчислява динамично, а също така да се задава под формата на прости , които могат да бъдат указани в кода чрез метода sig (например, „sig {params(x: Integer).returns(String)}“) или да бъдат разположени в отделни файлове с разширение rbi. както предварителен без да се изпълнява, така и проверка по време на изпълнение ( чрез добавяне в кода на „require ‘sorbet-runtime'“).
Предвидена е възможност на проектите към използване на Sorbet — в кода могат да се комбинират както типизирани блокове с анотации, така и нетипизирани участъци, непокрити от проверка. Сред особеностите се отличава и много висока производителност и възможност за мащабиране за кодови бази, съдържащи милиони реда код.
В състава на проекта е включено ядро за статичен анализ на типовете,
инструменти за създаване на нови проекти с използване на Sorbet, инструменти за постепенно преминаване към използване на Sorbet за съществуващи проекти, runtime с предметно-ориентиран език за написване на типови анотации и с готови определения на типове за различни gems пакети на Ruby.
Първоначално Sorbet се е развивал за проверка на вътрешни проекти на компанията Stripe, голяма част от платежните и аналитичните системи в която са написани на Ruby, и бе преместен в отворен статус след година и половина разработка и внедряване. Преди отварянето на кода беше проведено бета тестване, в което участваха повече от 30 компании. В текущия етап на развитие Sorbet поддържа стартиране на повечето типови проекти на Ruby, но могат да се наблюдават отделни несъвместимости.
Източник: opennet.ru
