Skip to content

Implement international hostname checking with UTS #46#2564

Merged
jviotti merged 2 commits into
mainfrom
uts-idn-hostname
Jul 1, 2026
Merged

Implement international hostname checking with UTS #46#2564
jviotti merged 2 commits into
mainfrom
uts-idn-hostname

Conversation

@jviotti

@jviotti jviotti commented Jul 1, 2026

Copy link
Copy Markdown
Member

See: json-schema-org/JSON-Schema-Test-Suite#927
Signed-off-by: Juan Cruz Viotti jv@jviotti.com

Review in cubic

@jviotti jviotti force-pushed the uts-idn-hostname branch 2 times, most recently from 0eafd54 to b144bc0 Compare July 1, 2026 16:46

@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: 056d54e Previous: 2cc994b Ratio
JOSE_VerifySignature_RS256 24399.61040871369 ns/iter 18898.396884787224 ns/iter 1.29
JOSE_VerifySignature_ES512 641987.4600550812 ns/iter 498531.7060498077 ns/iter 1.29
GZIP_Compress_ISO_Language_Set_3_Locations 39332111.83333343 ns/iter 30063828.043479215 ns/iter 1.31
GZIP_Decompress_ISO_Language_Set_3_Locations 4010174.9252875345 ns/iter 2722083.5620154548 ns/iter 1.47
GZIP_Compress_ISO_Language_Set_3_Schema 2276426.2084690463 ns/iter 1756299.5349999254 ns/iter 1.30
GZIP_Decompress_ISO_Language_Set_3_Schema 278593.4335387322 ns/iter 197654.00724408904 ns/iter 1.41
HTML_Build_Table_100000 69434053.80000058 ns/iter 56032916.16666677 ns/iter 1.24
HTML_Render_Table_100000 1893119.3477087165 ns/iter 1840292.8364115972 ns/iter 1.03
JSONL_Parse_Large 12158960.894738443 ns/iter 9449801.054054696 ns/iter 1.29
JSONL_Parse_Large_GZIP 13719919.588235524 ns/iter 10608343.712120952 ns/iter 1.29
URITemplateRouter_Create 30221.065215518185 ns/iter 22340.13871180407 ns/iter 1.35
URITemplateRouter_Match 156.64615297740903 ns/iter 119.2958709952835 ns/iter 1.31
URITemplateRouter_Match_BasePath 187.91644223718103 ns/iter 142.1888055761306 ns/iter 1.32
URITemplateRouterView_Restore 8720.193994536065 ns/iter 6719.424232475853 ns/iter 1.30
URITemplateRouterView_Match 125.87509527347063 ns/iter 94.13356358268622 ns/iter 1.34
URITemplateRouterView_Match_BasePath 142.15391133309421 ns/iter 105.95508858946816 ns/iter 1.34
URITemplateRouterView_Arguments 454.0326410689144 ns/iter 349.59650167340385 ns/iter 1.30
Pointer_Object_Traverse 29.625938686248993 ns/iter 22.972203929400372 ns/iter 1.29
Pointer_Object_Try_Traverse 22.829504010900667 ns/iter 17.700732249007686 ns/iter 1.29
Pointer_Push_Back_Pointer_To_Weak_Pointer 151.82934993454168 ns/iter 125.73930276027164 ns/iter 1.21
Pointer_Walker_Schema_ISO_Language 1910033.2228115452 ns/iter 1452908.1022963952 ns/iter 1.31
Pointer_Maybe_Tracked_Deeply_Nested/0 1524706.6782609655 ns/iter 1187573.492359882 ns/iter 1.28
Pointer_Maybe_Tracked_Deeply_Nested/1 1663107.676959562 ns/iter 1288989.2688766243 ns/iter 1.29
Pointer_Position_Tracker_Get_Deeply_Nested 631.2694239999246 ns/iter 446.5383050016227 ns/iter 1.41
JSON_Array_Of_Objects_Unique 408.5007557403379 ns/iter 314.9333206135257 ns/iter 1.30
JSON_Parse_1 7382.913285336284 ns/iter 5800.54611157635 ns/iter 1.27
JSON_Parse_Real 6587.401554209401 ns/iter 5184.289584243911 ns/iter 1.27
JSON_Parse_Decimal 9508.853522388665 ns/iter 7559.940392055323 ns/iter 1.26
JSON_Parse_Schema_ISO_Language 5089988.561151507 ns/iter 3960428.80226006 ns/iter 1.29
JSON_Parse_Integer 4948.164376931012 ns/iter 3784.546090283644 ns/iter 1.31
JSON_Parse_String_NonSSO_Plain 8301.049157717012 ns/iter 6641.078015191903 ns/iter 1.25
JSON_Parse_String_SSO_Plain 3594.5490559455907 ns/iter 2786.201082590381 ns/iter 1.29
JSON_Parse_String_Escape_Heavy 18955.63515377691 ns/iter 14799.343378553893 ns/iter 1.28
JSON_Parse_Object_Short_Keys 11358.419373625347 ns/iter 8768.031832998611 ns/iter 1.30
JSON_Parse_Object_Scalar_Properties 5822.702538686574 ns/iter 4485.615379192029 ns/iter 1.30
JSON_Parse_Object_Array_Properties 9407.980196036122 ns/iter 7488.457662625925 ns/iter 1.26
JSON_Parse_Object_Object_Properties 9300.32119653136 ns/iter 7406.963722967726 ns/iter 1.26
JSON_Parse_Nested_Containers 73117.59146533663 ns/iter 57132.625487962265 ns/iter 1.28
JSON_From_String_Copy 20.051283343626075 ns/iter 15.800114401389031 ns/iter 1.27
JSON_From_String_Temporary 16.27752401214961 ns/iter 12.665707243534854 ns/iter 1.29
JSON_Number_To_Double 19.361819489899297 ns/iter 15.071654279190597 ns/iter 1.28
JSON_Object_At_Last_Key/8 9.151385700305983 ns/iter 7.192479863670162 ns/iter 1.27
JSON_Object_At_Last_Key/32 34.48489305271741 ns/iter 26.750740173984514 ns/iter 1.29
JSON_Object_At_Last_Key/128 135.78579556282398 ns/iter 105.28286283530964 ns/iter 1.29
JSON_Object_At_Last_Key/512 559.6011156654641 ns/iter 433.33551920690707 ns/iter 1.29
JSON_Fast_Hash_Helm_Chart_Lock 56.698111999992314 ns/iter 45.24161111599971 ns/iter 1.25
JSON_Equality_Helm_Chart_Lock 154.10004957823915 ns/iter 115.28089563670666 ns/iter 1.34
JSON_Divisible_By_Decimal 231.93164490445412 ns/iter 180.16622390442762 ns/iter 1.29
JSON_String_Equal/10 5.712261002432149 ns/iter 4.176188911847903 ns/iter 1.37
JSON_String_Equal/100 6.421787492151612 ns/iter 5.105460920000269 ns/iter 1.26
JSON_String_Equal_Small_By_Perfect_Hash/10 0.7123570567118698 ns/iter 0.5536266804904784 ns/iter 1.29
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 22.177518328217463 ns/iter 17.025658166531887 ns/iter 1.30
JSON_String_Fast_Hash/10 1.407926683435269 ns/iter 1.0938646634959321 ns/iter 1.29
JSON_String_Fast_Hash/100 1.413385496674614 ns/iter 1.0924878574774066 ns/iter 1.29
JSON_String_Key_Hash/10 1.0855434606058196 ns/iter 0.8421967981176668 ns/iter 1.29
JSON_String_Key_Hash/100 14.760933902779406 ns/iter 11.452652098709903 ns/iter 1.29
JSON_Object_Defines_Miss_Same_Length 3.516576416965587 ns/iter 2.730845482316819 ns/iter 1.29
JSON_Object_Defines_Miss_Too_Small 3.5183586357759937 ns/iter 2.7301054193364966 ns/iter 1.29
JSON_Object_Defines_Miss_Too_Large 3.8714467637979753 ns/iter 3.0005537919373375 ns/iter 1.29
Regex_Lower_S_Or_Upper_S_Asterisk 0.703571659296025 ns/iter 0.5469286411034296 ns/iter 1.29
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.054859883728559 ns/iter 0.8185470319566642 ns/iter 1.29
Regex_Period_Asterisk 1.0550569556916696 ns/iter 0.8299701041145602 ns/iter 1.27
Regex_Group_Period_Asterisk_Group 0.7050389640680162 ns/iter 0.5457611905584461 ns/iter 1.29
Regex_Period_Plus 0.7033496784911552 ns/iter 0.5463447189464873 ns/iter 1.29
Regex_Period 1.0553816287794473 ns/iter 0.818855864528042 ns/iter 1.29
Regex_Caret_Period_Plus_Dollar 1.0553811486528237 ns/iter 0.8186801791317391 ns/iter 1.29
Regex_Caret_Group_Period_Plus_Group_Dollar 0.7040772572953106 ns/iter 0.5469287987601189 ns/iter 1.29
Regex_Caret_Period_Asterisk_Dollar 0.7042658120170403 ns/iter 0.5462524275680836 ns/iter 1.29
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.054993524498478 ns/iter 0.8202116434505878 ns/iter 1.29
Regex_Caret_X_Hyphen 3.8669235893210367 ns/iter 3.001668061529984 ns/iter 1.29
Regex_Period_Md_Dollar 39.31914735160301 ns/iter 26.442895280983073 ns/iter 1.49
Regex_Caret_Slash_Period_Asterisk 4.220240808692423 ns/iter 3.005249073762104 ns/iter 1.40
Regex_Caret_Period_Range_Dollar 1.4068181771224437 ns/iter 1.1118332965731121 ns/iter 1.27
Regex_Nested_Backtrack 38.45352730645227 ns/iter 33.957151417127626 ns/iter 1.13

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/llvm)

