O usłudze
PrzetłumaczonePiszę kod systemowy produkcyjny w ATS (Applied Type System) — języku, który pozwala łączyć szybkość gołego metalu z matematycznie zweryfikowaną poprawnością. Jeśli potrzebujesz sterownika, rutyny osadzonej, parsera lub krytycznej ścieżki, która nie ma prawa do wycieku pamięci ani do odczytu poza buforem, zakoduję te gwarancje bezpośrednio w systemie typów. W ATS kompilator zmusza mnie do zrealizowania zobowiązań dowodowych, zanim kod w ogóle się skompiluje, więc cała klasa błędów, które niepostrzeżenie wkradają się do wydań C, po prostu tutaj się nie kompiluje. Praca zaczyna się od twoich invariatów. Zgadzamy się, co musi być spełnione: brak podwójnych zwolnień, brak przepełnień bufora, liniowa własność każdego zasobu, gwarantowane zakończenie rekurencyjnych rutyn. Następnie wyrażam to w typach zależnych i dowodach liniowych, implementuję kod w oparciu o nie i dostarczam wynik, który ma własny certyfikat bezpieczeństwa. Ponieważ ATS kompiluje do czystego C, wynik integruje się w twoim procesie budowy bez problemu i działa bez narzutu na zbieranie śmieci. Dostawa obejmuje źródła ATS, wygenerowane C, skrypt budujący, mały zestaw testowy z adnotacjami dowodowymi oraz notatkę tekstową wyjaśniającą każdy udowodniony inwariant. Przez lata pracy na niskim poziomie zbudowałem struktury bezblokujące i bezpieczne powiązania ATS z bibliotekami C. Rozumienie wskaźników, rozmiarów i czasów życia na poziomie logiki formalnej jest dla mnie rutyną. Opisz ograniczenie, które cię niepokoi, a ja przekształcę je w twierdzenie, które kompilator sprawdza przy każdym odbudowaniu.