TypeScript 5.4 добавляет тип NoInfer
Вышла версия TypeScript 5.4, в которой добавлен полезный тип NoInfer, а также сохранено сужение закрытий после последних назначений.
Java Development Kit 22, следующая версия Java Standard Edition, уже доступна в виде производственного релиза. JDK 22 включает в себя 12 функций, последними из которых стали второй предварительный просмотр скопированных значений и предварительный просмотр сборщиков потоков.
JDK 22, загружаемый с сайта oracle.com, является краткосрочным выпуском, который будет получать премьер-поддержку от Oracle в течение шести месяцев. Релизы с долгосрочной поддержкой, такие как предшественник JDK 21, получают пять лет Premier-поддержки. Расширенная поддержка доступна для JDK 21 до сентября 2031 года.
JDK 22 предлагает возможности из проектов разработки OpenJDK, включая Amber, который разрабатывает небольшие, ориентированные на производительность функции языка Java; Loom, который разрабатывает функции и API виртуальной машины Java; и Panama, который разрабатывает взаимосвязи между API Java и не-Java.
Скопированные значения из проекта Loom позволяют безопасно и эффективно обмениваться неизменяемыми данными внутри и между потоками. Они предпочтительнее локальных переменных, особенно при использовании большого количества переменных потоков. Цели - простота использования, понятность, надежность и производительность.
Сборщики потоков улучшат API потоков для поддержки пользовательских промежуточных операций. Эта функция предварительного просмотра позволит потоковым конвейерам преобразовывать данные таким образом, который невозможно реализовать с помощью существующих встроенных промежуточных операций.
К этим новейшим возможностям присоединяются второй предварительный просмотр структурированного параллелизма, предварительный просмотр утверждений перед super(...), предварительный просмотр API для файлов классов, привязка регионов для сборщика мусора G1, второй предварительный просмотр шаблонов строк, неименованных переменных и шаблонов, API для посторонних функций и памяти, а также седьмой инкубатор API для векторов. Также были предложены вторая предварительная версия неявно объявленных классов и основных методов экземпляра, а также усовершенствование программы запуска Java, позволяющее запускать многофайловые программы.
Структурированный параллелизм из проекта Project Loom упрощает программирование с использованием API, который рассматривает группы связанных задач, выполняемых в разных потоках, как единую единицу работы, что упрощает обработку и отмену ошибок, повышает надежность и улучшает наблюдаемость. Этот API был предварительно представлен в JDK 21 и внедрен в JDK 19 и JDK 20.
Усовершенствование программы запуска Java-приложений позволит запускать программу, поставляемую в виде нескольких файлов с исходным кодом Java. Цель возможности запуска многофайловых программ с исходным кодом - сделать переход от небольших программ к более крупным более постепенным, позволяя разработчикам самим решать, стоит ли и когда настраивать инструмент сборки.
API для файлов классов предоставит стандартный API для разбора, генерации и преобразования файлов классов Java. Он предназначен для того, чтобы компоненты JDK могли перейти на стандартный API и, в конечном счете, удалить внутреннюю копию библиотеки ASM сторонних разработчиков из JDK. Разбор, генерация и преобразование файлов классов широко распространены и используются независимыми инструментами и библиотеками для изучения и расширения программ без ущерба для удобства сопровождения исходного кода.
Однако сейчас формат файлов классов Java развивается быстрее, чем раньше, благодаря полугодовому графику выпуска стандартных версий Java. Такая скорость эволюции привела к тому, что фреймворки стали чаще сталкиваться с файлами классов, более новыми, чем библиотека файлов классов. Это приводит к ошибкам и к тому, что разработчики фреймворков пытаются написать код для анализа файлов классов из будущего и надеются, что ничего серьезного не изменится. Планируется, что платформа Java определит и реализует стандартный API class-файлов, который будет развиваться вместе с форматом class-файлов.
Уплотнение регионов для G1 призвано уменьшить задержки, чтобы сборка мусора (GC) не отключалась во время критических регионов Java Native Interface (JNI). Среди целей - отсутствие остановки потоков из-за критических областей JNI, отсутствие дополнительной задержки при запуске сборки мусора из-за этих областей, отсутствие регрессии во времени паузы GC, когда ни одна из этих областей не активна, и минимальная регрессия во времени паузы GC, когда эти области активны. В настоящее время GC по умолчанию, G1, отключает сборку мусора во время каждого критического региона, что может оказать значительное влияние на задержку. Благодаря этому изменению потоки Java никогда не будут ждать завершения операции GC G1.
Неявно объявленные классы и методы экземпляров из проекта Amber были предварительно представлены в JDK 21 как неименованные классы и методы экземпляров. В JDK 22 эта возможность получит новое название и значительные изменения во втором предварительном просмотре. Эта возможность призвана усовершенствовать язык Java, чтобы студенты могли писать свои первые программы без необходимости разбираться в особенностях языка, предназначенных для больших программ. Студенты смогут писать упрощенные декларации для одноклассовых программ, а затем, по мере развития своих навыков, плавно расширять программы, используя более продвинутые возможности.
Предварительный просмотр утверждений перед super(...), также из проекта Amber, относится к конструкторам в языке, позволяя утверждениям, которые не ссылаются на создаваемый экземпляр, появляться перед явным конструктором. Цель плана - предоставить разработчикам большую свободу в выражении поведения конструкторов, позволяя более естественно размещать логику, которая в настоящее время должна быть вынесена во вспомогательные статические методы, вспомогательные промежуточные конструкторы или аргументы конструктора.
Другая цель - сохранить существующую гарантию того, что конструкторы запускаются в порядке сверху вниз во время инстанцирования класса, гарантируя, что код в конструкторе подкласса не может вмешиваться в инстанцирование суперкласса. Третья заявленная цель - не требовать никаких изменений в JVM. На данный момент это единственная функция JDK 22, которая еще не была представлена в стандартной Java.
Шаблоны строк, еще одна функция Project Amber, дополнит существующие в Java строковые литералы и текстовые блоки, соединяя литеральный текст со встроенными выражениями и шаблонными процессорами для получения специализированных результатов. Цели включают:
Шаблоны строк появились в первой предварительной версии в JDK 21. Вторая предварительная версия предназначена для получения дополнительного опыта и отзывов. За исключением технических изменений в типах выражений шаблонов, никаких изменений по сравнению с первой предварительной версией нет.
Векторный API (седьмой инкубатор) от Project Panama будет выражать векторные вычисления, которые надежно компилируются во время выполнения в оптимальные векторные инструкции на поддерживаемых архитектурах CPU, достигая производительности, превосходящей эквивалентные скалярные вычисления. API предоставляет возможность писать сложные векторные алгоритмы на Java, используя существующий алгоритм автовекторизации HotSpot, но с пользовательской моделью, которая делает векторизацию более предсказуемой и надежной.
Эта возможность была реализована в предыдущих версиях Java, начиная с JDK 16 в марте 2021 года. Цели API - быть понятным и лаконичным, не зависящим от платформы, обеспечивать надежную компиляцию и производительность во время выполнения на архитектурах x64 AArch64, а также плавную деградацию.
Неименованные переменные и шаблоны из проекта Amber могут использоваться, когда объявления переменных или вложенные шаблоны необходимы, но никогда не используются. Цели плана включают:
Это предложение было предварительно представлено в JDK 21 и будет доработано без изменений в JDK 22.
API посторонних функций и памяти из проекта Panama позволяет Java-программам взаимодействовать с кодом и данными за пределами среды выполнения Java. Вызывая внешние функции и получая безопасный доступ к внешней памяти, Java-программы могут вызывать родные библиотеки и обрабатывать родные данные без хрупкости JNI (Java Native Interface), говорится в предложении.
API посторонних функций и памяти ранее был представлен в JDK 19, JDK 20 и JDK 21. В JDK 22 он будет доработан. Последние изменения затрагивают четыре области: поддержка произвольных наборов символов для родных строк, предоставление клиентам возможности программно создавать дескрипторы функций на языке C, а также введение атрибута манифеста JAR-файлов Enable-Native-Access. Последний позволяет исполняемым JAR-файлам вызывать ограниченные методы без использования опции командной строки -enable-native-access. Четвертое направление - это предоставление новой опции компоновщика, которая позволяет клиентам передавать сегменты кучи в дескрипторы методов.
Новые версии стандартной Java выходят каждые шесть месяцев, а релизы долгосрочной поддержки - каждые два года.
Вышла версия TypeScript 5.4, в которой добавлен полезный тип NoInfer, а также сохранено сужение закрытий после последних назначений.
В TypeScript 5.4, который уже стал общедоступным, сохраняются уточнения типов в закрытиях функций после последних присваиваний.
Swift 5.10 может обеспечить полную изоляцию данных в параллельном коде, не позволяя потокам одновременно читать и записывать в одну и ту же память.
Продолжаем добавлять языки программирования для Вас.
Впереди много интересного!
Только свежие новости программирования и технологий каждый день.
Комментарии