Details
Benchmark suite Current: 056d54e Previous: 2cc994b Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.8025967234727633 ns/iter 2.7997801129628623 ns/iter 1.00
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.8096976862301926 ns/iter 2.80052673275216 ns/iter 1.00
Regex_Period_Asterisk 2.4899924141999383 ns/iter 2.5001627789123324 ns/iter 1.00
Regex_Group_Period_Asterisk_Group 2.571673793260478 ns/iter 2.4897083726660667 ns/iter 1.03
Regex_Period_Plus 3.4365706304679082 ns/iter 3.4242333163988388 ns/iter 1.00
Regex_Period 3.423858205677707 ns/iter 3.4455242231413807 ns/iter 0.99
Regex_Caret_Period_Plus_Dollar 3.1160315731068975 ns/iter 3.1133432850350244 ns/iter 1.00
Regex_Caret_Group_Period_Plus_Group_Dollar 3.1340915434267864 ns/iter 3.1130119099220526 ns/iter 1.01
Regex_Caret_Period_Asterisk_Dollar 4.050141986592795 ns/iter 4.045955437982471 ns/iter 1.00
Regex_Caret_Group_Period_Asterisk_Group_Dollar 4.063892876805985 ns/iter 4.047528216526804 ns/iter 1.00
Regex_Caret_X_Hyphen 7.204358319820218 ns/iter 7.163328406536741 ns/iter 1.01
Regex_Period_Md_Dollar 28.47325386616156 ns/iter 28.364410277265748 ns/iter 1.00
Regex_Caret_Slash_Period_Asterisk 7.8307699295648 ns/iter 7.784332583781212 ns/iter 1.01
Regex_Caret_Period_Range_Dollar 4.367821424544594 ns/iter 4.119628760343867 ns/iter 1.06
Regex_Nested_Backtrack 37.792605745797836 ns/iter 37.558846218921104 ns/iter 1.01
JSON_Array_Of_Objects_Unique 438.7191377178928 ns/iter 438.8578546164185 ns/iter 1.00
JSON_Parse_1 4968.709062605111 ns/iter 4928.898968779579 ns/iter 1.01
JSON_Parse_Real 5356.2678094969515 ns/iter 5385.611641843512 ns/iter 0.99
JSON_Parse_Decimal 7748.604264490366 ns/iter 7636.89427212295 ns/iter 1.01
JSON_Parse_Schema_ISO_Language 3558134.707071127 ns/iter 3541177.287878336 ns/iter 1.00
JSON_Parse_Integer 3820.978095783562 ns/iter 3846.612789930551 ns/iter 0.99
JSON_Parse_String_NonSSO_Plain 5152.599668043774 ns/iter 5249.723725251207 ns/iter 0.98
JSON_Parse_String_SSO_Plain 2802.788607432898 ns/iter 2802.9778781257605 ns/iter 1.00
JSON_Parse_String_Escape_Heavy 14588.943670465096 ns/iter 14720.081765072275 ns/iter 0.99
JSON_Parse_Object_Short_Keys 8046.731610086568 ns/iter 7791.908066079926 ns/iter 1.03
JSON_Parse_Object_Scalar_Properties 4182.432885063647 ns/iter 4073.914691696201 ns/iter 1.03
JSON_Parse_Object_Array_Properties 5798.828934838157 ns/iter 5815.986990020145 ns/iter 1.00
JSON_Parse_Object_Object_Properties 5427.996936246265 ns/iter 5836.572592978122 ns/iter 0.93
JSON_Parse_Nested_Containers 46784.64588345734 ns/iter 46670.823296671864 ns/iter 1.00
JSON_From_String_Copy 20.25185727499167 ns/iter 20.253776755939676 ns/iter 1.00
JSON_From_String_Temporary 18.469497094429776 ns/iter 18.392485597125372 ns/iter 1.00
JSON_Number_To_Double 23.713107222693978 ns/iter 23.700166111861694 ns/iter 1.00
JSON_Object_At_Last_Key/8 5.305225531064034 ns/iter 5.298075371514232 ns/iter 1.00
JSON_Object_At_Last_Key/32 21.308831139027617 ns/iter 21.514630833260778 ns/iter 0.99
JSON_Object_At_Last_Key/128 87.68607355208385 ns/iter 86.92000328127625 ns/iter 1.01
JSON_Object_At_Last_Key/512 396.57899453411034 ns/iter 394.55928410627587 ns/iter 1.01
JSON_Fast_Hash_Helm_Chart_Lock 66.02026326296652 ns/iter 66.05122900354188 ns/iter 1.00
JSON_Equality_Helm_Chart_Lock 161.15522581914368 ns/iter 171.96179430702344 ns/iter 0.94
JSON_Divisible_By_Decimal 251.27423554598394 ns/iter 250.98101782102174 ns/iter 1.00
JSON_String_Equal/10 6.234471845193032 ns/iter 6.2329935411011865 ns/iter 1.00
JSON_String_Equal/100 6.8964701810409625 ns/iter 6.861133996382857 ns/iter 1.01
JSON_String_Equal_Small_By_Perfect_Hash/10 0.9395004891690864 ns/iter 0.9360541618029009 ns/iter 1.00
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 10.663844515029483 ns/iter 10.614204854673892 ns/iter 1.00
JSON_String_Fast_Hash/10 2.8015237967117295 ns/iter 2.8033688338995963 ns/iter 1.00
JSON_String_Fast_Hash/100 2.803096138674888 ns/iter 2.8027633951152935 ns/iter 1.00
JSON_String_Key_Hash/10 2.494247145242195 ns/iter 2.492686675449004 ns/iter 1.00
JSON_String_Key_Hash/100 6.539396397450784 ns/iter 6.53863965953703 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 3.750420916618186 ns/iter 3.7679421468324508 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Small 2.7633908449907825 ns/iter 2.7513169283820695 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 2.6697458335078097 ns/iter 2.659455040075825 ns/iter 1.00
Pointer_Object_Traverse 24.122588036501696 ns/iter 24.318535064523562 ns/iter 0.99
Pointer_Object_Try_Traverse 30.21417170137872 ns/iter 30.202178439418574 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 178.90391936520402 ns/iter 160.19081504900606 ns/iter 1.12
Pointer_Walker_Schema_ISO_Language 1715638.0336540604 ns/iter 1687773.7566264512 ns/iter 1.02
Pointer_Maybe_Tracked_Deeply_Nested/0 1233160.462081088 ns/iter 1259055.8701753363 ns/iter 0.98
Pointer_Maybe_Tracked_Deeply_Nested/1 1680312.8987952822 ns/iter 1666733.076738439 ns/iter 1.01
Pointer_Position_Tracker_Get_Deeply_Nested 692.7894063669946 ns/iter 688.7736965645087 ns/iter 1.01
URITemplateRouter_Create 32724.225742483228 ns/iter 31959.58148334126 ns/iter 1.02
URITemplateRouter_Match 176.90671164814546 ns/iter 178.7115637839049 ns/iter 0.99
URITemplateRouter_Match_BasePath 207.51997112474072 ns/iter 204.39149453248172 ns/iter 1.02
URITemplateRouterView_Restore 7618.625636348701 ns/iter 7890.651973583173 ns/iter 0.97
URITemplateRouterView_Match 146.7642233933131 ns/iter 146.48282270187295 ns/iter 1.00
URITemplateRouterView_Match_BasePath 163.81226005633982 ns/iter 163.91500758173805 ns/iter 1.00
URITemplateRouterView_Arguments 437.7809942781385 ns/iter 442.02576082468084 ns/iter 0.99
JSONL_Parse_Large 9679672.69444456 ns/iter 9686161.499999456 ns/iter 1.00
JSONL_Parse_Large_GZIP 11273516.016129384 ns/iter 11341370.596774654 ns/iter 0.99
HTML_Build_Table_100000 67010978.20000541 ns/iter 68326716.29999822 ns/iter 0.98
HTML_Render_Table_100000 5282290.090909128 ns/iter 5523088.107692659 ns/iter 0.96
GZIP_Compress_ISO_Language_Set_3_Locations 32188135.749998994 ns/iter 32632872.76190242 ns/iter 0.99
GZIP_Decompress_ISO_Language_Set_3_Locations 4105432.9649128783 ns/iter 4357092.285713915 ns/iter 0.94
GZIP_Compress_ISO_Language_Set_3_Schema 1857370.108753298 ns/iter 1859108.4654253018 ns/iter 1.00
GZIP_Decompress_ISO_Language_Set_3_Schema 357918.50153689296 ns/iter 358419.92930323235 ns/iter 1.00
JOSE_VerifySignature_RS256 56969.816085936385 ns/iter 56833.455217218834 ns/iter 1.00
JOSE_VerifySignature_ES512 2420537.7889271644 ns/iter 2428147.1076387595 ns/iter 1.00

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 (macos/llvm)

