Key: JDK-X - https://bugs.openjdk.java.net/browse/JDK-X CVE-XXXX-YYYY: https://cve.mitre.org/cgi-bin/cvename.cgi?name=XXXX-YYYY New in release OpenJDK 19.0.2 (2023-01-17): =========================================== Live versions of these release notes can be found at: * https://builds.shipilev.net/backports-monitor/release-notes-19.0.2.html * CVEs - CVE-2023-21835 - CVE-2023-21843 * Security fixes - JDK-8286070: Improve UTF8 representation - JDK-8286496: Improve Thread labels - JDK-8287411: Enhance DTLS performance - JDK-8288516: Enhance font creation - JDK-8293554: Enhanced DH Key Exchanges - JDK-8293598: Enhance InetAddress address handling - JDK-8293717: Objective view of ObjectView - JDK-8293734: Improve BMP image handling - JDK-8293742: Better Banking of Sounds - JDK-8295687: Better BMP bounds * Other changes - JDK-8022403: sun/java2d/DirectX/OnScreenRenderingResizeTest/OnScreenRenderingResizeTest.java fails - JDK-8029633: Raw inner class constructor ref should not perform diamond inference - JDK-8178698: javax/sound/midi/Sequencer/MetaCallback.java failed with timeout - JDK-8277970: Test jdk/sun/security/ssl/SSLSessionImpl/NoInvalidateSocketException.java fails with "tag mismatch" - JDK-8279941: sun/security/pkcs11/Signature/TestDSAKeyLength.java fails when NSS version detection fails - JDK-8285604: closed sun/java2d/GdiRendering/ClipShapeRendering.java failed with "Incorrect color ffeeeeee instead of ff0000ff in pixel (100, 100)" - JDK-8285835: SIGSEGV in PhaseIdealLoop::build_loop_late_post_work - JDK-8286314: Trampoline not created for far runtime targets outside small CodeCache - JDK-8286624: Regression Test CoordinateTruncationBug.java fails on OL8.3 - JDK-8287217: C2: PhaseCCP: remove not visited nodes, prevent type inconsistency - JDK-8288132: Update test artifacts in QuoVadis CA interop tests - JDK-8288377: [REDO] DST not applying properly with zone id offset set with TZ env variable - JDK-8288992: AArch64: CMN should be handled the same way as CMP - JDK-8290164: compiler/runtime/TestConstantsInError.java fails on riscv - JDK-8290246: test fails "assert(init != __null) failed: initialization not found" - JDK-8290451: Incorrect result when switching to C2 OSR compilation from C1 - JDK-8290496: riscv: Fix build warnings-as-errors with GCC 11 - JDK-8290529: C2: assert(BoolTest(btest).is_canonical()) failure - JDK-8290694: Update the release date after forking Oct CPU22_10 - JDK-8290705: StringConcat::validate_mem_flow asserts with "unexpected user: StoreI" - JDK-8290711: assert(false) failed: infinite loop in PhaseIterGVN::optimize - JDK-8290781: Segfault at PhaseIdealLoop::clone_loop_handle_data_uses - JDK-8290900: Build failure with Clang 14+ due to function warning attribute - JDK-8290964: C2 compilation fails with assert "non-reduction loop contains reduction nodes" - JDK-8290974: Bump version numbers for January 2023 CPU - JDK-8291508: Fix some tests with "requires vm.jvmti & vm.continuations" - JDK-8291599: Assertion in PhaseIdealLoop::skeleton_predicate_has_opaque after JDK-8289127 - JDK-8291633: Build failures with GCC 11, Alpine 3 due to incompatible casts from nullptr - JDK-8291775: C2: assert(r != __null && r->is_Region()) failed: this phi must have a region - JDK-8292158: AES-CTR cipher state corruption with AVX-512 - JDK-8292159: TYPE_USE annotations on generic type arguments of record components discarded - JDK-8292385: assert(ctrl == kit.control()) failed: Control flow was added although the intrinsic bailed out - JDK-8292695: SIGQUIT and jcmd attaching mechanism does not work with signal chaining library - JDK-8292756: java.lang.AssertionError at at jdk.compiler/com.sun.tools.javac.code.Scope$ScopeImpl.leave(Scope.java:386) - JDK-8292780: misc tests failed "assert(false) failed: graph should be schedulable" - JDK-8292899: CustomTzIDCheckDST.java testcase failed on AIX platform - JDK-8292969: Bad Thread Utilization in ForkJoinPool - JDK-8293044: C1: Missing access check on non-accessible class - JDK-8293100: RISC-V: Need to save and restore callee-saved FloatRegisters in StubGenerator::generate_call_stub - JDK-8293348: A false cyclic inheritance error reported - JDK-8293578: Duplicate ldc generated by javac - JDK-8293701: jdeps InverseDepsAnalyzer runs into NoSuchElementException: No value present - JDK-8293816: CI: ciBytecodeStream::get_klass() is not consistent - JDK-8293834: Update CLDR data following tzdata 2022c update - JDK-8293996: C2: fix and simplify IdealLoopTree::do_remove_empty_loop - JDK-8294307: ISO 4217 Amendment 173 Update - JDK-8294357: (tz) Update Timezone Data to 2022d - JDK-8294517: Update jdk19u fix version to 19.0.2 - JDK-8294538: missing is_unloading() check in SharedRuntime::fixup_callers_callsite() - JDK-8294602: Change milestone to fcs for releases: jdk-11.0.18, jdk-17.0.6, jdk-19.0.2 - JDK-8294755: Update milestone to ea for 19.0.2 - JDK-8294840: langtools OptionalDependencyTest.java use File.pathSeparator - JDK-8295173: (tz) Update Timezone Data to 2022e - JDK-8295264: Fix PaX check on RISC-V - JDK-8295268: Optimized builds are broken due to incorrect assert_is_rfp shortcuts - JDK-8295414: [Aarch64] C2: assert(false) failed: bad AD file - JDK-8295469: S390X: Optimized builds are broken - JDK-8295554: Move the "sizecalc.h" to the correct location - JDK-8295723: security/infra/wycheproof/RunWycheproof.java fails with Assertion Error - JDK-8295926: RISC-V: C1: Fix LIRGenerator::do_LibmIntrinsic - JDK-8296083: javax/swing/JTree/6263446/bug6263446.java fails intermittently on a VM - JDK-8296108: (tz) Update Timezone Data to 2022f - JDK-8296448: RISC-V: Fix temp usages of heapbase register killed by MacroAssembler::en/decode_klass_not_null - JDK-8296463: Memory leak in JVM_StartThread with the integration of Virtual threads - JDK-8296480: java/security/cert/pkix/policyChanges/TestPolicy.java is failing - JDK-8296485: BuildEEBasicConstraints.java test fails with SunCertPathBuilderException - JDK-8296496: Overzealous check in sizecalc.h prevents large memory allocation - JDK-8296602: RISC-V: improve performance of copy_memory stub - JDK-8296632: Write a test to verify the content change of TextArea sends TextEvent - JDK-8296715: CLDR v42 update for tzdata 2022f - JDK-8296733: JFR: File Read event for RandomAccessFile::write(byte[]) is incorrect - JDK-8296771: RISC-V: C2: assert(false) failed: bad AD file - JDK-8296945: PublicMethodsTest is slow due to dependency verification with debug builds - JDK-8296957: One more cast in SAFE_SIZE_NEW_ARRAY2 - JDK-8296970: Remove sysThreadAvailableStackWithSlack from hotspot-symbols - JDK-8297147: UnexpectedSourceImageSize test times out on slow machines when fastdebug is used - JDK-8297153: sun/java2d/DirectX/OnScreenRenderingResizeTest/OnScreenRenderingResizeTest.java fails again - JDK-8297241: Update sun/java2d/DirectX/OnScreenRenderingResizeTest/OnScreenRenderingResizeTest.java - JDK-8297309: Memory leak in ShenandoahFullGC - JDK-8297451: ProcessHandleImpl should assert privilege when modifying reaper thread - JDK-8297476: Increase InlineSmallCode default from 1000 to 2500 for RISC-V Notes on individual issues: =========================== client-libs/javax.imageio: JDK-8295687: Better BMP bounds ============================== Loading a linked ICC profile within a BMP image is now disabled by default. To re-enable it, set the new system property `sun.imageio.bmp.enabledLinkedProfiles` to `true`. This new property replaces the old property, `sun.imageio.plugins.bmp.disableLinkedProfiles`. client-libs/javax.sound: JDK-8293742: Better Banking of Sounds ===================================== Previously, the SoundbankReader implementation, `com.sun.media.sound.JARSoundbankReader`, would download a JAR soundbank from a URL. This behaviour is now disabled by default. To re-enable it, set the new system property `jdk.sound.jarsoundbank` to `true`. security-libs/javax.net.ssl: JDK-8287411: Enhance DTLS performance ===================================== The JDK now exchanges DTLS cookies for all handshakes, new and resumed. The previous behaviour can be re-enabled by setting the new system property `jdk.tls.enableDtlsResumeCookie` to `false`. New in release OpenJDK 19.0.1 (2022-10-18): =========================================== Live versions of these release notes can be found at: * https://builds.shipilev.net/backports-monitor/release-notes-19.0.1.html * Security fixes - JDK-8282252: Improve BigInteger/Decimal validation - JDK-8285662: Better permission resolution - JDK-8286077, CVE-2022-21618: Wider MultiByte conversions - JDK-8286511: Improve macro allocation - JDK-8286519: Better memory handling - JDK-8286526, CVE-2022-21619: Improve NTLM support - JDK-8286910, CVE-2022-21624: Improve JNDI lookups - JDK-8286918, CVE-2022-21628: Better HttpServer service - JDK-8287446: Enhance icon presentations - JDK-8288508: Enhance ECDSA usage - JDK-8289366, CVE-2022-39399: Improve HTTP/2 client usage - JDK-8289853: Update HarfBuzz to 4.4.1 - JDK-8290334: Update FreeType to 2.12.1 * Other changes - JDK-8028265: Add legacy tz tests to OpenJDK - JDK-8212096: javax/net/ssl/ServerName/SSLEngineExplorerMatchedSNI.java failed intermittently due to SSLException: Tag mismatch - JDK-8227651: Tests fail with SSLProtocolException: Input record too big - JDK-8284977: MetricsTesterCgroupV2.getLongValueEntryFromFile fails when named value doesn't exist - JDK-8287672: jtreg test com/sun/jndi/ldap/LdapPoolTimeoutTest.java fails intermittently in nightly run - JDK-8287906: Rewrite of GitHub Actions (GHA) sanity tests - JDK-8287917: System.loadLibrary does not work on Big Sur if JDK is built with macOS SDK 10.15 and earlier - JDK-8288499: Restore cancel-in-progress in GHA - JDK-8288599: com/sun/management/OperatingSystemMXBean/TestTotalSwap.java: Expected total swap size ... but getTotalSwapSpaceSize returned ... - JDK-8288653: Bump version numbers for 19.0.1 - JDK-8290000: Bump macOS GitHub actions to macOS 11 - JDK-8290695: Change milestone to fcs for releases: jdk-11.0.17, jdk-17.0.5, jdk-19.0.1 - JDK-8291640: java/beans/XMLDecoder/8028054/Task.java should use the 3-arg Class.forName - JDK-8291897: TerminatingThreadLocal(s) not registered from virtual thread(s) - JDK-8292051: jdk/internal/misc/TerminatingThreadLocal/TestTerminatingThreadLocal.java failed "AssertionError: Expected terminated values: [666] but got: []" - JDK-8292240: CarrierThread.blocking not reset when spare not activated - JDK-8292487: Back out the fix for JDK-8281962 from jdk19u - JDK-8292579: (tz) Update Timezone Data to 2022c - JDK-8292654: G1 remembered set memory footprint regression after JDK-8286115 - JDK-8293180: JQuery UI license file not updated New in release OpenJDK 19.0.0 (2022-09-20): =========================================== Major changes are listed below. Some changes may have been backported to earlier releases following their first appearance in OpenJDK 19. The full list of changes in 19u can be found at: - * https://builds.shipilev.net/backports-monitor/release-notes-19.txt NEW FEATURES ============ Language Features ================= Pattern Matching for switch =========================== https://openjdk.org/jeps/406 https://openjdk.org/jeps/420 https://openjdk.org/jeps/427 Enhance the Java programming language with pattern matching for `switch` expressions and statements, along with extensions to the language of patterns. Extending pattern matching to `switch` allows an expression to be tested against a number of patterns, each with a specific action, so that complex data-oriented queries can be expressed concisely and safely. This was a preview feature (http://openjdk.java.net/jeps/12) in OpenJDK 17 (JEP 406) and saw a second preview in OpenJDK 18 (JEP 420). It reaches its third preview (JEP 427) in OpenJDK 19. Record Patterns =============== https://openjdk.org/jeps/405 Enhance the Java programming language with record patterns to deconstruct record values. Record patterns and type patterns can be nested to enable a powerful, declarative, and composable form of data navigation and processing. This is a preview feature (http://openjdk.java.net/jeps/12) introduced in OpenJDK 19 (JEP 405) Library Features ================ Vector API ========== https://openjdk.org/jeps/338 https://openjdk.org/jeps/414 https://openjdk.org/jeps/417 https://openjdk.org/jeps/426 Introduce an API to express vector computations that reliably compile at runtime to optimal vector hardware instructions on supported CPU architectures and thus achieve superior performance to equivalent scalar computations. This is an incubation feature (https://openjdk.java.net/jeps/11) introduced in OpenJDK 16 (JEP 338). A second round of incubation took place in OpenJDK 17 (JEP 414), OpenJDK 18 (JEP 417) saw a third and OpenJDK 19 sees its fourth (JEP 426). Foreign Function & Memory API ============================= https://openjdk.org/jeps/412 https://openjdk.org/jeps/419 https://openjdk.org/jeps/424 Introduce an API by which Java programs can interoperate with code and data outside of the Java runtime. By efficiently invoking foreign functions (i.e., code outside the JVM), and by safely accessing foreign memory (i.e., memory not managed by the JVM), the API enables Java programs to call native libraries and process native data without the brittleness and danger of JNI. This API is now a preview feature (http://openjdk.java.net/jeps/12). It was first introduced in incubation (https://openjdk.java.net/jeps/11) in OpenJDK 17 (JEP 412), and is an evolution of the Foreign Memory Access API (OpenJDK 14 through 16) and Foreign Linker API (OpenJDK 16) (see release notes for java-17-openjdk). OpenJDK 18 saw a second round of incubation (JEP 419) before its inclusion as a preview in OpenJDK 19 (JEP 424). Virtual Threads =============== https://openjdk.org/jeps/425 Introduce virtual threads to the Java Platform. Virtual threads are lightweight threads that dramatically reduce the effort of writing, maintaining, and observing high-throughput concurrent applications. This is a preview feature (http://openjdk.java.net/jeps/12) introduced in OpenJDK 19 (JEP 425) Structured Concurrency ====================== https://openjdk.org/jeps/428 Simplify multithreaded programming by introducing an API for structured concurrency. Structured concurrency treats multiple tasks running in different threads as a single unit of work, thereby streamlining error handling and cancellation, improving reliability, and enhancing observability. This is an incubation feature (https://openjdk.java.net/jeps/11) introduced in OpenJDK 19 (JEP 428). Ports ===== Linux/RISC-V Port ================= https://openjdk.org/jeps/422 RISC-V is a free and open-source RISC instruction set architecture (ISA) designed originally at the University of California, Berkeley, and now developed collaboratively under the sponsorship of RISC-V International. It is already supported by a wide range of language toolchains. With the increasing availability of RISC-V hardware, a port of the JDK would be valuable.