Skip to content

Fix I-Regexp deviances#2624

Merged
jviotti merged 2 commits into
mainfrom
regex-compliance
Jul 10, 2026
Merged

Fix I-Regexp deviances#2624
jviotti merged 2 commits into
mainfrom
regex-compliance

Conversation

@jviotti

@jviotti jviotti commented Jul 10, 2026

Copy link
Copy Markdown
Member

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

Review in cubic

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

augmentcode Bot commented Jul 10, 2026

Copy link
Copy Markdown
🤖 Augment PR Summary

Summary: This PR aligns the RFC 9485 I-Regexp implementation with the spec’s intended treatment of ^ and $.

Changes:

  • Updates the I-Regexp dialect documentation to describe literal ^/$ behavior.
  • Adjusts the I-Regexp-to-PCRE2 translation to escape unescaped ^ and $ so they are treated as ordinary characters.
  • Removes the PCRE2 DOLLAR_ENDONLY option for RFC 9485 dialect compilation since $ is no longer treated as an end-of-input assertion.
  • Updates/extends RFC 9485 matching tests to validate literal, in-pattern, and quantified ^/$ behavior (including within a character class).

Technical Notes: Whole-input matching for the strict dialect remains implemented via \A(?:... )\z enclosure during translation.

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

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

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

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

Re-trigger cubic