Details
Benchmark suite Current: 056d54e Previous: 2cc994b Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.366421309054733 ns/iter 2.0728238810417823 ns/iter 1.14
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.247401910026962 ns/iter 2.0783991991954704 ns/iter 1.08
Regex_Period_Asterisk 2.0386995838055424 ns/iter 2.21803198104374 ns/iter 0.92
Regex_Group_Period_Asterisk_Group 2.1051628716905517 ns/iter 2.3069028018026114 ns/iter 0.91
Regex_Period_Plus 2.0795825805639856 ns/iter 2.7461385305216632 ns/iter 0.76
Regex_Period 2.0749090683813387 ns/iter 2.5537371064172123 ns/iter 0.81
Regex_Caret_Period_Plus_Dollar 2.1163551556315143 ns/iter 2.75654077279346 ns/iter 0.77
Regex_Caret_Group_Period_Plus_Group_Dollar 2.0635184537753903 ns/iter 2.601058101934299 ns/iter 0.79
Regex_Caret_Period_Asterisk_Dollar 1.8426451934597776 ns/iter 2.0187606391218726 ns/iter 0.91
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.750641461741664 ns/iter 1.9713406508038585 ns/iter 0.89
Regex_Caret_X_Hyphen 6.341571394610121 ns/iter 7.259586691046719 ns/iter 0.87
Regex_Period_Md_Dollar 17.561602846210725 ns/iter 20.989148423598266 ns/iter 0.84
Regex_Caret_Slash_Period_Asterisk 5.169326228681285 ns/iter 5.651942815292681 ns/iter 0.91
Regex_Caret_Period_Range_Dollar 2.3644532648298036 ns/iter 2.474889586642646 ns/iter 0.96
Regex_Nested_Backtrack 30.864370538676887 ns/iter 35.09337858514018 ns/iter 0.88
JSON_Array_Of_Objects_Unique 401.509221659094 ns/iter 467.3152267349672 ns/iter 0.86
JSON_Parse_1 4199.898041722529 ns/iter 5223.231930632642 ns/iter 0.80
JSON_Parse_Real 5609.433087297122 ns/iter 7117.395223577908 ns/iter 0.79
JSON_Parse_Decimal 6069.213552489698 ns/iter 7854.06127037644 ns/iter 0.77
JSON_Parse_Schema_ISO_Language 3163204.74641171 ns/iter 5351143.750000346 ns/iter 0.59
JSON_Parse_Integer 3119.6702144368437 ns/iter 4155.733411500964 ns/iter 0.75
JSON_Parse_String_NonSSO_Plain 3734.0270374517663 ns/iter 4511.2312207714 ns/iter 0.83
JSON_Parse_String_SSO_Plain 2087.996912335652 ns/iter 2288.741332773507 ns/iter 0.91
JSON_Parse_String_Escape_Heavy 18115.559826940545 ns/iter 19814.96241843771 ns/iter 0.91
JSON_Parse_Object_Short_Keys 5410.66479985966 ns/iter 6196.735223940375 ns/iter 0.87
JSON_Parse_Object_Scalar_Properties 2922.01749316865 ns/iter 3612.763233321804 ns/iter 0.81
JSON_Parse_Object_Array_Properties 4078.4468768593442 ns/iter 4879.2818067733715 ns/iter 0.84
JSON_Parse_Object_Object_Properties 3827.0551105536797 ns/iter 5471.435829999791 ns/iter 0.70
JSON_Parse_Nested_Containers 29845.565197674125 ns/iter 41396.554679460685 ns/iter 0.72
JSON_From_String_Copy 26.659681195032828 ns/iter 32.23812645641086 ns/iter 0.83
JSON_From_String_Temporary 20.790756753993627 ns/iter 26.724028441411583 ns/iter 0.78
JSON_Number_To_Double 38.19255805149137 ns/iter 40.669012223182385 ns/iter 0.94
JSON_Object_At_Last_Key/8 4.000177901373005 ns/iter 4.311661312683349 ns/iter 0.93
JSON_Object_At_Last_Key/32 13.250546801114155 ns/iter 13.843878949667273 ns/iter 0.96
JSON_Object_At_Last_Key/128 56.665540389099945 ns/iter 60.46942357454198 ns/iter 0.94
JSON_Object_At_Last_Key/512 200.86613574793674 ns/iter 224.3358261046845 ns/iter 0.90
JSON_Fast_Hash_Helm_Chart_Lock 61.50338894327254 ns/iter 78.07641232677281 ns/iter 0.79
JSON_Equality_Helm_Chart_Lock 168.1678722104974 ns/iter 188.6294095721672 ns/iter 0.89
JSON_Divisible_By_Decimal 190.6808893049322 ns/iter 242.25224308841047 ns/iter 0.79
JSON_String_Equal/10 7.370373459493912 ns/iter 11.11797083922311 ns/iter 0.66
JSON_String_Equal/100 7.455324082728807 ns/iter 9.260490064510561 ns/iter 0.81
JSON_String_Equal_Small_By_Perfect_Hash/10 0.8275977609431215 ns/iter 1.0638830889078361 ns/iter 0.78
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 3.4903831305054815 ns/iter 4.19961972267464 ns/iter 0.83
JSON_String_Fast_Hash/10 3.1611195043753715 ns/iter 3.0265141857899245 ns/iter 1.04
JSON_String_Fast_Hash/100 2.1347083544243772 ns/iter 2.4142634944174493 ns/iter 0.88
JSON_String_Key_Hash/10 1.406815728626828 ns/iter 1.5824728043497498 ns/iter 0.89
JSON_String_Key_Hash/100 2.4245227571925145 ns/iter 2.5060095640416957 ns/iter 0.97
JSON_Object_Defines_Miss_Same_Length 2.470112035321123 ns/iter 2.8514630251231234 ns/iter 0.87
JSON_Object_Defines_Miss_Too_Small 2.644840324368772 ns/iter 3.1505785325751217 ns/iter 0.84
JSON_Object_Defines_Miss_Too_Large 2.550014214383866 ns/iter 2.94651483321918 ns/iter 0.87
Pointer_Object_Traverse 14.50909612988284 ns/iter 22.245378626371235 ns/iter 0.65
Pointer_Object_Try_Traverse 24.003987906451314 ns/iter 33.548491758757486 ns/iter 0.72
Pointer_Push_Back_Pointer_To_Weak_Pointer 164.5930516694612 ns/iter 226.86442680871923 ns/iter 0.73
Pointer_Walker_Schema_ISO_Language 2944974.018450132 ns/iter 4169465.029762131 ns/iter 0.71
Pointer_Maybe_Tracked_Deeply_Nested/0 1083556.9903581152 ns/iter 1373230.4369920427 ns/iter 0.79
Pointer_Maybe_Tracked_Deeply_Nested/1 1628493.6450000487 ns/iter 1876821.9496021494 ns/iter 0.87
Pointer_Position_Tracker_Get_Deeply_Nested 388.4374269655604 ns/iter 424.89694669324643 ns/iter 0.91
URITemplateRouter_Create 26694.331650940847 ns/iter 28173.120947953725 ns/iter 0.95
URITemplateRouter_Match 180.85458010705497 ns/iter 183.72480254623838 ns/iter 0.98
URITemplateRouter_Match_BasePath 212.00485895906567 ns/iter 220.96502239115523 ns/iter 0.96
URITemplateRouterView_Restore 10554.724138407428 ns/iter 10649.379573618766 ns/iter 0.99
URITemplateRouterView_Match 140.49835654946557 ns/iter 165.7897393523248 ns/iter 0.85
URITemplateRouterView_Match_BasePath 170.94726655729042 ns/iter 186.76398266033044 ns/iter 0.92
URITemplateRouterView_Arguments 450.8806398818983 ns/iter 517.6723437412832 ns/iter 0.87
JSONL_Parse_Large 14434444.444443924 ns/iter 18819278.571429875 ns/iter 0.77
JSONL_Parse_Large_GZIP 17534602.634147476 ns/iter 17562067.452383004 ns/iter 1.00
HTML_Build_Table_100000 78344509.22222106 ns/iter 83310134.22222592 ns/iter 0.94
HTML_Render_Table_100000 5273388.7500005495 ns/iter 4946665.899082073 ns/iter 1.07
GZIP_Compress_ISO_Language_Set_3_Locations 29645944.458332945 ns/iter 34324519.80952356 ns/iter 0.86
GZIP_Decompress_ISO_Language_Set_3_Locations 6648985.849056033 ns/iter 9199645.38043478 ns/iter 0.72
GZIP_Compress_ISO_Language_Set_3_Schema 1655260.1050000247 ns/iter 2129027.9503106903 ns/iter 0.78
GZIP_Decompress_ISO_Language_Set_3_Schema 315255.0806528806 ns/iter 349328.3665024173 ns/iter 0.90
JOSE_VerifySignature_RS256 25131.862666294637 ns/iter 29422.810912156256 ns/iter 0.85
JOSE_VerifySignature_ES512 1140039.7417027927 ns/iter 1376406.740072138 ns/iter 0.83

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 (windows/msvc)

