Skip to content

Percent-encode literal "%" when turning a JSON Pointer into a URI fragment - #2775

Merged
jviotti merged 1 commit into
mainfrom
fix-uri-percent
Aug 28, 2026
Merged

Percent-encode literal "%" when turning a JSON Pointer into a URI fragment#2775
jviotti merged 1 commit into
mainfrom
fix-uri-percent

Conversation

@jviotti

@jviotti jviotti commented Aug 28, 2026

Copy link
Copy Markdown
Member

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

Review in cubic

…gment

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

augmentcode Bot commented Aug 28, 2026

Copy link
Copy Markdown
🤖 Augment PR Summary

Summary: This PR fixes JSON Pointer-to-URI conversion for property names containing literal percent signs.

Changes:

  • Adds URI::unescaped_fragment and URI::from_unescaped_fragment.
  • Distinguishes literal fragment text from input that is already percent-encoded.
  • Escapes every literal % as %25 before URI recomposition.
  • Updates both owning Pointer and WeakPointer URI conversions.
  • Documents the new fragment API contract and examples.
Technical Notes: The implementation preserves existing URI recomposition behavior for other fragment characters while preventing strings such as %20 in a JSON Pointer token from being interpreted as an encoded space. Tests cover literal percentages, encoded-looking sequences, RFC 6901's example, canonicalization, and base-URI round trips.

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

