BuckleScript 8.1 – nowa składnia języka oparta na Reason
Nowe wydanie BuckleScript 8.1, nad którym praca odbywała się w tajemnicy, zawiera m.in. przerobiony parser składni Reason. Po prostu nazywa się ją „nową składnią BuckleScript”. Zmiany w drukarce pozwalają na lepsze komunikaty o błędach składni.
Praca nad nową wersją była ukryta, aby nie tworzyć spekulacji na temat zmian. BuckleScript 8.1 ogłoszono dopiero, gdy twórcy byli pewni stabilności swojego wydania.
Co nowego?
Stworzona składnia pochodzi prosto z instalacji BuckleScript. Nie trzeba instalować innych dodatków, ponadto składnia nie zależy od starego refmt. Obecnie ograniczona jest obsługa edytorów. Jednak trwają pracę nad wydaniem konwertera starszej składni na nową. Twórcy zalecają, aby na razie z konwertera korzystać na mniejszych fragmentach kodu, aby nie zaszkodzić swojej pracy. Aby uniknąć konfliktu między wersjami, zaleca się nowe rozszerzenia plików: .res oraz .resi (do implementacji i interfejsu). Analizator składni jest teraz szybszy w projektach oraz pokazuje komunikaty o błędach.
Różnice między BuckleScript a Reason 3.6
W nowej składni BuckleScript 8.1 usunięto całkowicie symbol średnika. Wciąż jednak można z niego korzystać. Ponadto wokół funkcji if, switch oraz try nie ma potrzeby pisania nawiasów. Usunięto także składnię do referencji result^. Teraz można po prostu użyć result.contents.
Przykładowe użycie kodu w BuckleScript 8.1
// src/example.res if hasEaten { Js.log("more dessert please") } else { Js.log("dessert please") } let message = j`Hello ${userName->Js.String.toUpperCase}!` type student<'extraInfo> = { name: string, age: int, otherInfo: 'extraInfo, } @bs.val external window: {..} = "window" window["addEventListener"]("focus", onFocus)
Pytania o nową składnię BuckleScript 8.1
Wydanie nowej składni zrodziło wiele pytań programistów – czy BuckleScript będzie miała wpływ na istniejący już kod lub czy w przyszłości pisząc w OCaml lub Reason będzie można kompilować do BuckleScript. Twórcy w specjalnym poście na swoim blogu odpowiedzieli na wiele wątpliwości.
Nowa składnia jest czysto addytywna, istnieje obok składni OCaml i Reason. Wsparcie Reason z BuckleScript będzie utrzymywane przez długi czas. Nadal będzie można także pisać w OCaml i Reason i kompilować w BuckleScript. Jeśli kiedykolwiek w przyszłości w BuckleScript będą usuwane funkcje językowe, to będzie się to odbywało na poziomie składni.
Problemy dotyczące nowej składni będą na stronie GitHub, by zmniejszyć obciążenie głównej strony repozytorium BuckleScript.