Hi. Please review changes to address the following closely related bugs:
8160954: (spec) Runtime.Version regex and $PRE/$OPT issues https://bugs.openjdk.java.net/browse/JDK-8160954 8148822: (spec) Regex in Runtime.Version and JEP 223 should match https://bugs.openjdk.java.net/browse/JDK-8148822 8148877: (spec) Specify when and empty '+' is required in a version string https://bugs.openjdk.java.net/browse/JDK-8148877 webrev: http://cr.openjdk.java.net/~iris/verona/8160954/webrev/ Changes to the specification of the $VNUM and $OPT regexp: For line 963, we remove the leading '^' and trailing '$'. These characters are not strictly required for the regex to be accurate. They're not included in the implementation. The presence of the trailing '$' precludes direct substitution of this regex into the definition of $VSTR at line 1032 (see bug 8160954). Also for line 963, we remove the outermost qualifier in the portion of the regex describing elements after $MAJOR. This qualifier is redundant and a source of catastrophic backtracking as described in this message [0, item 1] (see bug 8148822). It's not in the present implementation. For line 1050, we remove the '\' as it is unnecessary in a character class [0, item 4] (see bug 8148822). Changes to the spec for $PRE/$OPT: For lines 1056-1057, we clearly specify when an empty '+' is required (see bugs 8148877, 8160954). This spec corresponds to the code for additional constraints for the "empty '+'" beginning at new line 1150. The required CCC is in progress. Thanks, iris [0] http://mail.openjdk.java.net/pipermail/core-libs-dev/2016-January/038036.html [1] http://download.java.net/java/jdk9/docs/api/java/lang/Runtime.Version.html