Scala 3.3.9 LTS улучшила совместимость с Java и исправила Scaladoc на JDK 25

Scala 3.3.9 LTS улучшила совместимость с Java и исправила Scaladoc на JDK 25
Содержание статьи

28 октября вышла Scala 3.3.9 LTS, обновление ветки с длительной поддержкой. В числе изменений: исправления сигнатур Java, дополнительные проверки сопоставления с образцом и устранение сбоя Scaladoc на JDK 25. На Mentoring.digital разбираем, на что обратить внимание разработчику смешанного проекта на Scala и Java.

Уточнена генерация сигнатур Java

Релиз исправляет обработку обобщённых Java-сигнатур для типов высшего порядка и классов-значений. Среди конкретных исправлений указаны массивы классов-значений и ограничения параметров типов. Компилятор также получил проверку полноты сопоставления для абстрактных sealed-классов Java.

Если библиотеку на Scala используют из Java, полезно проверять обе стороны интерфейса. Отдельно соберите библиотеку и небольшой Java-модуль, который вызывает её публичные методы. Включите в пример реально используемые обобщённые типы и массивы. Успех тестов только внутри Scala-модуля не подтверждает работу всех внешних вызовов.

Диагностика помогает заметить неоднозначный код

В обновлении улучшено сообщение об отсутствующих членах и добавлены предупреждения о сомнительной записи отрицательных литералов. В примечаниях к выпуску приведены формы - 42 и -42.abs. Это повод внимательно прочитать новую диагностику при сборке существующего проекта.

Не отключайте предупреждение только ради прежнего вида журнала. Сначала выясните, какое выражение получает компилятор и соответствует ли оно намерению автора. В небольшом отдельном примере проще сравнить результат и выбрать однозначную запись. Если команда считает предупреждения ошибками, проверьте этот сценарий в CI до обновления общей конфигурации.

Scaladoc и проверка обновления

Scaladoc больше не должен падать с NullPointerException на JDK 25 в исправленном сценарии. Команда также отказалась от собственных шрифтов в Scaladoc, чтобы уменьшить размер JAR с документацией. Это изменение артефакта документации, а не заявленное ускорение пользовательской программы.

Перед обновлением зафиксируйте текущую версию компилятора и JDK. Затем выполните чистую сборку, тесты взаимодействия Scala и Java и генерацию документации в отдельной ветке. Сравните сообщения компилятора и публичный API с исходным состоянием. Разобрать взаимодействие с Java и проектирование интерфейсов можно с наставником по Java и JVM. Мы не запускали тесты Scala 3.3.9; порядок проверки предложен редакцией на основе состава релиза.

Похожие статьи по данной теме