Diversity w polskim IT
Bulldogjob
Bulldogjob

Swift przedstawił nowy model współbieżności

Twórcy języka Swift opublikowali roadmapę, która przedstawia nowy model, umożliwiający lepsze programowanie współbieżne.
9.11.20202 min
Swift przedstawił nowy model współbieżności

Twórcy języka Swift przedstawili właśnie plany na stworzenie nowego modelu współbieżności. Ma on polepszyć jakość i komfort programowania współbieżnego, tak aby było ono bardziej wydajne i bezpieczne. Pojawiła się zatem nowa roadmapa, która opisuje zmiany, mające pomóc w osiągnięciu tego celu. Twórcy zaznaczają jednak, że nie mają zamiaru przedstawiać manifestu, demonstrującego kilka możliwych podejść do problemu — kierunek został już obrany, a teraz trzeba tylko wyruszyć w drogę.

Oczekiwane rezultaty

Zmiany będą polegały na implementacji asynchronicznych funkcji oraz aktorów — usprawnienia te zostaną zaproponowane oddzielnie, ale w wielu przypadkach będą one na sobie polegać. Końcowe etapy pracy zakładają osiągnięcie następujących rezultatów:

  • Sprawienie, że programowanie asynchroniczne będzie wygodne w użyciu i zrozumiałe
  • Zapewnienie developerom Swifta zestawu odpowiednich narzędzi i technik, jeżeli chodzi o programowanie współbieżne
  • Poprawa działania kodu asynchronicznego przez optymalizację w czasie kompilacji 
  • Eliminacja hazardu i zakleszczenia w taki sam sposób, w jaki Swift radzi sobie z bezpieczeństwem pamięci.

Przedstawianie zmian

Twórcy zakładają, że wprowadzenie usprawnień będzie musiało potrwać kilka wydań. Funkcje zostaną wprowadzone w dwóch fazach: pierwsza przedstawi składnię async i aktorów, co pozwoli użytkownikom na organizację swojego kodu wokół nich, w sposób który zredukuje hazard. 

Druga faza natomiast wymusi całkowitą izolację aktorów, eliminację hazardu oraz szereg nowych funkcji, umożliwiających wydajną i ergonomiczną współpracę między aktorami, tak aby izolacja miała zastosowanie w praktyce. 

Faza pierwsza

Przyjrzymy się tutaj niektórym szczegółom fazy pierwszej. Po pierwsze mamy model async/await oparty na współprogramach. Funkcje mogą być dzięki niemu asynchroniczne i oczekiwać wyników od innych asynchronicznych funkcji, co pozwala na wyrażenie takiego kodu w bardziej prostolinijny sposób.  

Po drugie, API Task i ustrukturyzowana współbieżność wprowadzą koncepcję zadań do standardowej biblioteki. API te pozwoli na tworzenie zadań odłączonych od głównego toku wykonania dla dynamicznego tworzenia zadań potomnych i mechaniki usuwającej taski oraz ustawiającej priorytety. Dostaniemy też tutaj mechanizmy do oczekiwania na wartości pochodzące z wielu zadań potomnych. 

W fazie pierwszej zostanie również wprowadzony wstępnie model izolacji aktorów. Pozwoli on na izolację stanów dla programów współbieżnych, dając podwaliny dla rozwijania pełnej izolacji aktorów — mechanizmu, dzięki któremu da się wyeliminować hazard. Oprócz tego, mamy tutaj jeszcze obsługę async, która przedstawi możliwość zadeklarowania synchronicznej funkcji aktora jako handlera asynchronicznego. 

Więcej szczegółów na temat fazy pierwszej znajdziecie tutaj. Jak wspomniano wcześniej, druga faza będzie rozwinięciem usprawnień przedstawionych w części pierwszej: wprowadzeniem całkowitej izolacji aktorów i wyeliminowaniem data race. 

Podsumowanie

Zmiany przedstawione w roadmapie wyglądają naprawdę dobrze i jeżeli twórcy wprowadzą je tak, jak obiecują, to znacznie usprawni to wszystko doświadczenie programowania współbieżnego w Swift. Wystarczy teraz poczekać na pierwsze wydania, które będą zawierać nowo zaproponowany model oraz szczegóły dotyczące fazy drugiej.

<p>Loading...</p>