Skip to content

Fix sanitizers not applying to library code#2596

Merged
jviotti merged 1 commit into
mainfrom
better-sanitizer
Jul 5, 2026
Merged

Fix sanitizers not applying to library code#2596
jviotti merged 1 commit into
mainfrom
better-sanitizer

Conversation

@jviotti

@jviotti jviotti commented Jul 5, 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 5, 2026

Copy link
Copy Markdown
🤖 Augment PR Summary

Summary: Moves sanitizer enabling earlier in the top-level CMake configuration so it applies to targets created in subsequent subdirectories.

Changes:

  • Invoke sourcemeta_sanitizer(...) before any add_subdirectory(...) calls define library targets
  • Remove the late sanitizer invocation that previously occurred after most library targets were already declared

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

# Enable the sanitizers before defining any target
if(SOURCEMETA_CORE_ADDRESS_SANITIZER)
sourcemeta_sanitizer(TYPE address)

@augmentcode augmentcode Bot Jul 5, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

CMakeLists.txt (diff line 62): because this is an if/elseif, if both SOURCEMETA_CORE_ADDRESS_SANITIZER and SOURCEMETA_CORE_UNDEFINED_SANITIZER are enabled, only the address sanitizer will be applied and the undefined sanitizer will be silently ignored.

Severity: low

Fix This in Augment

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

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

1 issue found across 1 file

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="CMakeLists.txt">

<violation number="1" location="CMakeLists.txt:63">
P3: Because this uses `if`/`elseif`, enabling both `SOURCEMETA_CORE_ADDRESS_SANITIZER` and `SOURCEMETA_CORE_UNDEFINED_SANITIZER` will silently apply only the address sanitizer while ignoring the undefined sanitizer. Consider either emitting a warning/error when both are set, or using separate `if` blocks (address and undefined sanitizers are compatible and can be combined in GCC/Clang).</violation>
</file>

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

Re-trigger cubic

Comment thread CMakeLists.txt
# Enable the sanitizers before defining any target
if(SOURCEMETA_CORE_ADDRESS_SANITIZER)
sourcemeta_sanitizer(TYPE address)
elseif(SOURCEMETA_CORE_UNDEFINED_SANITIZER)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P3: Because this uses if/elseif, enabling both SOURCEMETA_CORE_ADDRESS_SANITIZER and SOURCEMETA_CORE_UNDEFINED_SANITIZER will silently apply only the address sanitizer while ignoring the undefined sanitizer. Consider either emitting a warning/error when both are set, or using separate if blocks (address and undefined sanitizers are compatible and can be combined in GCC/Clang).

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At CMakeLists.txt, line 63:

<comment>Because this uses `if`/`elseif`, enabling both `SOURCEMETA_CORE_ADDRESS_SANITIZER` and `SOURCEMETA_CORE_UNDEFINED_SANITIZER` will silently apply only the address sanitizer while ignoring the undefined sanitizer. Consider either emitting a warning/error when both are set, or using separate `if` blocks (address and undefined sanitizers are compatible and can be combined in GCC/Clang).</comment>

<file context>
@@ -57,6 +57,13 @@ if(PROJECT_IS_TOP_LEVEL)
+# Enable the sanitizers before defining any target
+if(SOURCEMETA_CORE_ADDRESS_SANITIZER)
+  sourcemeta_sanitizer(TYPE address)
+elseif(SOURCEMETA_CORE_UNDEFINED_SANITIZER)
+  sourcemeta_sanitizer(TYPE undefined)
+endif()
</file context>

