Опис послуги
ПерекладЯ пишу бойовий системний код на ATS (Applied Type System) — мові, яка дозволяє поєднати швидкість роботи на голому залізці з математично перевіреною коректністю. Якщо вам потрібен драйвер, вбудована процедура, парсер або гарячий участок, який не має права витікати по пам'яті або читати за межами буфера, я закодую ці гарантії прямо в системі типів. У ATS компілятор змушує мене закрити обов'язання доказу ще до того, як код зберетьсяся, тому цілий клас помилок, які в C йдуть у реліз непомітно, тут просто не компілюється. Робота починається з ваших інваріантів. Ми договорилися, що повинно виконуватися: ніяких подвійних звільнень, ніякого виходу за межі, лінійне володіння кожним ресурсом, гарантоване завершення рекурсивних процедур. Далі я виражаю це залежними типами та лінійними доказами, реалізую по них код та віддаю результат, який несе власний сертифікат безпеки. Оскільки ATS компілюється в чистий C, результат без проблем вбудовується в вашу збірку та працює без накладних витрат на збирач сміття. У поставку входять вихідники на ATS, генерований C, скрипт збірки, невеликий тестовий стенд з аннотаціями доказів та текстове пояснення до кожного доведеного інваріанту. За роки низькорівневої роботи я робив і lock-free структури, і безпечні прив'язки ATS до старих бібліотек на C. Рассуждати про вказівники, розміри та часи життя на рівні формальної логіки для мене звично. Опишіть обмеження, яке вас хвилює, і я перетворю його на теорему, яку компілятор перевіряє при кожній перезбірці.