W dniu dzisiejszym trzy duże wydania: nowe Vue, dziewięćdziesiąta pierwsza edycja Firefoxa z masą usprawnień do promocji oraz mega interesujące z inżynierskiego punktu widzenia zmiany. Zapraszamy do lektury 🥳
1. Wydano Vue 3.2
Ale się ostatnio dzieje w światku Vue. Dopiero co tydzień temu opisywaliśmy ostateczne przyklepanie tego najbardziej gorącego chińskiego towaru eksportowego świata frontendu, to jeszcze w tym tygodniu ukazała się jego kolejna duża edycja. Co prawda dość niepozorny numerek 3.2 może nie robi większego wrażenia, ale pamiętajmy, że to nie Google Chrome czy Firefox strzelające nowymi majorami jak z karabinu.
Nowe wydanie, o przepięknej nazwie Quintessential Quintuplets – co (chyba) należy tłumaczyć jako “kwintesencjonalne pięcioraczki”, poza sztampami typu “poprawa wydajności” przynosi też kilka bardziej mięsistych dodatków. Przykładowo, eksperymentalna funkcjonalność Single File Components – pliki z rozszerzeniem *.vue, zawierające całość logiki, templatingu oraz stylowania konkretnego komponentu – doczekały się stabilnej wersji. ygląda to w następujący sposób:
<script setup>
import { ref } from 'vue'
const color = ref('red')
</script>
<template>
<button @click="color = color === 'red' ? 'green' : 'red'">
Color is: {{ color }}
</button>
</template>
<style scoped>
button {
color: v-bind(color);
}
</style>
Dla kogoś, kto ma doświadczenie z innymi frameworkami, pewnie jest to dosyć nietypowy sposób dystrybucji kodu, aczkolwiek wciąż pamiętam konsternacje, jaką wśród programistów wzbudzały pliki *.jsx, dziś stanowiące bardzo naturalny fragment ekosystemu.
Vue 3.2 to również dalsze ulepszenia w kierunku wsparcia WebComponentów oraz Server Side Rendering. Te pierwsze doczekały się możliwości banalnego tworzenia z “natywnych”, vueowych komponentów przy pomocy metody `defineCustomElement`, a także mocno rozbudowanej sekcji w dokumentacji. SSR przynosi zaś możliwość renderowania aplikacji nie tylko w ramach runtime Node.js, ale również nowoczesnych rozwiązań takich jak Service Worker czy CloudFlare Workers.
Vue zdecydowanie idzie w ciekawym kierunku, wybierając dla siebie dosyć nieszablonową ścieżkę i nie bojąc się wprowadzać sporych innowacji. Będziemy przyglądać się dalszym poczynaniom twórców frameworku.
Źródła
Zainstaluj teraz i czytaj tylko dobre teksty!
2. Firefox chce JESZCZE BARDZIEJ chronić naszą prywatność
Dopiero co wspomniałem o tym, jak kosmiczne numeracje mają nowe wersje przeglądarek, a tu proszę, przychodzi nam opisywać właśnie dziewięćdziesiąte pierwsze (!) wydanie Firefoxa.
Żyjemy w czasach, że nowe wersje przeglądarek przestają budzić jakieś duże emocje i raczej nie przykuwają większej uwagi. Jednak czasem zdarza się, że w tym przypływie drobnych ulepszeń (wszyscy czekaliśmy na większe bezpieczeństwo Gamepad API, prawda) pojawiają się rzeczy realnie interesujące. Tak dzieje się w przypadku nowego podejścia do Cookies przeglądarki, które zaprezentowali nam twórcy z Mozilli.
Od pewnego czasu popularnym terminem (spopularyzowanym zresztą przez nikogo innego jak właśnie twórców przeglądarki z liskiem w logo) są tak zwane Super Cookies. Są to szczególnie mocne third-party cookies, które potrafią śledzić użytkownika nawet wtedy, gdy ten myśli, że pozbył się wszelkich związków z daną witryną. Rozwiązaniem zaproponowanym przez Firefox jest tak zwane ulepszone czyszczenie plików cookie (Enhanced Cookie Clearing).
Przed ulepszonym czyszczeniem plików cookie, Firefox usuwał dane tylko dla domeny określonej przez użytkownika. Oznaczało to, że jeśli miałbyś wyczyścić pamięć dla vived.io, Firefox usunął pamięć vived.io i pozostawił pamięć wszelkich osadzonych na niej witryn (jak na przykład te powstałe w wyniku dodania na stronie “lajka” Facebooka). Oznaczało to, że Facebook mógł Cię zidentyfikować i dalej śledzić przy następnej wizycie na vived.io. Teraz Firefox będzie automatycznie pozbywał się również tych danych.
Firefox przynosi też dość ciekawą nową lokalizację. Otóż przeglądarka posiada teraz również wersje dla języka scots. Informacja ta jest o tyle ciekawa, że pomimo iż jest to język używany przez ponad milion mieszkańców Szkocji, to Firefox jest jedną z pierwszych dużych aplikacji, która dodała dla niego wsparcie. Całość obiła się nawet o narodowościowe szkockie media.
Można to porównać do stworzenia kaszubskiego wariantu Firefoxa. Oba języki zresztą mają dość podobne wsparcie w standardach międzynarodowych, bowiem swoje kody dostały dopiero w drugim wariancie ISO-639.
Źródła
- V8 release v9.3 – Sparkplug batch compilation
- Algorytm Nagle’a – Wikipedia, wolna encyklopedia
- Object.hasOwn · V8
- Error causes · V8
Zainstaluj teraz i czytaj tylko dobre teksty!
3. V8 wprowadza triki przyśpieszające Chrome (spoiler: batching)
Numeracja przeglądarek rządzi dzisiejszą edycją, ponieważ wraz z wersją beta Chrome 93 ukazała się też nowa edycja V8 – silnika napędzającego rozwiązanie Google.
O Chromie może sobie jeszcze pogadamy, kiedy jego najnowsza edycja się ustabilizuje, ale V8 w wersji 9.3 (czy to nie jest nieco rozsądniejsza numeracja?) posiada zmiany, na których chcielibyśmy na moment zawiesić oko. Poważnemu rozwinięciu uległ bowiem Sparkplug, najnowszy z kluczowych komponentów V8 – dodatkowy krok kompilacji, znajdujący się między interpretacją bytecode (za którą odpowiada Ignition – zapłonu), a optymalizacją kodu (co jest domeną TurboFana – świecą). Inżynierowie w Google pewnie właśnie w tej chwili zastanawiają się, jak dalej tę metaforę silnika rozwijać. Czekam na “uszczelkę pod głowicą” w V8.
O wdrożeniu Sparkplug (co tłumaczyć można na “świecę silnikową”) przeczytać mogliście w naszej 40. edycji, jednak zmiany z nowej wersji są bardzo interesujące, dotykają bowiem domeny bezpieczeństwa. Ten pośredni kompilator z powodów bezpieczeństwa zmuszony jest używać metod zapisu do pamięci, które posiadają pewien narzut wydajnościowy. W większości przypadków jest on niezauważalny, jednak mamy tutaj do czynienia z V8, a V8 jest w dzisiejszych czasach niezwykle wyżyłowanym oprogramowaniem, gdzie każdy szczegół ma znaczenie. Okazuje się, że sposób zapisu do pamięci również. Skoro jednak każdorazowe wrzucenie danych do pamięci obarczone jest narzutem. Dlatego też twórcy wykorzystali tutaj jeden z dość standardowych trade-offów znany z HTTP, ale nie tylko: jeśli pojedyncze przesłanie informacji jest drogie – batchuj. W ten sposób nasza Świeca w znaczący sposób może ograniczyć ilość odwołań do pamięci, co jak twierdzą V8 redukuje efektywny czas kompilacji o nawet ponad 40%.
To jednak nie wszystko. Wersja 8.3 przynosi też drobne, ale interesujące dodatki, jeśli chodzi o “featury” samego JavaScripta. Jednym z nich jest alias nad Object.hasOwnProperty, mający ułatwić używanie tej metody w sytuacjach, gdy chcemy potraktować obiekt jako jeden z parametrów wywołania.
Object.hasOwn({ prop: 42 }, 'prop')
Druga ze zmian zaś to rozszerzenie obiektu Error o możli
wość przekazania dodatkowej przyczyny, co może być przydatne przy łączeniu błędów w logiczny ciąg przyczynowo skutkowy:
const parentError = new Error('parent');
const error = new Error('parent', { cause: parentError });
console.log(error.cause === parentError);
Wszystkie te dobroci już niedługo znajdziecie na swoich komputerach w Chrome 93.