Skip to content

Add IRI support to URI Template expansion - #2700

Merged
jviotti merged 2 commits into
mainfrom
uritemplate-iri
Aug 1, 2026
Merged

Add IRI support to URI Template expansion#2700
jviotti merged 2 commits into
mainfrom
uritemplate-iri

Conversation

@jviotti

@jviotti jviotti commented Aug 1, 2026

Copy link
Copy Markdown
Member

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

Review in cubic

jviotti added 2 commits July 31, 2026 22:00
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
@augmentcode

augmentcode Bot commented Aug 1, 2026

Copy link
Copy Markdown
🤖 Augment PR Summary

Summary: This PR extends URI Template expansion to optionally emit IRIs by allowing internationalized (non-ASCII) bytes in variable values to pass through unencoded.

Changes:

  • Added URITemplateExpansionMode (URI vs IRI) to control the encoding alphabet during expansion.
  • Extended URITemplate::expand (callback and container overloads) with a new mode parameter defaulting to URI.
  • Threaded the chosen mode through expression expansion so all variable-value encoding respects the selected alphabet.
  • Updated percent-encoding helpers to allow bytes >= 0x80 to pass through when in IRI mode, while keeping existing reserved/unreserved and %XX handling intact.
  • Split expansion tests into URI-specific vs IRI-specific suites; added comprehensive IRI-mode expansion coverage.
  • Adjusted the uritemplate test CMake list to build the new/renamed test files.

Technical Notes: IRI mode is implemented as an RFC 6570 extension: it does not decode existing percent-encoded triplets, and it does not validate the resulting output against RFC 3987 (left to the caller).

🤖 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.

Review completed against the latest diff

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

Re-trigger cubic

Comment thread src/core/uritemplate/include/sourcemeta/core/uritemplate.h

