ReScript 8.4 z przypiętymi zależnościami
ReScript jest połączeniem łańcucha narzędzi kompilatora BuckleScript i składni języka programowania Reason. Dzięki ujednoliceniu narzędzi programiści otrzymali nowe funkcje. Ten nowy język koncentruje się głównie na lepszej wydajności oraz bezpieczeństwie typów. Ostatnio twórcy opublikowali jego nową wersję – ReScript 8.4.
Przypięte zależności w ReScript 8.4
Pakiety przyporządkowuje się do trzech kategorii– najwyższego poziomu, zależności normalnych i przypiętych. Wcześniej korzystano wyłącznie z działu normalnych zależności i najwyższego poziomu. W związku z poleceniem – bsb –make-world wprowadzono także nową kategorię – przypięte zależności (pinned-dependencies). Będą one kompilowane podobnie do pakietów najwyższego poziomu.
Integralność bsb -make-world
Podczas tworzenia bsb jako systemu kompilacji celem było zachowanie niezmienności założeń. Oznaczało to, że po pierwszym budowaniu nie trzeba przeprowadzać procesu ponownie. W ReScript 8.4 naprawiono integralność bsb -make-world, która wcześniej była przerywana, gdy nie zostanie spełnione jakiekolwiek z założeń. Wielu użytkowników zgłaszało konieczność pojawienia się nowej funkcji. Dlatego też wprowadzona poprawka pozwala użytkownikowi na zmiany w zależnościach.
Implementacja bez pogorszenia wydajności
Ogólnie zmiany zależności powinny być przechodnie – pomiędzy poszczególnymi modułami są optymalizacje. Ponadto sam interfejs binarny jest skrótem jego zależności. Przykładowo, mając trzy zależne od siebie przechodnio pakiety A, B i C, jeśli zmieni się pakiet A, B się nie zmieni, to pakiet C wciąż będzie musiał zostać przebudowany. Dzieje się tak, ponieważ przez zmianę pakietu A, output pakietu B może się zmienić. Jednak największym problemem wydajności jest ponowna instalacja – każdy z pakietów ma swój proces instalacji, więc po ponownej instalacji pakiet wygląda na całkowicie nowo zbudowany.
Integralność w ReScript 8.4
Zmiany w najnowszym wydaniu przynoszą kilka korzyści:
- Zmiany zależności nie spowodują ponownego parsowania.
- Dla nieudanej instalacji pakietu, przechodni wykres przebudowy będzie odcięty. Dzięki temu użytkownik oszczędza niepotrzebną kompilację.
- Jeśli wprowadzane zmiany nie zmienią interfejsu pakietu, to jego elementy zależne nie będą kompilowane.
Nowy algorytm obsługi plików wyjściowych
Usuwanie lub zmiana nazwy plików ReScript prowadzi do przestarzałego punktu wyjścia. Przykładowo, zmieniając nazwę src/A.res na src/B.res plik wyjściowy src/A.cmi będzie nieaktualny. W ReScript 8.4 twórcy wprowadzili algorytm, który poprawi tę sytuację. Usunie on przestarzałe dane wyjściowe przed kompilacją. Dzięki temu integralność projektu nie będzie przerywana.
Źródło: ReScript Blog