Всем привет! Это «Новости 512» от CSSSR. Я понимаю, что сейчас у всех на повестке дня только одни новости, но мы продолжим выпускать «Новости 512». Берегите себя. В этом эпизоде: релизы Chrome 106 и Firefox 105, многопоточность в Node.js подробно и по хардкору, ресурсы по TypeScript, Web Almanac 2022, карта звёздного неба и другие события с момента выхода предыдущего выпуска.
Интересные публикации
До этого момента мы иногда говорили о многопоточности в Node.js. Но это были, в общем-то, вводные гайды и теоретические статьи. Пришло время войти в логово многопоточной гидры и победить её. Кирилл Боровиков на Хабре опубликовал целую серию статей об увеличении производительности Node.js-приложений при помощи многопоточности. В статье целых 5 частей. Рассматривается большой перечень вопросов: FIFO, кольцевой буфер, Worker Threads, нагрузка на потоки, разделяемая память и операции над ней, а также что делать в неидеальных условиях. В статьях также рассматриваются проблемы от внедрения многопоточности и их решения: есть примеры для всех случаев и пояснительные диаграммы. Это большой цикл, который углубленно освещает тему многопоточности. Советую заварить чайку и посидеть поразбираться, получилось очень интересно.
В наши выпуски уже попадал перевод цикла «TypeScript в деталях», но это был перевод первой части. Игорь Агапов продолжает публиковать переводы: за время перерыва вышли вторая и третья части. Во второй части речь идёт о пересекающихся типах, infer и шаблонные литеральные типы, ключевое слово declare. Третья часть посвящена утилитам типов, особенностям классов, перегрузке функций и определению объектов с неизвестными свойствами. Доходчиво и просто — если вы всё ещё боретесь с TS, обязательно загляните.
Раз уж мы заговорили о TypeScript, я представлю вашему вниманию ещё один курс по TS. Он называется Type Level TypeScript. Пока в нём всего три главы, но он будет пополняться.
Вы уже наверняка знакомы с разными способами увеличения производительности фронтенд-приложений или из опыта работы, или из новостей — в общем, в любом случае какие-то знаете. Августин Теодор (Agustinus Theodorus) в своей статье на SmashingMagazine смотрит на вопрос как бы немного с другого ракурса: с точки зрения загрузки данных. В принципе это всё вам знакомо хотя бы на слух: SSR, кэширование, обмен данными в реальном времени через WebSocket, ленивая загрузка и префетчинг, гидратация на клиенте. Если о чём-то не слышали — заглядывайте.
Много разных JavaScript API существует на свете. Хуан Диего Родригес (Juan Diego Rodríguez) в SmashingMagazine постарался рассказать про полезные, но не очень известные API. Об Internationalization API вы уже наверняка слышали. В статье также рассматривается Page Visibility API, который помогает понять, что пользователь покинул страницу, Web Share API, который, как вы можете догадаться, помогает шарить контент (это особенно полезно на мобильных устройствах) и Broadcast Channel API, который позволяет вкладкам, фреймам и другим элементам обмениваться данными. Ко всем API прилагаются примеры.
Я как-то уже рассказывал про Remix — новый фреймворк, который позиционируется как конкурент Next.js. Я уже говорил о том, что для меня он выглядит как маркетинговая штука, но если вам хочется попробовать, то можете посмотреть на статью автора Бритни Постма (Brittney Postma). Это базовый гайд с типовым простым проектом и минимальной настройкой, работой с роутами и освещением некоторых особенностей Remix. Если хочется быстро попробовать, этим гайдом вполне можно воспользоваться.
Фернандо Дольо (Fernando Doglio) написал статью-размышление о том, что никаких убийц Node.js не существует. Что он имеет в виду? Он говорит о том, что альтернативы, которые появляются (такие как Deno и Bun), хоть и отличаются от Node.js, но очень на него похожи. Похожи в том смысле, что разработка на них похожа, а API пытается быть дружелюбным и привычным для разработчика Node.js. Я склонен с ним соглашаться: переключиться на другой рантайм не должно быть большой проблемой.
Все мы так или иначе стремимся оптимизировать свою работу: иногда пользуемся готовыми решениями, а иногда создаём свои велосипеды. Душа ещё одного поэта не вынесла, и человек создал своё расширение для VS Code, которое из шаблонов генерирует структуру и файлы проекта. Идея простая: пишем шаблончики с плейсхолдерами, даём команду — и вуаля: можно начинать писать код. Автор расширения — Дмитрий Басенко, в его статье на Хабре можно посмотреть, например, скринкаст и найти ссылку на расширение. Автор говорит, что можно было и сложнее, умнее, лучше, так что не стесняйтесь дать совет или подкинуть идею.
Завершает рубрику статья с ресурса Explained from First о том, как устроен интернет. Лично мне всегда интересны такие статьи, потому что потом выясняется, что многого и не знаешь. Там же вы найдете статью о том, как устроена электронная почта, и статью о вычислительной математике — просвещайтесь.
Новости релизов
Вышел Chrome 106. В этой версии появилась возможность поиска по истории, закладкам и вкладкам прямо в адресной строке при помощи управляющих тегов. Была отключена технология Server Push. В режиме Origin Trials был добавлен Pop-Up API, который позволяет выводить элементы поверх других. Также был представлен ряд небольших улучшений разных API и CSS. Больше изменений было в DevTools. В панели Sources появилась возможность группировки файлов по источнику. Улучшена трассировка стека для асинхронных операций. Появилась возможность автоматического игнорирования при отладке известных сторонних скриптов. Добавлена возможность скрытия игнорируемых файлов в меню и панелях. Улучшена работа со стеком вызовов в отладчике. Кроме этого во вкладке Performance появился новый трек Interactions для визуализации взаимодействия со страницей. Больше подробностей в обзорах от Google. Chrome, Chrome DevTools.
Релизом 105-ой версии отметился Firefox. Для диалога печати была добавлена опция печати только текущей страницы и значительно повышена стабильность работы в Windows в условиях нехватки памяти. Также в этом выпуске была проведена оптимизация методов array.includes и array.indexOf. Был устранен ряд уязвимостей. За релизом последовали патчи 105.0.1 и 105.0.2.
Вышла версия 1.26 рантайма Deno. Была добавлена поддержка Cache API, улучшена совместимость с Node.js и поддержка npm. Был представлен ряд доработок API и поддержка TypeScript 4.8. С полным списком изменений можно ознакомиться в блоге Deno.
Также вышло обновление Node.js 18.10.0 с небольшими изменениями модулей gyp, http и stream, была обновлена документация.
Представлен релиз ядра Linux 6.0. Цифра красивая, но смысл только в красивости, как говорит сам Линус Торвальдс. Была добавлена поддержка асинхронной буферизированной записи в XFS, блочный драйвер ublk, оптимизация планировщика задач и механизм верификации корректности работы ядра. Кстати, в версии 6.1 ожидается поддержка Rust как языка для разработки драйверов, изменения уже приняты в ветку версии 6.1. Релиз запланирован на декабрь.
Также отмечу релизы Java SE 19, git 2.38.0 и фреймворка Electron 21.
В конце рубрики отвлекитесь от всего и взгляните на небо. Вышел Stellarium 1.0. Его делали, на минуточку, 20 лет. Это планетарий для трехмерной навигации по звёздному небу. Базовый каталог небесных объектов насчитывает более 600 тысяч звёзд и 80 тысяч объектов глубокого космоса; есть дополнительные, в которых ещё куча объектов. Там же есть информация о созвездиях и туманностях. Работает на Linux, Windows и macOS.
Другие новости
Ещё немного хороших новостей для Deno. Slack запустил открытую бету своей платформы, написанную на Deno. Предполагается, что она позволит более интуитивно и просто создавать надстройки (или приложения) для Slack, будет более безопасной и расширяемой. Когда такой крупный сервис как Slack адаптирует и использует какое-то решение, то это уже большой аргумент в его пользу как с маркетинговой, так и с технической точек зрения. Посмотрим, как пройдёт бета и что из этого получится.
Веб-альманах проанализировал использование JavaScript в 2022 году. Объём JS всё увеличивается и увеличивается, у 77% мобильных страниц в
есть блокирующие скрипты, динамические импорты практически не используются. Из топ-1000 сайтов 17% используют Webpack, примерно 1,5% — Parcel. И да, jQuery всё ещё в строю, более чем. С полным отчётом вы можете ознакомиться по ссылке в описании выпуска.Стартовал опрос State of CSS 2022. Как и всегда, у вас есть возможность поделиться мнением и сделать более ясной картину для разработчиков CSS-фич в браузерах. Опрос уже открыт, в нём можно поучаствовать. Позже мы поговорим о его результатах.
И в конце выпуска можем отметить десятилетие TypeScript. По этому поводу в блоге TS появился пост: в нём небольшой взгляд в прошлое и обзор настоящего. С днём рождения, TypeScript!