@@ -7,6 +7,69 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77
88## [ Unreleased]
99
10+ ### New
11+
12+ - Support for the RE2 flavor
13+
14+ - Intersection of character sets. For example, ` [Letter] & [Latin] ` matches a letter that is also in the Latin script.
15+
16+ - Character class prefixes: ` gc: ` (general category), ` sc: ` (script), ` scx: ` (script extension), ` blk: ` (blocks).
17+ For example, ` [scx:Syriac] ` matches all characters with the Syriac script extension.
18+
19+ - Adds support for script extensions (currently supported in PCRE, JavaScript, and Rust)
20+ - If the ` blk: ` prefix is used, ` In ` must be removed; e.g. ` [InPrivate_Use] ` becomes ` [blk:Private_Use] `
21+ - Writing the prefix is optional, except for script extensions
22+
23+ - A ` pomsky test ` subcommand for running unit tests
24+
25+ - Two supported regex engines for testing: ` pcre2 ` and ` rust `
26+ - The ` --test ` argument is now deprecated
27+
28+ - Many optimizations (see below)
29+
30+ ### Changed
31+
32+ - Change hygiene of ` lazy ` and ` unicode ` mode to behave as one would expect.
33+ Going forward, modes depend on the scope where an expression is defined, not where it is used:
34+
35+ ``` pomsky
36+ let foo = 'foo'*; # this repetition is not lazy
37+ (enable lazy; foo)
38+ ```
39+
40+ - Increase the maximum length of group names from 32 to 128 characters.
41+ Group names this long are supported in PCRE2 since version 10.44.
42+
43+ - Produce an error if the contents of a lookbehind assertion are not supported by the regex flavor (Java, Python, PCRE)
44+
45+ - Produce an error if infinite recursion is detected
46+
47+ - Remove the compatibility warning for lookbehind in JavaScript.
48+ Lookbehind is now widely supported in JavaScript engines.
49+
50+ - Allow all supported boolean Unicode properties in the Java flavor
51+
52+ - Deprecate the ` --test ` argument; use ` pomsky test -p <PATH> ` instead
53+
54+ ### Optimizations
55+
56+ - De-duplicate and merge character ranges: ` ['b' 'a'-'f' 'c'-'m'] ` becomes ` [a-m] `
57+
58+ - Note that this doesn't work with Unicode classes, e.g. ` Alphabetic `
59+
60+ - Merge common alternation prefixes: ` 'do' | 'double' | 'down' ` becomes ` do(?:uble|wn)?? `
61+
62+ - This only works with string literals and character sets, for now
63+ - Only adjacent alternatives can be merged to ensure that precedence isn't affected
64+
65+ - Combine single-character alternations into a set: ` 'a' | 'b' | 'c' | 'f' ` becomes ` [a-cf] `
66+
67+ - Merge constant nested repetitions: ` ('a'{3}){4} ` becomes ` a{12} `
68+
69+ ### Bugfixes
70+
71+ - Do not miscompile ` [r] `
72+
1073## [ 0.11.0] - 2023-11-09
1174
1275### New
0 commit comments