Hej
Nadszedł kolejny czwartek, a wraz z nim kolejna edycja frontendowego przeglądu nowości w sam raz do porannej kawy. Zapraszam do lektury
Zainstaluj teraz i czytaj tylko dobre teksty!
1. Researcher hacks over 35 tech firms in novel supply chain attack ⛓
O tym, że model zależności npm ciągnie za sobą co najmniej kilka niebezpieczeństw, słyszał już chyba każdy… Sytuacje takie, jak usunięcie drobnego pakietu skutkujące problemami z budowaniem Reacta, czy podmiana odległej dependencji, pozwalająca wykraść dane z komputera regularnie obiegają internet. Dziś cykl się zapętla i mamy dla Was kolejną taką perełkę.
Jeśli na Waszej skroni właśnie pojawiła się pierwsza kropla potu, to śpieszę ze słowem uspokojenia: podatność została wykryta przez bug huntera, który nie wykorzystał jej w złośliwy sposób i dotyczy tylko projektów korzystających z prywatnych repozytoriów npm (oraz PyPI i RubyGems, ale to w końcu frontendowy czwartek więc przemilczmy tą część ).
Na czym polega podatność? Mamy tutaj do czynienia z tzw. dependency confusion. Osoba odpowiedzialna za znalezienie buga przeszukiwała publiczne repozytoria dużych firm (m.in Netflix, Microsoft i PayPal) w celu znalezienia referencji do prywatnie hostowanych bibliotek. Następnie tworzyła publicznie dostępną bibliotekę o takiej samej nazwie, ale z wyższym numerem wersji. W efekcie budowanie aplikacji kończyło się zaciągnięciem wersji podmienionej przez hackera, która to łączyły się z serwerem atakującego, dając mu tym samym dowód na istnienie podatności. Za znalezienie buga firmy sumarycznie zapłaciły 130 tysięcy dolarów, a Microsoft postanowił opublikować na ten temat cały paper.
Źródła:
2. Faster JavaScript calls
Na początku grudnia opublikowana została nowa wersja silnika v8. Release przyniósł przede wszystkim top levelowe async-await i usprawnienia wydajności wywołania funkcji z niedopasowaną liczbą argumentów. Początkowo opublikowano tylko obiecujące wykresy – 11% przyśpieszenie dla Ignition i 40% przyśpieszenie dla TurboFan. W tym tygodniu programiści z Googla uzupełnili wspomniane diagramy o małą analizę tematu i opis szczegółów implementacyjnych nowego rozwiązania.
Nowa implementacja znanej od dawna funkcjonalności eliminuje Adaptor Frame, czyli fragment ramki z danymi,definiujący metadane dotyczące argumentów funkcji. Przed optymalizacją argumenty trafiały do ramki w odwrotnej kolejności niż przekazywane były do funkcji. Powodowało to sytuację, w której aby odczytać pierwszy argument funkcji, musieliśmy z góry znać ilość jej argumentów. Po optymalizacji argumenty przekazywane są w kolejności zgodnej z kolejnością przekazywania do funkcji, co pozwala wyeliminować zbędne operacje. Jeśli jesteście głodni szczegółów, to muszę odesłać Was do materiału źródłowego. emat jest na tyle odległy, od tego czym zajmujemy się na co dzień, że ciężko zwięźle i zrozumiale go streścić.
Osobiście artykuł był dla mnie podróżą w czasie do początku studiów i zajęć z assemblera. Aż łezka się w oku kręci, kiedy myślę o wszystkich tych pokręconych rejestrach i skomplikowanych implementacjach prostego kalkulatora… I niech nikt nie psuje mi tej nostalgicznej chwili, przypominając o ostatnim czekającym mnie akcie związanym z wyższą edukacją – napisaniu pracy magisterskiej .
Źródła:
https://v8.dev/blog/adaptor-frame
3. Under the Hood of the Language Service
Mam wrażenie, że w świecie Angulara dzieje się ostatnio więcej niż w świecie Reacta. Nowości to raczej nie rewolucje, a spokojne ewolucje, ale nie zmienia to faktu, że dystans między tymi frameworkami powoli się skraca (a przynajmniej jeśli chodzi o aspekt słuchania głosu społeczności).
W tym tygodniu światło dzienne ujrzała kolejna taka mała ewolucja. Angular Language Service, odpowiedzialny m.in za autouzupełnianie i kolorowanie kodu w VS Code, otrzymał dużą aktualizację. Większe zmiany są dwie. Pierwsza z nich to optymalizacja działania samego serwisu, która możliwa stała się poprzez zastosowanie wprowadzonego w Ivy mechanizmu `incremental compilation`. Integracja z Ivy pozwoliła zminimalizować rekompilacjeo kody po każdej zmianie, tym samym przyspieszając całe rozwiązanie. Drugie usprawnienie, to rozbudowanie funkcjonalności dotyczących template’ów i to tutaj należy doszukiwać się największych rewolucji. Nowy Language Service obiecuje zarówno lepszy type checking jaki i code completion. Musicie przyznać, że brzmi to co najmniej obiecująco.
My w projekcie używamy InteliJ (który używa pod spodem swojej implementacji Language Service), więc jeszcze nie mieliśmy okazji przekonać się, o jak dużym usprawnieniu tutaj mówimy. Nie zmienia to jednak faktu, że zgodnie z State of JavaScript 2020 VS Code już dawno zostawił konkurencję w tyle i to w tym IDE teraz toczy się najbardziej zacięta walka między wielką trójką frameworków o jak najlepsze doświadczenia programistów. Jeśli mieliście już okazję wypróbować Language Service, to koniecznie dajcie znać, czy z Waszej perspektywy skok jakościowy jest tak duży jak twierdzą twórcy Angulara.
Źródła:
https://blog.angular.io/under-the-hood-of-the-language-service-ab763c26f522
https://www.youtube.com/watch?v=doVYC32hjIw
https://marketplace.visualstudio.com/items?itemName=benawad.vsinder
Jeśli chcesz otrzymywać tego typu treści spersonalizowane pod Ciebie, pobierz Vived!