close
Skip to content

Handle A-labels case-insensitively in the IDNA module - #2762

Merged
jviotti merged 2 commits into
mainfrom
hostname-fixes-2
Aug 19, 2026
Merged

Handle A-labels case-insensitively in the IDNA module#2762
jviotti merged 2 commits into
mainfrom
hostname-fixes-2

Conversation

@jviotti

@jviotti jviotti commented Aug 19, 2026

Copy link
Copy Markdown
Member

Fixes: #2741
Signed-off-by: Juan Cruz Viotti jv@jviotti.com

Review in cubic

@augmentcode

augmentcode Bot commented Aug 19, 2026

Copy link
Copy Markdown
🤖 Augment PR Summary

Summary:
This PR makes A-label recognition and validation case-insensitive, resolving issue #2741.

Changes:

  • Detects the xn-- ACE prefix case-insensitively in hostname validation.
  • Updates the public A-label validator to accept mixed-case prefixes.
  • Lowercases Punycode A-label bodies before decoding and canonical round-trip checks.
  • Removes the previous prefix-only normalization in label classification.
  • Adds the text module as an IDNA implementation dependency for ASCII case helpers.
  • Extends hostname, IDN hostname, email, and IDN email coverage for uppercase A-labels.
  • Adds direct IDNA classification and A-label validation cases for mixed-case input.
  • Retains negative coverage for malformed, ASCII-only, and invalid decoded labels.
Technical notes: The implementation follows RFC 5891 §5.3 by normalizing received A-label case before Punycode decoding while preserving existing IDNA property, contextual, Bidi, length, and canonical-Punycode validation.

🤖 Was this summary useful? React with 👍 or 👎

@augmentcode augmentcode Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review completed. No suggestions at this time.

Comment augment review to trigger a new review at any time.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 9 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="src/core/idna/idna.cc">