Details
Benchmark suite Current: 056d54e Previous: 2cc994b Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 5.070413000000826 ns/iter 5.070589000000609 ns/iter 1.00
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 5.016695535713568 ns/iter 5.007884821428173 ns/iter 1.00
Regex_Period_Asterisk 5.014570380583819 ns/iter 5.016402999999627 ns/iter 1.00
Regex_Group_Period_Asterisk_Group 5.009777999999869 ns/iter 5.01284499999997 ns/iter 1.00
Regex_Period_Plus 4.770450010648101 ns/iter 4.7867501349966775 ns/iter 1.00
Regex_Period 4.761873326956307 ns/iter 4.7928421885704475 ns/iter 0.99
Regex_Caret_Period_Plus_Dollar 4.769599800171847 ns/iter 4.783322555320003 ns/iter 1.00
Regex_Caret_Group_Period_Plus_Group_Dollar 4.770097322493941 ns/iter 4.7842784385679735 ns/iter 1.00
Regex_Caret_Period_Asterisk_Dollar 5.01107946428598 ns/iter 5.016123999999991 ns/iter 1.00
Regex_Caret_Group_Period_Asterisk_Group_Dollar 5.038209000000506 ns/iter 5.013579464285759 ns/iter 1.00
Regex_Caret_X_Hyphen 8.160927455356871 ns/iter 8.14934821428486 ns/iter 1.00
Regex_Period_Md_Dollar 44.33334374999731 ns/iter 44.27618978325223 ns/iter 1.00
Regex_Caret_Slash_Period_Asterisk 7.851479910714333 ns/iter 7.840045758928937 ns/iter 1.00
Regex_Caret_Period_Range_Dollar 5.958210714286086 ns/iter 5.95867589285705 ns/iter 1.00
Regex_Nested_Backtrack 55.29860000000327 ns/iter 53.74399999999874 ns/iter 1.03
JSON_Array_Of_Objects_Unique 487.6328000000285 ns/iter 496.16070000001855 ns/iter 0.98
JSON_Parse_1 9259.352678570665 ns/iter 8782.767487644647 ns/iter 1.05
JSON_Parse_Real 19433.595607189454 ns/iter 16065.578124998377 ns/iter 1.21
JSON_Parse_Decimal 14128.964285714372 ns/iter 11789.842857142827 ns/iter 1.20
JSON_Parse_Schema_ISO_Language 7908921.111110583 ns/iter 7489136.6666671885 ns/iter 1.06
JSON_Parse_Integer 6524.358035713972 ns/iter 6069.354464286343 ns/iter 1.07
JSON_Parse_String_NonSSO_Plain 8652.58482142853 ns/iter 7813.399553571187 ns/iter 1.11
JSON_Parse_String_SSO_Plain 3494.472981201906 ns/iter 3705.605704275838 ns/iter 0.94
JSON_Parse_String_Escape_Heavy 21748.606250000077 ns/iter 22252.23437499935 ns/iter 0.98
JSON_Parse_Object_Short_Keys 13306.03077665011 ns/iter 13526.29464285826 ns/iter 0.98
JSON_Parse_Object_Scalar_Properties 6832.968749999883 ns/iter 7027.20982142857 ns/iter 0.97
JSON_Parse_Object_Array_Properties 11383.828125000051 ns/iter 11329.978571428763 ns/iter 1.00
JSON_Parse_Object_Object_Properties 11577.396875001255 ns/iter 11548.6500000007 ns/iter 1.00
JSON_Parse_Nested_Containers 78811.00446428693 ns/iter 79862.45535714127 ns/iter 0.99
JSON_From_String_Copy 64.62190178571144 ns/iter 64.62234821428174 ns/iter 1.00
JSON_From_String_Temporary 58.5283035714314 ns/iter 59.57158035713965 ns/iter 0.98
JSON_Number_To_Double 120.41328571427812 ns/iter 120.68844642858575 ns/iter 1.00
JSON_Object_At_Last_Key/8 7.22693839285731 ns/iter 7.308821428570716 ns/iter 0.99
JSON_Object_At_Last_Key/32 23.23601759781169 ns/iter 23.548546428571626 ns/iter 0.99
JSON_Object_At_Last_Key/128 89.76386652839393 ns/iter 89.92495580693026 ns/iter 1.00
JSON_Object_At_Last_Key/512 425.4688388009328 ns/iter 427.28772301363483 ns/iter 1.00
JSON_Fast_Hash_Helm_Chart_Lock 64.09491071428519 ns/iter 67.26086607140961 ns/iter 0.95
JSON_Equality_Helm_Chart_Lock 299.2715178571359 ns/iter 446.84781250004283 ns/iter 0.67
JSON_Divisible_By_Decimal 299.06895769319254 ns/iter 406.1725446428609 ns/iter 0.74
JSON_String_Equal/10 15.057477678571527 ns/iter 16.07938392856921 ns/iter 0.94
JSON_String_Equal/100 16.31633426573868 ns/iter 17.736898318726087 ns/iter 0.92
JSON_String_Equal_Small_By_Perfect_Hash/10 2.5039049999999667 ns/iter 2.5269050881581685 ns/iter 0.99
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 14.997868303573574 ns/iter 14.187776722375792 ns/iter 1.06
JSON_String_Fast_Hash/10 4.6993238944182 ns/iter 4.704970992644613 ns/iter 1.00
JSON_String_Fast_Hash/100 4.698811082213211 ns/iter 4.717001126601257 ns/iter 1.00
JSON_String_Key_Hash/10 5.3329366071435755 ns/iter 5.355925999999727 ns/iter 1.00
JSON_String_Key_Hash/100 11.874200000001167 ns/iter 11.870735937502985 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 4.086301614439639 ns/iter 4.095531034099495 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Small 5.151040000000648 ns/iter 5.048993000000337 ns/iter 1.02
JSON_Object_Defines_Miss_Too_Large 4.39278187499994 ns/iter 4.413574721306333 ns/iter 1.00
Pointer_Object_Traverse 69.66886607143255 ns/iter 70.13229464285635 ns/iter 0.99
Pointer_Object_Try_Traverse 70.97478794642699 ns/iter 71.17441964284511 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 174.27546702737743 ns/iter 183.72558783260942 ns/iter 0.95
Pointer_Walker_Schema_ISO_Language 7865216.6666668365 ns/iter 7688918.888887505 ns/iter 1.02
Pointer_Maybe_Tracked_Deeply_Nested/0 2418431.7857142496 ns/iter 2424156.0606059683 ns/iter 1.00
Pointer_Maybe_Tracked_Deeply_Nested/1 3779162.011173155 ns/iter 3681075.9358284357 ns/iter 1.03
Pointer_Position_Tracker_Get_Deeply_Nested 537.3290651921743 ns/iter 562.1583705356212 ns/iter 0.96
URITemplateRouter_Create 40167.92410714208 ns/iter 43243.27084905026 ns/iter 0.93
URITemplateRouter_Match 232.6199687500008 ns/iter 232.83609374999514 ns/iter 1.00
URITemplateRouter_Match_BasePath 264.0464024127896 ns/iter 264.16915911466884 ns/iter 1.00
URITemplateRouterView_Restore 31672.915178572024 ns/iter 32283.84662260454 ns/iter 0.98
URITemplateRouterView_Match 179.45506066562757 ns/iter 180.00489598243374 ns/iter 1.00
URITemplateRouterView_Match_BasePath 204.31814712864377 ns/iter 204.6836560408723 ns/iter 1.00
URITemplateRouterView_Arguments 539.0677678571519 ns/iter 531.5137999998569 ns/iter 1.01
JSONL_Parse_Large 32466509.52381255 ns/iter 32845481.818185363 ns/iter 0.99
JSONL_Parse_Large_GZIP 33158290.00000008 ns/iter 32979671.42856621 ns/iter 1.01
HTML_Build_Table_100000 90479485.71428931 ns/iter 91762514.285717 ns/iter 0.99
HTML_Render_Table_100000 8381473.3333323 ns/iter 7890855.555554783 ns/iter 1.06
GZIP_Compress_ISO_Language_Set_3_Locations 36512942.1052667 ns/iter 37693357.89473572 ns/iter 0.97
GZIP_Decompress_ISO_Language_Set_3_Locations 10140052.000000045 ns/iter 10381349.9999994 ns/iter 0.98
GZIP_Compress_ISO_Language_Set_3_Schema 2109469.3749997616 ns/iter 2188010.312499955 ns/iter 0.96
GZIP_Decompress_ISO_Language_Set_3_Schema 621884.9107142432 ns/iter 626486.1607141775 ns/iter 0.99
JOSE_VerifySignature_RS256 21176.690624997722 ns/iter 21331.384375002926 ns/iter 0.99
JOSE_VerifySignature_ES512 1529373.6607142298 ns/iter 1553581.2499999832 ns/iter 0.98

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

@jviotti jviotti force-pushed the uts-idn-hostname branch from b144bc0 to b2e9c6c Compare July 1, 2026 17:57
@jviotti jviotti marked this pull request as ready for review July 1, 2026 17:57
@augmentcode

augmentcode Bot commented Jul 1, 2026

Copy link
Copy Markdown

This pull request is too large for Augment to review. The PR exceeds the maximum size limit of 75000 tokens (approximately 300000 characters) for automated code review. Please consider breaking this PR into smaller, more focused changes.

@jviotti jviotti changed the title Implement international hostname checking with #UTS Implement international hostname checking with UTS #46 Jul 1, 2026

@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 16 files

Tip: cubic can generate docs of your entire codebase and keep them up to date. Try it here.

Re-trigger cubic

Comment thread src/core/idna/idna.cc Outdated
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
@jviotti jviotti merged commit 4048ee6 into main Jul 1, 2026
12 checks passed
@jviotti jviotti deleted the uts-idn-hostname branch July 1, 2026 18:33
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.

1 participant