We need to look into this now that scoped variables are present. Ralph
> On Mar 28, 2023, at 5:46 AM, David Delabassee <david.delabas...@oracle.com> > wrote: > > Welcome to the latest OpenJDK Quality Outreach update! > > Last week was busy as we released both Java 20 and JavaFX 20. To celebrate > the launch, we hosted a live event focused on Java 20, i.e. Level Up Java > Day. All the sessions recordings will be made available shortly on the > YouTube Java channel. > > Some recent events shown us that it is useful to conduct tests using the > latest early-access OpenJDK builds. This will benefit the OpenJDK codebase > but also your own codebase. Sometime, a failure could be due to an actual > regression introduced in OpenJDK. In that case, we obviously want to hear > about it while we can still address it. But sometime, a failure could also be > due to a subtle behaviour change… that works as expected. Regardless of if > it's a bug or a test that is now broken due to a behaviour change, we want to > hear from you. In the latter case, it might also mean that we should probably > communicate more about those changes even if they might seem subtle. On that > note, please make sure to check all the 2 Heads-Up below: "Support for > Unicode CLDR Version 42" and "New network interface names on Windows". > > So please, let us know if you observe anything using the latest early-access > builds of JDK 21. > > > ## Heads-Up - JDK 20 - Support for Unicode CLDR Version 42 > > The JDK's locale data is based on the Unicode Consortium's Unicode Common > Locale Data Repository (CLDR). As mentioned in the December 2022 Quality > Outreach newsletter [1], JDK 20 upgraded CLDR [2] to version 42 [3], which > was released in October 2022. This version includes a "more sophisticated > handling of spaces" [4] that replaces regular spaces with non-breaking spaces > (NBSP / `\u00A0`) or narrow non-breaking spaces (NNBSP / `\u202F`): > - in time formats between `a` and time > - in unit formats between {0} and unit > - in Cyrillic date formats before year marker such as `г` > > Other noticeable changes include: > * " at " is no longer used for standard date/time format ’ [5] > * fix first day of week info for China (CN) [6] > * Japanese: Support numbers up to 9999京 [7] > > As a consequence, production and test code that produces or parses > locale-dependent strings like formatted dates and times may change behavior > in potentially breaking ways (e.g. when a handcrafted datetime string with a > regular space is parsed, but the parser now expects an NBSP or NNBSP). Issues > can be hard to analyze because expected and actual strings look very similar > or even identical in various text representations. To detect and fix these > issues, make sure to use a text editor that displays different kinds of > spaces differently. > > If the required fixes can't be implemented when upgrading to JDK 20, consider > using the JVM argument `-Djava.locale.providers=COMPAT` to use legacy locale > data. Note that this limits some locale-related functionality and treat it as > a temporary workaround, not a proper solution. Moreover, the `COMPAT` option > will be eventually removed in the future. > > It is also important to keep in mind that this kind of locale data evolves > regularly so programs parsing/composing the locale data by themselves should > be routinely checked with each JDK release. > > [1] > https://mail.openjdk.org/pipermail/quality-discuss/2022-December/001100.html > [2] https://bugs.openjdk.org/browse/JDK-8284840 > [3] https://cldr.unicode.org/index/downloads/cldr-42 > [4] https://unicode-org.atlassian.net/browse/CLDR-14032 > [5] https://unicode-org.atlassian.net/browse/CLDR-14831 > [6] https://unicode-org.atlassian.net/browse/CLDR-11510 > [7] https://unicode-org.atlassian.net/browse/CLDR-15966 > > > ## Heads-Up - JDK 21 - New network interface names on Windows > > Network Names that the JDK assigns to network interfaces on Windows are > changing in JDK 21 [8]. > > The JDK historically synthesized names for network interfaces on Windows. > This has changed to use the names assigned by the Windows operating system. > For example, the JDK may have historically assigned a name such as “eth0” for > an ethernet interface and “lo” for the loopback. The equivalent names that > Windows assigns may be names such as “ethernet_32768” and “loopback_0". > > This change may impact code that does a lookup of network interfaces with the > `NetworkInterace.getByName(String name)` method. It also may also be > surprising to code that enumerates all network interfaces with the > `NetworkInterfaces.networkInterfaces()` or > `NetworkInterface.getNetworkInterfaces()` methods as the names of the network > interfaces will look different to previous releases. Depending on > configuration, it is possible that enumerating all network interfaces will > enumerate network interfaces that weren’t previously enumerated because they > didn’t have an Internet Protocol address assigned. The display name returned > by `NetworkInterface::getDisplayName` has not changed so this should > facilitate the identification of network interfaces when using Windows native > tools. > > [8] https://bugs.openjdk.org/browse/JDK-8303898 > > > ## JDK 20 General Availability > > JDK 20, the reference implementation of Java 20, is now Generally Available > [9]. The GA builds 36 are available [10], and are provided under the GNU > General Public License v2, with the Classpath Exception. The Release Notes > are available here [11] and the javadocs here [12]. > > This release includes 7 JEPs, all in various stages of incubation and preview: > - JEP 429: Scoped Values (Incubator) > - JEP 432: Record Patterns (2nd Preview) > - JEP 433: Pattern Matching for switch (4th Preview) > - JEP 434: Foreign Function & Memory API (2nd Preview) > - JEP 436: Virtual Threads (2nd Preview) > - JEP 437: Structured Concurrency (2nd Incubator) > along with hundreds of smaller enhancements and thousands of bug fixes. > > Thank you to everyone who contributed to this release, including participants > in this program who provided feedback on JDK 20. > > [9] https://mail.openjdk.org/pipermail/jdk-dev/2023-March/007517.html > [10] https://jdk.java.net/20/ > [11] https://jdk.java.net/20/release-notes > [12] https://docs.oracle.com/en/java/javase/20/docs/api/ > > > ## JavaFX 20 General Availability > > Open-source builds of JavaFX 20 are now Generally Available [13], under the > GNU General Public License, version 2, with the Classpath Exception. > The JavaFX runtime is delivered as an SDK and as a set of jmods for each > platform. You can use the SDK to compile and run JavaFX applications. You can > use the jmods with jlink to create a JDK that includes the JavaFX modules, > and optionally, your modular application. JavaFX 20 is designed to work with > JDK 20, but it is known to work with JDK 17 and later versions. > > The Release Notes are available here [14], JavaFX 20 API javadocs are also > available [15]. > > [13] https://jdk.java.net/javafx20/ > [14] https://github.com/openjdk/jfx/blob/jfx20/doc-files/release-notes-20.md > [15] > https://download.java.net/java/GA/javafx20/bdc68b4b9cbc4ebcb30745c85038d91d/docs/api/overview-summary.html > > > ## JDK 21 Early-Access builds > > The latest early-access, i.e., builds 15 are available [16], and are provided > under the GNU General Public License v2, with the Classpath Exception. > The Release Notes are available here [17]. > > [16] https://jdk.java.net/21/ > [17] https://jdk.java.net/21/release-notes > > ### Changes in recent builds that may be of interest: > > JDK 21 build 15 > - JDK-8303018: Unicode Emoji Properties > - JDK-8298469: Obsolete legacy parallel class loading workaround for > non-parallel-capable class loaders > - JDK-8191565: Last-ditch Full GC should also move humongous objects > - JDK-8292818: replace 96-bit representation for field metadata with > variable-sized streams > - JDK-8304303: implement VirtualThread class notifyJvmti methods as C2 > intrinsics > - JDK-8303648: Add String.indexOf(String str, int beginIndex, int endIndex) > - JDK-8304139: Add <init> and <clinit> method constants to ConstantDescs > - JDK-8015831: Add lint check for calling overridable methods from a > constructor > > JDK 21 build 14: > - JDK-8303410: Remove ContentSigner APIs and jarsigner -altsigner and > -altsignerpath options > - JDK-8302659: Modernize Windows native code for NetworkInterface > - JDK-8298966: Deprecate JMX Subject Delegation and the method > JMXConnector.getMBeanServerConnection(Subject) for removal. > - JDK-8294982: Implementation of Classfile API > - JDK-8303820: Simplify type metadata > > JDK 21 build 13: > - JDK-8303413: (fs) Ignore polling interval sensitivity modifiers in > PollingWatchService > - JDK-8303175: (fs) Deprecate com.sun.nio.file.SensitivityWatchEventModifier > for removal > - JDK-8295425: Match the default priv exp length between SunPKCS11 and other > JDK providers > - JDK-8303409: Add Windows AArch64 ABI support to the Foreign Function & > Memory API > - JDK-8302590: Add String.indexOf(int ch, int fromIndex, int toIndex) > > JDK 21 build 12: > - JDK-8301119: Support for GB18030-2022 > - JDK-8026369: javac potentially ambiguous overload warning needs an improved > scheme > - JDK-8293667: Align jlink's --compress option with jmod's --compress option > - JDK-8282319: java.util.Locale method to stream available Locales > > JDK 21 build 11: > - JDK-8302385: Remove MetaspaceReclaimPolicy=none > - JDK-8300575: JVMTI support when using alternative virtual thread > implementation > - JDK-8301992: Embed SymbolTable CHT node > - JDK-8301749: Tracking malloc pooled memory size > > JDK 21 build 10: > - JDK-8301700: Increase the default TLS Diffie-Hellman group size from > 1024-bit to 2048-bit > - JDK-8301260: Add system property to toggle XML Signature secure validation > mode > - JDK-8297632: InputStream.transferTo() method should specify what the return > value should be when the number of bytes … > - JDK-8245654: Add Certigna Root CA > - JDK-8301819: Enable continuations code by default > - JDK-8300914: Allow `@` as an escape in documentation comments > - JDK-8225409: G1: Remove the Hot Card Cache > > > ## JavaFX 21 Early-Access Builds > > These are early access builds of the JavaFX 21 Runtime, built from > openjdk/jfx [18]. It is intended to allow JavaFX application developers to > build and test their applications with JavaFX 21 on JDK 21. > > The latest builds 9 (2023/3/20) are now available [19] and are provided under > the GNU General Public License, version 2, with the Classpath Exception. > Please report feedback on the openjfx-dev mailing list [20]. > > [18] https://github.com/openjdk/jfx > [19] https://jdk.java.net/javafx21/ > [20] http://mail.openjdk.org/mailman/listinfo/openjfx-dev > > > ## New Generational ZGC Early-Access Builds > > The latest builds 21-genzgc+5-33 (2023/3/9) are available [21]. These > open-source binaries of Generational ZGC [22] are based on an incomplete > version of JDK 21 and are provided under the GNU General Public License, > version 2, with the Classpath Exception. > Please send feedback on the zgc-dev mailing list [23]. > > [21] https://jdk.java.net/genzgc/ > [22] https://openjdk.org/jeps/439 > [23] http://mail.openjdk.org/mailman/listinfo/zgc-dev > > > ## Topics of Interest: > > The Arrival of Java 20! > https://inside.java/2023/03/21/the-arrival-of-java-20/ > > Video: Java First. Java Always. | Level Up Keynote > https://inside.java/2023/03/22/levelup-keynote/ > > Video: Java 20 Unboxing - Inside Java Newscast > https://inside.java/2023/03/23/newscast-44/ > > JDK 20 Security Enhancements > https://seanjmullan.org/blog/2023/03/22/jdk20 > > G1/Parallel/Serial GC improvements in JDK 20 > https://tschatzl.github.io/2023/03/14/jdk20-g1-parallel-gc-changes.html > > Podcast: “Preview Features: A Look Back and A Look Ahead” with Alex Buckley > https://inside.java/2023/03/21/podcast-030/ > > Video: Write performant Java code with the Vector API - JEP Café > https://inside.java/2023/03/14/jepcafe18/ > > Video: Data-Oriented Programming in Java > https://inside.java/2023/03/09/data-oriented-programming/ > > Video: ZGC - Java’s Highly Scalable Low-Latency Garbage Collector > https://inside.java/2023/03/05/stackwalker-01/ > > Video: The Holy Grail of Java Performance - Inside Java Newscast > https://inside.java/2023/03/02/newscast-43/ > > Video: Programmer's Guide to JDK Flight Recorder > https://inside.java/2023/02/27/programmer-guide-to-jfr/ > > Video: Foreign Function & Memory API Live > https://inside.java/2023/02/16/ffm-api/ > > JEP targeted to JDK 21: 430: String Templates (Preview) > https://openjdk.org/jeps/430 > > JEP targeted to JDK 21: 431: Sequenced Collections > https://openjdk.org/jeps/431 > > > ~ > > Thanks for participating in the OpenJDK Quality Outreach program. And as > always, if you find an issue, please let us know through the usual channels. > > -- > David >