W ostatnim tygodniu świat newsów IT mocno zwolnił ze względu na święto dziękczynienia. Internet nie cierpi jenak pustki i dyskusje w naszej frontendowej społeczności zdominowała decyzja o przepisaniu ESLint od zera bez wykorzystania TypeScript.
1. ESLint zostanie przepisany od zera
Kilka tygodni temu informowaliśmy Was o wydaniu pierwszej stabilnej wersji Rome. Docelowo ma to być alternatywa dla Babela, Prettier, Webpacka i kilku innych narzędzi deweloperskich. W dniu debiutu jest to jednak szybsza alternatywa dla ESLint. Ten poczuł chyba oddech konkurencji na swoich plecach, bo w tym tygodniu ogłoszono, że zostanie on przepisany od zera.
Najwięcej kontrowersji w całej inicjatywie wzbudził wybór języka programowania. ESLint nie będzie podążał trendem większości nowych narzędzi deweloperskich (takich jak Rome czy Turbopack) i nie zostanie przepisany do Rusta. Autorzy biblioteki zakładają jednak jego wykorzystanie w miejscach kluczowych dla wydajności.
Jeśli nie Rust, to pewnie TypeScript? Otóż nie. Zespół zdecydował się rozwijać narzędzie przy użyciu JavaScriptu wzbogaconego o JSDoc. Taka architektura pozwala automatycznie generować typy dla twórców pluginów piszących w TypeScript i zapewnia podstawowe sprawdzanie poprawności kodu.
Czytając dyskusję na temat podjętych decyzji architektonicznych czułem się, jakbym cofnął się w czasie o 4-5 lat. Dyskusja na temat wyższości (bądź niższości) TypeScript nad JavaScript ponownie rozgorzała. W całej tej debacie warto pamiętać, że decyzja ta jest przezroczysta z perspektywy klienta ESLint. Jakkolwiek ja nigdy nie zdecydowałbym się tworzyć teraz biblioteki w JavaScript, tak nie zamierzam narzucać innym jak mają wykonywać swoją pracę.
Przepisanie ESLint od zera to też szansa na wprowadzenie nowych funkcjonalności. Najciekawiej z mojej perspektywy wygląda możliwość modyfikacji struktury drzewa AST w celu naprawy niektórych błędów formatowania. Z funkcjonalnością tą wiąże się oczywiście spora doza ryzyka, bo ESLint będzie mógł teraz modyfikować zachowanie naszego programu. Z drugiej strony, przy odpowiedniej konfiguracji, modyfikacja drzewa AST może zaoszczędzić nam sporo czasu, który poświęcamy na naprawianie prostych błędów.
Drugą funkcjonalnością, która przykuła moją uwagę jest uczynienie ESLint narzędziem niezależnym od języka programowania. Oznacza to, że jeśli wszystko pójdzie z planem, to ESLint będziemy mogli używać również z innymi językami programowania jak Java czy C#.
Na ten moment nie wiadomo kiedy rozpocznie się inicjatywa przepisania ESLint. Jak możemy dowiedzieć się z dyskusji na GitHubie przed zespołem rozwijającym bibliotekę jest jeszcze sporo planowania. Zanim do repozytorium trafi pierwszy commit czeka nas jeszcze seria RFC precyzujących poszczególne decyzje architektoniczne.
Źródła
https://github.com/eslint/eslint/discussions/16557
Zainstaluj teraz i czytaj tylko dobre teksty!
2. React Native Core Contributor Summit 2022
React Native Core Contributor Summit, to spotkanie, które gromadzi wszystkie strony zaangażowane w rozwój React Natvie. Ze względu na pandemię przez kilka ostatnich lat spotkanie nie mogło się odbyć. W tym roku wróciło jednak ze zdwojoną siłą. Przy okazji konferencji React Native EU główni kontrybutorzy React Native (i jego najpopularniejszych bibliotek ościennych) oraz ludzie z Mety odpowiedzialni za rozwój projektu wzięli udział w serii warsztatów podczas których starali się zaadresować największe bolączki projektu. Poruszane tematy dotyczyły głównie nowej architektury React Native, a ich listę znaleźć możecie poniżej:
- React Native Codegen & TypeScript Support
- React Native New Architecture Library Migration
- React Native Monorepo
- Metro Web and Ecosystem Alignment
- Metro Simplified Release Workflow
Jeśli interesują Was szczegóły inicjatyw podjętych w konkretnych tematach, to odsyłam Was do linku, który znajdziecie w źródłach. Pierwszymi efektami Core Contributor Summit 2022 są liczne RFC. Pierwsze efekty na których realnie skorzystają programiści trafią już React Native 0.71
Źródła
https://reactnative.dev/blog/2022/11/22/react-native-core-contributor-summit-2022
Zainstaluj teraz i czytaj tylko dobre teksty!
3. Electron 22 i Electron Forge 6
W minionym tygodniu opublikowany został Electron 22. Oprócz standardowego podbicia zależności (Chromium 108, V8 10.8, i Node.js 16.17.1) jest to ostatnia wersja, która będzie wspierać Windows 8. Wśród zmian znalazło się też kilka breaking changes, ale najciekawiej wygląda premiera towarzysząca Electron 22, czyli Electron Forge 6.
Electron Forge to narzędzie, które pozwala budować aplikacje oraz generować i podpisywać pliki instalacyjne. Oczywiście podobne narzędzia były dostępne już od dawna, ale Electron Forge 6 jest wyjątkowy, bo projekt pod swoje skrzydła wziął go główny zespół rozwijający samego Electrona. Co za tym idzie, narzędzie to otrzyma sporo czasu deweloperskiego, a jego dokumentacja zostanie zintegrowana z dokumentacją Electrona.
Źródła:
https://www.electronjs.org/blog/electron-22-0
https://www.electronjs.org/blog/forge-v6-release
https://www.electronforge.io/core-concepts/why-electron-forge