Skip to content

Add a UTS #46 variant of is_idn_email#2566

Merged
jviotti merged 2 commits into
mainfrom
e-mail-uts
Jul 1, 2026
Merged

Add a UTS #46 variant of is_idn_email#2566
jviotti merged 2 commits into
mainfrom
e-mail-uts

Conversation

@jviotti

@jviotti jviotti commented Jul 1, 2026

Copy link
Copy Markdown
Member

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

Review in cubic

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

augmentcode Bot commented Jul 1, 2026

Copy link
Copy Markdown
🤖 Augment PR Summary

Summary: This PR adds a UTS #46 “lookup/profile” variant of internationalized email validation, so domains can be validated after UTS #46 mapping/NFC normalization instead of strict IDNA 2008.

Changes:

Technical Notes: Address-literals remain validated as address literals (not IDNA/UTS #46), while only the domain-name path switches between strict IDNA 2008 and UTS #46 mapping + 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. 1 suggestion posted.

Fix All in Augment

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

/// @ingroup email
/// Check whether the given string is a valid internationalized `Mailbox` per
/// RFC 6531 Section 3.3, validating the domain under UTS #46 processing rather
/// than strict IDNA 2008. The domain is mapped and NFC-normalised before

@augmentcode augmentcode Bot Jul 1, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

is_idn_email already accepts uppercase ASCII domains (hostnames are case-insensitive), so the wording/example here (“uppercase … accepted rather than rejected” / user@EXAMPLE.COM) doesn’t clearly demonstrate the behavioral difference of the UTS #46 variant. Consider tweaking the wording/example to a case the strict IDNA 2008 path actually rejects (e.g., an uppercase A-label like XN--…).

Severity: low

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

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

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

Re-trigger cubic

Comment thread src/core/email/include/sourcemeta/core/email.h Outdated

@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: d02ad29 Previous: 4048ee6 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 1.6623982237905461 ns/iter 2.1764035660774526 ns/iter 0.76
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.6948780852564893 ns/iter 1.99677202573484 ns/iter 0.85
Regex_Period_Asterisk 1.605385781578038 ns/iter 1.8526513641568618 ns/iter 0.87
Regex_Group_Period_Asterisk_Group 1.5826802458859528 ns/iter 1.883134298007101 ns/iter 0.84
Regex_Period_Plus 1.8920958279244215 ns/iter 2.434544905740072 ns/iter 0.78
Regex_Period 1.9402301898704184 ns/iter 3.259568874663385 ns/iter 0.60
Regex_Caret_Period_Plus_Dollar 1.9456454981594178 ns/iter 2.8070411072821186 ns/iter 0.69
Regex_Caret_Group_Period_Plus_Group_Dollar 1.8897356433161614 ns/iter 2.7962393752783616 ns/iter 0.68
Regex_Caret_Period_Asterisk_Dollar 1.571619926023894 ns/iter 2.1845145987398533 ns/iter 0.72
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.595023814618664 ns/iter 1.9175262824619335 ns/iter 0.83
Regex_Caret_X_Hyphen 6.018681220733286 ns/iter 7.427741819309506 ns/iter 0.81
Regex_Period_Md_Dollar 16.296598618513315 ns/iter 24.213059333491756 ns/iter 0.67
Regex_Caret_Slash_Period_Asterisk 4.220978670755705 ns/iter 6.12451515560205 ns/iter 0.69
Regex_Caret_Period_Range_Dollar 1.8937020547287142 ns/iter 2.583066957468891 ns/iter 0.73
Regex_Nested_Backtrack 23.05550295060882 ns/iter 33.963511245021714 ns/iter 0.68
JSON_Array_Of_Objects_Unique 314.57972580300196 ns/iter 473.10410013098675 ns/iter 0.66
JSON_Parse_1 4808.782248582356 ns/iter 4489.026266366949 ns/iter 1.07
JSON_Parse_Real 5456.309401166838 ns/iter 6112.241757717647 ns/iter 0.89
JSON_Parse_Decimal 6128.991803994013 ns/iter 6979.824945369025 ns/iter 0.88
JSON_Parse_Schema_ISO_Language 2995310.4338840954 ns/iter 3819525.0000001127 ns/iter 0.78
JSON_Parse_Integer 3599.9769277036203 ns/iter 3627.0504682335495 ns/iter 0.99
JSON_Parse_String_NonSSO_Plain 5014.647919999788 ns/iter 4805.371523826404 ns/iter 1.04
JSON_Parse_String_SSO_Plain 2497.749550015238 ns/iter 2418.8972945546548 ns/iter 1.03
JSON_Parse_String_Escape_Heavy 20506.961740574538 ns/iter 21369.815666568782 ns/iter 0.96
JSON_Parse_Object_Short_Keys 6294.099083699603 ns/iter 6530.43082482224 ns/iter 0.96
JSON_Parse_Object_Scalar_Properties 3269.091531420152 ns/iter 3626.284032534533 ns/iter 0.90
JSON_Parse_Object_Array_Properties 4966.894437027032 ns/iter 4951.276387461505 ns/iter 1.00
JSON_Parse_Object_Object_Properties 5329.941417696212 ns/iter 4660.584039363441 ns/iter 1.14
JSON_Parse_Nested_Containers 41692.14882239647 ns/iter 37542.43852031258 ns/iter 1.11
JSON_From_String_Copy 21.650002922047157 ns/iter 35.807427479433116 ns/iter 0.60
JSON_From_String_Temporary 17.725796755896933 ns/iter 27.276465486994862 ns/iter 0.65
JSON_Number_To_Double 30.20622667387133 ns/iter 43.885472971749934 ns/iter 0.69
JSON_Object_At_Last_Key/8 3.450088665534238 ns/iter 4.546369757074229 ns/iter 0.76
JSON_Object_At_Last_Key/32 10.988370150210285 ns/iter 15.693483533332312 ns/iter 0.70
JSON_Object_At_Last_Key/128 50.702483002392285 ns/iter 72.68661172949298 ns/iter 0.70
JSON_Object_At_Last_Key/512 185.57768948493356 ns/iter 248.1569419970999 ns/iter 0.75
JSON_Fast_Hash_Helm_Chart_Lock 54.3387276845618 ns/iter 77.0523068369891 ns/iter 0.71
JSON_Equality_Helm_Chart_Lock 131.67516602633907 ns/iter 168.59165857063306 ns/iter 0.78
JSON_Divisible_By_Decimal 169.89140830395567 ns/iter 221.44083870659495 ns/iter 0.77
JSON_String_Equal/10 6.458451458516186 ns/iter 8.567960303099172 ns/iter 0.75
JSON_String_Equal/100 6.821028334935533 ns/iter 8.47260251374773 ns/iter 0.81
JSON_String_Equal_Small_By_Perfect_Hash/10 0.322396370418929 ns/iter 1.0539424574506333 ns/iter 0.31
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 3.489763674129708 ns/iter 4.169813174918657 ns/iter 0.84
JSON_String_Fast_Hash/10 2.33692862281807 ns/iter 2.9337398516025637 ns/iter 0.80
JSON_String_Fast_Hash/100 1.9424546473688886 ns/iter 2.44387267540013 ns/iter 0.79
JSON_String_Key_Hash/10 1.957103534327991 ns/iter 1.7440217517574597 ns/iter 1.12
JSON_String_Key_Hash/100 2.180083900452336 ns/iter 2.9350993316071565 ns/iter 0.74
JSON_Object_Defines_Miss_Same_Length 2.6975393816724482 ns/iter 3.527405903810227 ns/iter 0.76
JSON_Object_Defines_Miss_Too_Small 2.5614699625530455 ns/iter 3.43753697790247 ns/iter 0.75
JSON_Object_Defines_Miss_Too_Large 2.52175376998132 ns/iter 3.7294989534899816 ns/iter 0.68
Pointer_Object_Traverse 17.143606138895592 ns/iter 17.950352731973112 ns/iter 0.96
Pointer_Object_Try_Traverse 16.5216159738225 ns/iter 31.618883783783588 ns/iter 0.52
Pointer_Push_Back_Pointer_To_Weak_Pointer 146.72632397653746 ns/iter 201.72863042973836 ns/iter 0.73
Pointer_Walker_Schema_ISO_Language 1405520.3747493362 ns/iter 3662673.828124833 ns/iter 0.38
Pointer_Maybe_Tracked_Deeply_Nested/0 938518.3766756752 ns/iter 1233481.2783299126 ns/iter 0.76
Pointer_Maybe_Tracked_Deeply_Nested/1 960920.950600738 ns/iter 1816778.9757413173 ns/iter 0.53
Pointer_Position_Tracker_Get_Deeply_Nested 312.2142865201429 ns/iter 443.44476704999244 ns/iter 0.70
URITemplateRouter_Create 21516.808456039136 ns/iter 27618.533157551687 ns/iter 0.78
URITemplateRouter_Match 165.78798266269393 ns/iter 199.63260775631073 ns/iter 0.83
URITemplateRouter_Match_BasePath 185.39388158980148 ns/iter 275.22780699044137 ns/iter 0.67
URITemplateRouterView_Restore 9977.917080621797 ns/iter 15343.47799825582 ns/iter 0.65
URITemplateRouterView_Match 124.40446551190429 ns/iter 178.08126994433718 ns/iter 0.70
URITemplateRouterView_Match_BasePath 144.9665091293204 ns/iter 196.25405159193738 ns/iter 0.74
URITemplateRouterView_Arguments 513.1062857788714 ns/iter 521.090791000006 ns/iter 0.98
JSONL_Parse_Large 9874773.152776899 ns/iter 16251914.720931191 ns/iter 0.61
JSONL_Parse_Large_GZIP 11147728.530302588 ns/iter 17429979.18181676 ns/iter 0.64
HTML_Build_Table_100000 34563510.44999906 ns/iter 76493444.44444574 ns/iter 0.45
HTML_Render_Table_100000 1520944.2606382656 ns/iter 5991329.169999062 ns/iter 0.25
GZIP_Compress_ISO_Language_Set_3_Locations 24826602.67857081 ns/iter 31256797.61904805 ns/iter 0.79
GZIP_Decompress_ISO_Language_Set_3_Locations 3161949.427350402 ns/iter 7196824.561403222 ns/iter 0.44
GZIP_Compress_ISO_Language_Set_3_Schema 1538597.093676703 ns/iter 2038082.1917806563 ns/iter 0.75
GZIP_Decompress_ISO_Language_Set_3_Schema 249179.47457627664 ns/iter 387314.0422315155 ns/iter 0.64
JOSE_VerifySignature_RS256 20210.919861733393 ns/iter 30413.297375929822 ns/iter 0.66
JOSE_VerifySignature_ES512 1035143.5935199374 ns/iter 1169883.531496109 ns/iter 0.88

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

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 (linux/gcc)

Details
Benchmark suite Current: d02ad29 Previous: 4048ee6 Ratio
JOSE_VerifySignature_RS256 22032.54650674364 ns/iter 22266.785521425067 ns/iter 0.99
JOSE_VerifySignature_ES512 575344.7175698578 ns/iter 576110.6218905459 ns/iter 1.00
GZIP_Compress_ISO_Language_Set_3_Locations 36595942.68420781 ns/iter 36502170.47368187 ns/iter 1.00
GZIP_Decompress_ISO_Language_Set_3_Locations 4235490.066667174 ns/iter 4172983.544910227 ns/iter 1.01
GZIP_Compress_ISO_Language_Set_3_Schema 2040070.4606412197 ns/iter 2042755.2711371044 ns/iter 1.00
GZIP_Decompress_ISO_Language_Set_3_Schema 380071.06844106346 ns/iter 381099.7945504151 ns/iter 1.00
HTML_Build_Table_100000 60487945.66666516 ns/iter 60082884.583332926 ns/iter 1.01
HTML_Render_Table_100000 2011766.0868348468 ns/iter 1817148.2519480744 ns/iter 1.11
JSONL_Parse_Large 13350264.884617392 ns/iter 12919511.037037207 ns/iter 1.03
JSONL_Parse_Large_GZIP 14728914.854167385 ns/iter 14264042.571428537 ns/iter 1.03
URITemplateRouter_Create 31164.42112757582 ns/iter 31157.278334958362 ns/iter 1.00
URITemplateRouter_Match 158.28978845997062 ns/iter 158.57690975883406 ns/iter 1.00
URITemplateRouter_Match_BasePath 184.04411713633434 ns/iter 183.90132713122162 ns/iter 1.00
URITemplateRouterView_Restore 7989.316792826955 ns/iter 7666.921940513652 ns/iter 1.04
URITemplateRouterView_Match 124.80127628300846 ns/iter 125.10632868255603 ns/iter 1.00
URITemplateRouterView_Match_BasePath 145.14012645872998 ns/iter 145.2079380277629 ns/iter 1.00
URITemplateRouterView_Arguments 473.0948699515308 ns/iter 472.4667903697095 ns/iter 1.00
Pointer_Object_Traverse 30.330816685974803 ns/iter 30.27262940913709 ns/iter 1.00
Pointer_Object_Try_Traverse 23.067913662690927 ns/iter 23.081742546986558 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 150.9530514598938 ns/iter 159.74260848900968 ns/iter 0.94
Pointer_Walker_Schema_ISO_Language 1864770.7936509352 ns/iter 1860241.1759999692 ns/iter 1.00
Pointer_Maybe_Tracked_Deeply_Nested/0 1556829.0645879726 ns/iter 1528576.741794133 ns/iter 1.02
Pointer_Maybe_Tracked_Deeply_Nested/1 1837485.9052630058 ns/iter 1685897.5180721574 ns/iter 1.09
Pointer_Position_Tracker_Get_Deeply_Nested 607.8161065290661 ns/iter 471.11029435043133 ns/iter 1.29
JSON_Array_Of_Objects_Unique 367.26118660366893 ns/iter 363.1519166323676 ns/iter 1.01
JSON_Parse_1 7689.045440111538 ns/iter 7766.661414441249 ns/iter 0.99
JSON_Parse_Real 6560.560763725323 ns/iter 6585.673161078797 ns/iter 1.00
JSON_Parse_Decimal 11074.218391897562 ns/iter 11153.286169637333 ns/iter 0.99
JSON_Parse_Schema_ISO_Language 5113583.788321081 ns/iter 5132335.963235799 ns/iter 1.00
JSON_Parse_Integer 4758.833000987207 ns/iter 4784.349710332022 ns/iter 0.99
JSON_Parse_String_NonSSO_Plain 8465.927818661683 ns/iter 8343.85850620991 ns/iter 1.01
JSON_Parse_String_SSO_Plain 3928.4991136093727 ns/iter 3906.0628943088577 ns/iter 1.01
JSON_Parse_String_Escape_Heavy 20636.244031987913 ns/iter 20647.231553510315 ns/iter 1.00
JSON_Parse_Object_Short_Keys 14102.00806516815 ns/iter 14092.17769459986 ns/iter 1.00
JSON_Parse_Object_Scalar_Properties 5938.672144101279 ns/iter 5916.8067897439705 ns/iter 1.00
JSON_Parse_Object_Array_Properties 8770.914085688288 ns/iter 8808.168937671458 ns/iter 1.00
JSON_Parse_Object_Object_Properties 9333.736603642528 ns/iter 9437.192196804392 ns/iter 0.99
JSON_Parse_Nested_Containers 71446.89147365942 ns/iter 71672.41068499091 ns/iter 1.00
JSON_From_String_Copy 18.22936602984476 ns/iter 18.243736270635292 ns/iter 1.00
JSON_From_String_Temporary 15.189544893509362 ns/iter 15.202914494552747 ns/iter 1.00
JSON_Number_To_Double 20.57865199636867 ns/iter 20.587348763200122 ns/iter 1.00
JSON_Object_At_Last_Key/8 8.106229108393562 ns/iter 8.11891364658947 ns/iter 1.00
JSON_Object_At_Last_Key/32 31.54236066930132 ns/iter 31.48866108491314 ns/iter 1.00
JSON_Object_At_Last_Key/128 126.8718093024453 ns/iter 126.94187191797639 ns/iter 1.00
JSON_Object_At_Last_Key/512 516.2317709600449 ns/iter 516.9219301530949 ns/iter 1.00
JSON_Fast_Hash_Helm_Chart_Lock 54.58761556414376 ns/iter 59.997615173174886 ns/iter 0.91
JSON_Equality_Helm_Chart_Lock 159.60621700606077 ns/iter 151.14682996024283 ns/iter 1.06
JSON_Divisible_By_Decimal 238.89004347821083 ns/iter 241.57760078819462 ns/iter 0.99
JSON_String_Equal/10 5.704734918886388 ns/iter 5.691205048614837 ns/iter 1.00
JSON_String_Equal/100 6.308025545184635 ns/iter 6.333820130918482 ns/iter 1.00
JSON_String_Equal_Small_By_Perfect_Hash/10 0.6240672838497 ns/iter 0.6237147481331986 ns/iter 1.00
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 25.194341119969465 ns/iter 25.20152099029248 ns/iter 1.00
JSON_String_Fast_Hash/10 1.2450434994701542 ns/iter 1.2540496443594888 ns/iter 0.99
JSON_String_Fast_Hash/100 1.2454624347756824 ns/iter 1.2465990100324398 ns/iter 1.00
JSON_String_Key_Hash/10 1.2464666873232255 ns/iter 1.2474550631484178 ns/iter 1.00
JSON_String_Key_Hash/100 12.446174339317967 ns/iter 12.446754854496948 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 3.1139472286681453 ns/iter 3.1172555919429565 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Small 3.1160319677569346 ns/iter 3.1160318867042527 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 3.428037507416348 ns/iter 3.4245014140078576 ns/iter 1.00
Regex_Lower_S_Or_Upper_S_Asterisk 0.6233893364898438 ns/iter 0.6230950706725208 ns/iter 1.00
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 0.9347816672175308 ns/iter 0.9370915128129015 ns/iter 1.00
Regex_Period_Asterisk 0.9344431509712148 ns/iter 0.9357735823534248 ns/iter 1.00
Regex_Group_Period_Asterisk_Group 0.6232740588097189 ns/iter 0.6254471710922188 ns/iter 1.00
Regex_Period_Plus 0.6234830073031877 ns/iter 0.6233240235603942 ns/iter 1.00
Regex_Period 0.934796452853025 ns/iter 0.9433402804877113 ns/iter 0.99
Regex_Caret_Period_Plus_Dollar 0.9343711719934782 ns/iter 0.9350525644705054 ns/iter 1.00
Regex_Caret_Group_Period_Plus_Group_Dollar 0.62545759785002 ns/iter 0.6236302806623176 ns/iter 1.00
Regex_Caret_Period_Asterisk_Dollar 0.6233596158832166 ns/iter 0.6247574684825675 ns/iter 1.00
Regex_Caret_Group_Period_Asterisk_Group_Dollar 0.9347208592010603 ns/iter 0.9348090011231459 ns/iter 1.00
Regex_Caret_X_Hyphen 4.052348242728176 ns/iter 4.050964443894756 ns/iter 1.00
Regex_Period_Md_Dollar 39.12776640277942 ns/iter 30.28685260890108 ns/iter 1.29
Regex_Caret_Slash_Period_Asterisk 4.358589119385683 ns/iter 4.371911386331653 ns/iter 1.00
Regex_Caret_Period_Range_Dollar 1.2457048961796864 ns/iter 1.2460128871563463 ns/iter 1.00
Regex_Nested_Backtrack 44.32299196439203 ns/iter 37.16566376770156 ns/iter 1.19

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: d02ad29 Previous: 4048ee6 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 3.165995797688748 ns/iter 2.4623836167799307 ns/iter 1.29
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 3.1655777642470677 ns/iter 2.455570197285836 ns/iter 1.29
Regex_Period_Asterisk 2.8128418209556503 ns/iter 2.1873285130017845 ns/iter 1.29
Regex_Group_Period_Asterisk_Group 2.813136811298752 ns/iter 2.1842493336633937 ns/iter 1.29
Regex_Period_Plus 4.577688443086096 ns/iter 3.5789114712635013 ns/iter 1.28
Regex_Period 4.577420646429131 ns/iter 3.547939345927602 ns/iter 1.29
Regex_Caret_Period_Plus_Dollar 4.23230665568463 ns/iter 3.277112469476214 ns/iter 1.29
Regex_Caret_Group_Period_Plus_Group_Dollar 4.231479685478082 ns/iter 3.2851914744906487 ns/iter 1.29
Regex_Caret_Period_Asterisk_Dollar 3.5388476000754867 ns/iter 2.738128909233881 ns/iter 1.29
Regex_Caret_Group_Period_Asterisk_Group_Dollar 3.5393907547685246 ns/iter 2.735068115803646 ns/iter 1.29
Regex_Caret_X_Hyphen 7.399895754503337 ns/iter 5.730939787705172 ns/iter 1.29
Regex_Period_Md_Dollar 26.59741548638188 ns/iter 21.669259892521616 ns/iter 1.23
Regex_Caret_Slash_Period_Asterisk 8.098419586535682 ns/iter 4.908440290759753 ns/iter 1.65
Regex_Caret_Period_Range_Dollar 4.576710923779264 ns/iter 3.5486183550476857 ns/iter 1.29
Regex_Nested_Backtrack 37.66086984920547 ns/iter 29.27937726518043 ns/iter 1.29
JSON_Array_Of_Objects_Unique 475.71166061479994 ns/iter 351.0338115952374 ns/iter 1.36
JSON_Parse_1 4896.798937716073 ns/iter 3753.6397066695254 ns/iter 1.30
JSON_Parse_Real 5282.851997167955 ns/iter 4076.5959646239576 ns/iter 1.30
JSON_Parse_Decimal 7649.616229474347 ns/iter 5943.528592641305 ns/iter 1.29
JSON_Parse_Schema_ISO_Language 3647539.3230772074 ns/iter 2922277.058577032 ns/iter 1.25
JSON_Parse_Integer 3944.539906607874 ns/iter 3151.3000301161605 ns/iter 1.25
JSON_Parse_String_NonSSO_Plain 5166.607323935458 ns/iter 4045.9456208796682 ns/iter 1.28
JSON_Parse_String_SSO_Plain 2822.800064485171 ns/iter 2294.6764746311183 ns/iter 1.23
JSON_Parse_String_Escape_Heavy 16018.455712335224 ns/iter 11887.258514140853 ns/iter 1.35
JSON_Parse_Object_Short_Keys 8082.35572343046 ns/iter 6500.323796909247 ns/iter 1.24
JSON_Parse_Object_Scalar_Properties 4096.206906826646 ns/iter 3286.6911534580427 ns/iter 1.25
JSON_Parse_Object_Array_Properties 5947.824779439962 ns/iter 4505.8314955162405 ns/iter 1.32
JSON_Parse_Object_Object_Properties 5908.493198941012 ns/iter 4455.937166345655 ns/iter 1.33
JSON_Parse_Nested_Containers 45603.30531754845 ns/iter 35710.82923343752 ns/iter 1.28
JSON_From_String_Copy 23.227724981765697 ns/iter 18.02914126855002 ns/iter 1.29
JSON_From_String_Temporary 21.204795339317748 ns/iter 16.875714391457414 ns/iter 1.26
JSON_Number_To_Double 22.52910515078453 ns/iter 17.46779178259951 ns/iter 1.29
JSON_Object_At_Last_Key/8 5.979968362989374 ns/iter 4.63492657307964 ns/iter 1.29
JSON_Object_At_Last_Key/32 24.26850131674097 ns/iter 18.648144873878557 ns/iter 1.30
JSON_Object_At_Last_Key/128 91.79697098935235 ns/iter 70.96396696740419 ns/iter 1.29
JSON_Object_At_Last_Key/512 379.81275230615546 ns/iter 293.8086672885385 ns/iter 1.29
JSON_Fast_Hash_Helm_Chart_Lock 79.4213212028984 ns/iter 61.44177280191249 ns/iter 1.29
JSON_Equality_Helm_Chart_Lock 157.40486162242587 ns/iter 117.76855612957701 ns/iter 1.34
JSON_Divisible_By_Decimal 254.64662125135197 ns/iter 200.0652321709456 ns/iter 1.27
JSON_String_Equal/10 5.979882199041689 ns/iter 4.63598521169871 ns/iter 1.29
JSON_String_Equal/100 6.684667765329317 ns/iter 5.454255020758393 ns/iter 1.23
JSON_String_Equal_Small_By_Perfect_Hash/10 1.0542406873164156 ns/iter 0.8178083443709027 ns/iter 1.29
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 12.342994730211178 ns/iter 9.572701536444955 ns/iter 1.29
JSON_String_Fast_Hash/10 2.8160851151940753 ns/iter 2.1822281411108144 ns/iter 1.29
JSON_String_Fast_Hash/100 2.8618433626394713 ns/iter 2.1828209473239144 ns/iter 1.31
JSON_String_Key_Hash/10 2.8133830939663 ns/iter 2.182332388204075 ns/iter 1.29
JSON_String_Key_Hash/100 7.732804413296127 ns/iter 6.2704605323970615 ns/iter 1.23
JSON_Object_Defines_Miss_Same_Length 4.2209754403398625 ns/iter 3.272641473856714 ns/iter 1.29
JSON_Object_Defines_Miss_Too_Small 2.96190679004101 ns/iter 2.280921330067922 ns/iter 1.30
JSON_Object_Defines_Miss_Too_Large 2.9030438173340594 ns/iter 2.2784922474293974 ns/iter 1.27
Pointer_Object_Traverse 25.516452261018827 ns/iter 19.76965873221761 ns/iter 1.29
Pointer_Object_Try_Traverse 30.6252562764434 ns/iter 23.750294474539526 ns/iter 1.29
Pointer_Push_Back_Pointer_To_Weak_Pointer 188.6296109995736 ns/iter 151.00104285397012 ns/iter 1.25
Pointer_Walker_Schema_ISO_Language 1782222.346835486 ns/iter 1417999.6354380203 ns/iter 1.26
Pointer_Maybe_Tracked_Deeply_Nested/0 1278391.0600001037 ns/iter 997758.9235208388 ns/iter 1.28
Pointer_Maybe_Tracked_Deeply_Nested/1 1676525.0599522549 ns/iter 1269285.7970747917 ns/iter 1.32
Pointer_Position_Tracker_Get_Deeply_Nested 705.263070442714 ns/iter 549.3330363318701 ns/iter 1.28
URITemplateRouter_Create 29617.438468629316 ns/iter 22869.17131187155 ns/iter 1.30
URITemplateRouter_Match 177.55526057454816 ns/iter 129.1259841308235 ns/iter 1.38
URITemplateRouter_Match_BasePath 211.4439199119908 ns/iter 155.42273781123487 ns/iter 1.36
URITemplateRouterView_Restore 8748.106379367739 ns/iter 6925.852917712905 ns/iter 1.26
URITemplateRouterView_Match 144.89189732988953 ns/iter 107.11027458701766 ns/iter 1.35
URITemplateRouterView_Match_BasePath 164.2285927521255 ns/iter 120.59080342379262 ns/iter 1.36
URITemplateRouterView_Arguments 449.49470195864546 ns/iter 347.34742936015857 ns/iter 1.29
JSONL_Parse_Large 9134496.285714231 ns/iter 7452577.084210901 ns/iter 1.23
JSONL_Parse_Large_GZIP 10791723.800000979 ns/iter 8639072.382715154 ns/iter 1.25
HTML_Build_Table_100000 73586694.6666748 ns/iter 58629004.91666778 ns/iter 1.26
HTML_Render_Table_100000 5081168.313868678 ns/iter 4511869.1401269175 ns/iter 1.13
GZIP_Compress_ISO_Language_Set_3_Locations 35484735.09999894 ns/iter 27091129.53846216 ns/iter 1.31
GZIP_Decompress_ISO_Language_Set_3_Locations 4285521.607362505 ns/iter 2955161.086065271 ns/iter 1.45
GZIP_Compress_ISO_Language_Set_3_Schema 2084815.27678557 ns/iter 1604553.0640734613 ns/iter 1.30
GZIP_Decompress_ISO_Language_Set_3_Schema 276908.30063290015 ns/iter 196660.5620438416 ns/iter 1.41
JOSE_VerifySignature_RS256 63991.565531761255 ns/iter 49436.62426642237 ns/iter 1.29
JOSE_VerifySignature_ES512 2666380.022813898 ns/iter 2163396.990740525 ns/iter 1.23

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

@jviotti jviotti merged commit 79d46c3 into main Jul 1, 2026
12 checks passed
@jviotti jviotti deleted the e-mail-uts branch July 1, 2026 19:10

@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: d02ad29 Previous: 4048ee6 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 5.131217857142799 ns/iter 5.121755999998641 ns/iter 1.00
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 5.028980536834873 ns/iter 4.957370535716369 ns/iter 1.01
Regex_Period_Asterisk 5.0144330000011905 ns/iter 4.963467000002311 ns/iter 1.01
Regex_Group_Period_Asterisk_Group 5.031914999999572 ns/iter 4.954514800213069 ns/iter 1.02
Regex_Period_Plus 4.967516000001524 ns/iter 4.609099452968816 ns/iter 1.08
Regex_Period 4.910156000000825 ns/iter 4.604308269203911 ns/iter 1.07
Regex_Caret_Period_Plus_Dollar 5.115150999999969 ns/iter 4.603885054919539 ns/iter 1.11
Regex_Caret_Group_Period_Plus_Group_Dollar 4.995926000001418 ns/iter 4.6072908369006536 ns/iter 1.08
Regex_Caret_Period_Asterisk_Dollar 5.236571999998887 ns/iter 4.953888000000006 ns/iter 1.06
Regex_Caret_Group_Period_Asterisk_Group_Dollar 5.275767000002816 ns/iter 4.975880357144595 ns/iter 1.06
Regex_Caret_X_Hyphen 10.461591917585249 ns/iter 7.849805803569357 ns/iter 1.33
Regex_Period_Md_Dollar 60.062378435981515 ns/iter 61.95933035714672 ns/iter 0.97
Regex_Caret_Slash_Period_Asterisk 9.264898437498305 ns/iter 7.443026785714275 ns/iter 1.24
Regex_Caret_Period_Range_Dollar 6.554373999997551 ns/iter 5.311798999996427 ns/iter 1.23
Regex_Nested_Backtrack 53.89760714288221 ns/iter 67.31427678573709 ns/iter 0.80
JSON_Array_Of_Objects_Unique 497.50325396279874 ns/iter 512.1602999997776 ns/iter 0.97
JSON_Parse_1 8767.229910715863 ns/iter 9674.81082673568 ns/iter 0.91
JSON_Parse_Real 17492.27293933176 ns/iter 17749.05043794887 ns/iter 0.99
JSON_Parse_Decimal 11785.785714282936 ns/iter 11369.403125002009 ns/iter 1.04
JSON_Parse_Schema_ISO_Language 7649030.000003323 ns/iter 8140081.111110299 ns/iter 0.94
JSON_Parse_Integer 6081.4669642833705 ns/iter 5842.1044642825245 ns/iter 1.04
JSON_Parse_String_NonSSO_Plain 8188.7600446454 ns/iter 7697.437500000197 ns/iter 1.06
JSON_Parse_String_SSO_Plain 3672.5730684921873 ns/iter 3515.449625803245 ns/iter 1.04
JSON_Parse_String_Escape_Heavy 22063.97026817934 ns/iter 21222.63072369481 ns/iter 1.04
JSON_Parse_Object_Short_Keys 13137.726785714674 ns/iter 13001.49821428574 ns/iter 1.01
JSON_Parse_Object_Scalar_Properties 6772.446428572363 ns/iter 6676.908482141641 ns/iter 1.01
JSON_Parse_Object_Array_Properties 11564.168749998771 ns/iter 11420.253927434142 ns/iter 1.01
JSON_Parse_Object_Object_Properties 11785.156249999318 ns/iter 11622.071874995756 ns/iter 1.01
JSON_Parse_Nested_Containers 81376.39508924671 ns/iter 82517.53046740743 ns/iter 0.99
JSON_From_String_Copy 63.98560714286207 ns/iter 62.275866071429064 ns/iter 1.03
JSON_From_String_Temporary 57.96127999997225 ns/iter 85.4197098214168 ns/iter 0.68
JSON_Number_To_Double 120.5346785714515 ns/iter 143.87578125000084 ns/iter 0.84
JSON_Object_At_Last_Key/8 7.232357142856114 ns/iter 7.443683035712111 ns/iter 0.97
JSON_Object_At_Last_Key/32 23.56799638875135 ns/iter 24.762692857133775 ns/iter 0.95
JSON_Object_At_Last_Key/128 91.70381696428365 ns/iter 97.37203124998928 ns/iter 0.94
JSON_Object_At_Last_Key/512 423.1205616482133 ns/iter 436.4557499999933 ns/iter 0.97
JSON_Fast_Hash_Helm_Chart_Lock 66.61186607142814 ns/iter 65.15204241068773 ns/iter 1.02
JSON_Equality_Helm_Chart_Lock 299.7717031505815 ns/iter 291.6297799520267 ns/iter 1.03
JSON_Divisible_By_Decimal 300.9649708743888 ns/iter 372.7357905828616 ns/iter 0.81
JSON_String_Equal/10 15.093548370117428 ns/iter 14.16934078496376 ns/iter 1.07
JSON_String_Equal/100 16.349991071434392 ns/iter 16.16907142856608 ns/iter 1.01
JSON_String_Equal_Small_By_Perfect_Hash/10 2.5089357142860536 ns/iter 2.17058593749897 ns/iter 1.16
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 15.011694575837677 ns/iter 14.423816964281857 ns/iter 1.04
JSON_String_Fast_Hash/10 4.711325233729636 ns/iter 4.603059385276086 ns/iter 1.02
JSON_String_Fast_Hash/100 4.696432376554595 ns/iter 4.623147331749482 ns/iter 1.02
JSON_String_Key_Hash/10 5.334695000001375 ns/iter 4.958074999999553 ns/iter 1.08
JSON_String_Key_Hash/100 11.882708928575473 ns/iter 10.940459374999989 ns/iter 1.09
JSON_Object_Defines_Miss_Same_Length 4.082950334822755 ns/iter 4.26521952934497 ns/iter 0.96
JSON_Object_Defines_Miss_Too_Small 5.027451999999357 ns/iter 4.983237499999404 ns/iter 1.01
JSON_Object_Defines_Miss_Too_Large 4.39668749999953 ns/iter 4.251575489173158 ns/iter 1.03
Pointer_Object_Traverse 70.14650892857941 ns/iter 69.09117187500361 ns/iter 1.02
Pointer_Object_Try_Traverse 71.0547544642789 ns/iter 68.10769642860188 ns/iter 1.04
Pointer_Push_Back_Pointer_To_Weak_Pointer 160.3486830357984 ns/iter 166.3893504278405 ns/iter 0.96
Pointer_Walker_Schema_ISO_Language 8567662.22222076 ns/iter 9286326.66666696 ns/iter 0.92
Pointer_Maybe_Tracked_Deeply_Nested/0 2434454.6184740653 ns/iter 2446937.349397931 ns/iter 0.99
Pointer_Maybe_Tracked_Deeply_Nested/1 3757940.000000067 ns/iter 3646998.3957227124 ns/iter 1.03
Pointer_Position_Tracker_Get_Deeply_Nested 515.3796727843562 ns/iter 545.1445312501286 ns/iter 0.95
URITemplateRouter_Create 40972.60170622369 ns/iter 39866.8736579223 ns/iter 1.03
URITemplateRouter_Match 232.59546729489668 ns/iter 222.16709375001642 ns/iter 1.05
URITemplateRouter_Match_BasePath 271.20738710756297 ns/iter 247.73060714291466 ns/iter 1.09
URITemplateRouterView_Restore 32254.81648150141 ns/iter 24308.86932065208 ns/iter 1.33
URITemplateRouterView_Match 179.4923463831604 ns/iter 173.21470356344634 ns/iter 1.04
URITemplateRouterView_Match_BasePath 204.49493750007264 ns/iter 197.0954372406989 ns/iter 1.04
URITemplateRouterView_Arguments 534.226071428634 ns/iter 587.267499999809 ns/iter 0.91
JSONL_Parse_Large 32488628.571432598 ns/iter 33253123.80952926 ns/iter 0.98
JSONL_Parse_Large_GZIP 33075876.19047765 ns/iter 33154231.8181784 ns/iter 1.00
HTML_Build_Table_100000 90329777.77774756 ns/iter 91672042.85716124 ns/iter 0.99
HTML_Render_Table_100000 8207694.666665096 ns/iter 8367114.444445178 ns/iter 0.98
GZIP_Compress_ISO_Language_Set_3_Locations 36309899.99999201 ns/iter 37802410.526302606 ns/iter 0.96
GZIP_Decompress_ISO_Language_Set_3_Locations 10110209.333336873 ns/iter 10587943.750003604 ns/iter 0.95
GZIP_Compress_ISO_Language_Set_3_Schema 2111747.8124992317 ns/iter 2287645.8193988646 ns/iter 0.92
GZIP_Decompress_ISO_Language_Set_3_Schema 619657.142857071 ns/iter 598881.517857259 ns/iter 1.03
JOSE_VerifySignature_RS256 21257.660611686028 ns/iter 23758.592857153155 ns/iter 0.89
JOSE_VerifySignature_ES512 1536041.3654618978 ns/iter 1518441.5178574845 ns/iter 1.01

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.

1 participant