JEP 401: объектные значения вошли в основную ветку OpenJDK

· Технологии
После долгих лет разработки в рамках проекта Valhalla первая предварительная реализация объектных значений (value objects) наконец слита в master OpenJDK. Вместе с ней в JVM попала и строгая инициализация полей.

cover.svg

Один из самых ожидаемых элементов проекта Valhalla добрался до основной ветки OpenJDK. Запрос на слияние #31120 с реализацией JEP 401 «Value Objects (Preview)» был интегрирован и закрыт коммитом cc278db.

Вместе с объектными значениями в JVM попала и реализация JEP 539 — строгой инициализации полей (Strict Field Initialization). Обе спецификации разрабатывались в одной кодовой базе не случайно: JEP 401 напрямую зависит от строгой инициализации, поэтому разделить их не удалось.

Масштаб изменения

Автор патча Дэвид Симмс сразу предупредил, что обсуждать столь крупное изменение в одном обсуждении невозможно. Поэтому основной pull request играл роль «витрины» для финального одобрения и интеграции, а собственно ревью раздробили на три подзапроса — по языку (JDK-8317277), по виртуальной машине (JDK-8317278) и по стандартной библиотеке (JDK-8317279). Каждый из них содержал полный набор правок, чтобы сохранить контекст: изменения в компиляторе, JVM и библиотеке слишком тесно переплетены.

О размахе говорит и список причастных: под коммитом собрались десятки соавторов и не меньше полутора десятков ревьюеров. Автоматика навесила на запрос ярлыки едва ли не всех подсистем OpenJDK — от компилятора и hotspot до безопасности, сети, i18n и Shenandoah. В примечании автор отдельно подтвердил, что вклад сделан в соответствии с «промежуточной политикой OpenJDK по ИИ».

Финальный аккорд

Последние минуты перед слиянием вышли почти комическими. Поскольку у автора нет статуса коммиттера, изменение требовалось «спонсировать». Даниэль Даугерти терпеливо пробовал команды бота в разном порядке, комментируя процесс всё более нервно: «тук-тук-тук… оно вообще работает?» и знаменитым «Есть кто? Бюллер? Бюллер?». В конце концов бот отчитался, что изменение уходит в историю как коммит cc278db, и запрос был закрыт как интегрированный.

Обе возможности выходят в статусе предварительного просмотра (Preview), то есть по умолчанию будут отключены и предназначены для раннего тестирования сообществом, а не для промышленного использования.


Источник: Hacker News

Комментарии

Войдите, чтобы комментировать.

  • Пока нет комментариев.