Comment thread src/core/regex/include/sourcemeta/core/regex.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: dbdaa90 Previous: fb05d59 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 1.7464344115606567 ns/iter 1.9693237641074997 ns/iter 0.89
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.1340769379934152 ns/iter 1.9300113399367222 ns/iter 1.11
Regex_Period_Asterisk 1.728319533214822 ns/iter 1.8285141269273373 ns/iter 0.95
Regex_Group_Period_Asterisk_Group 1.736256184675153 ns/iter 1.906898126244776 ns/iter 0.91
Regex_Period_Plus 2.0758767045416437 ns/iter 2.7829634732630986 ns/iter 0.75
Regex_Period 2.076251840544673 ns/iter 2.7399904260060386 ns/iter 0.76
Regex_Caret_Period_Plus_Dollar 2.0602283661951377 ns/iter 3.653516667504216 ns/iter 0.56
Regex_Caret_Group_Period_Plus_Group_Dollar 2.205569988102535 ns/iter 2.1512418585555495 ns/iter 1.03
Regex_Caret_Period_Asterisk_Dollar 1.9337858095780078 ns/iter 1.8737981418508403 ns/iter 1.03
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.8526251499104656 ns/iter 1.9171036784072732 ns/iter 0.97
Regex_Caret_X_Hyphen 6.212803920053886 ns/iter 7.149044661501382 ns/iter 0.87
Regex_Period_Md_Dollar 18.42313839094708 ns/iter 18.853587282207855 ns/iter 0.98
Regex_Caret_Slash_Period_Asterisk 4.817567308161833 ns/iter 4.481994980543286 ns/iter 1.07
Regex_Caret_Period_Range_Dollar 2.0841146889317193 ns/iter 2.048286185395188 ns/iter 1.02
Regex_Nested_Backtrack 26.887729461634166 ns/iter 27.100981866928873 ns/iter 0.99
JSON_Array_Of_Objects_Unique 388.25316698776 ns/iter 352.3876906958163 ns/iter 1.10
JSON_Parse_1 3723.7339209159986 ns/iter 6501.521151373025 ns/iter 0.57
JSON_Parse_Real 5343.622804249906 ns/iter 8605.163716813915 ns/iter 0.62
JSON_Parse_Decimal 5775.540025413487 ns/iter 8827.662621078394 ns/iter 0.65
JSON_Parse_Schema_ISO_Language 3606169.5478720334 ns/iter 4108898.2088608705 ns/iter 0.88
JSON_Parse_Integer 3381.7209061280246 ns/iter 4639.0740777762085 ns/iter 0.73
JSON_Parse_String_NonSSO_Plain 3778.0906179081526 ns/iter 7582.591310640071 ns/iter 0.50
JSON_Parse_String_SSO_Plain 1819.3288050939163 ns/iter 2836.7277926735783 ns/iter 0.64
JSON_Parse_String_Escape_Heavy 16650.180808200003 ns/iter 21735.27787741924 ns/iter 0.77
JSON_Parse_Object_Short_Keys 5357.588810171164 ns/iter 8966.2829142905 ns/iter 0.60
JSON_Parse_Object_Scalar_Properties 2856.2688727752966 ns/iter 4976.527945644156 ns/iter 0.57
JSON_Parse_Object_Array_Properties 4028.0327254950657 ns/iter 13497.352248121353 ns/iter 0.30
JSON_Parse_Object_Object_Properties 3692.4215995180193 ns/iter 7646.390382751019 ns/iter 0.48
JSON_Parse_Nested_Containers 28322.24514017918 ns/iter 74156.24999999943 ns/iter 0.38
JSON_From_String_Copy 24.948574512585992 ns/iter 30.467607394723412 ns/iter 0.82
JSON_From_String_Temporary 21.65913487697814 ns/iter 22.23141671283136 ns/iter 0.97
JSON_Number_To_Double 33.846533013491225 ns/iter 41.75733283241668 ns/iter 0.81
JSON_Object_At_Last_Key/8 4.236869827448455 ns/iter 5.207059580000077 ns/iter 0.81
JSON_Object_At_Last_Key/32 12.400467796164234 ns/iter 14.143152055578675 ns/iter 0.88
JSON_Object_At_Last_Key/128 55.35947244385835 ns/iter 64.95175386628868 ns/iter 0.85
JSON_Object_At_Last_Key/512 190.7481296227384 ns/iter 207.25163135673128 ns/iter 0.92
JSON_Fast_Hash_Helm_Chart_Lock 59.494365720529366 ns/iter 60.60736740947967 ns/iter 0.98
JSON_Equality_Helm_Chart_Lock 141.73790781692315 ns/iter 152.17202377841312 ns/iter 0.93
JSON_Divisible_By_Decimal 192.41723840678148 ns/iter 184.73810941054893 ns/iter 1.04
JSON_String_Equal/10 6.849892413811042 ns/iter 6.835423147609358 ns/iter 1.00
JSON_String_Equal/100 6.571050425865539 ns/iter 6.448746287229892 ns/iter 1.02
JSON_String_Equal_Small_By_Perfect_Hash/10 0.7626098453522845 ns/iter 0.3488762386737897 ns/iter 2.19
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 3.3841049826360514 ns/iter 3.2528761359169347 ns/iter 1.04
JSON_String_Fast_Hash/10 2.3642509002077974 ns/iter 2.372764754578207 ns/iter 1.00
JSON_String_Fast_Hash/100 2.0781155134214826 ns/iter 2.0440627329662386 ns/iter 1.02
JSON_String_Key_Hash/10 1.3476128062295083 ns/iter 1.7737349866781853 ns/iter 0.76
JSON_String_Key_Hash/100 2.228827466911107 ns/iter 2.153406343426162 ns/iter 1.04
JSON_Object_Defines_Miss_Same_Length 2.799770450655787 ns/iter 2.7325415706519762 ns/iter 1.02
JSON_Object_Defines_Miss_Too_Small 2.738891428032441 ns/iter 2.742022554489243 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 3.052885148678079 ns/iter 2.725539118990393 ns/iter 1.12
Pointer_Object_Traverse 19.668074379314753 ns/iter 23.95494089216502 ns/iter 0.82
Pointer_Object_Try_Traverse 27.53267572153316 ns/iter 24.351008646829484 ns/iter 1.13
Pointer_Push_Back_Pointer_To_Weak_Pointer 154.878782890975 ns/iter 183.47061875827146 ns/iter 0.84
Pointer_Walker_Schema_ISO_Language 4066637.16831692 ns/iter 3389497.6580089177 ns/iter 1.20
Pointer_Maybe_Tracked_Deeply_Nested/0 1029526.068783097 ns/iter 1349624.4211438135 ns/iter 0.76
Pointer_Maybe_Tracked_Deeply_Nested/1 1326837.679702043 ns/iter 1115661.9397162967 ns/iter 1.19
Pointer_Position_Tracker_Get_Deeply_Nested 402.7168758924638 ns/iter 395.6109677096304 ns/iter 1.02
URITemplateRouter_Create 23512.465967017568 ns/iter 25326.88007783238 ns/iter 0.93
URITemplateRouter_Match 186.0658943964045 ns/iter 186.83476056912025 ns/iter 1.00
URITemplateRouter_Match_BasePath 198.09509338047755 ns/iter 217.4598869208699 ns/iter 0.91
URITemplateRouterView_Restore 10458.959512862413 ns/iter 12022.734890318374 ns/iter 0.87
URITemplateRouterView_Match 134.58447283767597 ns/iter 146.77765603674408 ns/iter 0.92
URITemplateRouterView_Match_BasePath 154.9149949235388 ns/iter 160.92490438032917 ns/iter 0.96
URITemplateRouterView_Arguments 414.814965182204 ns/iter 559.3849382591806 ns/iter 0.74
JSONL_Parse_Large 12970269.296296785 ns/iter 11859627.737704448 ns/iter 1.09
JSONL_Parse_Large_GZIP 13957857.01960868 ns/iter 11338184.016667204 ns/iter 1.23
JSONLD_Catalog_Annotation_List_Populate 1017215.8826087756 ns/iter 878282.599999939 ns/iter 1.16
JSONLD_Catalog_Materialize 3178784.106976732 ns/iter 4602973.557692207 ns/iter 0.69
HTML_Build_Table_100000 65643791.69999484 ns/iter 37347125.00000258 ns/iter 1.76
HTML_Render_Table_100000 3414355.5555557567 ns/iter 1736452.473958335 ns/iter 1.97
GZIP_Compress_ISO_Language_Set_3_Locations 27230744.999997117 ns/iter 26300336.40740816 ns/iter 1.04
GZIP_Decompress_ISO_Language_Set_3_Locations 6148618.110236972 ns/iter 3168159.502262713 ns/iter 1.94
GZIP_Compress_ISO_Language_Set_3_Schema 1608372.9016017823 ns/iter 1534711.0133036682 ns/iter 1.05
GZIP_Decompress_ISO_Language_Set_3_Schema 288140.25943968596 ns/iter 277600.17906885303 ns/iter 1.04
JOSE_VerifySignature_RS256 25116.54790626378 ns/iter 22896.612310647462 ns/iter 1.10
JOSE_VerifySignature_ES512 992380.7529070126 ns/iter 1128739.0525478206 ns/iter 0.88

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: dbdaa90 Previous: fb05d59 Ratio
JOSE_VerifySignature_RS256 22267.785012362754 ns/iter 22362.58819972563 ns/iter 1.00
JOSE_VerifySignature_ES512 576149.0123456119 ns/iter 576863.09818483 ns/iter 1.00
GZIP_Compress_ISO_Language_Set_3_Locations 36770436.789472684 ns/iter 36263283.78946877 ns/iter 1.01
GZIP_Decompress_ISO_Language_Set_3_Locations 4082752.1812862386 ns/iter 4168008.4940474043 ns/iter 0.98
GZIP_Compress_ISO_Language_Set_3_Schema 2060186.2382353803 ns/iter 2008545.284482629 ns/iter 1.03
GZIP_Decompress_ISO_Language_Set_3_Schema 375224.07618021354 ns/iter 375553.9136265877 ns/iter 1.00
HTML_Build_Table_100000 59059599.999992914 ns/iter 59527101.166670114 ns/iter 0.99
HTML_Render_Table_100000 1929045.7929157391 ns/iter 1935573.3111110693 ns/iter 1.00
JSONLD_Catalog_Annotation_List_Populate 1331479.4491361768 ns/iter 1339867.7134616193 ns/iter 0.99
JSONLD_Catalog_Materialize 6539840.788990943 ns/iter 6559542.879629092 ns/iter 1.00
JSONL_Parse_Large 13522277.230770476 ns/iter 13369217.673075495 ns/iter 1.01
JSONL_Parse_Large_GZIP 14857665.02127688 ns/iter 14740756.553191628 ns/iter 1.01
URITemplateRouter_Create 30165.233086589164 ns/iter 29625.315495818013 ns/iter 1.02
URITemplateRouter_Match 154.71495941723026 ns/iter 156.48837822365076 ns/iter 0.99
URITemplateRouter_Match_BasePath 181.34028334932864 ns/iter 181.03385336897216 ns/iter 1.00
URITemplateRouterView_Restore 8679.854077826687 ns/iter 8307.811616125058 ns/iter 1.04
URITemplateRouterView_Match 126.04612813715717 ns/iter 125.38254511091624 ns/iter 1.01
URITemplateRouterView_Match_BasePath 143.25160832274273 ns/iter 142.33120487487616 ns/iter 1.01
URITemplateRouterView_Arguments 469.3712705494535 ns/iter 478.79646280099945 ns/iter 0.98
Pointer_Object_Traverse 30.41527924170496 ns/iter 30.473079647666786 ns/iter 1.00
Pointer_Object_Try_Traverse 22.72999631044602 ns/iter 22.701422056835742 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 155.84359555391865 ns/iter 163.4646940634121 ns/iter 0.95
Pointer_Walker_Schema_ISO_Language 2645497.999999851 ns/iter 2695405.392307748 ns/iter 0.98
Pointer_Maybe_Tracked_Deeply_Nested/0 1821119.606299226 ns/iter 1815103.7710526309 ns/iter 1.00
Pointer_Maybe_Tracked_Deeply_Nested/1 1707358.4229830534 ns/iter 1707656.0390242643 ns/iter 1.00
Pointer_Position_Tracker_Get_Deeply_Nested 557.2070719560762 ns/iter 512.0740404535253 ns/iter 1.09
JSON_Array_Of_Objects_Unique 445.4813511602486 ns/iter 443.2961374320017 ns/iter 1.00
JSON_Parse_1 9460.286014777985 ns/iter 9393.236690665888 ns/iter 1.01
JSON_Parse_Real 7479.737123536201 ns/iter 7735.7679257784 ns/iter 0.97
JSON_Parse_Decimal 12574.718498418266 ns/iter 12541.359577180485 ns/iter 1.00
JSON_Parse_Schema_ISO_Language 6504664.333333578 ns/iter 6565178.915887916 ns/iter 0.99
JSON_Parse_Integer 5782.15839231951 ns/iter 5769.626584314216 ns/iter 1.00
JSON_Parse_String_NonSSO_Plain 11918.21934750502 ns/iter 12071.520246478376 ns/iter 0.99
JSON_Parse_String_SSO_Plain 5011.680139642791 ns/iter 5241.452363750022 ns/iter 0.96
JSON_Parse_String_Escape_Heavy 25808.917438300097 ns/iter 26186.947681156016 ns/iter 0.99
JSON_Parse_Object_Short_Keys 13320.386821557626 ns/iter 13365.66257257182 ns/iter 1.00
JSON_Parse_Object_Scalar_Properties 6805.933186262624 ns/iter 6924.956327042307 ns/iter 0.98
JSON_Parse_Object_Array_Properties 11421.325729658503 ns/iter 11561.444459163586 ns/iter 0.99
JSON_Parse_Object_Object_Properties 11435.49946215546 ns/iter 11475.742008007404 ns/iter 1.00
JSON_Parse_Nested_Containers 96695.24996533738 ns/iter 95674.86328872114 ns/iter 1.01
JSON_From_String_Copy 17.455886674769765 ns/iter 17.467377436846 ns/iter 1.00
JSON_From_String_Temporary 15.11887761123164 ns/iter 15.11151017346576 ns/iter 1.00
JSON_Number_To_Double 20.89622932271154 ns/iter 20.879596521378947 ns/iter 1.00
JSON_Object_At_Last_Key/8 5.923863225586823 ns/iter 5.797186337454884 ns/iter 1.02
JSON_Object_At_Last_Key/32 21.835892162325006 ns/iter 21.830964978300592 ns/iter 1.00
JSON_Object_At_Last_Key/128 87.20889316316298 ns/iter 88.20044059145376 ns/iter 0.99
JSON_Object_At_Last_Key/512 402.74201484515316 ns/iter 400.2110631487693 ns/iter 1.01
JSON_Fast_Hash_Helm_Chart_Lock 62.24351784184077 ns/iter 61.090794754266135 ns/iter 1.02
JSON_Equality_Helm_Chart_Lock 164.34632687779106 ns/iter 166.956285522801 ns/iter 0.98
JSON_Divisible_By_Decimal 244.5344466664083 ns/iter 244.17129265670917 ns/iter 1.00
JSON_String_Equal/10 6.034430416667135 ns/iter 6.037667594383806 ns/iter 1.00
JSON_String_Equal/100 6.6629589683422275 ns/iter 6.6633234231816445 ns/iter 1.00
JSON_String_Equal_Small_By_Perfect_Hash/10 0.7395305946337286 ns/iter 0.7402864429415318 ns/iter 1.00
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 25.21159027122406 ns/iter 25.181719836269068 ns/iter 1.00
JSON_String_Fast_Hash/10 2.260408556656727 ns/iter 2.263691134411178 ns/iter 1.00
JSON_String_Fast_Hash/100 2.261610219438178 ns/iter 2.262012814005391 ns/iter 1.00
JSON_String_Key_Hash/10 1.2462040068320601 ns/iter 1.2540249650919462 ns/iter 0.99
JSON_String_Key_Hash/100 12.442965399278968 ns/iter 12.437626059884085 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 3.112418769977938 ns/iter 3.1142721997591982 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Small 3.1126672805390068 ns/iter 3.1142709939584052 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 3.422450967796199 ns/iter 3.423159739812719 ns/iter 1.00
Regex_Lower_S_Or_Upper_S_Asterisk 0.6228069590273698 ns/iter 0.6225277139923419 ns/iter 1.00
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 0.9340358359829473 ns/iter 0.9340774431535555 ns/iter 1.00
Regex_Period_Asterisk 0.6231110453796833 ns/iter 0.622786956681573 ns/iter 1.00
Regex_Group_Period_Asterisk_Group 0.9386096075142747 ns/iter 0.9336560192782278 ns/iter 1.01
Regex_Period_Plus 0.6225606836216723 ns/iter 0.62319988718175 ns/iter 1.00
Regex_Period 0.9341849449437262 ns/iter 0.9345305993221916 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 0.6229347691166424 ns/iter 0.6262584366595612 ns/iter 0.99
Regex_Caret_Group_Period_Plus_Group_Dollar 0.9343604268825507 ns/iter 0.9339945412593293 ns/iter 1.00
Regex_Caret_Period_Asterisk_Dollar 0.6231248128727113 ns/iter 0.6225104728368049 ns/iter 1.00
Regex_Caret_Group_Period_Asterisk_Group_Dollar 0.9340983406256956 ns/iter 0.9342664765210418 ns/iter 1.00
Regex_Caret_X_Hyphen 3.737787451648346 ns/iter 3.738628892465511 ns/iter 1.00
Regex_Period_Md_Dollar 32.62754222128453 ns/iter 28.633213455407457 ns/iter 1.14
Regex_Caret_Slash_Period_Asterisk 4.044233315206369 ns/iter 4.04407635032921 ns/iter 1.00
Regex_Caret_Period_Range_Dollar 1.5569650051323891 ns/iter 1.5564950490126916 ns/iter 1.00
Regex_Nested_Backtrack 42.64185130604206 ns/iter 40.053388516150534 ns/iter 1.06

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

