Thanks for the update ! --David
From: Rick Hillegas <rick.hille...@gmail.com> Date: Wednesday, 21 February 2024 at 01:12 To: derby-dev@db.apache.org <derby-dev@db.apache.org>, David Delabassee <david.delabas...@oracle.com> Subject: [External] : Re: JDK 22 Release Candidates & Virtual Threads pinning heads-up Thanks for the heads-up, David. Derby found no problems with this release candidate. See https://urldefense.com/v3/__https://issues.apache.org/jira/browse/DERBY-7159__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZs8iGLOM3$<https://urldefense.com/v3/__https:/issues.apache.org/jira/browse/DERBY-7159__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZs8iGLOM3$> On 2/20/24 12:00 AM, David Delabassee wrote: > Welcome to the latest OpenJDK Quality Outreach update! > > The first JDK 22 Release Candidates builds are now available [1]. At this > stage, only P1 issues will still be evaluated. And with the JDK 22 General > Availability set for March 19th, it is now time to fully focus on JDK 23. At > the time of writing, one JEP has already been integrated in JDK 23, i.e., JEP > 455: 'Primitive Types in Patterns, instanceof, and switch (Preview)' [2]. But > new JEP candidates [3][4] have recently been announced, so things should > evolve rapidly. > > I'd like to thank those of you who have already provided feedback on the JDK > 22 EA builds. Feedback is always extremely useful, even more, when it comes > early in the development cycle. Another area where we need your help is Loom. > So, please make sure to check the heads-up below that discusses the so-called > Virtual Threads "pinning" issue. > > [1] https://openjdk.org/projects/jdk/22/ > [2] https://openjdk.org/jeps/455 > [3] https://openjdk.org/jeps/465 > [4] https://openjdk.org/jeps/466 > > > ## Heads-up: Virtual Threads “Pinning” Issue > > Virtual threads became a permanent feature in JDK 21. This feature has been > extremely well received by the Java ecosystem but there are still a few pain > points. Much has been written about the so-called "pinning" issue that arises > with synchronized methods or synchronized statements. The two most common > cases are (a) a virtual thread parks (ex. doing socket I/O) while in a > synchronized method, and (b) a virtual thread blocks entering a synchronized > method because the object's associated monitor is held by another thread. In > both cases, the underlying carrier/native thread is not "released" to do > other work. Performance and scalability may suffer and in some cases, > starvation and deadlock might happen. This recent "Virtual Threads Next > Steps" video [5] explains in more details the why's and discusses some > potential solutions. > > New Loom early-access builds haven been recently published [6]. Those Loom EA > builds have changes to the object monitor implementation that do not pin for > these two common cases. The Loom team needs your help to test these updated > object monitors with code that you know is using virtual threads and with > libraries that are heavily synchronized. The goal is to gauge both > reliability and performance. > > The simplest way to report an issue or feedback is to use the Loom mailing > list [7]. For the VM savvy, testing with both `-XX:LockingMode=1` (current > default) and `-XX:LockingMode=2` would be extremely helpful as that would > exercise the two locking modes currently implemented by the HotSpot VM. > > [5] > https://urldefense.com/v3/__https://inside.java/2024/02/17/virtual-threads-next-steps/__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZsxUtvLKd$<https://urldefense.com/v3/__https:/inside.java/2024/02/17/virtual-threads-next-steps/__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZsxUtvLKd$> > [6] > https://urldefense.com/v3/__https://jdk.java.net/loom/__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZs2hd_OBY$<https://urldefense.com/v3/__https:/jdk.java.net/loom/__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZs2hd_OBY$> > [7] https://mail.openjdk.org/pipermail/loom-dev/ > > > ## JDK 22 Release Candidates > > The JDK 22 Release Candidate builds (builds 36) are available [8] and are > provided under the GNU General Public License v2, with the Classpath > Exception. The Release Notes are available here [9], and the javadocs here > [10]. > > [8] > https://urldefense.com/v3/__https://jdk.java.net/22/__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZsyPEpb4d$<https://urldefense.com/v3/__https:/jdk.java.net/22/__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZsyPEpb4d$> > [9] > https://urldefense.com/v3/__https://jdk.java.net/22/release-notes__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZs0Gx4DSv$<https://urldefense.com/v3/__https:/jdk.java.net/22/release-notes__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZs0Gx4DSv$> > [10] > https://urldefense.com/v3/__https://download.java.net/java/early_access/jdk22/docs/api/__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZs87ZaVC8$<https://urldefense.com/v3/__https:/download.java.net/java/early_access/jdk22/docs/api/__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZs87ZaVC8$> > > > ## JDK 23 Early-Access Builds > > The JDK 23 Early-Access builds 10 are available [11], and are provided under > the GNU General Public License v2, with the Classpath Exception. The Release > Notes are available here [12]. > > ### Changes in recent JDK 23 builds that may be of interest: > > - JDK-8324287: Record total and free swap space in JFR > - JDK-8275338: Add JFR events for notable serialization situations > - JDK-8324665: Loose matching of space separators in the lenient date/time > parsing mode > - JDK-8324066: "clhsdb jstack" should not by default scan for j.u.c locks > because it can be very slow > - JDK-8323699: MessageFormat.toPattern() generates non-equivalent > MessageFormat pattern > - JDK-8325221: Obsolete TLABStats > - JDK-8322535: Change default AArch64 SpinPause instruction > - JDK-8323746: Add PathElement hashCode and equals > - JDK-8325570: Update to Graphviz 9.0.0 > - JDK-8303866: Allow ZipInputStream.readEnd to parse small Zip64 ZIP files > - JDK-8320458: Improve structural navigation in API documentation > - JDK-8324068: Improve references to tags in the Doc Comment Spec > - JDK-8322366: Add IEEE rounding mode corruption check to JNI checks > - JDK-8321545: Override toString() for Format subclasses > - JDK-8324301: Obsolete MaxGCMinorPauseMillis > - JDK-8324632: Update Zlib Data Compression Library to Version 1.3.1 > - JDK-8324771: Obsolete RAMFraction related flags > - JDK-8323645: Remove unused internal sun.net.www.protocol.jar.URLJarFileCa… > - JDK-8325150: (tz) Update Timezone Data to 2024a > - JDK-8324571: JDK 23 L10n resource files update > > Note: Complete list of changes can be found here [13]. > > [11] > https://urldefense.com/v3/__https://jdk.java.net/23/__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZsz7P4sZq$<https://urldefense.com/v3/__https:/jdk.java.net/23/__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZsz7P4sZq$> > [12] > https://urldefense.com/v3/__https://jdk.java.net/23/release-notes__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZs889WN_e$<https://urldefense.com/v3/__https:/jdk.java.net/23/release-notes__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZs889WN_e$> > [13] > https://urldefense.com/v3/__https://github.com/openjdk/jdk/compare/jdk-23*6...jdk-23*10__;Kys!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZs9345opL$<https://urldefense.com/v3/__https:/github.com/openjdk/jdk/compare/jdk-23*6...jdk-23*10__;Kys!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZs9345opL$> > > > ## JavaFX Early-Access Builds: > > These are early access builds of the JavaFX 22 & 23 Runtime built from > openjdk/jfx [14]. These builds enable JavaFX application developers to build > and test their applications with JavaFX 22 & 23 on JDK 22 & 23 respectively. > Although these builds are designed to work with JDK 22 and above, they are > also known to work with JDK 17 and later versions. > > The latest early access builds of JavaFX 22 Builds 29 are available [15], > under the GNU General Public License, version 2, with the Classpath > Exception. JavaFX 22 API Javadocs [16] are also available. > > The latest early access builds of JavaFX 23 Builds 5 are available [17], > under the GNU General Public License, version 2, with the Classpath > Exception. JavaFX 23 API Javadocs [18] are also available. > > [14] > https://urldefense.com/v3/__https://github.com/openjdk/jfx__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZsznxL5kR$<https://urldefense.com/v3/__https:/github.com/openjdk/jfx__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZsznxL5kR$> > [15] > https://urldefense.com/v3/__https://jdk.java.net/javafx22/__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZs9pfvnua$<https://urldefense.com/v3/__https:/jdk.java.net/javafx22/__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZs9pfvnua$> > [16] > https://urldefense.com/v3/__https://download.java.net/java/early_access/javafx22/docs/api/overview-summary.html__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZs7Sx0OXg$<https://urldefense.com/v3/__https:/download.java.net/java/early_access/javafx22/docs/api/overview-summary.html__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZs7Sx0OXg$> > [17] > https://urldefense.com/v3/__https://jdk.java.net/javafx23/__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZs3AmXB-G$<https://urldefense.com/v3/__https:/jdk.java.net/javafx23/__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZs3AmXB-G$> > [18] > https://urldefense.com/v3/__https://download.java.net/java/early_access/javafx23/docs/api/overview-summary.html__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZsxD_ZyOP$<https://urldefense.com/v3/__https:/download.java.net/java/early_access/javafx23/docs/api/overview-summary.html__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZsxD_ZyOP$> > > > ## Topics of Interest > > - Java Renaissance Keynote > https://urldefense.com/v3/__https://inside.java/2024/02/05/java-renaissance/__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZs80UH2GF$<https://urldefense.com/v3/__https:/inside.java/2024/02/05/java-renaissance/__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZs80UH2GF$> > > - Managing Throughput with Virtual Threads - Sip of Java > https://urldefense.com/v3/__https://inside.java/2024/02/04/sip094/__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZs753sbrZ$<https://urldefense.com/v3/__https:/inside.java/2024/02/04/sip094/__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZs753sbrZ$> > > - Data-Oriented Programming in Java 21 - JEP Café > https://urldefense.com/v3/__https://inside.java/2024/02/08/jepcafe22/__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZsz3_IMOK$<https://urldefense.com/v3/__https:/inside.java/2024/02/08/jepcafe22/__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZsz3_IMOK$> > > - Does Java 22 Kill Build Tools? - Inside Java Newscast > https://urldefense.com/v3/__https://inside.java/2024/02/15/newscast-63/__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZsyA47orz$<https://urldefense.com/v3/__https:/inside.java/2024/02/15/newscast-63/__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZsyA47orz$> > > - JDK 22 G1/Parallel/Serial GC changes > https://urldefense.com/v3/__https://tschatzl.github.io/2024/02/06/jdk22-g1-parallel-gc-changes.html__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZs5iLUbCq$<https://urldefense.com/v3/__https:/tschatzl.github.io/2024/02/06/jdk22-g1-parallel-gc-changes.html__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZs5iLUbCq$> > > - Java 22 Previews Statements Before super(...) and this(...) > https://urldefense.com/v3/__https://inside.java/2024/02/01/newscast-62/__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZsw9r7eHc$<https://urldefense.com/v3/__https:/inside.java/2024/02/01/newscast-62/__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZsw9r7eHc$> > > - State of jextract > https://cr.openjdk.org/~mcimadamore/panama/jextract_changes.html > > - FOSDEM 2024: FFM API - A (quick) peek under the hood > https://urldefense.com/v3/__https://inside.java/2024/02/13/fosdem2024-ffm-api/__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZs4PUhsd3$<https://urldefense.com/v3/__https:/inside.java/2024/02/13/fosdem2024-ffm-api/__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZs4PUhsd3$> > > - FOSDEM 2024: Virtual Threads - Next Steps > https://urldefense.com/v3/__https://inside.java/2024/02/17/virtual-threads-next-steps/__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZsxUtvLKd$<https://urldefense.com/v3/__https:/inside.java/2024/02/17/virtual-threads-next-steps/__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZsxUtvLKd$> > > - Java Language Update - Early 2024 Edition > https://urldefense.com/v3/__https://inside.java/2024/02/18/java-language-update-early-2024-update/__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZs31hXL7S$<https://urldefense.com/v3/__https:/inside.java/2024/02/18/java-language-update-early-2024-update/__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZs31hXL7S$> > > - When Should a Compiler Expand Garbage Collection Barriers? > https://urldefense.com/v3/__https://robcasloz.github.io/blog/2024/02/14/when-should-a-compiler-expand-garbage-collection-barriers.html__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZs6TAc48f$<https://urldefense.com/v3/__https:/robcasloz.github.io/blog/2024/02/14/when-should-a-compiler-expand-garbage-collection-barriers.html__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZs6TAc48f$> > > - Emulating C# LINQ in Java using Code Reflection > https://openjdk.org/projects/babylon/articles/linq > > - Automatic differentiation of Java code using Code Reflection > https://openjdk.org/projects/babylon/articles/auto-diff > > > ## Java Cryptographic Roadmap Update > > The Java Cryptographic Roadmap [19] has been updated with the following > planned changes. > > * Enable XML Signature secure validation mode by default on JDK 11 and JDK 8 > - Target date changed from the July 2024 CPU to the April 2024 CPU. > - This change has already been made in JDK 17 and later releases. > > * Disable DTLS 1.0 in JDK 17 and 11 with the July 2024 CPU > - This change has already been made in JDK 20 and later releases. > - DTLS is not available in releases prior to JDK 9. > > [19] > https://urldefense.com/v3/__https://www.java.com/en/jre-jdk-cryptoroadmap.html__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZsz_h4LWA$<https://urldefense.com/v3/__https:/www.java.com/en/jre-jdk-cryptoroadmap.html__;!!ACWV5N9M2RV99hQ!NiRSpNaVWJPRXz_9xYmBgaBecMh8TpG-Zc-v_cNJfgb6XebXiveBTs8VWTXKaN00KMFmVIyLSbmICoWVD-UZsz_h4LWA$> > > > ~ > > That's it for this installment. As usual, if you have issues, or questions, > please ping me. > > --David >