ReScript 9.0 z zewnętrzną konfiguracją stdlib
ReScript powstał przez połączenie łańcucha narzędzi kompilatora BuckleScript ze składnią języka programowania Reason. Jest językiem o solidnych typach, kompilującym się do wydajnego i czytelnego języka JavaScript. W lutym pojawiło się jego główne, stabilne wydanie – ReScript 9.0. Zmiany wprowadzono zarówno w składni, jak i w ustawieniach kompilatora.
Kompilator w ReScript 9.0
Poprzednie wersje ReScript nie pozwalały na wysyłanie kodu JS bez zdefiniowania zależności package.json od bs-platform. Z tego powodu praca programistów stawała się bardziej złożona, aby spakować kod biblioteki, musieli oni korzystać z bundlera .
Dlatego teraz do podstawowej funkcjonalności kompilatora dodano zestaw modułów stdlib, tj. Belt czy Pervasives. Każda nowa wersja bs-platform ma odpowiednią, pasującą pod kątem zgodności ze środowiskiem wykonawczym wersję @rescript/std.
Pozostałe zmiany w kompilatorze
ReScript generuje kod zoptymalizowany pod kątem tree-shaking. Co więcej, program generuje dane wyjściowe, tak, że nie mają wpływu na ostateczne rozmiary pakietów JS. Przy pomocy narzędzi takich jak esbuild można odrzucić niepotrzebny kod, upewniając się, że jego ostateczna wersja będzie oszczędna. Ostatnim już ulepszeniem kompilatora jest generowanie kodu do dopasowywania wzorców. Poniżej znajduje się kod napisany w ReScript, jeszcze nieskompilowany:
RES type test = | NoArg | AnotherNoArg | OtherArg(int) let test = x => switch x { | NoArg => true | _ => false }
W poprzedniej wersji zostałby on skompilowany do takiego wyniku:
function test(x) { if (typeof x === "number") { return x === 0; } else { return false; } }
W ReScript 9.0 kompilacja wywoła zoptymalizowany kod, z usuniętymi niepotrzebnymi kontrolami typeof:
function test(x){ return x === 0 }
Poprawki w składni ReScript 9.0
Jedną z ważniejszych poprawek jest zmiana klauzuli when na if w instrukcji switch. Klauzula when jest już przestarzała, dlatego program formatujący automatycznie wykryje i przekonwertuje ją na if. Kolejnym ulepszeniem jest czystsza składnia wielowariantowa. Wielowarianty z nazwami identyfikatorów zawierającymi np. myślniki (ease-in), nie potrzebują specjalnej składni ucieczki. Dzięki temu użytkownik otrzymuje łatwiejsze współdziałanie z istniejącymi wyliczeniami ciągów JS.
Podsumowanie i plany
Twórcy pracują także nad wykorzystaniem WASM do zastąpienia Camlp4. ReScript oferuje wsparcie dla współpracy z ReactJS i innym istniejącym kodem JavaScript. Najnowszą wersję można pobrać przez npm, za pomocą polecenia npm install bs-platform@9.0.0 –save-dev. Pełna lista zmian jest dostępna na GitHubie projektu.
Źródło: ReScript Blog