<violation number="1" location="src/core/idna/idna.cc:434">
P3: The new case-insensitive A-label behavior contradicts the public `idna_is_valid_a_label` documentation, so users may rely on the old rejection semantics or misuse this validator. Update the API comments to describe case-insensitive prefix/body handling and the revised validation purpose.</violation>
</file>

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread src/core/idna/idna.cc
// "xn--", interpreted case-insensitively
constexpr std::string_view PREFIX{"xn--"};
if (!label.starts_with(PREFIX)) {
if (!starts_with_ignore_case(label, PREFIX)) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3: The new case-insensitive A-label behavior contradicts the public idna_is_valid_a_label documentation, so users may rely on the old rejection semantics or misuse this validator. Update the API comments to describe case-insensitive prefix/body handling and the revised validation purpose.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At src/core/idna/idna.cc, line 434:

<comment>The new case-insensitive A-label behavior contradicts the public `idna_is_valid_a_label` documentation, so users may rely on the old rejection semantics or misuse this validator. Update the API comments to describe case-insensitive prefix/body handling and the revised validation purpose.</comment>

<file context>
@@ -418,8 +428,10 @@ auto idna_passes_bidi_rule(const std::u32string_view label) noexcept -> bool {
+  // "xn--", interpreted case-insensitively
   constexpr std::string_view PREFIX{"xn--"};
-  if (!label.starts_with(PREFIX)) {
+  if (!starts_with_ignore_case(label, PREFIX)) {
     return false;
   }
</file context>

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (macos/llvm)

Details
Benchmark suite Current: a78314b Previous: 18745f9 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.251974970550117 ns/iter 1.8909568539478596 ns/iter 1.19
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.7335133505614833 ns/iter 1.8929957026439583 ns/iter 1.44
Regex_Period_Asterisk 2.6098892939621647 ns/iter 2.121103581456034 ns/iter 1.23
Regex_Group_Period_Asterisk_Group 2.963203068409811 ns/iter 2.0937481016902617 ns/iter 1.42
Regex_Period_Plus 2.9585454431471088 ns/iter 2.8032535815977586 ns/iter 1.06
Regex_Period 2.882707397918621 ns/iter 2.7901984948595153 ns/iter 1.03
Regex_Caret_Period_Plus_Dollar 3.0413104304871754 ns/iter 2.290997756643229 ns/iter 1.33
Regex_Caret_Group_Period_Plus_Group_Dollar 2.922907030219449 ns/iter 2.290974005830132 ns/iter 1.28
Regex_Caret_Period_Asterisk_Dollar 2.5399154453744246 ns/iter 1.7161356305210278 ns/iter 1.48
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.201353907683089 ns/iter 1.8347451066614855 ns/iter 1.20
Regex_Caret_X_Hyphen 8.45787884736989 ns/iter 6.285265273185 ns/iter 1.35
Regex_Period_Md_Dollar 28.953502401510114 ns/iter 18.66341592390282 ns/iter 1.55
Regex_Caret_Slash_Period_Asterisk 6.385593685450638 ns/iter 5.024791250000362 ns/iter 1.27
Regex_Caret_Period_Range_Dollar 2.8681484985853394 ns/iter 2.21993168358975 ns/iter 1.29
Regex_Nested_Backtrack 43.783654224726575 ns/iter 28.10900544355558 ns/iter 1.56
JSON_Array_Of_Objects_Unique 684.6499402673174 ns/iter 402.38251962753145 ns/iter 1.70
JSON_Parse_1 6083.285858629715 ns/iter 3351.090074024794 ns/iter 1.82
JSON_Parse_Real 8165.518585570514 ns/iter 6087.013159822721 ns/iter 1.34
JSON_Parse_Decimal 7441.474370513347 ns/iter 7023.752643090714 ns/iter 1.06
JSON_Parse_Schema_ISO_Language 3126050.675675558 ns/iter 2694315.125984214 ns/iter 1.16
JSON_Parse_Integer 5303.257368302325 ns/iter 4240.9022177421375 ns/iter 1.25
JSON_Parse_String_NonSSO_Plain 4798.787118479786 ns/iter 3641.787285766044 ns/iter 1.32
JSON_Parse_String_SSO_Plain 2623.9701470402483 ns/iter 2013.5396957068558 ns/iter 1.30
JSON_Parse_String_Escape_Heavy 22282.67200272421 ns/iter 23493.059866825814 ns/iter 0.95
JSON_Parse_Object_Short_Keys 7547.1464420637185 ns/iter 7753.3925289552835 ns/iter 0.97
JSON_Parse_Object_Scalar_Properties 4002.203616645222 ns/iter 4156.209879101807 ns/iter 0.96
JSON_Parse_Object_Array_Properties 5735.860146020407 ns/iter 6076.669536533713 ns/iter 0.94
JSON_Parse_Object_Object_Properties 4827.980873460643 ns/iter 5745.539009905497 ns/iter 0.84
JSON_Parse_Nested_Containers 37915.67838418462 ns/iter 46058.0492205163 ns/iter 0.82
JSON_From_String_Copy 15.344359713108885 ns/iter 19.54946234188904 ns/iter 0.78
JSON_From_String_Temporary 9.278143561404748 ns/iter 10.362344981477767 ns/iter 0.90
JSON_Number_To_Double 44.07393406618778 ns/iter 49.8795655283278 ns/iter 0.88
JSON_Object_At_Last_Key/8 5.728074170000354 ns/iter 5.2849144591461785 ns/iter 1.08
JSON_Object_At_Last_Key/32 17.80859345369862 ns/iter 16.70894984125618 ns/iter 1.07
JSON_Object_At_Last_Key/128 75.30207534694658 ns/iter 87.24948706320912 ns/iter 0.86
JSON_Object_At_Last_Key/512 288.11608881199186 ns/iter 250.61930118711658 ns/iter 1.15
JSON_Fast_Hash_Helm_Chart_Lock 77.8240425983453 ns/iter 77.33492947648149 ns/iter 1.01
JSON_Equality_Helm_Chart_Lock 231.38799035164934 ns/iter 244.712994219622 ns/iter 0.95
JSON_Divisible_By_Decimal 251.17378498798868 ns/iter 263.11246021951183 ns/iter 0.95
JSON_String_Equal/10 8.545867003171958 ns/iter 9.31174606406114 ns/iter 0.92
JSON_String_Equal/100 9.158634448912606 ns/iter 9.41909632541854 ns/iter 0.97
JSON_String_Equal_Small_By_Perfect_Hash/10 0.4390313517846911 ns/iter 0.4190939223244202 ns/iter 1.05
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 5.199073750000025 ns/iter 4.15079126685452 ns/iter 1.25
JSON_String_Fast_Hash/10 3.168741735641529 ns/iter 3.2764733029936735 ns/iter 0.97
JSON_String_Fast_Hash/100 2.7053635344769433 ns/iter 3.0051839328772663 ns/iter 0.90
JSON_String_Key_Hash/10 2.1906001643590094 ns/iter 2.0670886191103666 ns/iter 1.06
JSON_String_Key_Hash/100 3.2307617429480926 ns/iter 2.9116242902186062 ns/iter 1.11
JSON_Object_Defines_Miss_Same_Length 3.6350040378991872 ns/iter 3.2519444588483846 ns/iter 1.12
JSON_Object_Defines_Miss_Too_Small 3.5258175631593844 ns/iter 3.1096765930034804 ns/iter 1.13
JSON_Object_Defines_Miss_Too_Large 3.5337424983532633 ns/iter 3.0085593036676817 ns/iter 1.17
Pointer_Object_Traverse 26.91425063141411 ns/iter 26.258999676167907 ns/iter 1.02
Pointer_Object_Try_Traverse 45.176687428389506 ns/iter 33.73104966542171 ns/iter 1.34
Pointer_Push_Back_Pointer_To_Weak_Pointer 171.43074904542718 ns/iter 151.3741378301843 ns/iter 1.13
Pointer_Walker_Schema_ISO_Language 1675040.558510884 ns/iter 1212050.110132118 ns/iter 1.38
Pointer_Maybe_Tracked_Deeply_Nested/0 1099891.9670658007 ns/iter 831677.1653544932 ns/iter 1.32
Pointer_Maybe_Tracked_Deeply_Nested/1 1554224.5835776292 ns/iter 1337718.1991644392 ns/iter 1.16
Pointer_Position_Tracker_Get_Deeply_Nested 438.47350823780084 ns/iter 360.38863583283484 ns/iter 1.22
JSONPath_Descendant_Filter_Nested 1499.300974008739 ns/iter 1215.1743702514943 ns/iter 1.23
URITemplateRouter_Create 23384.531136307665 ns/iter 19803.396970872665 ns/iter 1.18
URITemplateRouter_Match 221.41101084853466 ns/iter 182.73881015369685 ns/iter 1.21
URITemplateRouter_Match_BasePath 273.6606317970312 ns/iter 209.49230613986342 ns/iter 1.31
URITemplateRouterView_Restore 15984.711531966874 ns/iter 12343.30784377362 ns/iter 1.30
URITemplateRouterView_Match 211.86158083639583 ns/iter 161.15421826526642 ns/iter 1.31
URITemplateRouterView_Match_BasePath 238.96767483208077 ns/iter 167.32312742439268 ns/iter 1.43
URITemplateRouterView_Arguments 730.646110012369 ns/iter 564.9687466360625 ns/iter 1.29
JSONL_Parse_Large 8574632.773334088 ns/iter 6890725.215518206 ns/iter 1.24
JSONL_Parse_Large_GZIP 10277512.94594583 ns/iter 8780694.117646871 ns/iter 1.17
JSONLD_Catalog_Annotation_List_Populate 717236.5236523771 ns/iter 549025.6597761179 ns/iter 1.31
JSONLD_Catalog_Materialize 3820828.99547519 ns/iter 2710807.7415735177 ns/iter 1.41
HTML_Build_Table_100000 60394295.16667383 ns/iter 39917214.28571639 ns/iter 1.51
HTML_Render_Table_100000 2727925.596428804 ns/iter 1980361.70074846 ns/iter 1.38
GZIP_Compress_ISO_Language_Set_3_Locations 35688966.65000238 ns/iter 32947950.772722837 ns/iter 1.08
GZIP_Decompress_ISO_Language_Set_3_Locations 4725748.97541011 ns/iter 3740718.870588299 ns/iter 1.26
GZIP_Compress_ISO_Language_Set_3_Schema 2089704.6491711221 ns/iter 1623799.3962261113 ns/iter 1.29
GZIP_Decompress_ISO_Language_Set_3_Schema 364332.12608036434 ns/iter 280072.70512820524 ns/iter 1.30
JOSE_VerifySignature_RS256 30475.979772437484 ns/iter 22525.437443916016 ns/iter 1.35
JOSE_VerifySignature_ES512 1344478.5448155736 ns/iter 1007493.7524751775 ns/iter 1.33

This comment was automatically generated by workflow using github-action-benchmark.

Fixes: #2741
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (windows/msvc)

Details
Benchmark suite Current: a78314b Previous: 18745f9 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 5.084170000000086 ns/iter 4.054339843750603 ns/iter 1.25
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 5.043817857143092 ns/iter 3.8428191964293545 ns/iter 1.31
Regex_Period_Asterisk 5.032753000000412 ns/iter 3.8462008859889876 ns/iter 1.31
Regex_Group_Period_Asterisk_Group 5.0506039999999075 ns/iter 3.9779426714683037 ns/iter 1.27
Regex_Period_Plus 4.905703000000017 ns/iter 3.571132472098524 ns/iter 1.37
Regex_Period 4.990037999999686 ns/iter 3.6101369809656116 ns/iter 1.38
Regex_Caret_Period_Plus_Dollar 4.772625068029816 ns/iter 3.5743391238794193 ns/iter 1.34
Regex_Caret_Group_Period_Plus_Group_Dollar 4.924601184134967 ns/iter 3.6082921810569095 ns/iter 1.36
Regex_Caret_Period_Asterisk_Dollar 5.141601785713894 ns/iter 3.9396149553575355 ns/iter 1.31
Regex_Caret_Group_Period_Asterisk_Group_Dollar 5.014519867191 ns/iter 3.87963963592969 ns/iter 1.29
Regex_Caret_X_Hyphen 8.37483612332673 ns/iter 6.08830624999866 ns/iter 1.38
Regex_Period_Md_Dollar 44.68039669928187 ns/iter 49.03813999999329 ns/iter 0.91
Regex_Caret_Slash_Period_Asterisk 8.07586160714318 ns/iter 5.809700892858213 ns/iter 1.39
Regex_Caret_Period_Range_Dollar 5.723744642856791 ns/iter 4.227388757548008 ns/iter 1.35
Regex_Nested_Backtrack 58.74958035714124 ns/iter 67.92379464284538 ns/iter 0.86
JSON_Array_Of_Objects_Unique 625.7490178571499 ns/iter 491.0991924083511 ns/iter 1.27
JSON_Parse_1 9593.659849732583 ns/iter 8196.596890191639 ns/iter 1.17
JSON_Parse_Real 16094.92633928638 ns/iter 13172.732142858682 ns/iter 1.22
JSON_Parse_Decimal 11916.805357142632 ns/iter 8731.647321429393 ns/iter 1.36
JSON_Parse_Schema_ISO_Language 8224104.444443963 ns/iter 6987446.666668499 ns/iter 1.18
JSON_Parse_Integer 6374.27321428571 ns/iter 4987.66160714175 ns/iter 1.28
JSON_Parse_String_NonSSO_Plain 8511.193080357036 ns/iter 6484.885714286293 ns/iter 1.31
JSON_Parse_String_SSO_Plain 3965.9492187500105 ns/iter 3224.9901785712204 ns/iter 1.23
JSON_Parse_String_Escape_Heavy 22445.965624999786 ns/iter 17673.486876027197 ns/iter 1.27
JSON_Parse_Object_Short_Keys 13161.903571428418 ns/iter 12292.344642856637 ns/iter 1.07
JSON_Parse_Object_Scalar_Properties 6859.131249999707 ns/iter 6204.586607144132 ns/iter 1.11
JSON_Parse_Object_Array_Properties 12140.451785714593 ns/iter 10186.48593750271 ns/iter 1.19
JSON_Parse_Object_Object_Properties 12160.442857143446 ns/iter 9710.582812498813 ns/iter 1.25
JSON_Parse_Nested_Containers 83083.25967590643 ns/iter 69957.46651785595 ns/iter 1.19
JSON_From_String_Copy 64.47749999999785 ns/iter 53.191330357143286 ns/iter 1.21
JSON_From_String_Temporary 60.28725000000179 ns/iter 64.28416964287261 ns/iter 0.94
JSON_Number_To_Double 121.70096428571397 ns/iter 103.78476562500794 ns/iter 1.17
JSON_Object_At_Last_Key/8 7.659021205357647 ns/iter 6.044524999999063 ns/iter 1.27
JSON_Object_At_Last_Key/32 23.38803750000018 ns/iter 19.339899279819356 ns/iter 1.21
JSON_Object_At_Last_Key/128 90.10958972724514 ns/iter 88.8792187499884 ns/iter 1.01
JSON_Object_At_Last_Key/512 430.95056287175197 ns/iter 333.6291056019566 ns/iter 1.29
JSON_Fast_Hash_Helm_Chart_Lock 105.92028571428459 ns/iter 93.38939315223935 ns/iter 1.13
JSON_Equality_Helm_Chart_Lock 208.79531249999414 ns/iter 160.1442857142794 ns/iter 1.30
JSON_Divisible_By_Decimal 309.3954989513939 ns/iter 302.75084821432023 ns/iter 1.02
JSON_String_Equal/10 10.510995488789733 ns/iter 7.698217633928449 ns/iter 1.37
JSON_String_Equal/100 11.719343749999389 ns/iter 8.789795050045079 ns/iter 1.33
JSON_String_Equal_Small_By_Perfect_Hash/10 2.5106778571428987 ns/iter 1.667361340402473 ns/iter 1.51
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 14.301562436154024 ns/iter 10.629482812500868 ns/iter 1.35
JSON_String_Fast_Hash/10 6.647786607143047 ns/iter 5.104381999999532 ns/iter 1.30
JSON_String_Fast_Hash/100 6.600992857143138 ns/iter 5.185983000001215 ns/iter 1.27
JSON_String_Key_Hash/10 5.348182999999835 ns/iter 3.8780597098205964 ns/iter 1.38
JSON_String_Key_Hash/100 11.886635714285529 ns/iter 8.605625000000268 ns/iter 1.38
JSON_Object_Defines_Miss_Same_Length 4.722373929625802 ns/iter 3.63459963717767 ns/iter 1.30
JSON_Object_Defines_Miss_Too_Small 4.7231303676854335 ns/iter 3.61452142211684 ns/iter 1.31
JSON_Object_Defines_Miss_Too_Large 4.711226796230123 ns/iter 3.574455150664776 ns/iter 1.32
Pointer_Object_Traverse 68.89137499999975 ns/iter 51.88467000000401 ns/iter 1.33
Pointer_Object_Try_Traverse 71.0686718750012 ns/iter 52.481729999999516 ns/iter 1.35
Pointer_Push_Back_Pointer_To_Weak_Pointer 190.89684740151245 ns/iter 129.89787499999954 ns/iter 1.47
Pointer_Walker_Schema_ISO_Language 11499282.666666204 ns/iter 9330293.333335552 ns/iter 1.23
Pointer_Maybe_Tracked_Deeply_Nested/0 2466919.6787148356 ns/iter 1889071.0144930473 ns/iter 1.31
Pointer_Maybe_Tracked_Deeply_Nested/1 3705882.051282025 ns/iter 2838038.1526107793 ns/iter 1.31
Pointer_Position_Tracker_Get_Deeply_Nested 543.8799411521833 ns/iter 424.0351004463706 ns/iter 1.28
JSONPath_Descendant_Filter_Nested 2371.489987176349 ns/iter 2020.3097502764876 ns/iter 1.17
URITemplateRouter_Create 41104.06244559272 ns/iter 30476.74625726032 ns/iter 1.35
URITemplateRouter_Match 232.77235125309335 ns/iter 169.81354262144967 ns/iter 1.37
URITemplateRouter_Match_BasePath 269.65192498445776 ns/iter 190.72038309998246 ns/iter 1.41
URITemplateRouterView_Restore 34196.84375000033 ns/iter 20129.469905985363 ns/iter 1.70
URITemplateRouterView_Match 183.9519539242776 ns/iter 132.95460714285161 ns/iter 1.38
URITemplateRouterView_Match_BasePath 208.17940625001083 ns/iter 151.22587396601708 ns/iter 1.38
URITemplateRouterView_Arguments 546.7808035714228 ns/iter 475.1858789435933 ns/iter 1.15
JSONL_Parse_Large 33196789.4736845 ns/iter 25629330.769229107 ns/iter 1.30
JSONL_Parse_Large_GZIP 33899180.95238153 ns/iter 26089061.53846664 ns/iter 1.30
JSONLD_Catalog_Annotation_List_Populate 3188974.1784038534 ns/iter 2625058.3333338993 ns/iter 1.21
JSONLD_Catalog_Materialize 9804608.888889434 ns/iter 6605002.678572955 ns/iter 1.48
HTML_Build_Table_100000 93758028.57143104 ns/iter 73892477.77776593 ns/iter 1.27
HTML_Render_Table_100000 8187084.444444458 ns/iter 6571368.888888981 ns/iter 1.25
GZIP_Compress_ISO_Language_Set_3_Locations 43676677.77778037 ns/iter 28426855.999996405 ns/iter 1.54
GZIP_Decompress_ISO_Language_Set_3_Locations 10249700.00000015 ns/iter 7151307.142858545 ns/iter 1.43
GZIP_Compress_ISO_Language_Set_3_Schema 2203191.249999925 ns/iter 1717366.9642858158 ns/iter 1.28
GZIP_Decompress_ISO_Language_Set_3_Schema 653254.6999999909 ns/iter 420407.89632307127 ns/iter 1.55
JOSE_VerifySignature_RS256 21397.092449654094 ns/iter 18389.454370128195 ns/iter 1.16
JOSE_VerifySignature_ES512 1394033.0357143134 ns/iter 1202460.4687500328 ns/iter 1.16

This comment was automatically generated by workflow using github-action-benchmark.

@jviotti
jviotti merged commit 5efd36b into main Aug 19, 2026
13 checks passed
@jviotti
jviotti deleted the hostname-fixes-2 branch August 19, 2026 17:53

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (linux/llvm)

Details
Benchmark suite Current: a78314b Previous: 9ba55aa Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 1.9210745714364743 ns/iter 2.201476736237156 ns/iter 0.87
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.912915484209792 ns/iter 2.1792334500584483 ns/iter 0.88
Regex_Period_Asterisk 1.9100395116305748 ns/iter 2.1861609692676933 ns/iter 0.87
Regex_Group_Period_Asterisk_Group 1.908790039730976 ns/iter 2.181396901866417 ns/iter 0.88
Regex_Period_Plus 3.03112839118412 ns/iter 2.8035894906118632 ns/iter 1.08
Regex_Period 3.012578353522166 ns/iter 2.804435082616266 ns/iter 1.07
Regex_Caret_Period_Plus_Dollar 2.9988400090570426 ns/iter 2.803631780275002 ns/iter 1.07
Regex_Caret_Group_Period_Plus_Group_Dollar 3.01069718840994 ns/iter 2.8045521560206623 ns/iter 1.07
Regex_Caret_Period_Asterisk_Dollar 1.911392239384062 ns/iter 3.4318020676951932 ns/iter 0.56
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.9100211470355348 ns/iter 3.424354462619152 ns/iter 0.56
Regex_Caret_X_Hyphen 4.24246199652567 ns/iter 7.166530293130413 ns/iter 0.59
Regex_Period_Md_Dollar 20.668039392237194 ns/iter 27.584628872080344 ns/iter 0.75
Regex_Caret_Slash_Period_Asterisk 5.181002421934494 ns/iter 5.603889136547636 ns/iter 0.92
Regex_Caret_Period_Range_Dollar 1.9101000421514593 ns/iter 3.423818472743306 ns/iter 0.56
Regex_Nested_Backtrack 30.525414794155576 ns/iter 40.71244697842946 ns/iter 0.75
JSON_Array_Of_Objects_Unique 366.20228253495054 ns/iter 430.576750556034 ns/iter 0.85
JSON_Parse_1 3436.8799664854855 ns/iter 4799.668366940876 ns/iter 0.72
JSON_Parse_Real 3988.3640167600292 ns/iter 5168.103809756494 ns/iter 0.77
JSON_Parse_Decimal 5751.829352322096 ns/iter 7655.737390771504 ns/iter 0.75
JSON_Parse_Schema_ISO_Language 2707072.813229657 ns/iter 3340441.6761901043 ns/iter 0.81
JSON_Parse_Integer 2979.166425427378 ns/iter 3728.562746537056 ns/iter 0.80
JSON_Parse_String_NonSSO_Plain 2486.272686238331 ns/iter 3057.681927254052 ns/iter 0.81
JSON_Parse_String_SSO_Plain 2232.2049372904567 ns/iter 2716.2309657859028 ns/iter 0.82
JSON_Parse_String_Escape_Heavy 9384.104496788623 ns/iter 12372.527805703963 ns/iter 0.76
JSON_Parse_Object_Short_Keys 6220.398429333768 ns/iter 8227.509313333243 ns/iter 0.76
JSON_Parse_Object_Scalar_Properties 3162.432260772912 ns/iter 4182.248507948182 ns/iter 0.76
JSON_Parse_Object_Array_Properties 4234.1971567866285 ns/iter 5694.557830465579 ns/iter 0.74
JSON_Parse_Object_Object_Properties 4178.031310840109 ns/iter 5407.529182281788 ns/iter 0.77
JSON_Parse_Nested_Containers 27292.057266846903 ns/iter 35423.56770991399 ns/iter 0.77
JSON_From_String_Copy 9.140372864826887 ns/iter 11.645403128522778 ns/iter 0.78
JSON_From_String_Temporary 7.817926064103084 ns/iter 10.545545146920322 ns/iter 0.74
JSON_Number_To_Double 17.71319173779599 ns/iter 23.886087809481538 ns/iter 0.74
JSON_Object_At_Last_Key/8 3.102132576540991 ns/iter 6.009263295464423 ns/iter 0.52
JSON_Object_At_Last_Key/32 10.153722827066161 ns/iter 21.5453254652663 ns/iter 0.47
JSON_Object_At_Last_Key/128 36.31416126894585 ns/iter 87.96095469658988 ns/iter 0.41
JSON_Object_At_Last_Key/512 273.0066057144024 ns/iter 396.93487751340973 ns/iter 0.69
JSON_Fast_Hash_Helm_Chart_Lock 51.35060029745171 ns/iter 68.43405704984971 ns/iter 0.75
JSON_Equality_Helm_Chart_Lock 126.62272431821965 ns/iter 168.365253619315 ns/iter 0.75
JSON_Divisible_By_Decimal 195.39162587499496 ns/iter 246.9143056593371 ns/iter 0.79
JSON_String_Equal/10 4.361810419307418 ns/iter 5.923244793683606 ns/iter 0.74
JSON_String_Equal/100 5.18314634486402 ns/iter 6.567234989940216 ns/iter 0.79
JSON_String_Equal_Small_By_Perfect_Hash/10 0.8177779883214643 ns/iter 0.935866373516529 ns/iter 0.87
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 9.568355286504643 ns/iter 14.631779106728201 ns/iter 0.65
JSON_String_Fast_Hash/10 1.640095169527737 ns/iter 2.4886464690152295 ns/iter 0.66
JSON_String_Fast_Hash/100 1.6367321931635377 ns/iter 2.4939667339679956 ns/iter 0.66
JSON_String_Key_Hash/10 1.9088405810198332 ns/iter 2.664006493607368 ns/iter 0.72
JSON_String_Key_Hash/100 5.99603050553156 ns/iter 9.026624886032138 ns/iter 0.66
JSON_Object_Defines_Miss_Same_Length 3.290098460687996 ns/iter 2.7979921093704916 ns/iter 1.18
JSON_Object_Defines_Miss_Too_Small 2.486729585373716 ns/iter 2.7485920676267854 ns/iter 0.90
JSON_Object_Defines_Miss_Too_Large 2.2885939699887787 ns/iter 3.108625646780381 ns/iter 0.74
Pointer_Object_Traverse 23.72044949443661 ns/iter 29.498679480754337 ns/iter 0.80
Pointer_Object_Try_Traverse 25.35739257109845 ns/iter 30.250554748787277 ns/iter 0.84
Pointer_Push_Back_Pointer_To_Weak_Pointer 110.83092432084875 ns/iter 174.27387654438024 ns/iter 0.64
Pointer_Walker_Schema_ISO_Language 1271688.2084094994 ns/iter 1620405.3435293483 ns/iter 0.78
Pointer_Maybe_Tracked_Deeply_Nested/0 986671.3041018875 ns/iter 1219186.4130053753 ns/iter 0.81
Pointer_Maybe_Tracked_Deeply_Nested/1 1678583.0072115334 ns/iter 1655849.0562060934 ns/iter 1.01
Pointer_Position_Tracker_Get_Deeply_Nested 544.5318495785169 ns/iter 634.7307164788411 ns/iter 0.86
JSONPath_Descendant_Filter_Nested 1211.5623585825654 ns/iter 1538.733957163287 ns/iter 0.79
URITemplateRouter_Create 17090.774971767605 ns/iter 23127.394199889757 ns/iter 0.74
URITemplateRouter_Match 131.48106762825685 ns/iter 174.86813650526045 ns/iter 0.75
URITemplateRouter_Match_BasePath 158.77143555782766 ns/iter 205.2990117726736 ns/iter 0.77
URITemplateRouterView_Restore 7894.9352321461165 ns/iter 8499.753263613933 ns/iter 0.93
URITemplateRouterView_Match 107.65065606109086 ns/iter 147.06510255813797 ns/iter 0.73
URITemplateRouterView_Match_BasePath 125.35679725068677 ns/iter 163.94712319486 ns/iter 0.76
URITemplateRouterView_Arguments 354.76814203772517 ns/iter 441.56896754666445 ns/iter 0.80
JSONL_Parse_Large 7151557.530612397 ns/iter 9381133.472972296 ns/iter 0.76
JSONL_Parse_Large_GZIP 8502584.84337361 ns/iter 10876846.169230703 ns/iter 0.78
JSONLD_Catalog_Annotation_List_Populate 474767.6255956191 ns/iter 599894.2444061859 ns/iter 0.79
JSONLD_Catalog_Materialize 3098414.5614035353 ns/iter 3640045.578680111 ns/iter 0.85
HTML_Build_Table_100000 50638053.15384029 ns/iter 57997384.18181732 ns/iter 0.87
HTML_Render_Table_100000 2093510.1586826001 ns/iter 1917230.4699452836 ns/iter 1.09
GZIP_Compress_ISO_Language_Set_3_Locations 27534908.880002152 ns/iter 32445417.545452736 ns/iter 0.85
GZIP_Decompress_ISO_Language_Set_3_Locations 3010594.064655226 ns/iter 4280299.220858783 ns/iter 0.70
GZIP_Compress_ISO_Language_Set_3_Schema 1640346.7611240319 ns/iter 1858759.8455285493 ns/iter 0.88
GZIP_Decompress_ISO_Language_Set_3_Schema 196236.4213625103 ns/iter 360898.020544466 ns/iter 0.54
JOSE_VerifySignature_RS256 49824.23815283821 ns/iter 60270.45016411132 ns/iter 0.83
JOSE_VerifySignature_ES512 2198406.874214064 ns/iter 2430034.219511937 ns/iter 0.90

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (linux/gcc)

Details
Benchmark suite Current: a78314b Previous: 9ba55aa Ratio
JOSE_VerifySignature_RS256 22070.858869307598 ns/iter 22022.37305982556 ns/iter 1.00
JOSE_VerifySignature_ES512 575661.0632183413 ns/iter 575751.325370611 ns/iter 1.00
GZIP_Compress_ISO_Language_Set_3_Locations 37019221.684210226 ns/iter 36459859.526315235 ns/iter 1.02
GZIP_Decompress_ISO_Language_Set_3_Locations 4302615.208588956 ns/iter 4238620.224243112 ns/iter 1.02
GZIP_Compress_ISO_Language_Set_3_Schema 2060480.8176468692 ns/iter 2028520.8000000303 ns/iter 1.02
GZIP_Decompress_ISO_Language_Set_3_Schema 381787.2450873546 ns/iter 377865.2670270448 ns/iter 1.01
HTML_Build_Table_100000 55920173.81818757 ns/iter 54778969.833345555 ns/iter 1.02
HTML_Render_Table_100000 2124771.7560238224 ns/iter 1957758.033707511 ns/iter 1.09
JSONLD_Catalog_Annotation_List_Populate 678191.9250243547 ns/iter 688109.4331705887 ns/iter 0.99
JSONLD_Catalog_Materialize 3487017.5247524544 ns/iter 3522820.9698501513 ns/iter 0.99
JSONL_Parse_Large 10092513.614285639 ns/iter 10155624.855071332 ns/iter 0.99
JSONL_Parse_Large_GZIP 11422558.754098704 ns/iter 11509200.300001035 ns/iter 0.99
URITemplateRouter_Create 20898.13617680307 ns/iter 21124.804787598277 ns/iter 0.99
URITemplateRouter_Match 150.03702119748297 ns/iter 161.82937682508577 ns/iter 0.93
URITemplateRouter_Match_BasePath 181.39576984136644 ns/iter 180.07971805013824 ns/iter 1.01
URITemplateRouterView_Restore 8454.260964178302 ns/iter 8460.854097946461 ns/iter 1.00
URITemplateRouterView_Match 122.36616072452286 ns/iter 128.1615812627241 ns/iter 0.95
URITemplateRouterView_Match_BasePath 143.33507602168834 ns/iter 144.33585010171996 ns/iter 0.99
URITemplateRouterView_Arguments 469.03580606885527 ns/iter 469.45346058350515 ns/iter 1.00
JSONPath_Descendant_Filter_Nested 1593.351184078324 ns/iter 1610.985842949958 ns/iter 0.99
Pointer_Object_Traverse 23.293976786111536 ns/iter 22.91052100860483 ns/iter 1.02
Pointer_Object_Try_Traverse 25.986489136311537 ns/iter 25.87383088146686 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 127.01841765915961 ns/iter 131.5861373770398 ns/iter 0.97
Pointer_Walker_Schema_ISO_Language 1412451.044806377 ns/iter 1444957.2133889315 ns/iter 0.98
Pointer_Maybe_Tracked_Deeply_Nested/0 1230897.0550773246 ns/iter 1206910.8801368463 ns/iter 1.02
Pointer_Maybe_Tracked_Deeply_Nested/1 1713427.0833332276 ns/iter 1690143.138014082 ns/iter 1.01
Pointer_Position_Tracker_Get_Deeply_Nested 623.0321796435244 ns/iter 624.7369267977572 ns/iter 1.00
JSON_Array_Of_Objects_Unique 477.65501682674204 ns/iter 458.975275210454 ns/iter 1.04
JSON_Parse_1 5194.903633271872 ns/iter 5200.843280387193 ns/iter 1.00
JSON_Parse_Real 5639.832201170335 ns/iter 5699.128457188009 ns/iter 0.99
JSON_Parse_Decimal 10265.87501820847 ns/iter 10059.13089845905 ns/iter 1.02
JSON_Parse_Schema_ISO_Language 3596880.6820514705 ns/iter 3570879.500000733 ns/iter 1.01
JSON_Parse_Integer 3748.367034441999 ns/iter 3763.458750492535 ns/iter 1.00
JSON_Parse_String_NonSSO_Plain 3580.517470591974 ns/iter 3614.6502807254496 ns/iter 0.99
JSON_Parse_String_SSO_Plain 3194.3061507226435 ns/iter 3150.264852276446 ns/iter 1.01
JSON_Parse_String_Escape_Heavy 17019.29162767958 ns/iter 16880.59973927651 ns/iter 1.01
JSON_Parse_Object_Short_Keys 8398.55654633392 ns/iter 8400.409391868421 ns/iter 1.00
JSON_Parse_Object_Scalar_Properties 4268.735080174057 ns/iter 4285.8977971359245 ns/iter 1.00
JSON_Parse_Object_Array_Properties 6383.18059389995 ns/iter 7551.632253121722 ns/iter 0.85
JSON_Parse_Object_Object_Properties 6409.808703369958 ns/iter 7639.310206031042 ns/iter 0.84
JSON_Parse_Nested_Containers 38727.226433914126 ns/iter 43215.354806854295 ns/iter 0.90
JSON_From_String_Copy 8.541238310617032 ns/iter 8.417462703045699 ns/iter 1.01
JSON_From_String_Temporary 7.183227971824351 ns/iter 7.386037708522089 ns/iter 0.97
JSON_Number_To_Double 22.617672078930614 ns/iter 22.129179656710146 ns/iter 1.02
JSON_Object_At_Last_Key/8 5.636616422815651 ns/iter 5.613337090396754 ns/iter 1.00
JSON_Object_At_Last_Key/32 21.81756289609171 ns/iter 21.534245661617806 ns/iter 1.01
JSON_Object_At_Last_Key/128 88.50587463648222 ns/iter 87.71568645004844 ns/iter 1.01
JSON_Object_At_Last_Key/512 392.7708682137568 ns/iter 392.6077884246601 ns/iter 1.00
JSON_Fast_Hash_Helm_Chart_Lock 75.51285891477025 ns/iter 76.14774051730386 ns/iter 0.99
JSON_Equality_Helm_Chart_Lock 159.18476488132313 ns/iter 156.9093518989879 ns/iter 1.01
JSON_Divisible_By_Decimal 266.51535155328423 ns/iter 262.83944547608723 ns/iter 1.01
JSON_String_Equal/10 5.4121413612002245 ns/iter 5.421101175603286 ns/iter 1.00
JSON_String_Equal/100 6.037610028988321 ns/iter 6.040199408909063 ns/iter 1.00
JSON_String_Equal_Small_By_Perfect_Hash/10 0.7489920672520152 ns/iter 0.7496701476275874 ns/iter 1.00
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 25.197667296025113 ns/iter 25.192343764074327 ns/iter 1.00
JSON_String_Fast_Hash/10 2.569745608123886 ns/iter 2.5781591684052585 ns/iter 1.00
JSON_String_Fast_Hash/100 2.5699643060431896 ns/iter 2.5708349820494325 ns/iter 1.00
JSON_String_Key_Hash/10 1.2548178084997428 ns/iter 1.2501296031760134 ns/iter 1.00
JSON_String_Key_Hash/100 12.452712417954492 ns/iter 12.443278769893546 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 3.1198994443519403 ns/iter 3.115943975644215 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Small 3.4299298851945315 ns/iter 3.4263121569929935 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 3.128399296780972 ns/iter 3.140606304168865 ns/iter 1.00
Regex_Lower_S_Or_Upper_S_Asterisk 0.6234050130694253 ns/iter 0.622831060104547 ns/iter 1.00
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 0.6252640399738213 ns/iter 0.6228896553316564 ns/iter 1.00
Regex_Period_Asterisk 0.6238404843947436 ns/iter 0.62324454946399 ns/iter 1.00
Regex_Group_Period_Asterisk_Group 0.6235287379697251 ns/iter 0.6232504043618136 ns/iter 1.00
Regex_Period_Plus 0.6234919246139156 ns/iter 0.6230151207351368 ns/iter 1.00
Regex_Period 0.6229853654306717 ns/iter 0.6230672996229282 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 0.6235912688865279 ns/iter 0.6229001993924556 ns/iter 1.00
Regex_Caret_Group_Period_Plus_Group_Dollar 0.624939113784758 ns/iter 0.6252013012702768 ns/iter 1.00
Regex_Caret_Period_Asterisk_Dollar 0.6226369193024825 ns/iter 0.6227683641280423 ns/iter 1.00
Regex_Caret_Group_Period_Asterisk_Group_Dollar 0.6228661652432445 ns/iter 0.6231352762126396 ns/iter 1.00
Regex_Caret_X_Hyphen 4.051415787587654 ns/iter 4.0503210059186765 ns/iter 1.00
Regex_Period_Md_Dollar 28.65421578894266 ns/iter 28.41569670196302 ns/iter 1.01
Regex_Caret_Slash_Period_Asterisk 4.362528359553797 ns/iter 4.3842782229678505 ns/iter 1.00
Regex_Caret_Period_Range_Dollar 1.2475340734801605 ns/iter 1.2447491548851621 ns/iter 1.00
Regex_Nested_Backtrack 37.14298102876413 ns/iter 45.924364517369824 ns/iter 0.81

This comment was automatically generated by workflow using github-action-benchmark.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

is_hostname and is_idn_hostname reject A-labels whose Punycode body is uppercase

1 participant