Thanks for doing a thorough compat analysis of this Mathias. I can totally
see this being one where all the examples we can find don't seem to cause
breakage in practice. I know it's a lot, but if we looked at 40 random
examples and found none of them to break, that would suggest an upper bound
of <0.001% of pages impacted (probably much lower) and I'd be OK giving
this a shot with a finch killswitch ready in case of reports of serious
breakage. Does that sound reasonable to you?

Also feel free to set your flag
<https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/platform/runtime_enabled_features.json5;l=1912?q=HTMLPatternRegExpUnicodeSets%20file:.json5&ss=chromium>
to status=experimental, that'll get us some additional usage coverage (from
the small population that runs with
--enable-experimental-web-platform-features) and also signal that this is
close to becoming shipping behavior.

Rick

On Mon, Apr 17, 2023 at 7:03 AM 'Mathias Bynens' via blink-dev <
blink-dev@chromium.org> wrote:

> So far, none of the UseCounter hits I investigated constitute any actual
> breakage. The vast majority of hits seem to be login forms backed by
> server-side validation. I’ll keep looking though.
>
> In the meantime, this feature is now
> <https://chromium-review.googlesource.com/c/chromium/src/+/4414859>
> available behind the `--enable-blink-features=HTMLPatternRegExpUnicodeSets`
> flag (disabled by default).
>
> On Wednesday, April 5, 2023 at 5:53:10 PM UTC+2 Mathias Bynens wrote:
>
>> On Wed, Apr 5, 2023 at 5:23 PM Alex Russell <sligh...@chromium.org>
>> wrote:
>>
>>> I don't understand why TAG review is not applicable for this intent.
>>>
>>
>> Fair enough. I’ve filed a TAG review request here:
>> https://github.com/w3ctag/design-reviews/issues/832 I’ll update the
>> ChromeStatus entry to refer to it.
>>
>> On Tuesday, April 4, 2023 at 5:21:16 AM UTC-7 mt...@google.com wrote:
>>>
>> Thanks to the UseCounter + UKM + M112 hitting Stable, more results are
>>>> starting to come in. I’ll be collecting public examples of potential
>>>> incompatibilities here:
>>>> https://bugs.chromium.org/p/chromium/issues/detail?id=1412729#c11 So
>>>> far 0 out of the 2 examples cause any actual breakage — fingers crossed
>>>> that trend continues.
>>>>
>>>> On Mon, Apr 3, 2023 at 10:26 AM Philip Jägenstedt <foo...@chromium.org>
>>>> wrote:
>>>>
>>> I took a look at https://github.com/whatwg/html/pull/7908 and it looks
>>>>> like there's agreement to merge it, but it's waiting on this intent to be
>>>>> approved. Normally we block in the other direction, but that's fine, as
>>>>> long as the spec change is merged.
>>>>>
>>>>> Looks like there's broad support for this change, and it's just a
>>>>> question of the site compat risk. ~0.04% as an upper bound is quite high.
>>>>> Can we wait until the use counter is in stable and look at a random set of
>>>>> sites hitting the use counter to determine what the real-world breakage
>>>>> looks like?
>>>>>
>>>>> On Fri, Mar 31, 2023 at 5:07 PM 'Mathias Bynens' via blink-dev <
>>>>> blin...@chromium.org> wrote:
>>>>>
>>>> On Fri, Mar 31, 2023 at 4:35 PM Mike Taylor <mike...@chromium.org>
>>>>>> wrote:
>>>>>>
>>>>>>> Hey Mathias,
>>>>>>> On 3/31/23 5:56 AM, Mathias Bynens wrote:
>>>>>>>
>>>>>>> Contact emails
>>>>>>>
>>>>>>> mat...@chromium.org
>>>>>>>
>>>>>>> Specification
>>>>>>>
>>>>>>> https://github.com/whatwg/html/pull/7908
>>>>>>>
>>>>>>> Summary
>>>>>>>
>>>>>>> The <input pattern> attribute allows developers to specify a
>>>>>>> regular expression pattern against which the input’s values are checked 
>>>>>>> for
>>>>>>> validity.
>>>>>>>
>>>>>>> <label>
>>>>>>>
>>>>>>>   Part number:
>>>>>>>
>>>>>>>   <input pattern="[0-9][A-Z]{3}" name="part"
>>>>>>>
>>>>>>>          title="A part number is a digit followed by three
>>>>>>> uppercase letters.">
>>>>>>>
>>>>>>> </label>
>>>>>>>
>>>>>>> When the pattern attribute was first implemented, these regular
>>>>>>> expressions were compiled without any RegExp flags. In 2014, the HTML
>>>>>>> Standard changed this by implicitly enabling the u flag for the
>>>>>>> pattern attribute, enabling better Unicode support (including support 
>>>>>>> for
>>>>>>> Unicode character properties like \p{Letter}). This change shipped
>>>>>>> in Chrome 53. <https://chromestatus.com/feature/4753420745441280>
>>>>>>>
>>>>>>> Now, we’re taking this to the next level by enabling the new RegExp
>>>>>>> v flag <https://v8.dev/features/regexp-v-flag> instead of u,
>>>>>>> enabling the use of set notation, string literal syntax, and Unicode
>>>>>>> properties of strings.
>>>>>>>
>>>>>>> (Context: The RegExp v flag is a JavaScript language feature which
>>>>>>> previously went through the Blink Intents process and shipped in
>>>>>>> Chrome 112 <https://chromestatus.com/feature/5144156542861312>.
>>>>>>> This new ChromeStatus entry is specifically about integrating it with 
>>>>>>> the
>>>>>>> HTML pattern attribute.)
>>>>>>>
>>>>>>> Blink component
>>>>>>>
>>>>>>> Blink>Forms
>>>>>>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EForms>
>>>>>>>
>>>>>>> Search tags
>>>>>>>
>>>>>>> unicode <https://chromestatus.com/features#tags:unicode>, regexp
>>>>>>> <https://chromestatus.com/features#tags:regexp>, pattern
>>>>>>> <https://chromestatus.com/features#tags:pattern>, validation
>>>>>>> <https://chromestatus.com/features#tags:validation>
>>>>>>>
>>>>>>> TAG review
>>>>>>> TAG review status
>>>>>>>
>>>>>>> Not applicable
>>>>>>>
>>>>>>> Risks
>>>>>>> Interoperability and Compatibility
>>>>>>>
>>>>>>> The spec patch at https://github.com/whatwg/html/pull/7908 lists
>>>>>>> the potentially breaking changes. Some patterns that previously would
>>>>>>> compile, now throw an early error with the v flag — specifically
>>>>>>> those with a character class including either an unescaped special
>>>>>>> character or a double punctuator.
>>>>>>>
>>>>>>> We expect such patterns to be rare. To validate this assumption
>>>>>>> we’ve added a UseCounter called
>>>>>>> HTMLPatternRegExpUnicodeSetIncompatibilitiesWithUnicodeMode
>>>>>>> <https://chromestatus.com/metrics/feature/popularity#HTMLPatternRegExpUnicodeSetIncompatibilitiesWithUnicodeMode>
>>>>>>> in M112, which tracks patterns in any JavaScript u RegExps
>>>>>>> generated via the HTML pattern attribute that would throw if they
>>>>>>> were used with the v flag.
>>>>>>>
>>>>>>> Importantly, note that any throwing pattern gracefully degrades — it
>>>>>>> simply behaves as if the pattern attribute wasn’t present,
>>>>>>> resulting in inputElement.validity.valid === true for any input
>>>>>>> value. Consequently, the only compatibility risk is that some 
>>>>>>> value/pattern
>>>>>>> combinations that would previously result in
>>>>>>> inputElement.validity.valid being false now result in it being true.
>>>>>>> Thus, for every UseCounter hit, it could still be that there is no
>>>>>>> actual breakage — the UseCounter just gives us the upper bound. The
>>>>>>> currently available data from Beta suggests the UseCounter hits for
>>>>>>> 0.0393% of Chrome page loads.
>>>>>>>
>>>>>>> I'm somewhat curious to see how much that UseCounter will grow (if
>>>>>>> at all) when 112 goes to stable next week...
>>>>>>>
>>>>>> Me too, and FWIW I'd understand if you and the other API owners
>>>>>> prefer to wait until there’s some data for Stable before responding to 
>>>>>> this
>>>>>> Intent.
>>>>>>
>>>>>>> Do you have any concerns about certain inputs being sent to a server
>>>>>>> that might not have any backend validation, that would previously be
>>>>>>> prevented by the u-vintage validation?
>>>>>>>
>>>>>> That’s indeed the only scenario in which there would be breakage. So
>>>>>> far we haven’t heard of such cases in the wild. (Arguably, such web pages
>>>>>> are already broken, since DevTools could easily be used to remove the
>>>>>> `pattern` attribute, or requests could be made with tools like `curl`.)
>>>>>> FWIW, there was a similar discussion in this old blink-dev thread:
>>>>>> https://groups.google.com/a/chromium.org/g/blink-dev/c/XUNMtri0tI4/m/mjPkwXKNAQAJ
>>>>>>
>>>>>> I forgot to mention that we explicitly added a console warning in
>>>>>> M112 for any `pattern` attribute values that would be affected by this
>>>>>> change, to help developers prepare for the potential change. One 
>>>>>> developer
>>>>>> reported seeing the warning and adjusting their `pattern` attribute 
>>>>>> values
>>>>>> accordingly, but it’s unclear whether inaction would have really broken
>>>>>> their web page:
>>>>>> https://bugs.chromium.org/p/chromium/issues/detail?id=1412729#c7
>>>>>>
>>>>>>
>>>>>
>>>>>>> Gecko: Positive (Mozilla standards position request
>>>>>>> <https://github.com/mozilla/standards-positions/issues/745>, 
>>>>>>> implementation
>>>>>>> tracking issue
>>>>>>> <https://bugzilla.mozilla.org/show_bug.cgi?id=pattern-v>)
>>>>>>>
>>>>>>> WebKit: Positive (WebKit standards position request
>>>>>>> <https://github.com/WebKit/standards-positions/issues/132>, 
>>>>>>> implementation
>>>>>>> tracking issue <https://bugs.webkit.org/show_bug.cgi?id=pattern-v>)
>>>>>>>
>>>>>>> Web developers: No signals
>>>>>>>
>>>>>>> Other signals:
>>>>>>>
>>>>>>> Debuggability
>>>>>>>
>>>>>>> The pattern attribute is already well-supported in DevTools and
>>>>>>> other tooling; no changes are necessary.
>>>>>>>
>>>>>>> Will this feature be supported on all six Blink platforms (Windows,
>>>>>>> Mac, Linux, Chrome OS, Android, and Android WebView)?
>>>>>>>
>>>>>>> Yes
>>>>>>>
>>>>>>> Is this feature fully tested by web-platform-tests
>>>>>>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>
>>>>>>> ?
>>>>>>>
>>>>>>> Pull Request: https://github.com/web-platform-tests/wpt/pull/38547
>>>>>>>
>>>>>>> Flag name
>>>>>>>
>>>>>>> N/A
>>>>>>>
>>>>>>> Requires code in //chrome?
>>>>>>>
>>>>>>> False
>>>>>>>
>>>>>>> Tracking bug
>>>>>>>
>>>>>>> https://bugs.chromium.org/p/chromium/issues/detail?id=1412729
>>>>>>>
>>>>>>> Sample links
>>>>>>>
>>>>>>> https://mathiasbynens.be/demo/pattern-u-vs-v
>>>>>>>
>>>>>>> Estimated milestones
>>>>>>>
>>>>>>> M114
>>>>>>>
>>>>>>> Link to entry on the Chrome Platform Status
>>>>>>>
>>>>>>> https://chromestatus.com/feature/5149507107422208
>>>>>>>
>>>>>>> --
>>>>>>> You received this message because you are subscribed to the Google
>>>>>>> Groups "blink-dev" group.
>>>>>>>
>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>> send an email to blink-dev+...@chromium.org.
>>>>>>>
>>>>>>>
>>>>>>> To view this discussion on the web visit
>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CADizRgaAq4FwzJbUqLQVo%2BQdd_V0PT7rBr510OGe8fenHA%3D3HQ%40mail.gmail.com
>>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CADizRgaAq4FwzJbUqLQVo%2BQdd_V0PT7rBr510OGe8fenHA%3D3HQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>>>>> .
>>>>>>>
>>>>>>> --
>>>>>>> You received this message because you are subscribed to the Google
>>>>>>> Groups "blink-dev" group.
>>>>>>>
>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>> send an email to blink-dev+...@chromium.org.
>>>>>>
>>>>>>
>>>>>>> To view this discussion on the web visit
>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/c9571b2a-a35b-3824-0f37-c93a9bb522fc%40chromium.org
>>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/c9571b2a-a35b-3824-0f37-c93a9bb522fc%40chromium.org?utm_medium=email&utm_source=footer>
>>>>>>> .
>>>>>>>
>>>>>> --
>>>>>> You received this message because you are subscribed to the Google
>>>>>> Groups "blink-dev" group.
>>>>>>
>>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>>>> an email to blink-dev+...@chromium.org.
>>>>>
>>>>>
>>>>>> To view this discussion on the web visit
>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CADizRgYxU2v2ANQgzNiLD%2B4P-qJHxzTYJfRDsKNCtY0Yb_0bdg%40mail.gmail.com
>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CADizRgYxU2v2ANQgzNiLD%2B4P-qJHxzTYJfRDsKNCtY0Yb_0bdg%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>>>> .
>>>>>>
>>>>> --
> You received this message because you are subscribed to the Google Groups
> "blink-dev" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to blink-dev+unsubscr...@chromium.org.
> To view this discussion on the web visit
> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/bf73fe5b-fde2-42df-90f0-582a905d1948n%40chromium.org
> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/bf73fe5b-fde2-42df-90f0-582a905d1948n%40chromium.org?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to blink-dev+unsubscr...@chromium.org.
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAFUtAY-FwDRdht7trHyNzbt%3DMVmmaVE0oj4h9Xoe2O4R9Axhhw%40mail.gmail.com.

Reply via email to