@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: b1b15d1 Previous: e1185a1 Ratio
JOSE_VerifySignature_RS256 19196.209716687856 ns/iter 24621.76340350995 ns/iter 0.78
JOSE_VerifySignature_ES512 497982.23721591645 ns/iter 641933.3244486246 ns/iter 0.78
GZIP_Compress_ISO_Language_Set_3_Locations 30345396.39130522 ns/iter 39407712.944441505 ns/iter 0.77
GZIP_Decompress_ISO_Language_Set_3_Locations 2839608.32926824 ns/iter 4057929.843930793 ns/iter 0.70
GZIP_Compress_ISO_Language_Set_3_Schema 1743019.437811027 ns/iter 2268106.672077734 ns/iter 0.77
GZIP_Decompress_ISO_Language_Set_3_Schema 218595.97656499175 ns/iter 303161.1959641186 ns/iter 0.72
HTML_Build_Table_100000 56643593.9166657 ns/iter 70639989.00000569 ns/iter 0.80
HTML_Render_Table_100000 2019893.457971002 ns/iter 2077665.415204563 ns/iter 0.97
JSONL_Parse_Large 9473927.418919114 ns/iter 12095123.431034327 ns/iter 0.78
JSONL_Parse_Large_GZIP 10614470.212121923 ns/iter 13614906.686275033 ns/iter 0.78
URITemplateRouter_Create 21976.905563143762 ns/iter 29677.12419409538 ns/iter 0.74
URITemplateRouter_Match 115.71707702323737 ns/iter 157.60985820485652 ns/iter 0.73
URITemplateRouter_Match_BasePath 137.0423429814347 ns/iter 186.78058877942692 ns/iter 0.73
URITemplateRouterView_Restore 7798.923776361143 ns/iter 9964.059888714368 ns/iter 0.78
URITemplateRouterView_Match 93.3720583065129 ns/iter 124.27616158931119 ns/iter 0.75
URITemplateRouterView_Match_BasePath 105.0725961314243 ns/iter 140.55923167004215 ns/iter 0.75
URITemplateRouterView_Arguments 353.29997345889643 ns/iter 458.6924205356641 ns/iter 0.77
Pointer_Object_Traverse 23.35693892364866 ns/iter 29.800465916988756 ns/iter 0.78
Pointer_Object_Try_Traverse 17.627971594250713 ns/iter 22.785006715287995 ns/iter 0.77
Pointer_Push_Back_Pointer_To_Weak_Pointer 129.62020387208364 ns/iter 173.11673261882189 ns/iter 0.75
Pointer_Walker_Schema_ISO_Language 1603156.5736263155 ns/iter 1947754.0879122543 ns/iter 0.82
Pointer_Maybe_Tracked_Deeply_Nested/0 1193677.9710885165 ns/iter 1531843.6043956424 ns/iter 0.78
Pointer_Maybe_Tracked_Deeply_Nested/1 1295374.0166052172 ns/iter 1669091.3404761972 ns/iter 0.78
Pointer_Position_Tracker_Get_Deeply_Nested 541.0774892260774 ns/iter 661.2422398303423 ns/iter 0.82
JSON_Array_Of_Objects_Unique 318.3841797435207 ns/iter 420.6600636186239 ns/iter 0.76
JSON_Parse_1 5820.8318422057155 ns/iter 7440.408489432534 ns/iter 0.78
JSON_Parse_Real 5347.44639970873 ns/iter 6516.906160942092 ns/iter 0.82
JSON_Parse_Decimal 7533.448066286309 ns/iter 9554.398602545847 ns/iter 0.79
JSON_Parse_Schema_ISO_Language 4012991.314285565 ns/iter 5081982.737226305 ns/iter 0.79
JSON_Parse_Integer 3776.887995423397 ns/iter 4913.220698315165 ns/iter 0.77
JSON_Parse_String_NonSSO_Plain 6611.5862010573865 ns/iter 8527.87842894253 ns/iter 0.78
JSON_Parse_String_SSO_Plain 2861.427437159663 ns/iter 3713.141977371626 ns/iter 0.77
JSON_Parse_String_Escape_Heavy 15682.283650189773 ns/iter 20351.903872451872 ns/iter 0.77
JSON_Parse_Object_Short_Keys 8832.655257586708 ns/iter 11335.388268655777 ns/iter 0.78
JSON_Parse_Object_Scalar_Properties 4455.607416596454 ns/iter 5691.684985431339 ns/iter 0.78
JSON_Parse_Object_Array_Properties 7296.511490170908 ns/iter 9423.208162825638 ns/iter 0.77
JSON_Parse_Object_Object_Properties 7290.624488265567 ns/iter 9437.31581790469 ns/iter 0.77
JSON_Parse_Nested_Containers 56994.65684193289 ns/iter 74841.1834783433 ns/iter 0.76
JSON_From_String_Copy 15.424336527476456 ns/iter 20.221561174167206 ns/iter 0.76
JSON_From_String_Temporary 12.72866449251338 ns/iter 16.969890472152503 ns/iter 0.75
JSON_Number_To_Double 16.105247347680574 ns/iter 20.76103888244001 ns/iter 0.78
JSON_Object_At_Last_Key/8 5.183038807234401 ns/iter 6.690137820160198 ns/iter 0.77
JSON_Object_At_Last_Key/32 18.557417132630878 ns/iter 23.923989503052795 ns/iter 0.78
JSON_Object_At_Last_Key/128 70.9372641852168 ns/iter 91.43864467034703 ns/iter 0.78
JSON_Object_At_Last_Key/512 294.4579929368004 ns/iter 378.99329302903135 ns/iter 0.78
JSON_Fast_Hash_Helm_Chart_Lock 42.781983843856075 ns/iter 52.90063778706393 ns/iter 0.81
JSON_Equality_Helm_Chart_Lock 124.50690681138268 ns/iter 166.2760967511958 ns/iter 0.75
JSON_Divisible_By_Decimal 180.3271707754561 ns/iter 232.36816496710705 ns/iter 0.78
JSON_String_Equal/10 5.015186798836572 ns/iter 6.466769769554801 ns/iter 0.78
JSON_String_Equal/100 5.8463944649184745 ns/iter 7.16777588135382 ns/iter 0.82
JSON_String_Equal_Small_By_Perfect_Hash/10 0.5558628485844769 ns/iter 0.7154431624330226 ns/iter 0.78
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 17.01558413786294 ns/iter 21.929686652018912 ns/iter 0.78
JSON_String_Fast_Hash/10 0.8198850329780853 ns/iter 1.0559088282107394 ns/iter 0.78
JSON_String_Fast_Hash/100 0.8186287293515534 ns/iter 1.0550764104418444 ns/iter 0.78
JSON_String_Key_Hash/10 1.365519040234675 ns/iter 1.7590405192538192 ns/iter 0.78
JSON_String_Key_Hash/100 11.452000874406076 ns/iter 14.759204179263268 ns/iter 0.78
JSON_Object_Defines_Miss_Same_Length 3.0022330519566003 ns/iter 3.8837208246193327 ns/iter 0.77
JSON_Object_Defines_Miss_Too_Small 3.0051268354025105 ns/iter 3.8668139931899175 ns/iter 0.78
JSON_Object_Defines_Miss_Too_Large 2.72852307819833 ns/iter 3.5164297364284836 ns/iter 0.78
Regex_Lower_S_Or_Upper_S_Asterisk 0.5451330963474476 ns/iter 0.7034811785577241 ns/iter 0.77
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 0.5454928601101734 ns/iter 0.703598776175089 ns/iter 0.78
Regex_Period_Asterisk 0.8191717284672138 ns/iter 1.0554632977117702 ns/iter 0.78
Regex_Group_Period_Asterisk_Group 0.8183295710809753 ns/iter 1.054929288462087 ns/iter 0.78
Regex_Period_Plus 0.5454709321635074 ns/iter 0.7030832931930526 ns/iter 0.78
Regex_Period 0.545731036288929 ns/iter 0.7035980525315556 ns/iter 0.78
Regex_Caret_Period_Plus_Dollar 0.8186028002588484 ns/iter 1.0551313723196345 ns/iter 0.78
Regex_Caret_Group_Period_Plus_Group_Dollar 0.8190669538149762 ns/iter 1.054622772012515 ns/iter 0.78
Regex_Caret_Period_Asterisk_Dollar 0.5461591127297846 ns/iter 0.704939014479256 ns/iter 0.77
Regex_Caret_Group_Period_Asterisk_Group_Dollar 0.5461309875401291 ns/iter 0.7054944676575348 ns/iter 0.77
Regex_Caret_X_Hyphen 2.7286209706791382 ns/iter 3.5156473304259417 ns/iter 0.78
Regex_Period_Md_Dollar 25.37758395539892 ns/iter 37.16174354682062 ns/iter 0.68
Regex_Caret_Slash_Period_Asterisk 3.272330593247807 ns/iter 4.570256295910035 ns/iter 0.72
Regex_Caret_Period_Range_Dollar 0.6512364675349762 ns/iter 0.8385556584908963 ns/iter 0.78
Regex_Nested_Backtrack 29.301903387731418 ns/iter 40.84462589691236 ns/iter 0.72

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: b1b15d1 Previous: e1185a1 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 1.5845421227445287 ns/iter 1.7230359829648672 ns/iter 0.92
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.8813739790199169 ns/iter 1.7209469946854663 ns/iter 1.09
Regex_Period_Asterisk 1.588368370094412 ns/iter 1.7158324169543806 ns/iter 0.93
Regex_Group_Period_Asterisk_Group 1.573349396777416 ns/iter 1.6891316872665632 ns/iter 0.93
Regex_Period_Plus 1.9939944898440445 ns/iter 2.4687097028099334 ns/iter 0.81
Regex_Period 2.004594253814746 ns/iter 2.4649792522442966 ns/iter 0.81
Regex_Caret_Period_Plus_Dollar 1.8820658914375508 ns/iter 2.113404225615793 ns/iter 0.89
Regex_Caret_Group_Period_Plus_Group_Dollar 1.8821906213230866 ns/iter 2.1187825806287766 ns/iter 0.89
Regex_Caret_Period_Asterisk_Dollar 1.7426561818922006 ns/iter 1.729668777520609 ns/iter 1.01
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.6703366935178592 ns/iter 1.70124412781329 ns/iter 0.98
Regex_Caret_X_Hyphen 5.654424604650547 ns/iter 6.236895490169206 ns/iter 0.91
Regex_Period_Md_Dollar 16.527987167657052 ns/iter 17.859341307909865 ns/iter 0.93
Regex_Caret_Slash_Period_Asterisk 4.08165870255059 ns/iter 4.63218446698526 ns/iter 0.88
Regex_Caret_Period_Range_Dollar 1.885554366412619 ns/iter 2.1138101000813427 ns/iter 0.89
Regex_Nested_Backtrack 22.988061166254116 ns/iter 25.85610061498455 ns/iter 0.89
JSON_Array_Of_Objects_Unique 314.9400895328427 ns/iter 342.20918505638025 ns/iter 0.92
JSON_Parse_1 3410.8361058181067 ns/iter 5942.749610244918 ns/iter 0.57
JSON_Parse_Real 4957.837546238778 ns/iter 8266.551975073546 ns/iter 0.60
JSON_Parse_Decimal 5131.058303809332 ns/iter 8707.537277761796 ns/iter 0.59
JSON_Parse_Schema_ISO_Language 3027933.623376389 ns/iter 3317614.6809518333 ns/iter 0.91
JSON_Parse_Integer 2845.1714664842743 ns/iter 4303.471111898485 ns/iter 0.66
JSON_Parse_String_NonSSO_Plain 3424.6718201623357 ns/iter 5675.654950374874 ns/iter 0.60
JSON_Parse_String_SSO_Plain 1637.6802666398908 ns/iter 2388.5492506913647 ns/iter 0.69
JSON_Parse_String_Escape_Heavy 15173.76717953079 ns/iter 18963.896696812375 ns/iter 0.80
JSON_Parse_Object_Short_Keys 5144.368763269368 ns/iter 6722.220841045775 ns/iter 0.77
JSON_Parse_Object_Scalar_Properties 2676.8836278369577 ns/iter 3494.0638155862716 ns/iter 0.77
JSON_Parse_Object_Array_Properties 3241.4306349351878 ns/iter 5383.029055620651 ns/iter 0.60
JSON_Parse_Object_Object_Properties 3260.846228963119 ns/iter 5850.157527434678 ns/iter 0.56
JSON_Parse_Nested_Containers 26158.594828551144 ns/iter 52156.20419999141 ns/iter 0.50
JSON_From_String_Copy 22.583329696573287 ns/iter 23.236038032591313 ns/iter 0.97
JSON_From_String_Temporary 18.2380917083851 ns/iter 24.161042068908078 ns/iter 0.75
JSON_Number_To_Double 30.840959426661524 ns/iter 36.39027963718112 ns/iter 0.85
JSON_Object_At_Last_Key/8 3.532342634165317 ns/iter 3.974459521380905 ns/iter 0.89
JSON_Object_At_Last_Key/32 10.998091741747125 ns/iter 12.722703220175301 ns/iter 0.86
JSON_Object_At_Last_Key/128 50.39412231067537 ns/iter 58.019103117028386 ns/iter 0.87
JSON_Object_At_Last_Key/512 173.50239257611014 ns/iter 192.41225546205916 ns/iter 0.90
JSON_Fast_Hash_Helm_Chart_Lock 54.3839362820569 ns/iter 58.57123792250916 ns/iter 0.93
JSON_Equality_Helm_Chart_Lock 123.74816940283482 ns/iter 135.60742555862103 ns/iter 0.91
JSON_Divisible_By_Decimal 161.9211802800155 ns/iter 179.1944909529645 ns/iter 0.90
JSON_String_Equal/10 6.877687418935981 ns/iter 6.8097200717137785 ns/iter 1.01
JSON_String_Equal/100 6.478026948161024 ns/iter 6.536238848377875 ns/iter 0.99
JSON_String_Equal_Small_By_Perfect_Hash/10 0.7347907147933389 ns/iter 0.34508046566738715 ns/iter 2.13
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 3.671012972350619 ns/iter 3.4890849467996654 ns/iter 1.05
JSON_String_Fast_Hash/10 2.905833336224832 ns/iter 2.849216899348344 ns/iter 1.02
JSON_String_Fast_Hash/100 2.5452077941899103 ns/iter 1.9976175129510327 ns/iter 1.27
JSON_String_Key_Hash/10 1.303062853088231 ns/iter 1.684160182852195 ns/iter 0.77
JSON_String_Key_Hash/100 2.1157192954093462 ns/iter 2.169263199565051 ns/iter 0.98
JSON_Object_Defines_Miss_Same_Length 2.20831984028091 ns/iter 2.6681134190412172 ns/iter 0.83
JSON_Object_Defines_Miss_Too_Small 2.205316102189262 ns/iter 2.6621717183971856 ns/iter 0.83
JSON_Object_Defines_Miss_Too_Large 2.1977851684303906 ns/iter 2.6968256522164804 ns/iter 0.81
Pointer_Object_Traverse 13.058851554780249 ns/iter 18.228473635428355 ns/iter 0.72
Pointer_Object_Try_Traverse 21.54698393853272 ns/iter 18.28696892059247 ns/iter 1.18
Pointer_Push_Back_Pointer_To_Weak_Pointer 144.46205356045226 ns/iter 205.07035495577338 ns/iter 0.70
Pointer_Walker_Schema_ISO_Language 1964068.5027174305 ns/iter 1635816.4183165317 ns/iter 1.20
Pointer_Maybe_Tracked_Deeply_Nested/0 906846.8634686746 ns/iter 1103091.1341652523 ns/iter 0.82
Pointer_Maybe_Tracked_Deeply_Nested/1 1605826.8321513375 ns/iter 1273617.1563024034 ns/iter 1.26
Pointer_Position_Tracker_Get_Deeply_Nested 338.19287879776414 ns/iter 404.6486491696015 ns/iter 0.84
URITemplateRouter_Create 23639.273602461275 ns/iter 24476.910634148633 ns/iter 0.97
URITemplateRouter_Match 161.99750143719876 ns/iter 177.68583788685208 ns/iter 0.91
URITemplateRouter_Match_BasePath 181.46215375371503 ns/iter 208.91296125649814 ns/iter 0.87
URITemplateRouterView_Restore 10968.612950652847 ns/iter 14536.14298411128 ns/iter 0.75
URITemplateRouterView_Match 121.04419001441103 ns/iter 159.20011679035386 ns/iter 0.76
URITemplateRouterView_Match_BasePath 137.2308738592113 ns/iter 183.30947000968928 ns/iter 0.75
URITemplateRouterView_Arguments 375.038978548487 ns/iter 700.9063817810269 ns/iter 0.54
JSONL_Parse_Large 11474061.74074048 ns/iter 14519288.187500479 ns/iter 0.79
JSONL_Parse_Large_GZIP 12203790.210526023 ns/iter 13504865.840000093 ns/iter 0.90
HTML_Build_Table_100000 60233270.80000627 ns/iter 40186387.23529393 ns/iter 1.50
HTML_Render_Table_100000 3290690.6779665193 ns/iter 2354088.036290411 ns/iter 1.40
GZIP_Compress_ISO_Language_Set_3_Locations 24598877.964288183 ns/iter 32995156.76190995 ns/iter 0.75
GZIP_Decompress_ISO_Language_Set_3_Locations 5613127.798657946 ns/iter 4034692.005025227 ns/iter 1.39
GZIP_Compress_ISO_Language_Set_3_Schema 1628162.1612244395 ns/iter 1812805.138587484 ns/iter 0.90
GZIP_Decompress_ISO_Language_Set_3_Schema 250044.26870006835 ns/iter 300812.11781488656 ns/iter 0.83
JOSE_VerifySignature_RS256 20205.826975911114 ns/iter 25146.306152875783 ns/iter 0.80
JOSE_VerifySignature_ES512 904209.0309278427 ns/iter 1252728.7857142172 ns/iter 0.72

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: b1b15d1 Previous: e1185a1 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.5506000971401757 ns/iter 2.4934915190987095 ns/iter 1.02
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.180289323649153 ns/iter 2.1796208112950812 ns/iter 1.00
Regex_Period_Asterisk 2.180407591446168 ns/iter 2.179649961265424 ns/iter 1.00
Regex_Group_Period_Asterisk_Group 2.491255627729462 ns/iter 2.491751874134214 ns/iter 1.00
Regex_Period_Plus 3.114508500126609 ns/iter 3.1134161386402566 ns/iter 1.00
Regex_Period 2.8029744636499476 ns/iter 2.816568941941417 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 2.807951719261987 ns/iter 2.802179113159097 ns/iter 1.00
Regex_Caret_Group_Period_Plus_Group_Dollar 2.9788460396799046 ns/iter 3.1122000301342907 ns/iter 0.96
Regex_Caret_Period_Asterisk_Dollar 2.4916596571512724 ns/iter 3.7383387354080795 ns/iter 0.67
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.1804376979396296 ns/iter 3.421863042102589 ns/iter 0.64
Regex_Caret_X_Hyphen 6.235765796249661 ns/iter 6.541634248397777 ns/iter 0.95
Regex_Period_Md_Dollar 28.822782131819075 ns/iter 28.80553242848361 ns/iter 1.00
Regex_Caret_Slash_Period_Asterisk 6.227236378070244 ns/iter 5.915070700605859 ns/iter 1.05
Regex_Caret_Period_Range_Dollar 3.747988287547597 ns/iter 2.4912799887066233 ns/iter 1.50
Regex_Nested_Backtrack 37.857871301299184 ns/iter 37.551829684523554 ns/iter 1.01
JSON_Array_Of_Objects_Unique 445.7746565659007 ns/iter 440.2422713879683 ns/iter 1.01
JSON_Parse_1 4918.615103660313 ns/iter 4881.447566234115 ns/iter 1.01
JSON_Parse_Real 5149.627706426983 ns/iter 5281.34607448102 ns/iter 0.98
JSON_Parse_Decimal 7590.220777513757 ns/iter 7755.6654587642515 ns/iter 0.98
JSON_Parse_Schema_ISO_Language 3592032.505102164 ns/iter 3575984.7005072995 ns/iter 1.00
JSON_Parse_Integer 3744.683236295301 ns/iter 3767.2476236937455 ns/iter 0.99
JSON_Parse_String_NonSSO_Plain 5132.625589708916 ns/iter 5139.262783592357 ns/iter 1.00
JSON_Parse_String_SSO_Plain 2831.660228241967 ns/iter 2848.521963025403 ns/iter 0.99
JSON_Parse_String_Escape_Heavy 14816.584936613717 ns/iter 14499.461758368174 ns/iter 1.02
JSON_Parse_Object_Short_Keys 8014.978760434642 ns/iter 7786.901557348384 ns/iter 1.03
JSON_Parse_Object_Scalar_Properties 4150.492319553387 ns/iter 4025.4273625959163 ns/iter 1.03
JSON_Parse_Object_Array_Properties 5793.441769659881 ns/iter 5542.1959089367365 ns/iter 1.05
JSON_Parse_Object_Object_Properties 5732.953951879179 ns/iter 5455.567433058072 ns/iter 1.05
JSON_Parse_Nested_Containers 45096.06268946095 ns/iter 45105.20666967634 ns/iter 1.00
JSON_From_String_Copy 20.644201807197916 ns/iter 21.494923288086248 ns/iter 0.96
JSON_From_String_Temporary 18.082023758787763 ns/iter 19.00126548388608 ns/iter 0.95
JSON_Number_To_Double 23.470861959688612 ns/iter 23.414437865939274 ns/iter 1.00
JSON_Object_At_Last_Key/8 3.739380014012576 ns/iter 3.7014461846714863 ns/iter 1.01
JSON_Object_At_Last_Key/32 11.916523839432589 ns/iter 11.919228475596098 ns/iter 1.00
JSON_Object_At_Last_Key/128 48.28002435429474 ns/iter 48.26863232788302 ns/iter 1.00
JSON_Object_At_Last_Key/512 382.8827886700892 ns/iter 385.06651123066035 ns/iter 0.99
JSON_Fast_Hash_Helm_Chart_Lock 65.99374972637708 ns/iter 66.3167613237436 ns/iter 1.00
JSON_Equality_Helm_Chart_Lock 159.83640821414573 ns/iter 166.67949239441583 ns/iter 0.96
JSON_Divisible_By_Decimal 244.49282429780263 ns/iter 241.99417665497126 ns/iter 1.01
JSON_String_Equal/10 6.2416601131558895 ns/iter 6.233411184289182 ns/iter 1.00
JSON_String_Equal/100 6.861824374366244 ns/iter 6.862196234662339 ns/iter 1.00
JSON_String_Equal_Small_By_Perfect_Hash/10 0.9350981998521534 ns/iter 0.9352883858174837 ns/iter 1.00
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 14.949392915332213 ns/iter 14.9349934455686 ns/iter 1.00
JSON_String_Fast_Hash/10 2.8019429117769836 ns/iter 2.8015089855868855 ns/iter 1.00
JSON_String_Fast_Hash/100 2.8118060900371433 ns/iter 2.8033792538334854 ns/iter 1.00
JSON_String_Key_Hash/10 2.6645008287523875 ns/iter 2.6660431526304222 ns/iter 1.00
JSON_String_Key_Hash/100 9.02894769429192 ns/iter 9.023995019968988 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 2.6616463633064935 ns/iter 2.5978994264969675 ns/iter 1.02
JSON_Object_Defines_Miss_Too_Small 3.755044907800172 ns/iter 3.7463540490066984 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 2.6779411065195045 ns/iter 2.6217211269953484 ns/iter 1.02
Pointer_Object_Traverse 24.02610874523438 ns/iter 25.226181614641597 ns/iter 0.95
Pointer_Object_Try_Traverse 30.210649700631105 ns/iter 30.193511638062215 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 207.472170552628 ns/iter 197.18813331695154 ns/iter 1.05
Pointer_Walker_Schema_ISO_Language 1749948.5012467518 ns/iter 1726124.482758696 ns/iter 1.01
Pointer_Maybe_Tracked_Deeply_Nested/0 1279975.8876811266 ns/iter 1254437.8090090072 ns/iter 1.02
Pointer_Maybe_Tracked_Deeply_Nested/1 1628544.9465116006 ns/iter 1619242.9000001496 ns/iter 1.01
Pointer_Position_Tracker_Get_Deeply_Nested 697.0239962481907 ns/iter 688.0118180441254 ns/iter 1.01
URITemplateRouter_Create 33212.62127355249 ns/iter 34931.096744453345 ns/iter 0.95
URITemplateRouter_Match 177.98715798681312 ns/iter 179.0353961209884 ns/iter 0.99
URITemplateRouter_Match_BasePath 206.45346655761372 ns/iter 208.08220205517802 ns/iter 0.99
URITemplateRouterView_Restore 8555.535289252875 ns/iter 8512.609090046584 ns/iter 1.01
URITemplateRouterView_Match 142.05213138630288 ns/iter 141.97356023012603 ns/iter 1.00
URITemplateRouterView_Match_BasePath 162.26031293990042 ns/iter 162.1536541795094 ns/iter 1.00
URITemplateRouterView_Arguments 422.736880774683 ns/iter 421.80701826451696 ns/iter 1.00
JSONL_Parse_Large 9971606.914284946 ns/iter 9786646.788732367 ns/iter 1.02
JSONL_Parse_Large_GZIP 11576111.300000018 ns/iter 11414836.852459004 ns/iter 1.01
HTML_Build_Table_100000 68137794.30000296 ns/iter 67928147.70000178 ns/iter 1.00
HTML_Render_Table_100000 5504331.881889439 ns/iter 5415457.865079509 ns/iter 1.02
GZIP_Compress_ISO_Language_Set_3_Locations 32655319.761905354 ns/iter 32557067.809523776 ns/iter 1.00
GZIP_Decompress_ISO_Language_Set_3_Locations 4298459.932926574 ns/iter 4319369.838323107 ns/iter 1.00
GZIP_Compress_ISO_Language_Set_3_Schema 1858174.8537232736 ns/iter 1862367.906914855 ns/iter 1.00
GZIP_Decompress_ISO_Language_Set_3_Schema 358184.5404713089 ns/iter 358549.0818414141 ns/iter 1.00
JOSE_VerifySignature_RS256 58270.69804574134 ns/iter 58131.73627744908 ns/iter 1.00
JOSE_VerifySignature_ES512 2440299.559440474 ns/iter 2419831.934256193 ns/iter 1.01

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