@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: f653275 Previous: 5e99d8d Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.183697085016355 ns/iter 1.9108805947017524 ns/iter 1.14
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.1803870948254596 ns/iter 1.9095326511945054 ns/iter 1.14
Regex_Period_Asterisk 2.1825713888518554 ns/iter 1.913664007014245 ns/iter 1.14
Regex_Group_Period_Asterisk_Group 2.1790547288354505 ns/iter 1.9093789314992886 ns/iter 1.14
Regex_Period_Plus 2.804333911680515 ns/iter 3.001515459360952 ns/iter 0.93
Regex_Period 2.8035703368305316 ns/iter 3.0094734433763985 ns/iter 0.93
Regex_Caret_Period_Plus_Dollar 2.8042915311517564 ns/iter 2.9990761751899466 ns/iter 0.94
Regex_Caret_Group_Period_Plus_Group_Dollar 2.8030332550180015 ns/iter 2.999414797744229 ns/iter 0.93
Regex_Caret_Period_Asterisk_Dollar 3.1123206256186724 ns/iter 1.909710684810869 ns/iter 1.63
Regex_Caret_Group_Period_Asterisk_Group_Dollar 3.1126662037144333 ns/iter 1.9091450894306559 ns/iter 1.63
Regex_Caret_X_Hyphen 6.545588077574436 ns/iter 5.187345415144452 ns/iter 1.26
Regex_Period_Md_Dollar 26.955465210651035 ns/iter 20.35281259556535 ns/iter 1.32
Regex_Caret_Slash_Period_Asterisk 6.852951742477799 ns/iter 5.181046667085195 ns/iter 1.32
Regex_Caret_Period_Range_Dollar 3.7378827502311247 ns/iter 2.9983492022668186 ns/iter 1.25
Regex_Nested_Backtrack 38.317123307739756 ns/iter 30.072930869737302 ns/iter 1.27
JSON_Array_Of_Objects_Unique 452.28249615862575 ns/iter 367.866566854392 ns/iter 1.23
JSON_Parse_1 4583.340415767994 ns/iter 3444.2109311230283 ns/iter 1.33
JSON_Parse_Real 5015.557670675627 ns/iter 3852.4882929889577 ns/iter 1.30
JSON_Parse_Decimal 7254.513353915429 ns/iter 5738.639846020183 ns/iter 1.26
JSON_Parse_Schema_ISO_Language 3240187.211981552 ns/iter 2673194.5000000005 ns/iter 1.21
JSON_Parse_Integer 3474.416316006434 ns/iter 2920.1220033230074 ns/iter 1.19
JSON_Parse_String_NonSSO_Plain 2961.7592730441074 ns/iter 2429.9273028363923 ns/iter 1.22
JSON_Parse_String_SSO_Plain 2593.88541624283 ns/iter 2231.3004789489314 ns/iter 1.16
JSON_Parse_String_Escape_Heavy 12130.512712304406 ns/iter 9285.221106392175 ns/iter 1.31
JSON_Parse_Object_Short_Keys 7708.581987721496 ns/iter 6230.558753168251 ns/iter 1.24
JSON_Parse_Object_Scalar_Properties 3937.3075941827988 ns/iter 3224.2097300326986 ns/iter 1.22
JSON_Parse_Object_Array_Properties 5324.514036258068 ns/iter 4247.423581447492 ns/iter 1.25
JSON_Parse_Object_Object_Properties 5306.848663186626 ns/iter 4240.653736025324 ns/iter 1.25
JSON_Parse_Nested_Containers 34689.22625241519 ns/iter 26421.142650638725 ns/iter 1.31
JSON_From_String_Copy 11.050843404018309 ns/iter 9.416932099080402 ns/iter 1.17
JSON_From_String_Temporary 9.897587858959971 ns/iter 7.740489011744258 ns/iter 1.28
JSON_Number_To_Double 22.850096112029238 ns/iter 17.70735710819678 ns/iter 1.29
JSON_Object_At_Last_Key/8 3.9374560776019574 ns/iter 3.1138532354068507 ns/iter 1.26
JSON_Object_At_Last_Key/32 12.303333930910192 ns/iter 10.341970776767075 ns/iter 1.19
JSON_Object_At_Last_Key/128 49.19202151393557 ns/iter 36.50938767230744 ns/iter 1.35
JSON_Object_At_Last_Key/512 382.8567227104489 ns/iter 296.99853155547663 ns/iter 1.29
JSON_Fast_Hash_Helm_Chart_Lock 54.50790271302851 ns/iter 51.27232371853911 ns/iter 1.06
JSON_Equality_Helm_Chart_Lock 154.5542665563769 ns/iter 122.37434456416257 ns/iter 1.26
JSON_Divisible_By_Decimal 248.60256390732187 ns/iter 194.79588742305106 ns/iter 1.28
JSON_String_Equal/10 5.927355287228565 ns/iter 4.364922414853175 ns/iter 1.36
JSON_String_Equal/100 6.5532126965126345 ns/iter 5.013301123858274 ns/iter 1.31
JSON_String_Equal_Small_By_Perfect_Hash/10 0.935817639804633 ns/iter 0.8195545412322498 ns/iter 1.14
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 14.985273175624434 ns/iter 18.00339529464195 ns/iter 0.83
JSON_String_Fast_Hash/10 2.179276163144336 ns/iter 1.6370111411297559 ns/iter 1.33
JSON_String_Fast_Hash/100 2.1858132432541004 ns/iter 1.6384051575066763 ns/iter 1.33
JSON_String_Key_Hash/10 2.7592844801951606 ns/iter 9.813440368509166 ns/iter 0.28
JSON_String_Key_Hash/100 9.025284883616852 ns/iter 19.35694532870388 ns/iter 0.47
JSON_Object_Defines_Miss_Same_Length 3.470542679939723 ns/iter 3.388495496092756 ns/iter 1.02
JSON_Object_Defines_Miss_Too_Small 3.1124235407085723 ns/iter 2.4953642440298798 ns/iter 1.25
JSON_Object_Defines_Miss_Too_Large 2.732245015226516 ns/iter 2.265204256533083 ns/iter 1.21
Pointer_Object_Traverse 28.775211540162402 ns/iter 23.943271416947724 ns/iter 1.20
Pointer_Object_Try_Traverse 30.532064156535643 ns/iter 25.41180454717164 ns/iter 1.20
Pointer_Push_Back_Pointer_To_Weak_Pointer 170.83049023862708 ns/iter 144.82931878404372 ns/iter 1.18
Pointer_Walker_Schema_ISO_Language 1574628.07356325 ns/iter 1199829.6419965546 ns/iter 1.31
Pointer_Maybe_Tracked_Deeply_Nested/0 1239152.394690292 ns/iter 993042.4212034282 ns/iter 1.25
Pointer_Maybe_Tracked_Deeply_Nested/1 1689880.567632832 ns/iter 1257964.428853777 ns/iter 1.34
Pointer_Position_Tracker_Get_Deeply_Nested 632.3511212173473 ns/iter 541.4755470586128 ns/iter 1.17
JSONPath_Descendant_Filter_Nested 1517.8289058078608 ns/iter 1195.6104507105103 ns/iter 1.27
URITemplateRouter_Create 24692.444266126215 ns/iter 16477.01514483871 ns/iter 1.50
URITemplateRouter_Match 179.76979863829357 ns/iter 130.95225811024287 ns/iter 1.37
URITemplateRouter_Match_BasePath 202.98520269280692 ns/iter 156.9959801643012 ns/iter 1.29
URITemplateRouterView_Restore 8480.604941785085 ns/iter 7617.385224695719 ns/iter 1.11
URITemplateRouterView_Match 139.37101460422417 ns/iter 110.2008430000851 ns/iter 1.26
URITemplateRouterView_Match_BasePath 161.91307368570318 ns/iter 121.62790030601595 ns/iter 1.33
URITemplateRouterView_Arguments 421.5093392535609 ns/iter 348.57160531182336 ns/iter 1.21
JSONL_Parse_Large 9094668.649350315 ns/iter 7028690.050505031 ns/iter 1.29
JSONL_Parse_Large_GZIP 10661725.303030131 ns/iter 8277983.642857394 ns/iter 1.29
JSONLD_Catalog_Annotation_List_Populate 607563.4839270507 ns/iter 453572.16342411516 ns/iter 1.34
JSONLD_Catalog_Materialize 3709250.5947366827 ns/iter 2654322.431297699 ns/iter 1.40
HTML_Build_Table_100000 57566840.454543665 ns/iter 51902753.00000079 ns/iter 1.11
HTML_Render_Table_100000 1967505.308123211 ns/iter 1825088.1784777048 ns/iter 1.08
GZIP_Compress_ISO_Language_Set_3_Locations 33604568.142858885 ns/iter 27738372.479999498 ns/iter 1.21
GZIP_Decompress_ISO_Language_Set_3_Locations 4353281.537037093 ns/iter 3301881.816037757 ns/iter 1.32
GZIP_Compress_ISO_Language_Set_3_Schema 1887845.8840970907 ns/iter 1654043.9007092004 ns/iter 1.14
GZIP_Decompress_ISO_Language_Set_3_Schema 352394.0050327253 ns/iter 214394.1141370849 ns/iter 1.64
JOSE_VerifySignature_RS256 56867.92958892585 ns/iter 49887.55162412902 ns/iter 1.14
JOSE_VerifySignature_ES512 2422637.4275862137 ns/iter 2230847.8853502837 ns/iter 1.09

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: f653275 Previous: 5e99d8d Ratio
JOSE_VerifySignature_RS256 22099.494426750538 ns/iter 22169.296377325267 ns/iter 1.00
JOSE_VerifySignature_ES512 577769.3960558781 ns/iter 575728.3078189199 ns/iter 1.00
GZIP_Compress_ISO_Language_Set_3_Locations 36676536.21052498 ns/iter 36750678.789474025 ns/iter 1.00
GZIP_Decompress_ISO_Language_Set_3_Locations 4138221.9473682162 ns/iter 4291608.419753013 ns/iter 0.96
GZIP_Compress_ISO_Language_Set_3_Schema 2042094.329446114 ns/iter 2043008.4810496173 ns/iter 1.00
GZIP_Decompress_ISO_Language_Set_3_Schema 376809.59051726246 ns/iter 380767.96713361866 ns/iter 0.99
HTML_Build_Table_100000 54632660.58333242 ns/iter 55811317.09090993 ns/iter 0.98
HTML_Render_Table_100000 1845561.2512819895 ns/iter 1978710.4901960918 ns/iter 0.93
JSONLD_Catalog_Annotation_List_Populate 676840.5271844317 ns/iter 672650.7052631591 ns/iter 1.01
JSONLD_Catalog_Materialize 3460062.3200000767 ns/iter 3547668.625 ns/iter 0.98
JSONL_Parse_Large 10019428.757142836 ns/iter 10765770.523077069 ns/iter 0.93
JSONL_Parse_Large_GZIP 11291728.274193063 ns/iter 12095840.103448307 ns/iter 0.93
URITemplateRouter_Create 20745.247816240633 ns/iter 21185.295304453164 ns/iter 0.98
URITemplateRouter_Match 159.51122809881386 ns/iter 159.20617383791253 ns/iter 1.00
URITemplateRouter_Match_BasePath 184.65618813362997 ns/iter 185.66706941884578 ns/iter 0.99
URITemplateRouterView_Restore 8423.234772860054 ns/iter 8676.72266909058 ns/iter 0.97
URITemplateRouterView_Match 124.55042004755215 ns/iter 124.59068325512492 ns/iter 1.00
URITemplateRouterView_Match_BasePath 150.25649271546303 ns/iter 148.8783437237304 ns/iter 1.01
URITemplateRouterView_Arguments 474.6732635743672 ns/iter 469.9597115128777 ns/iter 1.01
JSONPath_Descendant_Filter_Nested 1618.2793965379137 ns/iter 1595.4735294931465 ns/iter 1.01
Pointer_Object_Traverse 25.00801101853468 ns/iter 24.958663800331475 ns/iter 1.00
Pointer_Object_Try_Traverse 23.096323449616296 ns/iter 23.210738813714997 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 129.16609209462897 ns/iter 129.46031917751472 ns/iter 1.00
Pointer_Walker_Schema_ISO_Language 1400351.07243458 ns/iter 1393076.3821138418 ns/iter 1.01
Pointer_Maybe_Tracked_Deeply_Nested/0 1194213.023809545 ns/iter 1212635.506825899 ns/iter 0.98
Pointer_Maybe_Tracked_Deeply_Nested/1 1701204.8932039675 ns/iter 1727607.1082474452 ns/iter 0.98
Pointer_Position_Tracker_Get_Deeply_Nested 603.7669176082516 ns/iter 600.817717748375 ns/iter 1.00
JSON_Array_Of_Objects_Unique 463.11410442969304 ns/iter 462.2123638174227 ns/iter 1.00
JSON_Parse_1 5281.958410582034 ns/iter 5476.6151213367575 ns/iter 0.96
JSON_Parse_Real 5782.005836993571 ns/iter 5636.795936296087 ns/iter 1.03
JSON_Parse_Decimal 10469.755514047723 ns/iter 10464.703525473646 ns/iter 1.00
JSON_Parse_Schema_ISO_Language 3547503.5612248527 ns/iter 3686160.1058200193 ns/iter 0.96
JSON_Parse_Integer 3734.4828536713853 ns/iter 3709.9236335560245 ns/iter 1.01
JSON_Parse_String_NonSSO_Plain 3257.6975703178746 ns/iter 3308.4860149061265 ns/iter 0.98
JSON_Parse_String_SSO_Plain 2989.955242639516 ns/iter 3019.811034405224 ns/iter 0.99
JSON_Parse_String_Escape_Heavy 16662.949730914926 ns/iter 16702.004093386222 ns/iter 1.00
JSON_Parse_Object_Short_Keys 8597.080856766075 ns/iter 8523.563011177317 ns/iter 1.01
JSON_Parse_Object_Scalar_Properties 4339.6357424362795 ns/iter 4352.300782489972 ns/iter 1.00
JSON_Parse_Object_Array_Properties 6488.435733051712 ns/iter 6501.1729740291485 ns/iter 1.00
JSON_Parse_Object_Object_Properties 6529.293678181897 ns/iter 6712.5452707815175 ns/iter 0.97
JSON_Parse_Nested_Containers 39556.99175234689 ns/iter 39106.40319964494 ns/iter 1.01
JSON_From_String_Copy 8.54409094280631 ns/iter 8.740468053486632 ns/iter 0.98
JSON_From_String_Temporary 7.270451211893642 ns/iter 7.8985897756096595 ns/iter 0.92
JSON_Number_To_Double 20.586918202737056 ns/iter 20.601647310530133 ns/iter 1.00
JSON_Object_At_Last_Key/8 3.749603574654424 ns/iter 3.7444389498609323 ns/iter 1.00
JSON_Object_At_Last_Key/32 11.94527777742397 ns/iter 11.902277031794227 ns/iter 1.00
JSON_Object_At_Last_Key/128 48.6082226713566 ns/iter 48.64765213376281 ns/iter 1.00
JSON_Object_At_Last_Key/512 357.99569076138437 ns/iter 358.3195192226842 ns/iter 1.00
JSON_Fast_Hash_Helm_Chart_Lock 72.03367195406801 ns/iter 71.95080367739482 ns/iter 1.00
JSON_Equality_Helm_Chart_Lock 147.87397092611914 ns/iter 147.8737365400751 ns/iter 1.00
JSON_Divisible_By_Decimal 257.16191792848366 ns/iter 260.6469157322396 ns/iter 0.99
JSON_String_Equal/10 5.378329087078508 ns/iter 5.375151527558992 ns/iter 1.00
JSON_String_Equal/100 6.0066574128670895 ns/iter 6.001074971453463 ns/iter 1.00
JSON_String_Equal_Small_By_Perfect_Hash/10 0.7404975838269368 ns/iter 0.7402614105893964 ns/iter 1.00
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 25.20652253985137 ns/iter 25.195855213129256 ns/iter 1.00
JSON_String_Fast_Hash/10 3.1559533101652986 ns/iter 3.154109260877272 ns/iter 1.00
JSON_String_Fast_Hash/100 3.155059021290991 ns/iter 3.1584708549526357 ns/iter 1.00
JSON_String_Key_Hash/10 1.5597703986261433 ns/iter 1.6212054868701333 ns/iter 0.96
JSON_String_Key_Hash/100 12.445261006999287 ns/iter 12.441237074020606 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 3.42796481545761 ns/iter 3.4261652590666807 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Small 3.1164096866024598 ns/iter 3.11351100962208 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 3.4248598921651796 ns/iter 3.4477353811948204 ns/iter 0.99
Regex_Lower_S_Or_Upper_S_Asterisk 0.6233969797315566 ns/iter 0.6231294522107318 ns/iter 1.00
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 0.623426113108698 ns/iter 0.6228978900365749 ns/iter 1.00
Regex_Period_Asterisk 0.6232986902461547 ns/iter 0.6227332126465838 ns/iter 1.00
Regex_Group_Period_Asterisk_Group 0.6232940935746961 ns/iter 0.6228273745850488 ns/iter 1.00
Regex_Period_Plus 0.6234537067398694 ns/iter 0.6232777968910299 ns/iter 1.00
Regex_Period 0.6252497761917849 ns/iter 0.6230792323166972 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 0.6223517132739212 ns/iter 0.6236865616158166 ns/iter 1.00
Regex_Caret_Group_Period_Plus_Group_Dollar 0.6221024045743683 ns/iter 0.6223911013447395 ns/iter 1.00
Regex_Caret_Period_Asterisk_Dollar 0.6309130219050761 ns/iter 0.6223708053792885 ns/iter 1.01
Regex_Caret_Group_Period_Asterisk_Group_Dollar 0.6236921196575415 ns/iter 0.6227380669504328 ns/iter 1.00
Regex_Caret_X_Hyphen 3.7405577439890303 ns/iter 3.7829895137891465 ns/iter 0.99
Regex_Period_Md_Dollar 27.16677199759972 ns/iter 46.17964585418619 ns/iter 0.59
Regex_Caret_Slash_Period_Asterisk 4.0474501074939075 ns/iter 4.047885803161206 ns/iter 1.00
Regex_Caret_Period_Range_Dollar 1.2468720456518099 ns/iter 1.2497296055562068 ns/iter 1.00
Regex_Nested_Backtrack 36.85044592340422 ns/iter 40.644126285987134 ns/iter 0.91

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

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

