Релиз-кандидат Deno 2 готов
Команда Deno выпустила релиз-кандидат для Deno 2.0, который включает в себя все, что ожидается в финальном релизе.

В апреле 2024 года вышла Java 22. Теперь, спустя всего 6 месяцев, вышла версия 23, которая является STS-релизом с большим количеством функций в статусе предварительной версии.
Этот выпуск включает в себя двенадцать JEP:
455: Примитивные типы в паттернах, instanceof и switch (предварительный просмотр)
466: API для работы с файлами классов (второе превью)
467: Комментарии к документации в формате Markdown
469: Векторный API (восьмой инкубатор)
473: Сборщики потоков (второе превью)
471: Утратить методы доступа к памяти в sun.misc.Unsafe для удаления
474: ZGC: режим генерации по умолчанию
476: Декларации импорта модулей (предварительный просмотр)
477: Неявно объявленные классы и основные методы экземпляров (третье превью)
480: Структурированный параллелизм (третье превью)
481: Скопированные значения (третий просмотр)
482: Гибкие тела конструкторов (второе превью)
В основном это превью, и только две функции завершены: комментарии к документации Markdown и
переход на ZGC: Generational Mode по умолчанию. Давайте рассмотрим наиболее заметные изменения, начиная с функций, находящихся в стадии завершения.
Это довольно простое изменение. Она позволяет использовать Markdown при написании комментариев к Javadoc, чтобы сделать документацию более удобной для чтения.
Переключили режим по умолчанию сборщика мусора Z (ZGC) на генерационный, так как было решено, что поддержка негенерационного ZGC замедляет разработку новых функций.
Согласование шаблонов, хотя и было уже реализовано, имело ограниченную поддержку использования примитивных типов. Поэтому JEP 455 предлагает расширить согласование шаблонов, включив в него и примитивные типы, что означает, что функции instanceof и switch смогут работать с такими типами данных даже во вложенных контекстах.
Еще одна важная особенность - JEP 471: Утратить методы доступа к памяти в sun.misc.Unsafe.
Хотя Java безопасна для памяти, во многих случаях разработчикам требуется прямой низкоуровневый доступ, и для этого они используют sun.misc.Unsafe, использование которого, по меньшей мере, проблематично. Это связано с тем, что он может превратить безопасный язык в рассадник утечек памяти и других ошибок. Теперь в 471 интерфейс помечен как устаревший и подлежит удалению. Но чем он будет заменен? API Foreign Function & Memory, доступным с версии 22.
Stream::gather(Gatherer) - это новая промежуточная операция потока, которая обрабатывает элементы потока, применяя определенную пользователем сущность, называемую сборщиком. С помощью операции gather мы можем создавать эффективные, готовые к параллельной работе потоки, реализующие практически любую промежуточную операцию. Stream::gather(Gatherer) является для промежуточных операций тем же, чем Stream::collect(Collector) является для терминальных операций.
Вторая предварительная версия расширяет Stream API для поддержки пользовательских промежуточных операций. Это позволит потоковым конвейерам преобразовывать данные таким образом, который нелегко реализовать с помощью существующих встроенных промежуточных операций.
Это третья предварительная версия функции, которая была представлена еще в JDK 21 с JEP 445: Unnamed Classes and Instance Main Methods, которую мы рассматривали в статье «An Attempt To Make Java Easier To Learn», где мы обнаружили, что ни для кого не секрет, что Java не является любимым языком в кодинговых буткампах.
Поэтому предложение OpenJDK пытается изменить это путем реформирования самого синтаксиса языка, чтобы
простой пример «Hello World» стал бы таким же простым, как
void main() {
System. out. println(«Hello World»);
}
Этот третий просмотр предполагает два дополнения:
Неявно объявленные классы автоматически импортируют три статических метода для простого текстового ввода/вывода с консоли. Эти методы объявлены в новом классе верхнего уровня java.io.IO.
Неявно объявленные классы автоматически импортируют, по требованию, все публичные классы верхнего уровня и интерфейсы пакетов, экспортируемых модулем java.base.
Теперь вопрос в том, кто будет дорабатывать свои продукты, чтобы приспособить их к новой версии.
Первой на эту волну вскочила компания Jetbrains, добавив поддержку Java 23 в IntelliJ IDEA 2024.2. Следующим ближайшим кандидатом, судя по этому сообщению, является движок запросов Trino. Кто последует за ним?
Команда Deno выпустила релиз-кандидат для Deno 2.0, который включает в себя все, что ожидается в финальном релизе.
У серверного JavaScript-движка Bun появился новый трюк. Вы предоставляете ему файл на языке C, и он позволяет вам вызывать функции C из JavaScript. Гений или безумие?
Компания Apple выпустила Swift 6, в котором улучшена поддержка написания параллельного кода, в частности, появился новый, дополнительный режим языка, который анализирует код во время компиляции и диагностирует возможные гонки данных.