mirror of
https://github.com/JetBrains/JetBrainsRuntime.git
synced 2025-12-06 01:19:28 +01:00
3.5 KiB
3.5 KiB
% Explanation of start of release changes
Overview
The start of release changes, the changes that turn JDK N into JDK
(N+1), are primarily small updates to various files along with new files to
store symbol information to allow javac --release N ... to run on
JDK (N+1).
The updates include changes to files holding meta-data about the
release, files under the src directory for API and tooling updates,
and incidental updates under the test directory.
Details and file updates
As a matter of policy, there are a number of semantically distinct concepts which get incremented separately at the start of a new release:
- Feature value of
Runtime.version() - Highest source version modeled by
javax.lang.model.SourceVersion - Highest class file format major version recognized by the platform
- Highest
-source/-target/--releaseargument recognized byjavacand related tools
The expected file updates are listed below. Additional files may need to be updated for a particular release.
Meta-data files
jcheck/conf: update meta-data used byjcheckand the Skara toolingmake/conf/version-numbers.conf: update to meta-data used in the build
src files
src/hotspot/share/classfile/classFileParser.cpp: add a#definefor the new versionsrc/java.base/share/classes/java/lang/classfile/ClassFile.java: add a constant for the new class file format versionsrc/java.base/share/classes/java/lang/reflect/ClassFileFormatVersion.java: add anenumconstant for the new class file format versionsrc/java.compiler/share/classes/javax/lang/model/SourceVersion.java: add anenumconstant for the new source versionsrc/java.compiler/share/classes/javax/lang/model/util/*visitors: Update@SupportedSourceVersionannotations to latest value. Note this update is done in lieu of introducing another set of visitors for each Java SE release.src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java: add anenumconstant for the new source version internal tojavacsrc/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassFile.java: add anenumconstant for the new class file format version internal tojavacsrc/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Target.java: add anenumconstant for the new target version internal tojavacsrc/jdk.compiler/share/classes/com/sun/tools/javac/processing/PrintingProcessor.javaupdate printing processor to support the new source version- The symbol information for
--releaseis stored as new text files in thesrc/jdk.compiler/share/data/symbolsdirectory, one file per module. The README file in that directory contains directions on how to create the files.
test files
test/langtools/tools/javac/api/TestGetSourceVersions.java: add newSourceVersionconstant to test matrix.test/langtools/tools/javac/classfiles/ClassVersionChecker.java: add new enum constant for the new class file versiontest/langtools/tools/javac/lib/JavacTestingAbstractProcessor.javaupdate annotation processor extended byjavactests to cover the new source versiontest/langtools/tools/javac/preview/classReaderTest/Client.nopreview.outandtest/langtools/tools/javac/preview/classReaderTest/Client.preview.out: update expected messages for preview errors and warningstest/langtools/tools/javac/versions/Versions.java: add new source version to the set of valid sources and add new enum constant for the new class file version.