Details
Benchmark suite Current: dbdaa90 Previous: af1b297 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.500836003643137 ns/iter 2.196737339619877 ns/iter 1.14
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.4970159237798715 ns/iter 2.182734856286784 ns/iter 1.14
Regex_Period_Asterisk 2.804736777776315 ns/iter 2.4585583289218014 ns/iter 1.14
Regex_Group_Period_Asterisk_Group 2.8059373609836844 ns/iter 2.454872086301719 ns/iter 1.14
Regex_Period_Plus 3.116247800639556 ns/iter 3.273039690570853 ns/iter 0.95
Regex_Period 3.116025741462657 ns/iter 3.2752223154723574 ns/iter 0.95
Regex_Caret_Period_Plus_Dollar 3.1757616881005077 ns/iter 3.5502059787237776 ns/iter 0.89
Regex_Caret_Group_Period_Plus_Group_Dollar 3.1167553940945 ns/iter 3.5480007167100496 ns/iter 0.88
Regex_Caret_Period_Asterisk_Dollar 2.493795906064359 ns/iter 2.4627321581563826 ns/iter 1.01
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.4913797177420918 ns/iter 2.4604938688058957 ns/iter 1.01
Regex_Caret_X_Hyphen 7.311341078352568 ns/iter 6.010228045210963 ns/iter 1.22
Regex_Period_Md_Dollar 27.95125141566346 ns/iter 20.484079535627707 ns/iter 1.36
Regex_Caret_Slash_Period_Asterisk 6.541788397133692 ns/iter 5.73522432059186 ns/iter 1.14
Regex_Caret_Period_Range_Dollar 4.35922913357725 ns/iter 2.45499208993446 ns/iter 1.78
Regex_Nested_Backtrack 38.28350613619494 ns/iter 29.934592762167348 ns/iter 1.28
JSON_Array_Of_Objects_Unique 407.29006935803653 ns/iter 324.0204782616417 ns/iter 1.26
JSON_Parse_1 5021.39307861444 ns/iter 3698.8916338153376 ns/iter 1.36
JSON_Parse_Real 5420.072237927649 ns/iter 4061.3648307524295 ns/iter 1.33
JSON_Parse_Decimal 7511.6236227546115 ns/iter 6716.554996019025 ns/iter 1.12
JSON_Parse_Schema_ISO_Language 3673886.7015706166 ns/iter 2914005.851851942 ns/iter 1.26
JSON_Parse_Integer 3853.5400753273507 ns/iter 3038.6032992899495 ns/iter 1.27
JSON_Parse_String_NonSSO_Plain 5114.723356538746 ns/iter 3917.450641173127 ns/iter 1.31
JSON_Parse_String_SSO_Plain 2837.4853816697337 ns/iter 2275.1798313593185 ns/iter 1.25
JSON_Parse_String_Escape_Heavy 14373.706904945995 ns/iter 11701.304651513694 ns/iter 1.23
JSON_Parse_Object_Short_Keys 8104.37827204036 ns/iter 6500.707458128851 ns/iter 1.25
JSON_Parse_Object_Scalar_Properties 4168.439948309412 ns/iter 3336.9342850603116 ns/iter 1.25
JSON_Parse_Object_Array_Properties 6282.379537804745 ns/iter 4756.913059470589 ns/iter 1.32
JSON_Parse_Object_Object_Properties 5430.036289832595 ns/iter 4723.506961418596 ns/iter 1.15
JSON_Parse_Nested_Containers 46926.762949540906 ns/iter 35335.77540213695 ns/iter 1.33
JSON_From_String_Copy 20.252629993856004 ns/iter 18.28563241157559 ns/iter 1.11
JSON_From_String_Temporary 17.80373870217033 ns/iter 16.133099535580193 ns/iter 1.10
JSON_Number_To_Double 24.501733826547017 ns/iter 17.403790960456316 ns/iter 1.41
JSON_Object_At_Last_Key/8 3.8276595353990053 ns/iter 3.114735510676425 ns/iter 1.23
JSON_Object_At_Last_Key/32 12.828829176943438 ns/iter 10.17707287916053 ns/iter 1.26
JSON_Object_At_Last_Key/128 48.87380004453558 ns/iter 37.38627213052234 ns/iter 1.31
JSON_Object_At_Last_Key/512 399.05096484395943 ns/iter 286.22760715637884 ns/iter 1.39
JSON_Fast_Hash_Helm_Chart_Lock 57.96039640273302 ns/iter 54.27242886291151 ns/iter 1.07
JSON_Equality_Helm_Chart_Lock 153.5519569450483 ns/iter 122.23781408963434 ns/iter 1.26
JSON_Divisible_By_Decimal 260.4365254412728 ns/iter 195.97431035797356 ns/iter 1.33
JSON_String_Equal/10 6.021169467143033 ns/iter 4.3672938314000005 ns/iter 1.38
JSON_String_Equal/100 6.556499845782226 ns/iter 5.188063911770155 ns/iter 1.26
JSON_String_Equal_Small_By_Perfect_Hash/10 0.9371455967947847 ns/iter 0.8195408060083677 ns/iter 1.14
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 14.93992812863435 ns/iter 9.570923590082495 ns/iter 1.56
JSON_String_Fast_Hash/10 2.511043593710335 ns/iter 1.911657705173844 ns/iter 1.31
JSON_String_Fast_Hash/100 2.4925512961566185 ns/iter 1.9106217663600666 ns/iter 1.30
JSON_String_Key_Hash/10 2.656493212865832 ns/iter 1.9104143319040208 ns/iter 1.39
JSON_String_Key_Hash/100 9.088321624881283 ns/iter 6.002376057636688 ns/iter 1.51
JSON_Object_Defines_Miss_Same_Length 2.895666659587259 ns/iter 2.3012647217280424 ns/iter 1.26
JSON_Object_Defines_Miss_Too_Small 2.6705858033433656 ns/iter 2.2899465745061387 ns/iter 1.17
JSON_Object_Defines_Miss_Too_Large 3.4357950981786534 ns/iter 3.2751954904995952 ns/iter 1.05
Pointer_Object_Traverse 29.248748278351336 ns/iter 23.797011583247354 ns/iter 1.23
Pointer_Object_Try_Traverse 31.144359890776677 ns/iter 25.59678396274033 ns/iter 1.22
Pointer_Push_Back_Pointer_To_Weak_Pointer 214.5439805271525 ns/iter 151.88883617903423 ns/iter 1.41
Pointer_Walker_Schema_ISO_Language 2727994.3399207694 ns/iter 2197996.074999864 ns/iter 1.24
Pointer_Maybe_Tracked_Deeply_Nested/0 1250040.0570410478 ns/iter 1004276.9344978546 ns/iter 1.24
Pointer_Maybe_Tracked_Deeply_Nested/1 1626384.5860349168 ns/iter 1351787.6737451705 ns/iter 1.20
Pointer_Position_Tracker_Get_Deeply_Nested 644.6215653539625 ns/iter 571.606583319941 ns/iter 1.13
URITemplateRouter_Create 31646.10465956469 ns/iter 23661.556856955256 ns/iter 1.34
URITemplateRouter_Match 172.1178891975107 ns/iter 127.76269336407131 ns/iter 1.35
URITemplateRouter_Match_BasePath 198.58789676871282 ns/iter 150.65284445728423 ns/iter 1.32
URITemplateRouterView_Restore 8542.69173791291 ns/iter 7670.92674980541 ns/iter 1.11
URITemplateRouterView_Match 145.1231737976107 ns/iter 108.00410604657414 ns/iter 1.34
URITemplateRouterView_Match_BasePath 163.63051366336026 ns/iter 120.71325790124523 ns/iter 1.36
URITemplateRouterView_Arguments 439.9244763696983 ns/iter 352.5074940072145 ns/iter 1.25
JSONL_Parse_Large 10091204.085714318 ns/iter 7272751.9270839505 ns/iter 1.39
JSONL_Parse_Large_GZIP 11627266.950000605 ns/iter 8590967.444445001 ns/iter 1.35
JSONLD_Catalog_Annotation_List_Populate 1263612.6763110745 ns/iter 988905.4360794347 ns/iter 1.28
JSONLD_Catalog_Materialize 4875863.006451518 ns/iter 3330247.2333335094 ns/iter 1.46
HTML_Build_Table_100000 69045717.20000377 ns/iter 52109707.15384415 ns/iter 1.33
HTML_Render_Table_100000 5695067.9508196255 ns/iter 4426500.961783273 ns/iter 1.29
GZIP_Compress_ISO_Language_Set_3_Locations 33059984.380954463 ns/iter 27367606.50000091 ns/iter 1.21
GZIP_Decompress_ISO_Language_Set_3_Locations 4454434.647435881 ns/iter 2914234.6317991256 ns/iter 1.53
GZIP_Compress_ISO_Language_Set_3_Schema 1867986.735294198 ns/iter 1623006.4513888676 ns/iter 1.15
GZIP_Decompress_ISO_Language_Set_3_Schema 357026.44824069896 ns/iter 195740.70095025777 ns/iter 1.82
JOSE_VerifySignature_RS256 58040.13275506126 ns/iter 50099.91900000159 ns/iter 1.16
JOSE_VerifySignature_ES512 2378117.9795918786 ns/iter 2183104.021874982 ns/iter 1.09

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