@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: a52cdbc Previous: b25f900 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 1.6820770802897862 ns/iter 2.009771309059989 ns/iter 0.84
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.5924228633889166 ns/iter 1.9830222722362039 ns/iter 0.80
Regex_Period_Asterisk 1.659399724246138 ns/iter 2.101184190710529 ns/iter 0.79
Regex_Group_Period_Asterisk_Group 1.8726312240232976 ns/iter 1.9583335489305997 ns/iter 0.96
Regex_Period_Plus 2.1681433351150847 ns/iter 2.311302722434423 ns/iter 0.94
Regex_Period 2.0602394667053057 ns/iter 2.5356648161276425 ns/iter 0.81
Regex_Caret_Period_Plus_Dollar 2.0263828677344717 ns/iter 2.2325316520749046 ns/iter 0.91
Regex_Caret_Group_Period_Plus_Group_Dollar 2.1349762041916627 ns/iter 2.388944806190776 ns/iter 0.89
Regex_Caret_Period_Asterisk_Dollar 1.6762378054942602 ns/iter 1.8836724426189262 ns/iter 0.89
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.6843387917670707 ns/iter 2.0887746607732467 ns/iter 0.81
Regex_Caret_X_Hyphen 5.9337572662692235 ns/iter 6.747433688797714 ns/iter 0.88
Regex_Period_Md_Dollar 16.128630802331156 ns/iter 19.456151337785492 ns/iter 0.83
Regex_Caret_Slash_Period_Asterisk 5.784346249999999 ns/iter 6.454860670852113 ns/iter 0.90
Regex_Caret_Period_Range_Dollar 2.7046105342522697 ns/iter 2.613944384071358 ns/iter 1.03
Regex_Nested_Backtrack 27.51969563613432 ns/iter 29.62837348474804 ns/iter 0.93
JSON_Array_Of_Objects_Unique 350.8621571427488 ns/iter 364.1990071226491 ns/iter 0.96
JSON_Parse_1 6711.846739251723 ns/iter 6722.0109036872545 ns/iter 1.00
JSON_Parse_Real 6835.125187157685 ns/iter 6762.482896253351 ns/iter 1.01
JSON_Parse_Decimal 7743.030848473965 ns/iter 7558.011300165561 ns/iter 1.02
JSON_Parse_Schema_ISO_Language 3799952.835164491 ns/iter 3928218.8100557947 ns/iter 0.97
JSON_Parse_Integer 4598.204159392698 ns/iter 5441.140690817632 ns/iter 0.85
JSON_Parse_String_NonSSO_Plain 7245.110794272244 ns/iter 8040.783093293591 ns/iter 0.90
JSON_Parse_String_SSO_Plain 2784.4993489119142 ns/iter 2882.1295242184874 ns/iter 0.97
JSON_Parse_String_Escape_Heavy 20802.22733217164 ns/iter 24188.03911894714 ns/iter 0.86
JSON_Parse_Object_Short_Keys 9046.77114755298 ns/iter 8331.041947617601 ns/iter 1.09
JSON_Parse_Object_Scalar_Properties 4240.131033407544 ns/iter 4505.166170392402 ns/iter 0.94
JSON_Parse_Object_Array_Properties 6789.718331168572 ns/iter 7250.633212071243 ns/iter 0.94
JSON_Parse_Object_Object_Properties 7240.5489474875885 ns/iter 7486.66555305254 ns/iter 0.97
JSON_Parse_Nested_Containers 66257.29405033258 ns/iter 61268.93411190549 ns/iter 1.08
JSON_From_String_Copy 22.827565363616515 ns/iter 23.84795981199957 ns/iter 0.96
JSON_From_String_Temporary 21.24430393357809 ns/iter 20.413143685734997 ns/iter 1.04
JSON_Number_To_Double 34.520202925344435 ns/iter 33.2200254522104 ns/iter 1.04
JSON_Object_At_Last_Key/8 4.079706342550934 ns/iter 4.406180659275608 ns/iter 0.93
JSON_Object_At_Last_Key/32 11.967202796912021 ns/iter 12.46077249968455 ns/iter 0.96
JSON_Object_At_Last_Key/128 53.9204971558289 ns/iter 57.8877469881098 ns/iter 0.93
JSON_Object_At_Last_Key/512 187.80409991769093 ns/iter 236.40489649633153 ns/iter 0.79
JSON_Fast_Hash_Helm_Chart_Lock 64.57926544774853 ns/iter 65.02746878226515 ns/iter 0.99
JSON_Equality_Helm_Chart_Lock 155.25744987487255 ns/iter 163.6994213334219 ns/iter 0.95
JSON_Divisible_By_Decimal 176.48158715035765 ns/iter 192.72419487565801 ns/iter 0.92
JSON_String_Equal/10 7.145774138731198 ns/iter 8.338682328763005 ns/iter 0.86
JSON_String_Equal/100 7.27665005891714 ns/iter 8.172161459615845 ns/iter 0.89
JSON_String_Equal_Small_By_Perfect_Hash/10 0.3482979349725011 ns/iter 0.39552298379597695 ns/iter 0.88
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 3.1171331317507733 ns/iter 4.300814340014143 ns/iter 0.72
JSON_String_Fast_Hash/10 2.410227698493325 ns/iter 2.6949806000232095 ns/iter 0.89
JSON_String_Fast_Hash/100 2.573152313001742 ns/iter 2.5622471183346813 ns/iter 1.00
JSON_String_Key_Hash/10 1.8180123361938734 ns/iter 1.902918170264376 ns/iter 0.96
JSON_String_Key_Hash/100 2.152027033586804 ns/iter 2.3125955860786513 ns/iter 0.93
JSON_Object_Defines_Miss_Same_Length 2.7208303223642276 ns/iter 2.8418242061007017 ns/iter 0.96
JSON_Object_Defines_Miss_Too_Small 3.256158534206848 ns/iter 2.8480956538871003 ns/iter 1.14
JSON_Object_Defines_Miss_Too_Large 3.1698252803021423 ns/iter 2.8349460523216816 ns/iter 1.12
Pointer_Object_Traverse 24.87794816895379 ns/iter 27.8519292434511 ns/iter 0.89
Pointer_Object_Try_Traverse 23.0147253040515 ns/iter 25.356448682322977 ns/iter 0.91
Pointer_Push_Back_Pointer_To_Weak_Pointer 180.37878552463474 ns/iter 192.5899814164332 ns/iter 0.94
Pointer_Walker_Schema_ISO_Language 2477061.471830746 ns/iter 3111466.2411070135 ns/iter 0.80
Pointer_Maybe_Tracked_Deeply_Nested/0 1206083.470297077 ns/iter 1320838.2699027972 ns/iter 0.91
Pointer_Maybe_Tracked_Deeply_Nested/1 1018977.4279210179 ns/iter 1428077.6928675552 ns/iter 0.71
Pointer_Position_Tracker_Get_Deeply_Nested 365.2665894067217 ns/iter 341.5108204924912 ns/iter 1.07
JSONPath_Descendant_Filter_Nested 1257.4253479806239 ns/iter 1391.2514039135692 ns/iter 0.90
URITemplateRouter_Create 26506.43864550217 ns/iter 27635.31311105442 ns/iter 0.96
URITemplateRouter_Match 187.03567914160269 ns/iter 194.77924004391411 ns/iter 0.96
URITemplateRouter_Match_BasePath 242.63753865850597 ns/iter 229.1388891069703 ns/iter 1.06
URITemplateRouterView_Restore 12385.956125580215 ns/iter 11468.718476807047 ns/iter 1.08
URITemplateRouterView_Match 159.92065837980127 ns/iter 142.89856571567722 ns/iter 1.12
URITemplateRouterView_Match_BasePath 166.77333354005185 ns/iter 166.41900978439503 ns/iter 1.00
URITemplateRouterView_Arguments 579.6790463001994 ns/iter 601.7838199499539 ns/iter 0.96
JSONL_Parse_Large 11941148.30508686 ns/iter 12065280.357142325 ns/iter 0.99
JSONL_Parse_Large_GZIP 12837522.792448718 ns/iter 12908501.584905816 ns/iter 0.99
JSONLD_Catalog_Annotation_List_Populate 1059165.9849932366 ns/iter 1018690.1408450896 ns/iter 1.04
JSONLD_Catalog_Materialize 5248605.603447952 ns/iter 6211276.821783157 ns/iter 0.85
HTML_Build_Table_100000 48556369.75000266 ns/iter 44403988.14285475 ns/iter 1.09
HTML_Render_Table_100000 2310872.0414194935 ns/iter 1931499.24742268 ns/iter 1.20
GZIP_Compress_ISO_Language_Set_3_Locations 31471291.652174525 ns/iter 29295710.227276314 ns/iter 1.07
GZIP_Decompress_ISO_Language_Set_3_Locations 4554022.946523185 ns/iter 3339268.679803192 ns/iter 1.36
GZIP_Compress_ISO_Language_Set_3_Schema 2129477.152492897 ns/iter 1745089.2719298003 ns/iter 1.22
GZIP_Decompress_ISO_Language_Set_3_Schema 319339.8257280933 ns/iter 281720.91709433985 ns/iter 1.13
JOSE_VerifySignature_RS256 31822.92068177761 ns/iter 26395.068189973503 ns/iter 1.21
JOSE_VerifySignature_ES512 1196372.7786885519 ns/iter 1177968.7850162857 ns/iter 1.02

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: a52cdbc Previous: b25f900 Ratio
JOSE_VerifySignature_RS256 24378.706205729388 ns/iter 22123.2569538939 ns/iter 1.10
JOSE_VerifySignature_ES512 642213.837763439 ns/iter 575724.6677631924 ns/iter 1.12
GZIP_Compress_ISO_Language_Set_3_Locations 39383019.0555554 ns/iter 36552298.73684101 ns/iter 1.08
GZIP_Decompress_ISO_Language_Set_3_Locations 4035182.439306114 ns/iter 4228986.832335541 ns/iter 0.95
GZIP_Compress_ISO_Language_Set_3_Schema 2280545.879478887 ns/iter 2035493.5393587775 ns/iter 1.12
GZIP_Decompress_ISO_Language_Set_3_Schema 306672.49819004827 ns/iter 380708.34477121633 ns/iter 0.81
HTML_Build_Table_100000 67301496.30000141 ns/iter 61222044.09089963 ns/iter 1.10
HTML_Render_Table_100000 2008286.5242166475 ns/iter 1785362.8925831916 ns/iter 1.12
JSONLD_Catalog_Annotation_List_Populate 1317048.4690430912 ns/iter 1273485.513711238 ns/iter 1.03
JSONLD_Catalog_Materialize 6955569.589999868 ns/iter 7066978.599999629 ns/iter 0.98
JSONL_Parse_Large 12677157.400001058 ns/iter 13751225.843135199 ns/iter 0.92
JSONL_Parse_Large_GZIP 14226219.775509333 ns/iter 15091075.826087093 ns/iter 0.94
URITemplateRouter_Create 29370.767472104646 ns/iter 29889.875793329633 ns/iter 0.98
URITemplateRouter_Match 154.57295066632832 ns/iter 157.8239561241128 ns/iter 0.98
URITemplateRouter_Match_BasePath 183.8768705067036 ns/iter 179.97829008643717 ns/iter 1.02
URITemplateRouterView_Restore 9823.697113070462 ns/iter 8539.523692594432 ns/iter 1.15
URITemplateRouterView_Match 124.27889992930339 ns/iter 122.04302592724987 ns/iter 1.02
URITemplateRouterView_Match_BasePath 140.76331363451692 ns/iter 141.4281106644125 ns/iter 1.00
URITemplateRouterView_Arguments 469.2867548549903 ns/iter 474.689045809657 ns/iter 0.99
JSONPath_Descendant_Filter_Nested 1755.903104907512 ns/iter 1730.5772186084719 ns/iter 1.01
Pointer_Object_Traverse 32.570171236829644 ns/iter 30.125354558129963 ns/iter 1.08
Pointer_Object_Try_Traverse 26.08678882154214 ns/iter 25.385372339566448 ns/iter 1.03
Pointer_Push_Back_Pointer_To_Weak_Pointer 154.75023842752597 ns/iter 162.46034809378966 ns/iter 0.95
Pointer_Walker_Schema_ISO_Language 2960772.8506227196 ns/iter 2688316.1937984927 ns/iter 1.10
Pointer_Maybe_Tracked_Deeply_Nested/0 1888750.4270270327 ns/iter 1876320.2635869533 ns/iter 1.01
Pointer_Maybe_Tracked_Deeply_Nested/1 1647056.8873236978 ns/iter 1710820.7066015436 ns/iter 0.96
Pointer_Position_Tracker_Get_Deeply_Nested 428.2551689052512 ns/iter 408.7501875418372 ns/iter 1.05
JSON_Array_Of_Objects_Unique 385.5638811803773 ns/iter 425.4581093326693 ns/iter 0.91
JSON_Parse_1 9693.449560479889 ns/iter 9927.27495201583 ns/iter 0.98
JSON_Parse_Real 7624.523989912078 ns/iter 7818.260298580734 ns/iter 0.98
JSON_Parse_Decimal 11144.650832072173 ns/iter 12806.949358527876 ns/iter 0.87
JSON_Parse_Schema_ISO_Language 6859370.18750001 ns/iter 6762895.320388479 ns/iter 1.01
JSON_Parse_Integer 5678.809565513565 ns/iter 5742.017088831176 ns/iter 0.99
JSON_Parse_String_NonSSO_Plain 12306.641920550941 ns/iter 12204.43467113252 ns/iter 1.01
JSON_Parse_String_SSO_Plain 5019.062880001002 ns/iter 5195.4078093854705 ns/iter 0.97
JSON_Parse_String_Escape_Heavy 24683.90032870436 ns/iter 26194.97962976847 ns/iter 0.94
JSON_Parse_Object_Short_Keys 14421.58383671822 ns/iter 13712.517679643035 ns/iter 1.05
JSON_Parse_Object_Scalar_Properties 7401.400293178915 ns/iter 7113.145701173007 ns/iter 1.04
JSON_Parse_Object_Array_Properties 13205.263093165706 ns/iter 12474.511270385385 ns/iter 1.06
JSON_Parse_Object_Object_Properties 12215.661411862298 ns/iter 12376.339765947534 ns/iter 0.99
JSON_Parse_Nested_Containers 105363.62017848647 ns/iter 98720.21502292775 ns/iter 1.07
JSON_From_String_Copy 19.54002197531893 ns/iter 18.22806082296505 ns/iter 1.07
JSON_From_String_Temporary 16.28177693899066 ns/iter 15.037199484178492 ns/iter 1.08
JSON_Number_To_Double 20.77393016615296 ns/iter 22.134134764665106 ns/iter 0.94
JSON_Object_At_Last_Key/8 4.185068929347306 ns/iter 3.815999871822341 ns/iter 1.10
JSON_Object_At_Last_Key/32 13.492496185434957 ns/iter 12.46551562266705 ns/iter 1.08
JSON_Object_At_Last_Key/128 47.26702802062967 ns/iter 48.9506447882994 ns/iter 0.97
JSON_Object_At_Last_Key/512 278.92905401409797 ns/iter 360.1902386909793 ns/iter 0.77
JSON_Fast_Hash_Helm_Chart_Lock 66.2188003555351 ns/iter 61.90252835389351 ns/iter 1.07
JSON_Equality_Helm_Chart_Lock 158.28310066767622 ns/iter 147.5345098643142 ns/iter 1.07
JSON_Divisible_By_Decimal 280.88443442783114 ns/iter 249.04683256201653 ns/iter 1.13
JSON_String_Equal/10 5.408296381073997 ns/iter 5.104974582526262 ns/iter 1.06
JSON_String_Equal/100 6.11402918202693 ns/iter 5.728942532892093 ns/iter 1.07
JSON_String_Equal_Small_By_Perfect_Hash/10 0.7120258960627784 ns/iter 0.6252251432802282 ns/iter 1.14
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 22.01434996919587 ns/iter 25.196181381104676 ns/iter 0.87
JSON_String_Fast_Hash/10 2.463086540226457 ns/iter 2.2586258955359138 ns/iter 1.09
JSON_String_Fast_Hash/100 2.4629147460018466 ns/iter 2.2594387058483276 ns/iter 1.09
JSON_String_Key_Hash/10 1.406818086749694 ns/iter 1.2472566019875777 ns/iter 1.13
JSON_String_Key_Hash/100 14.757641866844223 ns/iter 12.44773844461235 ns/iter 1.19
JSON_Object_Defines_Miss_Same_Length 3.166332815053868 ns/iter 3.1133344381266097 ns/iter 1.02
JSON_Object_Defines_Miss_Too_Small 3.519673987268406 ns/iter 3.112989670766638 ns/iter 1.13
JSON_Object_Defines_Miss_Too_Large 3.1659587139764698 ns/iter 3.113743059407344 ns/iter 1.02
Regex_Lower_S_Or_Upper_S_Asterisk 0.7034706969556739 ns/iter 0.6235314644091116 ns/iter 1.13
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.0558866173223473 ns/iter 0.9351343777441189 ns/iter 1.13
Regex_Period_Asterisk 0.7033626474952788 ns/iter 0.6262044701866849 ns/iter 1.12
Regex_Group_Period_Asterisk_Group 1.0551514426647652 ns/iter 0.9350184557155362 ns/iter 1.13
Regex_Period_Plus 0.7033329835457681 ns/iter 0.6233095189584561 ns/iter 1.13
Regex_Period 1.0547391898855691 ns/iter 0.9343955169553962 ns/iter 1.13
Regex_Caret_Period_Plus_Dollar 0.703674537819397 ns/iter 0.6229624244091029 ns/iter 1.13
Regex_Caret_Group_Period_Plus_Group_Dollar 1.0556642675351546 ns/iter 0.9343112457527507 ns/iter 1.13
Regex_Caret_Period_Asterisk_Dollar 0.7036863848827182 ns/iter 0.6226805710449107 ns/iter 1.13
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.0550764509283181 ns/iter 0.934208391357759 ns/iter 1.13
Regex_Caret_X_Hyphen 3.866760620350529 ns/iter 3.740359934749894 ns/iter 1.03
Regex_Period_Md_Dollar 37.09816842758086 ns/iter 30.183002592832764 ns/iter 1.23
Regex_Caret_Slash_Period_Asterisk 4.220851026008682 ns/iter 4.047067189847863 ns/iter 1.04
Regex_Caret_Period_Range_Dollar 1.7580882341435353 ns/iter 1.5588114870371552 ns/iter 1.13
Regex_Nested_Backtrack 40.623549272368614 ns/iter 38.386851556347224 ns/iter 1.06

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: a52cdbc Previous: b25f900 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.1860877574962245 ns/iter 2.186851791425316 ns/iter 1.00
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.0437973946523535 ns/iter 2.49079022682374 ns/iter 0.82
Regex_Period_Asterisk 2.0216890742159945 ns/iter 2.491013144922704 ns/iter 0.81
Regex_Group_Period_Asterisk_Group 2.208938928551078 ns/iter 2.178569629997004 ns/iter 1.01
Regex_Period_Plus 2.190707501531901 ns/iter 2.4905851589642465 ns/iter 0.88
Regex_Period 2.3050956119210904 ns/iter 2.8022004878022218 ns/iter 0.82
Regex_Caret_Period_Plus_Dollar 2.3049975411087242 ns/iter 2.8022218290532845 ns/iter 0.82
Regex_Caret_Group_Period_Plus_Group_Dollar 2.08094467125867 ns/iter 2.5070297671448407 ns/iter 0.83
Regex_Caret_Period_Asterisk_Dollar 2.19102826413348 ns/iter 2.180357097394137 ns/iter 1.00
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.0452228451533663 ns/iter 2.4904369745926265 ns/iter 0.82
Regex_Caret_X_Hyphen 4.033792915228235 ns/iter 5.609117517682092 ns/iter 0.72
Regex_Period_Md_Dollar 24.568038066823696 ns/iter 28.346375051676162 ns/iter 0.87
Regex_Caret_Slash_Period_Asterisk 3.7464351608884017 ns/iter 5.602165046321572 ns/iter 0.67
Regex_Caret_Period_Range_Dollar 2.9161722211955095 ns/iter 3.4251231314963086 ns/iter 0.85
Regex_Nested_Backtrack 36.081819372186885 ns/iter 41.96671322620837 ns/iter 0.86
JSON_Array_Of_Objects_Unique 405.52568307661096 ns/iter 432.80237039939504 ns/iter 0.94
JSON_Parse_1 4636.696541910515 ns/iter 4768.579356772225 ns/iter 0.97
JSON_Parse_Real 4775.378406271739 ns/iter 5402.686900909136 ns/iter 0.88
JSON_Parse_Decimal 7029.380435548217 ns/iter 7248.9518429148875 ns/iter 0.97
JSON_Parse_Schema_ISO_Language 3458359.5294112884 ns/iter 3442328.1176474593 ns/iter 1.00
JSON_Parse_Integer 3521.45160515007 ns/iter 3641.0319502997536 ns/iter 0.97
JSON_Parse_String_NonSSO_Plain 4568.401435890998 ns/iter 4998.875927995495 ns/iter 0.91
JSON_Parse_String_SSO_Plain 2348.3384838777138 ns/iter 2631.3171963985187 ns/iter 0.89
JSON_Parse_String_Escape_Heavy 15579.158622224693 ns/iter 14661.748367037048 ns/iter 1.06
JSON_Parse_Object_Short_Keys 6929.016080930272 ns/iter 10495.853154084933 ns/iter 0.66
JSON_Parse_Object_Scalar_Properties 3622.250038779207 ns/iter 4067.6126589629553 ns/iter 0.89
JSON_Parse_Object_Array_Properties 5085.257624316968 ns/iter 5679.662661152886 ns/iter 0.90
JSON_Parse_Object_Object_Properties 5061.6771850794275 ns/iter 5448.8821223711275 ns/iter 0.93
JSON_Parse_Nested_Containers 42002.79735630143 ns/iter 44290.89141989319 ns/iter 0.95
JSON_From_String_Copy 15.379979184553832 ns/iter 19.31318660666557 ns/iter 0.80
JSON_From_String_Temporary 14.834037064826589 ns/iter 17.14419718290376 ns/iter 0.87
JSON_Number_To_Double 20.972075842749756 ns/iter 23.740827408722726 ns/iter 0.88
JSON_Object_At_Last_Key/8 4.704099937556726 ns/iter 3.823711179224129 ns/iter 1.23
JSON_Object_At_Last_Key/32 18.0104699341905 ns/iter 12.262675707439975 ns/iter 1.47
JSON_Object_At_Last_Key/128 73.96951762091469 ns/iter 48.369411357038366 ns/iter 1.53
JSON_Object_At_Last_Key/512 306.14726641271824 ns/iter 398.9893599047748 ns/iter 0.77
JSON_Fast_Hash_Helm_Chart_Lock 62.908944786518816 ns/iter 66.27810762730734 ns/iter 0.95
JSON_Equality_Helm_Chart_Lock 128.06091395462747 ns/iter 158.59809685778959 ns/iter 0.81
JSON_Divisible_By_Decimal 257.905129894855 ns/iter 264.15372181475504 ns/iter 0.98
JSON_String_Equal/10 4.324655375716475 ns/iter 5.917568272979898 ns/iter 0.73
JSON_String_Equal/100 5.474954721360149 ns/iter 6.544024581987466 ns/iter 0.84
JSON_String_Equal_Small_By_Perfect_Hash/10 0.6921903375348931 ns/iter 0.9390507842320109 ns/iter 0.74
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 9.793858683155236 ns/iter 14.924847116193162 ns/iter 0.66
JSON_String_Fast_Hash/10 2.593321011050672 ns/iter 3.11235052949531 ns/iter 0.83
JSON_String_Fast_Hash/100 2.592531919634486 ns/iter 3.110350534757542 ns/iter 0.83
JSON_String_Key_Hash/10 1.7290725007951764 ns/iter 2.732132253975337 ns/iter 0.63
JSON_String_Key_Hash/100 6.626702158566567 ns/iter 9.09206234172823 ns/iter 0.73
JSON_Object_Defines_Miss_Same_Length 3.4592433201732926 ns/iter 2.909776723282807 ns/iter 1.19
JSON_Object_Defines_Miss_Too_Small 4.312077160994374 ns/iter 3.4350270940727956 ns/iter 1.26
JSON_Object_Defines_Miss_Too_Large 3.029632680755687 ns/iter 2.616910381198905 ns/iter 1.16
Pointer_Object_Traverse 30.299359603636937 ns/iter 28.508588307241613 ns/iter 1.06
Pointer_Object_Try_Traverse 34.997829261945284 ns/iter 30.99438392839627 ns/iter 1.13
Pointer_Push_Back_Pointer_To_Weak_Pointer 163.08702408648364 ns/iter 217.5493131632524 ns/iter 0.75
Pointer_Walker_Schema_ISO_Language 2740947.2364338012 ns/iter 2599515.0528302165 ns/iter 1.05
Pointer_Maybe_Tracked_Deeply_Nested/0 1116517.2535884397 ns/iter 1218275.152249216 ns/iter 0.92
Pointer_Maybe_Tracked_Deeply_Nested/1 2027442.340057446 ns/iter 1600862.7285381134 ns/iter 1.27
Pointer_Position_Tracker_Get_Deeply_Nested 683.8005469252537 ns/iter 712.5198468325221 ns/iter 0.96
JSONPath_Descendant_Filter_Nested 1468.5641417766449 ns/iter 1651.737799411835 ns/iter 0.89
URITemplateRouter_Create 29026.5899842186 ns/iter 31840.36161909951 ns/iter 0.91
URITemplateRouter_Match 157.25994079078353 ns/iter 204.84266823263513 ns/iter 0.77
URITemplateRouter_Match_BasePath 176.58689444426588 ns/iter 230.9024664571939 ns/iter 0.76
URITemplateRouterView_Restore 3698.678991454854 ns/iter 8521.046044329692 ns/iter 0.43
URITemplateRouterView_Match 127.18895547306148 ns/iter 142.7219112107116 ns/iter 0.89
URITemplateRouterView_Match_BasePath 142.30159774341251 ns/iter 164.17643871686295 ns/iter 0.87
URITemplateRouterView_Arguments 421.90431339668726 ns/iter 440.5109250233563 ns/iter 0.96
JSONL_Parse_Large 9000211.87179589 ns/iter 9795645.704225278 ns/iter 0.92
JSONL_Parse_Large_GZIP 10415185.59701563 ns/iter 11361457.032786928 ns/iter 0.92
JSONLD_Catalog_Annotation_List_Populate 1221125.5783970556 ns/iter 1268706.14568347 ns/iter 0.96
JSONLD_Catalog_Materialize 4102254.6783627453 ns/iter 4372451.3710692795 ns/iter 0.94
HTML_Build_Table_100000 73693716.77778721 ns/iter 64118400.272718646 ns/iter 1.15
HTML_Render_Table_100000 10238878.826086966 ns/iter 5523174.601626678 ns/iter 1.85
GZIP_Compress_ISO_Language_Set_3_Locations 31004484.521739196 ns/iter 33396309.8571422 ns/iter 0.93
GZIP_Decompress_ISO_Language_Set_3_Locations 5377820.041666344 ns/iter 4284859.721211764 ns/iter 1.26
GZIP_Compress_ISO_Language_Set_3_Schema 1862046.9732621543 ns/iter 1884996.735849001 ns/iter 0.99
GZIP_Decompress_ISO_Language_Set_3_Schema 351735.6142208697 ns/iter 355665.37639879255 ns/iter 0.99
JOSE_VerifySignature_RS256 49345.61276026745 ns/iter 58113.17475325108 ns/iter 0.85
JOSE_VerifySignature_ES512 2110368.1295179934 ns/iter 2390321.200680257 ns/iter 0.88

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