@jviotti jviotti merged commit e6abd0a into main Jul 5, 2026
12 checks passed
@jviotti jviotti deleted the better-sanitizer branch July 5, 2026 21:13

@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: b1b15d1 Previous: e1185a1 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 5.03124200000002 ns/iter 5.10006599999997 ns/iter 0.99
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 5.037011000001712 ns/iter 5.036297999999988 ns/iter 1.00
Regex_Period_Asterisk 5.047194000001127 ns/iter 5.06571699999995 ns/iter 1.00
Regex_Group_Period_Asterisk_Group 5.051204999999754 ns/iter 5.0266770000007455 ns/iter 1.00
Regex_Period_Plus 4.828249309113015 ns/iter 4.831860670720735 ns/iter 1.00
Regex_Period 4.843222724295907 ns/iter 4.821324130540532 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 4.828675559112977 ns/iter 4.832671652863613 ns/iter 1.00
Regex_Caret_Group_Period_Plus_Group_Dollar 4.845780144745792 ns/iter 4.837744443044434 ns/iter 1.00
Regex_Caret_Period_Asterisk_Dollar 5.030069000001731 ns/iter 5.051800999999614 ns/iter 1.00
Regex_Caret_Group_Period_Asterisk_Group_Dollar 5.03804196428551 ns/iter 5.040910714285474 ns/iter 1.00
Regex_Caret_X_Hyphen 8.18793612416113 ns/iter 8.223440588288536 ns/iter 1.00
Regex_Period_Md_Dollar 44.20997500000112 ns/iter 44.32133397927266 ns/iter 1.00
Regex_Caret_Slash_Period_Asterisk 7.86992968750003 ns/iter 7.892550223215064 ns/iter 1.00
Regex_Caret_Period_Range_Dollar 5.65313599999854 ns/iter 5.66055625000063 ns/iter 1.00
Regex_Nested_Backtrack 55.059490000007834 ns/iter 54.781709999997474 ns/iter 1.01
JSON_Array_Of_Objects_Unique 518.7366000000111 ns/iter 521.1277000000791 ns/iter 1.00
JSON_Parse_1 8851.263610430147 ns/iter 8923.338288667712 ns/iter 0.99
JSON_Parse_Real 16626.625000003718 ns/iter 16329.183035718333 ns/iter 1.02
JSON_Parse_Decimal 11815.66093750064 ns/iter 12053.621428573739 ns/iter 0.98
JSON_Parse_Schema_ISO_Language 7664469.999998699 ns/iter 7778742.857143226 ns/iter 0.99
JSON_Parse_Integer 6160.264285715097 ns/iter 6220.110714285252 ns/iter 0.99
JSON_Parse_String_NonSSO_Plain 7855.5055803570485 ns/iter 7952.767857144494 ns/iter 0.99
JSON_Parse_String_SSO_Plain 3737.2034520464767 ns/iter 3755.779575892301 ns/iter 1.00
JSON_Parse_String_Escape_Heavy 21689.698798680027 ns/iter 22204.19374999949 ns/iter 0.98
JSON_Parse_Object_Short_Keys 13328.862147936943 ns/iter 13361.344368994782 ns/iter 1.00
JSON_Parse_Object_Scalar_Properties 6863.861607141887 ns/iter 6875.728571427788 ns/iter 1.00
JSON_Parse_Object_Array_Properties 11266.160714285434 ns/iter 11362.33437500067 ns/iter 0.99
JSON_Parse_Object_Object_Properties 11439.62321428457 ns/iter 11641.183928572576 ns/iter 0.98
JSON_Parse_Nested_Containers 78936.07142856394 ns/iter 81041.5625000108 ns/iter 0.97
JSON_From_String_Copy 63.62794642855972 ns/iter 63.82036830357509 ns/iter 1.00
JSON_From_String_Temporary 59.87829464286522 ns/iter 59.61055000000215 ns/iter 1.00
JSON_Number_To_Double 122.50010714284697 ns/iter 122.54121428570994 ns/iter 1.00
JSON_Object_At_Last_Key/8 7.258952008926757 ns/iter 7.261840178571789 ns/iter 1.00
JSON_Object_At_Last_Key/32 23.391049962153875 ns/iter 23.439197283045335 ns/iter 1.00
JSON_Object_At_Last_Key/128 89.70580849528868 ns/iter 90.02348214285202 ns/iter 1.00
JSON_Object_At_Last_Key/512 423.81050818473796 ns/iter 425.90620270861035 ns/iter 1.00
JSON_Fast_Hash_Helm_Chart_Lock 67.29618750000554 ns/iter 66.60258035714556 ns/iter 1.01
JSON_Equality_Helm_Chart_Lock 301.0070422982743 ns/iter 302.9958035714994 ns/iter 0.99
JSON_Divisible_By_Decimal 299.70935940745585 ns/iter 299.9443147383614 ns/iter 1.00
JSON_String_Equal/10 15.4035200205176 ns/iter 15.542390625000735 ns/iter 0.99
JSON_String_Equal/100 16.676185267857793 ns/iter 16.72519296835541 ns/iter 1.00
JSON_String_Equal_Small_By_Perfect_Hash/10 2.5203567857139273 ns/iter 2.517088571428465 ns/iter 1.00
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 14.210700606202845 ns/iter 14.228983928571129 ns/iter 1.00
JSON_String_Fast_Hash/10 4.704865189074281 ns/iter 4.721964978732548 ns/iter 1.00
JSON_String_Fast_Hash/100 4.714947331953749 ns/iter 4.726017198049116 ns/iter 1.00
JSON_String_Key_Hash/10 5.349636607141812 ns/iter 5.371504999998251 ns/iter 1.00
JSON_String_Key_Hash/100 11.900066071429398 ns/iter 11.892232142855619 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 4.104203124999373 ns/iter 4.092985444601776 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Small 5.044070000001284 ns/iter 5.145226385077246 ns/iter 0.98
JSON_Object_Defines_Miss_Too_Large 4.415390457908481 ns/iter 4.419021292669959 ns/iter 1.00
Pointer_Object_Traverse 70.31994642856277 ns/iter 70.26396428571502 ns/iter 1.00
Pointer_Object_Try_Traverse 68.12216517855875 ns/iter 68.07050000000052 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 183.80658783984413 ns/iter 190.51581409700466 ns/iter 0.96
Pointer_Walker_Schema_ISO_Language 8691455.555554561 ns/iter 7275462.222221701 ns/iter 1.19
Pointer_Maybe_Tracked_Deeply_Nested/0 2442038.2575754323 ns/iter 2385594.6428568587 ns/iter 1.02
Pointer_Maybe_Tracked_Deeply_Nested/1 3698024.5989296837 ns/iter 3696472.192513998 ns/iter 1.00
Pointer_Position_Tracker_Get_Deeply_Nested 517.3947321428127 ns/iter 548.8600753198448 ns/iter 0.94
URITemplateRouter_Create 40871.666577371434 ns/iter 42099.92165371138 ns/iter 0.97
URITemplateRouter_Match 233.320922620418 ns/iter 233.19680433067364 ns/iter 1.00
URITemplateRouter_Match_BasePath 265.1328087112648 ns/iter 265.64937346650606 ns/iter 1.00
URITemplateRouterView_Restore 32462.813481464444 ns/iter 32222.918698842732 ns/iter 1.01
URITemplateRouterView_Match 179.41764817528588 ns/iter 179.9533017815843 ns/iter 1.00
URITemplateRouterView_Match_BasePath 206.14281892215396 ns/iter 205.87254661282032 ns/iter 1.00
URITemplateRouterView_Arguments 535.3903571428224 ns/iter 539.6633928571403 ns/iter 0.99
JSONL_Parse_Large 32722814.285718758 ns/iter 33361009.523808945 ns/iter 0.98
JSONL_Parse_Large_GZIP 33270152.38095382 ns/iter 34193219.999997385 ns/iter 0.97
HTML_Build_Table_100000 89141388.88889688 ns/iter 89231714.28572069 ns/iter 1.00
HTML_Render_Table_100000 7730966.666665356 ns/iter 7704779.999999624 ns/iter 1.00
GZIP_Compress_ISO_Language_Set_3_Locations 35909336.84210397 ns/iter 36006552.63156975 ns/iter 1.00
GZIP_Decompress_ISO_Language_Set_3_Locations 9993370.31250036 ns/iter 9965136.000000712 ns/iter 1.00
GZIP_Compress_ISO_Language_Set_3_Schema 2107042.3188404306 ns/iter 2100625.0000006333 ns/iter 1.00
GZIP_Decompress_ISO_Language_Set_3_Schema 647997.3214285094 ns/iter 624221.5178571899 ns/iter 1.04
JOSE_VerifySignature_RS256 21320.646875004455 ns/iter 21261.934374997796 ns/iter 1.00
JOSE_VerifySignature_ES512 1539128.7946430664 ns/iter 1534195.089286174 ns/iter 1.00

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