@jviotti jviotti merged commit af1b297 into main Jul 10, 2026
12 checks passed
@jviotti jviotti deleted the regex-compliance branch July 10, 2026 15:20

@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: dbdaa90 Previous: fb05d59 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 5.0927020000017365 ns/iter 5.026785626122178 ns/iter 1.01
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 5.329559000001609 ns/iter 5.333840178571287 ns/iter 1.00
Regex_Period_Asterisk 5.331693999999061 ns/iter 5.321372321428645 ns/iter 1.00
Regex_Group_Period_Asterisk_Group 5.33046099999865 ns/iter 5.327848214286795 ns/iter 1.00
Regex_Period_Plus 5.333772999999837 ns/iter 5.015804844870469 ns/iter 1.06
Regex_Period 5.016775670762743 ns/iter 4.76950569302905 ns/iter 1.05
Regex_Caret_Period_Plus_Dollar 5.3287410000007185 ns/iter 5.021018749999939 ns/iter 1.06
Regex_Caret_Group_Period_Plus_Group_Dollar 5.118887000000996 ns/iter 4.7684891974922925 ns/iter 1.07
Regex_Caret_Period_Asterisk_Dollar 5.015800999999556 ns/iter 5.020481999999902 ns/iter 1.00
Regex_Caret_Group_Period_Asterisk_Group_Dollar 5.336018000000422 ns/iter 5.324381000000358 ns/iter 1.00
Regex_Caret_X_Hyphen 8.180005580355397 ns/iter 8.155329241069811 ns/iter 1.00
Regex_Period_Md_Dollar 44.39240987149237 ns/iter 44.88783732242996 ns/iter 0.99
Regex_Caret_Slash_Period_Asterisk 8.168202008927189 ns/iter 8.156283482142003 ns/iter 1.00
Regex_Caret_Period_Range_Dollar 5.7671490000007 ns/iter 5.649170535714835 ns/iter 1.02
Regex_Nested_Backtrack 58.11684821428084 ns/iter 61.98855999998614 ns/iter 0.94
JSON_Array_Of_Objects_Unique 609.7484821428419 ns/iter 604.9253000001045 ns/iter 1.01
JSON_Parse_1 8815.57046620233 ns/iter 8920.729371741294 ns/iter 0.99
JSON_Parse_Real 16216.215287154817 ns/iter 16093.512902986731 ns/iter 1.01
JSON_Parse_Decimal 11873.809375000375 ns/iter 12118.467187498538 ns/iter 0.98
JSON_Parse_Schema_ISO_Language 7508918.888889739 ns/iter 7341742.222224133 ns/iter 1.02
JSON_Parse_Integer 6447.033035714509 ns/iter 6080.676785714445 ns/iter 1.06
JSON_Parse_String_NonSSO_Plain 7949.274553570465 ns/iter 7789.687499999738 ns/iter 1.02
JSON_Parse_String_SSO_Plain 3640.1528880850983 ns/iter 3801.661247034164 ns/iter 0.96
JSON_Parse_String_Escape_Heavy 21688.406250000015 ns/iter 22395.309375006887 ns/iter 0.97
JSON_Parse_Object_Short_Keys 13523.262500001465 ns/iter 13555.567857139293 ns/iter 1.00
JSON_Parse_Object_Scalar_Properties 6929.40178571482 ns/iter 6856.4071428584475 ns/iter 1.01
JSON_Parse_Object_Array_Properties 11427.715625000445 ns/iter 11388.756249999687 ns/iter 1.00
JSON_Parse_Object_Object_Properties 11598.84843750092 ns/iter 11563.743750002686 ns/iter 1.00
JSON_Parse_Nested_Containers 79960.8705357256 ns/iter 80132.81249998577 ns/iter 1.00
JSON_From_String_Copy 63.696062500002064 ns/iter 64.22086607141101 ns/iter 0.99
JSON_From_String_Temporary 59.56908928571433 ns/iter 59.14595535713829 ns/iter 1.01
JSON_Number_To_Double 122.3522500000383 ns/iter 120.98881250000915 ns/iter 1.01
JSON_Object_At_Last_Key/8 7.264399107143049 ns/iter 7.299218749999678 ns/iter 1.00
JSON_Object_At_Last_Key/32 23.037116930386524 ns/iter 23.072474999999315 ns/iter 1.00
JSON_Object_At_Last_Key/128 88.97039334952157 ns/iter 90.82210308830966 ns/iter 0.98
JSON_Object_At_Last_Key/512 419.3658482142735 ns/iter 416.28226713021 ns/iter 1.01
JSON_Fast_Hash_Helm_Chart_Lock 105.36621875001373 ns/iter 104.75371874999695 ns/iter 1.01
JSON_Equality_Helm_Chart_Lock 227.13462500000503 ns/iter 212.90103124997017 ns/iter 1.07
JSON_Divisible_By_Decimal 301.92239264264776 ns/iter 295.62457191688964 ns/iter 1.02
JSON_String_Equal/10 10.658318750000005 ns/iter 10.676328124997525 ns/iter 1.00
JSON_String_Equal/100 11.942521428571645 ns/iter 12.043837500000011 ns/iter 0.99
JSON_String_Equal_Small_By_Perfect_Hash/10 2.5071080111544317 ns/iter 2.507012857142854 ns/iter 1.00
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 14.18577984738564 ns/iter 15.040822031067302 ns/iter 0.94
JSON_String_Fast_Hash/10 6.989989285713705 ns/iter 6.898872321428939 ns/iter 1.01
JSON_String_Fast_Hash/100 6.896957142856763 ns/iter 6.898047991071062 ns/iter 1.00
JSON_String_Key_Hash/10 5.337700000000041 ns/iter 5.33077300000059 ns/iter 1.00
JSON_String_Key_Hash/100 11.948923214284994 ns/iter 11.873223214288535 ns/iter 1.01
JSON_Object_Defines_Miss_Same_Length 4.150508703503457 ns/iter 4.087815766228392 ns/iter 1.02
JSON_Object_Defines_Miss_Too_Small 4.455882499999575 ns/iter 4.3998353240183725 ns/iter 1.01
JSON_Object_Defines_Miss_Too_Large 4.186174694975209 ns/iter 4.086003891224848 ns/iter 1.02
Pointer_Object_Traverse 70.80011607143888 ns/iter 67.17907142856916 ns/iter 1.05
Pointer_Object_Try_Traverse 71.519178571415 ns/iter 70.65269642857126 ns/iter 1.01
Pointer_Push_Back_Pointer_To_Weak_Pointer 181.69516395279544 ns/iter 165.93744191547424 ns/iter 1.09
Pointer_Walker_Schema_ISO_Language 11419245.312499272 ns/iter 10304049.333332539 ns/iter 1.11
Pointer_Maybe_Tracked_Deeply_Nested/0 2413699.2857141388 ns/iter 2372930.000000549 ns/iter 1.02
Pointer_Maybe_Tracked_Deeply_Nested/1 3744004.812834126 ns/iter 3657755.3846153673 ns/iter 1.02
Pointer_Position_Tracker_Get_Deeply_Nested 513.0221297200998 ns/iter 532.4970535714409 ns/iter 0.96
URITemplateRouter_Create 41947.86355692587 ns/iter 42020.509546746995 ns/iter 1.00
URITemplateRouter_Match 233.6236346402283 ns/iter 232.36376870933225 ns/iter 1.01
URITemplateRouter_Match_BasePath 265.9360208006892 ns/iter 264.72435333593495 ns/iter 1.00
URITemplateRouterView_Restore 33620.33469273022 ns/iter 31429.772321435023 ns/iter 1.07
URITemplateRouterView_Match 181.92499838612474 ns/iter 177.04186899832473 ns/iter 1.03
URITemplateRouterView_Match_BasePath 207.2642429793116 ns/iter 202.43697756977963 ns/iter 1.02
URITemplateRouterView_Arguments 534.4179999999596 ns/iter 538.1277678570281 ns/iter 0.99
JSONL_Parse_Large 32990399.999995306 ns/iter 32495433.333332628 ns/iter 1.02
JSONL_Parse_Large_GZIP 33564905.000002906 ns/iter 33376857.142857693 ns/iter 1.01
JSONLD_Catalog_Annotation_List_Populate 2719370.075757779 ns/iter 2627009.848484966 ns/iter 1.04
JSONLD_Catalog_Materialize 8271404.000000378 ns/iter 7856064.444445109 ns/iter 1.05
HTML_Build_Table_100000 88740642.85711418 ns/iter 90247799.99997787 ns/iter 0.98
HTML_Render_Table_100000 7879209.821429153 ns/iter 7955569.642857897 ns/iter 0.99
GZIP_Compress_ISO_Language_Set_3_Locations 36813142.10526627 ns/iter 36328733.33333464 ns/iter 1.01
GZIP_Decompress_ISO_Language_Set_3_Locations 10022701.562501624 ns/iter 9937678.666668337 ns/iter 1.01
GZIP_Compress_ISO_Language_Set_3_Schema 2108812.463767749 ns/iter 2100080.625000089 ns/iter 1.00
GZIP_Decompress_ISO_Language_Set_3_Schema 640871.6071429614 ns/iter 629142.9464285767 ns/iter 1.02
JOSE_VerifySignature_RS256 21362.219171663055 ns/iter 21493.093842492013 ns/iter 0.99
JOSE_VerifySignature_ES512 1535739.9553569246 ns/iter 1553259.3749999332 ns/iter 0.99

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