Update release notes to 18.0.2 Drop JDK-8282004 patch which is now upstreamed under JDK-8282231 Exclude x86 where java_arches is undefined, in order to unbreak build
362 lines
19 KiB
Plaintext
362 lines
19 KiB
Plaintext
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 18.0.2 (2022-07-19):
|
||
===========================================
|
||
Live versions of these release notes can be found at:
|
||
* https://builds.shipilev.net/backports-monitor/release-notes-18.0.2.txt
|
||
|
||
* Security fixes
|
||
- JDK-8272243: Improve DER parsing
|
||
- JDK-8272249: Better properties of loaded Properties
|
||
- JDK-8277608: Address IP Addressing
|
||
- JDK-8281859, CVE-2022-21540: Improve class compilation
|
||
- JDK-8281866, CVE-2022-21541: Enhance MethodHandle invocations
|
||
- JDK-8282676: Improve subject handling
|
||
- JDK-8283190: Improve MIDI processing
|
||
- JDK-8284370: Improve zlib usage
|
||
- JDK-8285407, CVE-2022-34169: Improve Xalan supports
|
||
* Other changes
|
||
- JDK-8240903: Add test to check that jmod hashes are reproducible
|
||
- JDK-8256368: Avoid repeated upcalls into Java to re-resolve MH/VH linkers/invokers
|
||
- JDK-8270480: Better path to expressing Xpaths
|
||
- JDK-8271008: appcds/*/MethodHandlesAsCollectorTest.java tests time out because of excessive GC (CodeCache GC Threshold) in loom
|
||
- JDK-8271055: Crash during deoptimization with "assert(bb->is_reachable()) failed: getting result from unreachable basicblock" with -XX:+VerifyStack
|
||
- JDK-8272493: Suboptimal code generation around Preconditions.checkIndex intrinsic with AVX2
|
||
- JDK-8274524: SSLSocket.close() hangs if it is called during the ssl handshake
|
||
- JDK-8275337: C1: assert(false) failed: live_in set of first block must be empty
|
||
- JDK-8277055: Assert "missing inlining msg" with -XX:+PrintIntrinsics
|
||
- JDK-8277072: ObjectStreamClass caches keep ClassLoaders alive
|
||
- JDK-8277893: Arraycopy stress tests
|
||
- JDK-8278065: Refactor subclassAudits to use ClassValue
|
||
- JDK-8278381: [GCC 11] Address::make_raw() does not initialize rspec
|
||
- JDK-8278549: UNIX sun/font coding misses SUSE distro detection on recent distro SUSE 15
|
||
- JDK-8278794: Infinite loop in DeflaterOutputStream.finish()
|
||
- JDK-8279219: [REDO] C2 crash when allocating array of size too large
|
||
- JDK-8279668: x86: AVX2 versions of vpxor should be asserted
|
||
- JDK-8279822: CI: Constant pool entries in error state are not supported
|
||
- JDK-8279958: Provide configure hints for Alpine/apk package managers
|
||
- JDK-8280041: Retry loop issues in java.io.ClassCache
|
||
- JDK-8280476: [macOS] : hotspot arm64 bug exposed by latest clang
|
||
- JDK-8280600: C2: assert(!had_error) failed: bad dominance
|
||
- JDK-8280674: Bump version numbers for July CPU
|
||
- JDK-8280799: С2: assert(false) failed: cyclic dependency prevents range check elimination
|
||
- JDK-8280867: Cpuid1Ecx feature parsing is incorrect for AMD CPUs
|
||
- JDK-8280901: MethodHandle::linkToNative stub is missing w/ -Xint
|
||
- JDK-8280956: Re-examine copyright headers on files in src/java.desktop/macosx/native/libawt_lwawt/awt/a11y
|
||
- JDK-8281168: Micro-optimize VarForm.getMemberName for interpreter
|
||
- JDK-8281181: Do not use CPU Shares to compute active processor count
|
||
- JDK-8281266: [JVMCI] MetaUtil.toInternalName() doesn't handle hidden classes correctly
|
||
- JDK-8281274: deal with ActiveProcessorCount in os::Linux::print_container_info
|
||
- JDK-8281318: Improve jfr/event/allocation tests reliability
|
||
- JDK-8281544: assert(VM_Version::supports_avx512bw()) failed for Tests jdk/incubator/vector/
|
||
- JDK-8281615: Deadlock caused by jdwp agent
|
||
- JDK-8281638: jfr/event/allocation tests fail with release VMs after JDK-8281318 due to lack of -XX:+UnlockDiagnosticVMOptions
|
||
- JDK-8281771: Crash in java_lang_invoke_MethodType::print_signature
|
||
- JDK-8281811: assert(_base == Tuple) failed: Not a Tuple after JDK-8280799
|
||
- JDK-8281822: Test failures on non-DTrace builds due to incomplete DTrace* flags handling
|
||
- JDK-8282042: [testbug] FileEncodingTest.java depends on default encoding
|
||
- JDK-8282045: When loop strip mining fails, safepoints are removed from loop anyway
|
||
- JDK-8282080: Lambda deserialization fails for Object method references on interfaces
|
||
- JDK-8282170: JVMTI SetBreakpoint metaspace allocation test
|
||
- JDK-8282172: CompileBroker::log_metaspace_failure is called from non-Java/compiler threads
|
||
- JDK-8282194: C1: Missing side effects of dynamic constant linkage
|
||
- JDK-8282219: jdk/java/lang/ProcessBuilder/Basic.java fails on AIX
|
||
- JDK-8282225: GHA: Allow one concurrent run per PR only
|
||
- JDK-8282231: x86-32: runtime call to SharedRuntime::ldiv corrupts registers
|
||
- JDK-8282295: SymbolPropertyEntry::set_method_type fails with assert
|
||
- JDK-8282300: Throws NamingException instead of InvalidNameException after JDK-8278972
|
||
- JDK-8282312: Minor corrections to evbroadcasti32x4 intrinsic on x86
|
||
- JDK-8282444: Module finder incorrectly assumes default file system path-separator character
|
||
- JDK-8282551: Properly initialize L32X64MixRandom state
|
||
- JDK-8282583: Update BCEL md to include the copyright notice
|
||
- JDK-8282590: C2: assert(addp->is_AddP() && addp->outcnt() > 0) failed: Don't process dead nodes
|
||
- JDK-8282592: C2: assert(false) failed: graph should be schedulable
|
||
- JDK-8282628: Potential memory leak in sun.font.FontConfigManager.getFontConfig()
|
||
- JDK-8282874: Bad performance on gather/scatter API caused by different IntSpecies of indexMap
|
||
- JDK-8282887: Potential memory leak in sun.util.locale.provider.HostLocaleProviderAdapterImpl.getNumberPattern() on Windows
|
||
- JDK-8282929: Localized monetary symbols are not reflected in `toLocalizedPattern` return value
|
||
- JDK-8283017: GHA: Workflows break with update release versions
|
||
- JDK-8283022: com/sun/crypto/provider/Cipher/AEAD/GCMBufferTest.java failing with -Xcomp after 8273297
|
||
- JDK-8283037: Update jdk18u fix version to 18.0.2
|
||
- JDK-8283187: C2: loop candidate for superword not always unrolled fully if superword fails
|
||
- JDK-8283217: Leak FcObjectSet in getFontConfigLocations() in fontpath.c
|
||
- JDK-8283379: Memory leak in FileHeaderHelper
|
||
- JDK-8283408: Fix a C2 crash when filling arrays with unsafe
|
||
- JDK-8283422: Create a new test for JDK-8254790
|
||
- JDK-8283451: C2: assert(_base == Long) failed: Not a Long
|
||
- JDK-8283469: Don't use memset to initialize members in FileMapInfo and fix memory leak
|
||
- JDK-8283555: G1: Concurrent mark accesses uninitialized BOT of closed archive regions
|
||
- JDK-8283641: Large value for CompileThresholdScaling causes assert
|
||
- JDK-8283725: Launching java with "-Xlog:gc*=trace,safepoint*=trace,class*=trace" crashes the JVM
|
||
- JDK-8284012: Correction version-numbers.conf after merge
|
||
- JDK-8284023: java.sun.awt.X11GraphicsDevice.getDoubleBufferVisuals() leaks XdbeScreenVisualInfo
|
||
- JDK-8284033: Leak XVisualInfo in getAllConfigs in awt_GraphicsEnv.c
|
||
- JDK-8284094: Memory leak in invoker_completeInvokeRequest()
|
||
- JDK-8284369: TestFailedAllocationBadGraph fails with -XX:TieredStopAtLevel < 4
|
||
- JDK-8284389: Improve stability of GHA Pre-submit testing by caching cygwin installer
|
||
- JDK-8284458: CodeHeapState::aggregate() leaks blob_name
|
||
- JDK-8284507: GHA: Only check test results if testing was not skipped
|
||
- JDK-8284532: Memory leak in BitSet::BitMapFragmentTable in JFR leak profiler
|
||
- JDK-8284549: JFR: FieldTable leaks FieldInfoTable member
|
||
- JDK-8284620: CodeBuffer may leak _overflow_arena
|
||
- JDK-8284622: Update versions of some Github Actions used in JDK workflow
|
||
- JDK-8284808: change milestone to fcs for releases: jdk-11.0.16, jdk-17.0.4, jdk-18.0.2
|
||
- JDK-8284848: C2: Compiler blackhole arguments should be treated as globally escaping
|
||
- JDK-8284866: Add test to JDK-8273056
|
||
- JDK-8284992: Fix misleading Vector API doc for LSHR operator
|
||
- JDK-8285394: Compiler blackholes can be eliminated due to stale ciMethod::intrinsic_id()
|
||
- JDK-8285515: (dc) DatagramChannel.disconnect fails with "Invalid argument" on macOS 12.4
|
||
- JDK-8285517: System.getenv() returns unexpected value if environment variable has non ASCII character
|
||
- JDK-8285523: Improve test java/io/FileOutputStream/OpenNUL.java
|
||
- JDK-8285686: Upgrade to FreeType 2.12.0
|
||
- JDK-8285828: runtime/execstack/TestCheckJDK.java fails with zipped debug symbols
|
||
- JDK-8285921: serviceability/dcmd/jvmti/AttachFailed/AttachReturnError.java fails on Alpine
|
||
- JDK-8285956: (fs) Excessive default poll interval in PollingWatchService
|
||
- JDK-8286013: Incorrect test configurations for compiler/stable/TestStableShort.java
|
||
- JDK-8286029: Add classpath exemption to globals_vectorApiSupport_***.S.inc
|
||
- JDK-8286198: [linux] Fix process-memory information
|
||
- JDK-8286283: assert(func2 == 0 && func3 == 0) failed: not unary
|
||
- JDK-8286444: javac errors after JDK-8251329 are not helpful enough to find root cause
|
||
- JDK-8286594: (zipfs) Mention paths with dot elements in ZipException and cleanups
|
||
- JDK-8286601: Mac Aarch: Excessive warnings to be ignored for build jdk
|
||
- JDK-8286855: javac error on invalid jar should only print filename
|
||
- JDK-8287119: Add Distrust.java to ProblemList
|
||
- JDK-8287162: (zipfs) Performance regression related to support for POSIX file permissions
|
||
- JDK-8287175: Backout 8270480: Better path to expressing Xpaths
|
||
- JDK-8287202: GHA: Add macOS aarch64 to the list of default platforms for workflow_dispatch event
|
||
- JDK-8287336: GHA: Workflows break on patch versions
|
||
- JDK-8287378: GHA: Update cygwin to fix issues in langtools tests on Windows
|
||
- JDK-8287644: [18u] Backport of JDK-8240903 causes test errors
|
||
|
||
Notes on individual issues:
|
||
===========================
|
||
|
||
hotspot/runtime:
|
||
|
||
JDK-8288367: CPU Shares Ignored When Computing Active Processor Count
|
||
=====================================================================
|
||
Previous JDK releases used an incorrect interpretation of the Linux
|
||
cgroups parameter cpu.shares". This might cause the JVM to use fewer
|
||
CPUs than available, leading to an under utilization of CPU resources
|
||
when the JVM is used inside a container.
|
||
|
||
Starting from this JDK release, by default, the JVM no longer
|
||
considers "cpu.shares" when deciding the number of threads to be used
|
||
by the various thread pools. The `-XX:+UseContainerCpuShares`
|
||
command-line option can be used to revert to the previous
|
||
behavior. This option is deprecated and may be removed in a future JDK
|
||
release.
|
||
|
||
New in release OpenJDK 18.0.1.1 (2022-04-22):
|
||
=============================================
|
||
* Other changes
|
||
- JDK-8283350: (tz) Update Timezone Data to 2022a
|
||
- JDK-8284548: Invalid XPath expression causes StringIndexOutOfBoundsException
|
||
- JDK-8284920: Incorrect Token type causes XPath expression to return incorrect results
|
||
- JDK-8285391: Update the release version for respin April CPU22_04 for release jdk18.0.1.1
|
||
- JDK-8285445: cannot open file "NUL:"
|
||
- JDK-8285454: Update the JBS version for respin of April CPU22_04
|
||
|
||
Notes on individual issues:
|
||
===========================
|
||
|
||
core-libs/java.io:
|
||
|
||
JDK-8285660: New System Property to Disable Windows Alternate Data Stream Support in java.io.File
|
||
=================================================================================================
|
||
The Windows implementation of `java.io.File` allows access to NTFS
|
||
Alternate Data Streams (ADS) by default. Such streams have a structure
|
||
like “filename:streamname”. A system property `jdk.io.File.enableADS`
|
||
has been added to control this behavior. To disable ADS support in
|
||
`java.io.File`, the system property `jdk.io.File.enableADS` should be
|
||
set to `false` (case ignored). Stricter path checking however prevents
|
||
the use of special devices such as `NUL:`
|
||
|
||
New in release OpenJDK 18.0.1 (2022-04-19):
|
||
===========================================
|
||
Live versions of these release notes can be found at:
|
||
* https://builds.shipilev.net/backports-monitor/release-notes-18.0.1.txt
|
||
|
||
* Security fixes
|
||
- JDK-8269938: Enhance XML processing passes redux
|
||
- JDK-8270504, CVE-2022-21426: Better XPath expression handling
|
||
- JDK-8272255: Completely handle MIDI files
|
||
- JDK-8272261: Improve JFR recording file processing
|
||
- JDK-8272588: Enhanced recording parsing
|
||
- JDK-8272594: Better record of recordings
|
||
- JDK-8274221: More definite BER encodings
|
||
- JDK-8275151, CVE-2022-21443: Improved Object Identification
|
||
- JDK-8277227: Better identification of OIDs
|
||
- JDK-8277233, CVE-2022-21449: Improve ECDSA signature support
|
||
- JDK-8277672, CVE-2022-21434: Better invocation handler handling
|
||
- JDK-8278356: Improve file creation
|
||
- JDK-8278449: Improve keychain support
|
||
- JDK-8278798: Improve supported intrinsic
|
||
- JDK-8278805: Enhance BMP image loading
|
||
- JDK-8278972, CVE-2022-21496: Improve URL supports
|
||
- JDK-8281388: Change wrapping of EncryptedPrivateKeyInfo
|
||
* Other changes
|
||
- JDK-8258814: Compilation logging crashes for thread suspension / debugging tests
|
||
- JDK-8267341: macos attempt_reserve_memory_at(arg1, arg2, true) failure
|
||
- JDK-8272996: JNDI DNS provider fails to resolve SRV entries when IPV6 stack is enabled
|
||
- JDK-8273139: C2: assert(f <= 1 && f >= 0) failed: Incorrect frequency
|
||
- JDK-8274751: Drag And Drop hangs on Windows
|
||
- JDK-8276819: javax/print/PrintServiceLookup/FlushCustomClassLoader.java fails to free
|
||
- JDK-8276990: Memory leak in invoker.c fillInvokeRequest() during JDI operations
|
||
- JDK-8277488: Add expiry exception for Digicert (geotrustglobalca) expiring in May 2022
|
||
- JDK-8277795: ldap connection timeout not honoured under contention
|
||
- JDK-8278186: org.jcp.xml.dsig.internal.dom.Utils.parseIdFromSameDocumentURI throws StringIndexOutOfBoundsException when calling substring method
|
||
- JDK-8278384: Bytecodes::result_type() for arraylength returns T_VOID instead of T_INT
|
||
- JDK-8278472: Invalid value set to CANDIDATEFORM structure
|
||
- JDK-8278851: Correct signer logic for jars signed with multiple digestalgs
|
||
- JDK-8278869: Bump version numbers for OPENJDK 18.0.1
|
||
- JDK-8279223: Define version in .jcheck/conf
|
||
- JDK-8279225: [arm32] C1 longs comparison operation destroys argument registers
|
||
- JDK-8279412: [JVMCI] failed speculations list must outlive any nmethod that refers to it
|
||
- JDK-8279437: [JVMCI] exception in HotSpotJVMCIRuntime.translate can exit the VM
|
||
- JDK-8279445: Update JMH devkit to 1.34
|
||
- JDK-8280123: C2: Infinite loop in CMoveINode::Ideal during IGVN
|
||
- JDK-8280414: Memory leak in DefaultProxySelector
|
||
- JDK-8280526: x86_32 Math.sqrt performance regression with -XX:UseSSE={0,1}
|
||
- JDK-8280550: SplittableRandom#nextDouble(double,double) can return result >= bound
|
||
- JDK-8280785: change milestone to fcs for releases: jdk-11.0.15, jdk-17.0.3, jdk-18.0.1
|
||
- JDK-8280910: Update openjdk project in jcheck to "jdk-updates" for jdk18u
|
||
- JDK-8280950: RandomGenerator:NextDouble() default behavior non conformant after JDK-8280550 fix
|
||
- JDK-8281093: Violating Attribute-Value Normalization in the XML specification 1.0
|
||
- JDK-8281183: RandomGenerator:NextDouble() default behavior partially fixed by JDK-8280950
|
||
- JDK-8281262: Windows builds in different directories are not fully reproducible
|
||
- JDK-8281275: Upgrading from 8 to 11 no longer accepts '/' as filepath separator in gc paths
|
||
- JDK-8282300: Throws NamingException instead of InvalidNameException after JDK-8278972
|
||
- JDK-8282397: createTempFile method of java.io.File is failing when called with suffix of spaces character
|
||
|
||
New in release OpenJDK 18.0.0 (2022-03-22):
|
||
===========================================
|
||
Major changes are listed below. Some changes may have been backported
|
||
to earlier releases following their first appearance in OpenJDK 18.
|
||
|
||
The full list of changes in 18u can be found at:
|
||
- * https://builds.shipilev.net/backports-monitor/release-notes-18.txt
|
||
|
||
NEW FEATURES
|
||
============
|
||
|
||
Language Features
|
||
=================
|
||
|
||
Pattern Matching for switch
|
||
===========================
|
||
https://openjdk.org/jeps/406
|
||
https://openjdk.org/jeps/420
|
||
|
||
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 sees a second preview in OpenJDK 18 (JEP
|
||
420).
|
||
|
||
Library Features
|
||
================
|
||
|
||
UTF-8 by Default
|
||
================
|
||
https://openjdk.org/jeps/400
|
||
|
||
Specify UTF-8 as the default charset of the standard Java APIs. With
|
||
this change, APIs that depend upon the default charset will behave
|
||
consistently across all implementations, operating systems, locales,
|
||
and configurations.
|
||
|
||
Reimplement Core Reflection with Method Handles
|
||
===============================================
|
||
https://openjdk.org/jeps/416
|
||
|
||
Reimplement java.lang.reflect.Method, Constructor, and Field on top of
|
||
java.lang.invoke method handles. Making method handles the underlying
|
||
mechanism for reflection will reduce the maintenance and development
|
||
cost of both the java.lang.reflect and java.lang.invoke APIs.
|
||
|
||
Vector API
|
||
==========
|
||
https://openjdk.org/jeps/338
|
||
https://openjdk.org/jeps/414
|
||
https://openjdk.org/jeps/417
|
||
|
||
Provide an initial iteration of an incubator module,
|
||
`jdk.incubator.vector`, 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) and OpenJDK 18 (JEP 417) sees a third.
|
||
|
||
Internet-Address Resolution SPI
|
||
===============================
|
||
https://openjdk.org/jeps/418
|
||
|
||
Define a service-provider interface (SPI) for host name and address
|
||
resolution, so that java.net.InetAddress can make use of resolvers
|
||
other than the platform's built-in resolver.
|
||
|
||
Foreign Function & Memory API
|
||
=============================
|
||
https://openjdk.org/jeps/412
|
||
https://openjdk.org/jeps/419
|
||
|
||
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 an incubation feature (https://openjdk.java.net/jeps/11)
|
||
introduced 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 sees
|
||
a second round of incubation (JEP 419).
|
||
|
||
Tools
|
||
=====
|
||
|
||
Simple Web Server
|
||
=================
|
||
https://openjdk.org/jeps/408
|
||
|
||
Provide a command-line tool, `jwebserver`, to start a minimal web
|
||
server that serves static files only. No CGI or servlet-like
|
||
functionality is available. This tool will be useful for prototyping,
|
||
ad-hoc coding, and testing purposes, particularly in educational
|
||
contexts.
|
||
|
||
Code Snippets in Java API Documentation
|
||
=======================================
|
||
https://openjdk.org/jeps/413
|
||
|
||
Introduce an @snippet tag for JavaDoc's Standard Doclet, to simplify
|
||
the inclusion of example source code in API documentation.
|
||
|
||
DEPRECATIONS
|
||
============
|
||
|
||
Deprecate Finalization for Removal
|
||
==================================
|
||
https://openjdk.org/jeps/421
|
||
|
||
Deprecate finalization for removal in a future release. Finalization
|
||
remains enabled by default for now, but can be disabled to facilitate
|
||
early testing. In a future release it will be disabled by default, and
|
||
in a later release it will be removed. Maintainers of libraries and
|
||
applications that rely upon finalization should consider migrating to
|
||
other resource management techniques such as the try-with-resources
|
||
statement and cleaners.
|