@jviotti
jviotti merged commit b1780da into main Aug 1, 2026
12 checks passed
@jviotti
jviotti deleted the uritemplate-iri branch August 1, 2026 01:19

@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: a52cdbc Previous: b25f900 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 5.4934819999994025 ns/iter 5.407235000000128 ns/iter 1.02
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 5.023096999998415 ns/iter 5.1020919999996295 ns/iter 0.98
Regex_Period_Asterisk 5.015719999998964 ns/iter 5.129482142858625 ns/iter 0.98
Regex_Group_Period_Asterisk_Group 5.104003571430229 ns/iter 5.176404000001185 ns/iter 0.99
Regex_Period_Plus 4.8474028805462765 ns/iter 4.782754028533466 ns/iter 1.01
Regex_Period 5.0839959999984785 ns/iter 5.0998729999992065 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 4.904644934131338 ns/iter 4.821275693039857 ns/iter 1.02
Regex_Caret_Group_Period_Plus_Group_Dollar 5.117205000001377 ns/iter 5.023910000002161 ns/iter 1.02
Regex_Caret_Period_Asterisk_Dollar 5.355572999999367 ns/iter 5.378219000001536 ns/iter 1.00
Regex_Caret_Group_Period_Asterisk_Group_Dollar 5.095658000000185 ns/iter 5.019917857144459 ns/iter 1.02
Regex_Caret_X_Hyphen 8.482217633926886 ns/iter 8.5971517857126 ns/iter 0.99
Regex_Period_Md_Dollar 45.03146752301689 ns/iter 45.81618039448808 ns/iter 0.98
Regex_Caret_Slash_Period_Asterisk 7.997588803581461 ns/iter 7.85650844707138 ns/iter 1.02
Regex_Caret_Period_Range_Dollar 5.999784821428631 ns/iter 5.978633928571802 ns/iter 1.00
Regex_Nested_Backtrack 56.44867999999405 ns/iter 56.814883928564896 ns/iter 0.99
JSON_Array_Of_Objects_Unique 666.4043749998833 ns/iter 630.3093749999838 ns/iter 1.06
JSON_Parse_1 9395.008504424573 ns/iter 9195.0741291347 ns/iter 1.02
JSON_Parse_Real 16128.94866071254 ns/iter 16353.878262575658 ns/iter 0.99
JSON_Parse_Decimal 11777.567187500892 ns/iter 11854.166071429972 ns/iter 0.99
JSON_Parse_Schema_ISO_Language 7422024.44444552 ns/iter 7699734.444443291 ns/iter 0.96
JSON_Parse_Integer 6111.607142857776 ns/iter 6114.66160714258 ns/iter 1.00
JSON_Parse_String_NonSSO_Plain 7832.819196428784 ns/iter 7820.860491073286 ns/iter 1.00
JSON_Parse_String_SSO_Plain 3755.3169424429257 ns/iter 3714.690290178727 ns/iter 1.01
JSON_Parse_String_Escape_Heavy 21956.021124720883 ns/iter 21654.518749997464 ns/iter 1.01
JSON_Parse_Object_Short_Keys 13230.843749997946 ns/iter 13389.410714284264 ns/iter 0.99
JSON_Parse_Object_Scalar_Properties 6869.607142857401 ns/iter 6820.758928571178 ns/iter 1.01
JSON_Parse_Object_Array_Properties 11503.996428570776 ns/iter 11588.970312498503 ns/iter 0.99
JSON_Parse_Object_Object_Properties 11784.900000002097 ns/iter 11599.137499999302 ns/iter 1.02
JSON_Parse_Nested_Containers 79693.43750000896 ns/iter 78159.84374998562 ns/iter 1.02
JSON_From_String_Copy 64.27012499999915 ns/iter 64.61461607143194 ns/iter 0.99
JSON_From_String_Temporary 59.44938392856004 ns/iter 60.032139999998435 ns/iter 0.99
JSON_Number_To_Double 121.24506250000165 ns/iter 124.0290357142726 ns/iter 0.98
JSON_Object_At_Last_Key/8 7.242725446428011 ns/iter 7.322266071428528 ns/iter 0.99
JSON_Object_At_Last_Key/32 24.29626981812578 ns/iter 25.585268749999557 ns/iter 0.95
JSON_Object_At_Last_Key/128 92.74101562500192 ns/iter 93.14493334174604 ns/iter 1.00
JSON_Object_At_Last_Key/512 428.04613384654914 ns/iter 430.17123908933803 ns/iter 1.00
JSON_Fast_Hash_Helm_Chart_Lock 109.95114285711745 ns/iter 105.99191044679806 ns/iter 1.04
JSON_Equality_Helm_Chart_Lock 251.19328571431004 ns/iter 253.41671428577683 ns/iter 0.99
JSON_Divisible_By_Decimal 314.62139290967593 ns/iter 302.38817400053813 ns/iter 1.04
JSON_String_Equal/10 11.131289062500827 ns/iter 10.810970312501667 ns/iter 1.03
JSON_String_Equal/100 12.002031249998879 ns/iter 12.082942857144221 ns/iter 0.99
JSON_String_Equal_Small_By_Perfect_Hash/10 2.5401921428575798 ns/iter 2.513174285714318 ns/iter 1.01
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 14.264487659534929 ns/iter 15.051593750001755 ns/iter 0.95
JSON_String_Fast_Hash/10 6.596893750000277 ns/iter 6.711674999999267 ns/iter 0.98
JSON_String_Fast_Hash/100 6.604364285714886 ns/iter 6.5993249999983 ns/iter 1.00
JSON_String_Key_Hash/10 5.416866964284038 ns/iter 5.550934000000326 ns/iter 0.98
JSON_String_Key_Hash/100 11.997304687501043 ns/iter 12.007817357108825 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 3.8645167410716095 ns/iter 3.7898783482136014 ns/iter 1.02
JSON_Object_Defines_Miss_Too_Small 4.098915801740716 ns/iter 4.107038100844212 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 3.785246651786573 ns/iter 3.9648292410721098 ns/iter 0.95
Pointer_Object_Traverse 71.37649107142303 ns/iter 70.66224107142764 ns/iter 1.01
Pointer_Object_Try_Traverse 71.44551339285853 ns/iter 74.13058928571152 ns/iter 0.96
Pointer_Push_Back_Pointer_To_Weak_Pointer 187.72463757082525 ns/iter 166.60927678185365 ns/iter 1.13
Pointer_Walker_Schema_ISO_Language 10501090.624998711 ns/iter 11308350.00000019 ns/iter 0.93
Pointer_Maybe_Tracked_Deeply_Nested/0 2376813.2575756945 ns/iter 2487244.696969569 ns/iter 0.96
Pointer_Maybe_Tracked_Deeply_Nested/1 3610480.882352753 ns/iter 3771910.1604278376 ns/iter 0.96
Pointer_Position_Tracker_Get_Deeply_Nested 511.33250674319726 ns/iter 531.2448104559423 ns/iter 0.96
JSONPath_Descendant_Filter_Nested 2356.416428572012 ns/iter 2410.0265513091135 ns/iter 0.98
URITemplateRouter_Create 40941.280250708034 ns/iter 40220.62561662208 ns/iter 1.02
URITemplateRouter_Match 232.674449478332 ns/iter 240.83917857142623 ns/iter 0.97
URITemplateRouter_Match_BasePath 271.33897895810014 ns/iter 273.48515743365203 ns/iter 0.99
URITemplateRouterView_Restore 33725.97853091439 ns/iter 35473.8067177338 ns/iter 0.95
URITemplateRouterView_Match 182.27597872383123 ns/iter 178.63638202107455 ns/iter 1.02
URITemplateRouterView_Match_BasePath 206.4040376605389 ns/iter 201.753999999994 ns/iter 1.02
URITemplateRouterView_Arguments 534.7503571428547 ns/iter 541.8797999998333 ns/iter 0.99
JSONL_Parse_Large 32831820.000001244 ns/iter 33105260.000002094 ns/iter 0.99
JSONL_Parse_Large_GZIP 33805905.00000835 ns/iter 34253809.523804754 ns/iter 0.99
JSONLD_Catalog_Annotation_List_Populate 2594211.742424098 ns/iter 2651432.142857045 ns/iter 0.98
JSONLD_Catalog_Materialize 8128398.8888900345 ns/iter 7965816.66666801 ns/iter 1.02
HTML_Build_Table_100000 90621588.88888107 ns/iter 93262085.71428652 ns/iter 0.97
HTML_Render_Table_100000 7652032.142857479 ns/iter 7961513.3333340455 ns/iter 0.96
GZIP_Compress_ISO_Language_Set_3_Locations 36781647.3684271 ns/iter 36437631.578947775 ns/iter 1.01
GZIP_Decompress_ISO_Language_Set_3_Locations 9722965.33333368 ns/iter 10020838.666669078 ns/iter 0.97
GZIP_Compress_ISO_Language_Set_3_Schema 2109310.033444693 ns/iter 2109644.062500138 ns/iter 1.00
GZIP_Decompress_ISO_Language_Set_3_Schema 622563.3928571434 ns/iter 643687.4999999418 ns/iter 0.97
JOSE_VerifySignature_RS256 21404.009374997204 ns/iter 21409.018629215418 ns/iter 1.00
JOSE_VerifySignature_ES512 1384434.8214287753 ns/iter 1535551.3392860994 ns/iter 0.90

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