All reported issues were addressed across 8 files

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

Re-trigger cubic

Comment thread src/core/uri/setters.cc

@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: f653275 Previous: 5e99d8d Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.567414642857102 ns/iter 2.395997187500143 ns/iter 1.07
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.644039595853649 ns/iter 2.231979375000037 ns/iter 1.18
Regex_Period_Asterisk 2.427831159630428 ns/iter 2.1932758904090095 ns/iter 1.11
Regex_Group_Period_Asterisk_Group 2.447982142857086 ns/iter 2.2551472073042125 ns/iter 1.09
Regex_Period_Plus 2.553692185220183 ns/iter 2.2870237500001167 ns/iter 1.12
Regex_Period 2.595817274467796 ns/iter 2.1975987499999405 ns/iter 1.18
Regex_Caret_Period_Plus_Dollar 2.60031392624979 ns/iter 2.2477010714283097 ns/iter 1.16
Regex_Caret_Group_Period_Plus_Group_Dollar 2.6750835690399217 ns/iter 2.2720389483571544 ns/iter 1.18
Regex_Caret_Period_Asterisk_Dollar 2.428268571428508 ns/iter 2.2336046875000903 ns/iter 1.09
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.438399662456956 ns/iter 2.2013656249999514 ns/iter 1.11
Regex_Caret_X_Hyphen 5.883408035713395 ns/iter 3.2676462441653302 ns/iter 1.80
Regex_Period_Md_Dollar 31.548790178571753 ns/iter 22.1619640383726 ns/iter 1.42
Regex_Caret_Slash_Period_Asterisk 5.565525892857336 ns/iter 3.0182335700815313 ns/iter 1.84
Regex_Caret_Period_Range_Dollar 3.380007192781217 ns/iter 2.4574903571427904 ns/iter 1.38
Regex_Nested_Backtrack 44.39671875000073 ns/iter 30.29735477545901 ns/iter 1.47
JSON_Array_Of_Objects_Unique 513.587321428588 ns/iter 405.8079241071282 ns/iter 1.27
JSON_Parse_1 8227.13504464342 ns/iter 5749.9642857144245 ns/iter 1.43
JSON_Parse_Real 11793.516071429216 ns/iter 8707.643269448386 ns/iter 1.35
JSON_Parse_Decimal 9114.46823898008 ns/iter 6742.128571428704 ns/iter 1.35
JSON_Parse_Schema_ISO_Language 8150287.777777976 ns/iter 7270091.071429111 ns/iter 1.12
JSON_Parse_Integer 4778.780309777411 ns/iter 3478.7080869789897 ns/iter 1.37
JSON_Parse_String_NonSSO_Plain 7120.1294642848325 ns/iter 4861.307398488721 ns/iter 1.46
JSON_Parse_String_SSO_Plain 2963.22517165803 ns/iter 2414.7996874997802 ns/iter 1.23
JSON_Parse_String_Escape_Heavy 23816.938427026675 ns/iter 16021.524553571404 ns/iter 1.49
JSON_Parse_Object_Short_Keys 9212.080303213366 ns/iter 7793.364285713469 ns/iter 1.18
JSON_Parse_Object_Scalar_Properties 4831.739802990996 ns/iter 4036.9564965065315 ns/iter 1.20
JSON_Parse_Object_Array_Properties 8846.064526497823 ns/iter 6959.6428571434235 ns/iter 1.27
JSON_Parse_Object_Object_Properties 8964.855960465578 ns/iter 7102.914285714031 ns/iter 1.26
JSON_Parse_Nested_Containers 65039.848214283316 ns/iter 49564.7384445012 ns/iter 1.31
JSON_From_String_Copy 48.504467978768716 ns/iter 35.63166136853972 ns/iter 1.36
JSON_From_String_Temporary 53.37605000000849 ns/iter 42.799637500003485 ns/iter 1.25
JSON_Number_To_Double 88.51044247721576 ns/iter 62.48707142857159 ns/iter 1.42
JSON_Object_At_Last_Key/8 6.942120535714683 ns/iter 6.000441964285333 ns/iter 1.16
JSON_Object_At_Last_Key/32 21.208425000001085 ns/iter 23.520773174990865 ns/iter 0.90
JSON_Object_At_Last_Key/128 93.54130832404272 ns/iter 47.61483026150098 ns/iter 1.96
JSON_Object_At_Last_Key/512 320.19075892856716 ns/iter 144.49758506706291 ns/iter 2.22
JSON_Fast_Hash_Helm_Chart_Lock 80.68110491071019 ns/iter 62.1616785714301 ns/iter 1.30
JSON_Equality_Helm_Chart_Lock 204.26234579185478 ns/iter 143.73569894037797 ns/iter 1.42
JSON_Divisible_By_Decimal 271.17346299882735 ns/iter 193.2915360137633 ns/iter 1.40
JSON_String_Equal/10 8.347003348214699 ns/iter 6.521520535714436 ns/iter 1.28
JSON_String_Equal/100 11.057792187498805 ns/iter 8.097218750000579 ns/iter 1.37
JSON_String_Equal_Small_By_Perfect_Hash/10 1.192179375000002 ns/iter 0.9835165174181271 ns/iter 1.21
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 9.384922725959019 ns/iter 7.606103571429149 ns/iter 1.23
JSON_String_Fast_Hash/10 3.819181212177496 ns/iter 2.5067592857141108 ns/iter 1.52
JSON_String_Fast_Hash/100 3.835171874999916 ns/iter 2.459602142857469 ns/iter 1.56
JSON_String_Key_Hash/10 3.2308621925483942 ns/iter 1.9805855374827241 ns/iter 1.63
JSON_String_Key_Hash/100 7.663036830356518 ns/iter 6.538740178570939 ns/iter 1.17
JSON_Object_Defines_Miss_Same_Length 4.979368749999935 ns/iter 1.516374107142734 ns/iter 3.28
JSON_Object_Defines_Miss_Too_Small 4.473656929628918 ns/iter 1.6156132153674982 ns/iter 2.77
JSON_Object_Defines_Miss_Too_Large 4.987628000000086 ns/iter 1.61141540178557 ns/iter 3.10
Pointer_Object_Traverse 47.99892964283828 ns/iter 37.77388861118092 ns/iter 1.27
Pointer_Object_Try_Traverse 52.6533900000004 ns/iter 49.24266508556062 ns/iter 1.07
Pointer_Push_Back_Pointer_To_Weak_Pointer 194.02304714183126 ns/iter 126.05339285715088 ns/iter 1.54
Pointer_Walker_Schema_ISO_Language 10946215.625001088 ns/iter 9385927.999999996 ns/iter 1.17
Pointer_Maybe_Tracked_Deeply_Nested/0 2151888.7500000973 ns/iter 2248193.571428406 ns/iter 0.96
Pointer_Maybe_Tracked_Deeply_Nested/1 3988726.256983169 ns/iter 3661098.3240220193 ns/iter 1.09
Pointer_Position_Tracker_Get_Deeply_Nested 553.6558637386971 ns/iter 475.1905479545127 ns/iter 1.17
JSONPath_Descendant_Filter_Nested 1941.429421238105 ns/iter 1355.3549976094491 ns/iter 1.43
URITemplateRouter_Create 40141.82577911696 ns/iter 27842.39222146621 ns/iter 1.44
URITemplateRouter_Match 247.68482726732924 ns/iter 187.25492244397904 ns/iter 1.32
URITemplateRouter_Match_BasePath 284.6836078266207 ns/iter 205.65908418985202 ns/iter 1.38
URITemplateRouterView_Restore 27202.907142858683 ns/iter 13200.823214284746 ns/iter 2.06
URITemplateRouterView_Match 174.49320811338424 ns/iter 129.8603749999927 ns/iter 1.34
URITemplateRouterView_Match_BasePath 189.27783832839063 ns/iter 146.1540178571395 ns/iter 1.30
URITemplateRouterView_Arguments 448.3664848125008 ns/iter 347.2315362086291 ns/iter 1.29
JSONL_Parse_Large 27584945.83333023 ns/iter 17880051.3513493 ns/iter 1.54
JSONL_Parse_Large_GZIP 27776531.99999804 ns/iter 18293705.405407973 ns/iter 1.52
JSONLD_Catalog_Annotation_List_Populate 3211648.72881364 ns/iter 2406063.2107025613 ns/iter 1.33
JSONLD_Catalog_Materialize 8556830.666667944 ns/iter 5131249.107143228 ns/iter 1.67
HTML_Build_Table_100000 98253442.85713658 ns/iter 84041557.1428496 ns/iter 1.17
HTML_Render_Table_100000 12861332.14285761 ns/iter 11556837.500001343 ns/iter 1.11
GZIP_Compress_ISO_Language_Set_3_Locations 35190064.99999477 ns/iter 24032886.666664883 ns/iter 1.46
GZIP_Decompress_ISO_Language_Set_3_Locations 12152592.1875012 ns/iter 11364496.428571766 ns/iter 1.07
GZIP_Compress_ISO_Language_Set_3_Schema 2089288.6956523622 ns/iter 1534554.241071565 ns/iter 1.36
GZIP_Decompress_ISO_Language_Set_3_Schema 649326.9642856856 ns/iter 612729.3749999906 ns/iter 1.06
JOSE_VerifySignature_RS256 20232.15117992125 ns/iter 14816.073365743396 ns/iter 1.37
JOSE_VerifySignature_ES512 1198132.3962516782 ns/iter 798105.1339284966 ns/iter 1.50

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: f653275 Previous: 5e99d8d Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.023285018163678 ns/iter 2.407121157622561 ns/iter 0.84
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.9562008835448563 ns/iter 2.1849792926867613 ns/iter 0.90
Regex_Period_Asterisk 1.916569720007418 ns/iter 2.0209696838263906 ns/iter 0.95
Regex_Group_Period_Asterisk_Group 1.9255429754508016 ns/iter 1.993147885030145 ns/iter 0.97
Regex_Period_Plus 2.8211899728175687 ns/iter 2.415982680013795 ns/iter 1.17
Regex_Period 2.5561133871471973 ns/iter 2.416726350630771 ns/iter 1.06
Regex_Caret_Period_Plus_Dollar 2.747765877731084 ns/iter 2.479453156197898 ns/iter 1.11
Regex_Caret_Group_Period_Plus_Group_Dollar 2.8019512140211815 ns/iter 2.3890808683961033 ns/iter 1.17
Regex_Caret_Period_Asterisk_Dollar 2.376785472683519 ns/iter 2.3472021774749474 ns/iter 1.01
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.9128852315964018 ns/iter 1.9393372050925408 ns/iter 0.99
Regex_Caret_X_Hyphen 7.680450719464437 ns/iter 6.882650363600081 ns/iter 1.12
Regex_Period_Md_Dollar 22.03415231172793 ns/iter 23.529513864634662 ns/iter 0.94
Regex_Caret_Slash_Period_Asterisk 5.645755567633143 ns/iter 5.372202682851167 ns/iter 1.05
Regex_Caret_Period_Range_Dollar 2.608003369650888 ns/iter 2.5123678368440117 ns/iter 1.04
Regex_Nested_Backtrack 31.32495218584959 ns/iter 31.075184740587858 ns/iter 1.01
JSON_Array_Of_Objects_Unique 447.8834712618024 ns/iter 441.2967617455635 ns/iter 1.01
JSON_Parse_1 3384.3379573456145 ns/iter 4239.2659066245105 ns/iter 0.80
JSON_Parse_Real 6002.777599582603 ns/iter 7124.042423128563 ns/iter 0.84
JSON_Parse_Decimal 5829.3087326666255 ns/iter 6906.326079908787 ns/iter 0.84
JSON_Parse_Schema_ISO_Language 2586021.50974001 ns/iter 2760303.9772728696 ns/iter 0.94
JSON_Parse_Integer 3967.7642015981314 ns/iter 3397.0895317470927 ns/iter 1.17
JSON_Parse_String_NonSSO_Plain 3415.3990742277642 ns/iter 3522.887323943651 ns/iter 0.97
JSON_Parse_String_SSO_Plain 1829.4760171467126 ns/iter 2085.407263239695 ns/iter 0.88
JSON_Parse_String_Escape_Heavy 18022.379207178845 ns/iter 20036.378504673132 ns/iter 0.90
JSON_Parse_Object_Short_Keys 6110.846107307416 ns/iter 7411.253095051205 ns/iter 0.82
JSON_Parse_Object_Scalar_Properties 3355.6164387484982 ns/iter 3466.6073642102806 ns/iter 0.97
JSON_Parse_Object_Array_Properties 4181.62067377199 ns/iter 4393.214226692058 ns/iter 0.95
JSON_Parse_Object_Object_Properties 4067.252618611062 ns/iter 4842.919138696928 ns/iter 0.84
JSON_Parse_Nested_Containers 27203.841293702684 ns/iter 30789.868940530072 ns/iter 0.88
JSON_From_String_Copy 12.298471144004246 ns/iter 14.237961959505112 ns/iter 0.86
JSON_From_String_Temporary 7.6039244365952845 ns/iter 8.018495748597415 ns/iter 0.95
JSON_Number_To_Double 39.604530032794344 ns/iter 48.14570978611161 ns/iter 0.82
JSON_Object_At_Last_Key/8 4.074450432383362 ns/iter 5.907578532340889 ns/iter 0.69
JSON_Object_At_Last_Key/32 11.889759440422308 ns/iter 16.768224345408846 ns/iter 0.71
JSON_Object_At_Last_Key/128 52.890138851193726 ns/iter 73.77266502439569 ns/iter 0.72
JSON_Object_At_Last_Key/512 180.5463978970771 ns/iter 216.15053179203392 ns/iter 0.84
JSON_Fast_Hash_Helm_Chart_Lock 56.54244473516965 ns/iter 74.26212238719565 ns/iter 0.76
JSON_Equality_Helm_Chart_Lock 157.36123336124606 ns/iter 199.8341327901817 ns/iter 0.79
JSON_Divisible_By_Decimal 170.58305322069492 ns/iter 195.67124291340286 ns/iter 0.87
JSON_String_Equal/10 6.58394610837879 ns/iter 9.004039209200975 ns/iter 0.73
JSON_String_Equal/100 6.552067107668073 ns/iter 8.155323555892458 ns/iter 0.80
JSON_String_Equal_Small_By_Perfect_Hash/10 0.3416303249200004 ns/iter 0.36590688915796316 ns/iter 0.93
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 3.4355613833777 ns/iter 3.572528797660076 ns/iter 0.96
JSON_String_Fast_Hash/10 2.486462562345304 ns/iter 2.6317706059498063 ns/iter 0.94
JSON_String_Fast_Hash/100 2.270393903070308 ns/iter 2.3339621258322154 ns/iter 0.97
JSON_String_Key_Hash/10 1.9430422992162872 ns/iter 1.90880395192336 ns/iter 1.02
JSON_String_Key_Hash/100 2.3897259367270407 ns/iter 2.5066375210861414 ns/iter 0.95
JSON_Object_Defines_Miss_Same_Length 3.5042060155328327 ns/iter 3.337614327492526 ns/iter 1.05
JSON_Object_Defines_Miss_Too_Small 2.939119242358209 ns/iter 3.115179722813428 ns/iter 0.94
JSON_Object_Defines_Miss_Too_Large 2.9042277429925707 ns/iter 3.2627701522076187 ns/iter 0.89
Pointer_Object_Traverse 51.38416671691707 ns/iter 25.189759516010614 ns/iter 2.04
Pointer_Object_Try_Traverse 40.15861902585892 ns/iter 43.63104226336958 ns/iter 0.92
Pointer_Push_Back_Pointer_To_Weak_Pointer 247.41082975756464 ns/iter 170.0709232594914 ns/iter 1.45
Pointer_Walker_Schema_ISO_Language 3171409.0909094224 ns/iter 1597508.1392649484 ns/iter 1.99
Pointer_Maybe_Tracked_Deeply_Nested/0 2031109.857482388 ns/iter 1140282.8431372137 ns/iter 1.78
Pointer_Maybe_Tracked_Deeply_Nested/1 2162398.134969324 ns/iter 1371868.1585820927 ns/iter 1.58
Pointer_Position_Tracker_Get_Deeply_Nested 748.1209690429764 ns/iter 429.336801540141 ns/iter 1.74
JSONPath_Descendant_Filter_Nested 1860.6763603746099 ns/iter 1630.1554988922676 ns/iter 1.14
URITemplateRouter_Create 22788.6341694582 ns/iter 21346.503994724106 ns/iter 1.07
URITemplateRouter_Match 197.45019742948955 ns/iter 191.7240343214903 ns/iter 1.03
URITemplateRouter_Match_BasePath 236.42515617867429 ns/iter 235.61568386754868 ns/iter 1.00
URITemplateRouterView_Restore 12386.442377546953 ns/iter 14660.245635363168 ns/iter 0.84
URITemplateRouterView_Match 154.62570264781755 ns/iter 156.53224549468325 ns/iter 0.99
URITemplateRouterView_Match_BasePath 192.49427817665583 ns/iter 151.99922666178128 ns/iter 1.27
URITemplateRouterView_Arguments 662.189320917628 ns/iter 599.585971487641 ns/iter 1.10
JSONL_Parse_Large 7806611.301371299 ns/iter 6923930.549549384 ns/iter 1.13
JSONL_Parse_Large_GZIP 10557595.385541873 ns/iter 8311303.91764699 ns/iter 1.27
JSONLD_Catalog_Annotation_List_Populate 585803.3938519692 ns/iter 736349.827056094 ns/iter 0.80
JSONLD_Catalog_Materialize 4887644.3497268455 ns/iter 3477741.49214674 ns/iter 1.41
HTML_Build_Table_100000 50964477.80000138 ns/iter 48470473.93749904 ns/iter 1.05
HTML_Render_Table_100000 2296889.5681232377 ns/iter 3147457.971014471 ns/iter 0.73
GZIP_Compress_ISO_Language_Set_3_Locations 55085210.22727564 ns/iter 35970081.000000514 ns/iter 1.53
GZIP_Decompress_ISO_Language_Set_3_Locations 3823067.6460677404 ns/iter 4401823.091428533 ns/iter 0.87
GZIP_Compress_ISO_Language_Set_3_Schema 1597469.4634703516 ns/iter 1695683.394088632 ns/iter 0.94
GZIP_Decompress_ISO_Language_Set_3_Schema 280174.861873987 ns/iter 315146.56987492257 ns/iter 0.89
JOSE_VerifySignature_RS256 26713.863689092846 ns/iter 23628.716424580674 ns/iter 1.13
JOSE_VerifySignature_ES512 1401257.3945719737 ns/iter 1169695.6785185311 ns/iter 1.20

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

@jviotti
jviotti merged commit 389a44f into main Aug 28, 2026
13 checks passed
@jviotti
jviotti deleted the fix-uri-percent branch August 28, 2026 16:39
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