Компиляторы GCC 15 с улучшениями для Rust, C, C++ и Cobol
Крупный выпуск коллекции компиляторов с открытым исходным кодом также включает улучшения векторизации и ускорение компиляции очень больших входных файлов.
Java Development Kit (JDK) 25, запланированный на сентябрь выпуск долгосрочной поддержки стандартной Java, теперь имеет пять функций, официально предложенных для него. Последняя функция - гибкие тела конструкторов, которая была предварительно представлена в трех предыдущих версиях Java.
На этой неделе гибкие тела конструкторов были объявлены целевыми для JDK 25, как сообщается на странице эталонной реализации JDK 25. Ранее в JDK 25 были добавлены такие функции, как объявления импорта модулей, компактные исходные файлы и основные методы экземпляров, предварительный просмотр API для стабильных значений и удаление ранее устаревшего 32-битного порта x86. Декларации импорта модулей, компактные исходные файлы и основные методы экземпляров были предварительно представлены в предыдущих JDK и будут доработаны в JDK 25.
JDK 25 выходит вслед за JDK 24, релизом с шестимесячной поддержкой, который появился 18 марта. Как релиз долгосрочной поддержки (LTS), JDK 25 получит не менее пяти лет премьер-поддержки от Oracle. JDK 25 должен появиться в качестве производственного релиза 16 сентября, после фазы rampdown в июне и июле и двух кандидатов на выпуск, запланированных на август. Последним LTS-выпуском был JDK 21, который появился в сентябре 2023 года.
Гибкие тела конструкторов были предварительно представлены в JDK 22 в виде «утверждений перед super(...)», а также в JDK 23 и JDK 24. Предполагается, что эта функция будет доработана в JDK 25. В гибких телах конструкторов тело конструктора позволяет появляться утверждениям перед явным вызовом конструктора, таким как super (...) или this (...). Эти утверждения не могут ссылаться на конструируемый объект, но они могут инициализировать его поля и выполнять другие безопасные вычисления. Это изменение позволяет выражать многие конструкторы более естественно и инициализировать поля до того, как они станут видимыми для другого кода в классе, например, для методов, вызываемых из конструктора суперкласса, что повышает безопасность. Цели этой функции - устранение ненужных ограничений на код в конструкторах; предоставление дополнительных гарантий того, что состояние нового объекта полностью инициализируется до того, как любой код сможет его использовать; и переосмысление процесса взаимодействия конструкторов друг с другом для создания полностью инициализированного объекта.
Объявление импорта модулей, которое было представлено в JDK 23 и JDK 24, расширяет возможности языка Java, позволяя в сжатой форме импортировать все пакеты, экспортируемые модулем. Это упрощает повторное использование модульных библиотек, но не требует, чтобы импортируемый код находился в самом модуле. Цели: упростить повторное использование модульных библиотек, позволяя импортировать сразу целые модули; избежать шума от многочисленных объявлений импорта типов по требованию при использовании различных частей API, экспортируемых модулем; позволить новичкам легче использовать сторонние библиотеки и фундаментальные классы Java без необходимости изучать, где они расположены в иерархии пакетов; и обеспечить, чтобы объявления импорта модулей работали без проблем наряду с существующими объявлениями импорта. Разработчики, использующие функцию импорта модулей, не должны быть обязаны модулировать свой собственный код.
Компактные исходные файлы и основные методы экземпляров развивают язык Java так, что новички могут писать свои первые программы без необходимости разбираться в особенностях языка, предназначенных для больших программ. Новички могут писать упрощенные декларации для одноклассовых программ и по мере развития своих навыков плавно расширять программы, используя более продвинутые возможности. Аналогичным образом, опытные разработчики могут писать небольшие программы лаконично, не прибегая к конструкциям, предназначенным для программирования больших программ, говорится в предложении. Эта функция была представлена в JDK 21, JDK 22, JDK 23 и JDK 24, хотя и под несколько иными названиями. В JDK 24 она называлась «простые исходные файлы и основные методы экземпляра».
Стабильные значения - это объекты, хранящие неизменяемые данные. Поскольку стабильные значения рассматриваются JVM как константы, они позволяют добиться тех же оптимизаций производительности, что и объявление поля конечным. Но по сравнению с конечными полями стабильные значения обеспечивают большую гибкость в отношении времени их инициализации. Главная цель этой функции, которая находится на стадии предварительного просмотра, - улучшить запуск Java-приложений за счет разделения монолитной инициализации состояния приложения. Среди других целей - позволить пользовательскому коду безопасно пользоваться оптимизациями сложения констант, ранее доступными только для кода JDK; гарантировать, что стабильные значения инициализируются не более одного раза, даже в многопоточных программах; и отделить создание стабильных значений от их инициализации без существенных потерь производительности.
Удаление 32-битного x86-порта, который также предлагается использовать в JDK 25, подразумевает удаление исходного кода и поддержки сборки для этого порта, который был признан устаревшим в JDK 24. Объясняя мотивы удаления, в предложении говорится, что затраты на поддержку этого порта перевешивают преимущества. Поддержание паритета с новыми возможностями, такими как API внешних функций и памяти, является основной альтернативной стоимостью. Удаление 32-битного x86-порта позволит разработчикам OpenJDK ускорить разработку новых функций и улучшений.
Среди других возможностей, которые могут найти свое место в JDK 25, - API функций деривации ключей, скопированные значения, структурированный параллелизм и примитивные типы в паттернах, instanceof и switch, которые были предварительно представлены в JDK 24. Векторный API, который девять раз инкубировался с JDK 16 по JDK 24, также может появиться в JDK 25.
Крупный выпуск коллекции компиляторов с открытым исходным кодом также включает улучшения векторизации и ускорение компиляции очень больших входных файлов.
Angular 19 - это подвижный пир оптимизаций, рефакторов и улучшений для реактивного программирования на JavaScript.
Jipher - это поставщик криптографических услуг для Java, который содержит криптографический модуль OpenSSL, прошедший проверку FIPS 140-2.
Продолжаем добавлять языки программирования для Вас.
Впереди много интересного!
Только свежие новости программирования и технологий каждый день.
Комментарии