Bulldogjob
Bulldogjob

Verona - nowy język od Microsoft Research

Poznaj Veronę, czyli język programowania, który bada temat współbieżności i bezpieczeństwa pamięci.
21.01.20203 min
Verona - nowy język od Microsoft Research

Badacze z Microsoft Research udostępnili niedawno na GitHubie zalążek nowego języka programowania, który nazwali Verona. Język ten ma się skupiać na badaniu możliwości wykorzystania modelu współbieżności opartego na własności (ownership). Microsoft zdecydował się na upublicznienie projektu, pomimo bardzo wczesnego etapu prac, by zachęcić najlepszych programistów oraz badaczy do wspólnej pracy nad językiem.

Co ma osiągnąć Verona?

Skoro mówimy o współbieżności i własności, która ma zapewnić bezpieczeństwo pamięci, to można zgadywać, że Verona ma być systemowym językiem programowania i dokładnie tak jest. Autorzy zwracają uwagę, że w programowaniu systemowym liczą się dwa aspekty - przewidywalność oraz dostęp do niskich warstw. Verona zupełnie rezygnuje z bezpośredniego dostępu do niskich warstw (np. pamięci) na rzecz przewidywalności oraz bezpieczeństwa, a twórcy mówią, że to infrastrukturalny język programowania. Marzą o języku, gdzie współbieżność i bezpieczeństwo pamięci są zagwarantowane na poziomie języka.

Oczywiście to nie jest tak, że startują od zera. Już przed Veroną były języki, które starały się zaadresować to, że C jako takie nie jest bezpieczne. Głównymi inspiracjami były: Rust (głównie własność), Cyclone (zarządzanie pamięcią oparte o regiony) i Pony (bardzo wiele, jako, że wiele osób z teamu pracującego nad Veroną rozwijało też Pony).

Główne cechy Verony

By zagwarantować bezpieczeństwo pamięci we współbieżnym środowisku należy się pozbyć równoległego dostępu do pamięci, która jest mutowalna. W Veronie jest to osiągnięte poprzez wprowadzenie tzw. współbieżnych właścicieli (concurrent owners, w skrócie `cown`). To mechanizm zapewniający, że do jednego zbioru zasobów dostęp ma tylko jeden wątek. Jeżeli obiekt zostanie wcielony do cown, to dostęp do niego możliwy jest tylko przez scheduling kolejnych zadań na nim (jednak robienie tego jest konieczne tylko wtedy, gdy chcemy współdzielić region pomiędzy wątkami)

Drugim ważnym konceptem są regiony, które ułatwiają zarządzanie pamięcią. Własność uzyskuje się właśnie nad regionem, który jest kolekcją zaalokowanych obiektów, które bardzo mogą być dealokowane za jednym razem. W przypadku Verony oznacza to też, że region może mieć tylko jednego właściciela, ale również to, że regiony można zagnieżdżać, tworząc drzewa czy lasy.

To jednak projekt naukowy

To wszystko nie oznacza jednak, że Verona będzie niedługo szeroko dostępna - wręcz przeciwnie. Ten projekt ma na celu sprawdzenie, jak taki model się sprawdza. Właśnie by przekonać się czy taki proof-of-concept zadziała, ludzie z Microsoft zdecydowali się opublikować projekt.

Ze względu na charakter samego eksperymentu, nie jest on prowadzony w ramach już istniejących projektów. Wprowadzenie nawet eksperymentalnej funkcji do już funkcjonującego języka wiąże się z zadbaniem o wsteczną kompatybilność. Z tego względu łatwiej było stworzyć prototyp nowego języka o dokładnie takich cechach, jakie chcieli zbadać ludzie z Microsoft.

W tym momencie język ten jest mocno niedopracowany. Narzędzia do kompilacji są bardzo toporne, ale wystarczą, by poeksperymentować z językiem. Zarówno kompilator, jak i runtime, są napisane w C++.

Na tym etapie autorzy nie sądzą, że kiedykolwiek dojdzie do wypuszczenia produkcyjnej wersji języka. Chodzi raczej o sprawdzenie idei i ewentualne zaproponowanie najlepszych pomysłów w innych językach - być może Rust, Pony czy Cyclone - tak, by uzyskać jeszcze wydajniejsze i bezpieczne języki programowania.

Podsumowanie

Warto odwiedzić repozytorium projektu, by poczytać więcej o tym języku oraz by zobaczyć przykłady kodu.

To kolejny język programowania opublikowany przez Microsoft Research. W kwietniu 2019 pisaliśmy o Bosque, który miał za zadanie jak najbardziej uprościć pisany kod i docelowo miał za zadanie wspierać zastosowania IoT oraz Cloud. Obecnie jest w wersji alpha i nadal jest aktywnie rozwijany.

<p>Loading...</p>