Skip to content

Add a wiping request body path to the HTTP client#2682

Merged
jviotti merged 2 commits into
mainfrom
http-system-secure
Jul 25, 2026
Merged

Add a wiping request body path to the HTTP client#2682
jviotti merged 2 commits into
mainfrom
http-system-secure

Conversation

@jviotti

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

Copy link
Copy Markdown
🤖 Augment PR Summary

Summary: This PR adds a secure/wiping request-body path to the HTTP client so sensitive payloads (e.g., client secrets or PKCE verifiers) can be kept in wiping storage until sent.

Changes:

  • Expose SecureString::data() to allow pointer+length access to wiping storage bytes
  • Make sourcemeta_core_http publicly depend on sourcemeta::core::crypto to support the new header-level API
  • Extend HTTPSystemRequest with body(SecureString, content_type) and store body data as std::variant<std::string, SecureString>
  • Update AWS SigV4 signing and curl/Darwin/Windows backends to read body bytes via a unified bytes() accessor
  • Add tests covering SecureString::data() and SigV4 hashing with a secure-string body

🤖 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. 2 suggestions posted.

Fix All in Augment

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

/// `Content-Type` header. The body is held in the wiping storage so a secret
/// it carries, such as a client secret or PKCE code verifier, is never copied
/// into an ordinary string
auto body(SecureString data, std::string content_type)

@augmentcode augmentcode Bot Jul 25, 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.

src/core/http/include/sourcemeta/core/http_system.h:172 Adding body(SecureString, ...) alongside body(std::string, ...) may introduce overload ambiguity for callers passing a std::string_view (both std::string and SecureString are implicitly constructible from it), causing source-breaking compile errors.

Severity: medium

Fix This in Augment

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

std::variant<std::string, SecureString> data;
std::string content_type;

[[nodiscard]] auto bytes() const -> std::string_view {

@augmentcode augmentcode Bot Jul 25, 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.

src/core/http/include/sourcemeta/core/http_system.h:246 Body::bytes() relies on SecureString’s implicit operator std::string_view(), which builds a view from buffer_.data()/size(); if a secure body is empty and buffer_.data() is nullptr, constructing the std::string_view may be undefined behavior.

Severity: medium

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.

No issues found across 9 files

Re-trigger cubic

@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: b9e98aa Previous: 42d50f3 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.465675384938568 ns/iter 2.139730152659189 ns/iter 1.15
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.46307262212873 ns/iter 2.130382569351702 ns/iter 1.16
Regex_Period_Asterisk 2.4636816395311074 ns/iter 2.1605577694926272 ns/iter 1.14
Regex_Group_Period_Asterisk_Group 2.4627644804660216 ns/iter 2.125351658868358 ns/iter 1.16
Regex_Period_Plus 3.5157159969385745 ns/iter 2.0554236080937325 ns/iter 1.71
Regex_Period 3.867006640461821 ns/iter 2.1347784793497584 ns/iter 1.81
Regex_Caret_Period_Plus_Dollar 3.777153898664277 ns/iter 2.064587986518235 ns/iter 1.83
Regex_Caret_Group_Period_Plus_Group_Dollar 3.514115538557218 ns/iter 2.069919200596487 ns/iter 1.70
Regex_Caret_Period_Asterisk_Dollar 2.4608163544578763 ns/iter 2.0952273559941172 ns/iter 1.17
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.816747755927826 ns/iter 2.1376450584087805 ns/iter 1.32
Regex_Caret_X_Hyphen 7.033446866036601 ns/iter 4.033363707169451 ns/iter 1.74
Regex_Period_Md_Dollar 26.255394989022722 ns/iter 26.777306078359988 ns/iter 0.98
Regex_Caret_Slash_Period_Asterisk 5.625986645742342 ns/iter 3.7459831788570943 ns/iter 1.50
Regex_Caret_Period_Range_Dollar 3.165696261101149 ns/iter 2.594499882775335 ns/iter 1.22
Regex_Nested_Backtrack 38.210623596571 ns/iter 35.15103678821589 ns/iter 1.09
JSON_Array_Of_Objects_Unique 431.5696738832318 ns/iter 365.6945443336639 ns/iter 1.18
JSON_Parse_1 4636.339503511955 ns/iter 4651.002892291591 ns/iter 1.00
JSON_Parse_Real 5122.024163201762 ns/iter 4796.474058752031 ns/iter 1.07
JSON_Parse_Decimal 7824.151910933672 ns/iter 7145.7357938914365 ns/iter 1.09
JSON_Parse_Schema_ISO_Language 3573725.6275514048 ns/iter 3411389.6536587714 ns/iter 1.05
JSON_Parse_Integer 4039.1392129202018 ns/iter 3491.363710888346 ns/iter 1.16
JSON_Parse_String_NonSSO_Plain 5102.661249298074 ns/iter 4608.804761936389 ns/iter 1.11
JSON_Parse_String_SSO_Plain 2842.3578489635656 ns/iter 2460.734575513974 ns/iter 1.16
JSON_Parse_String_Escape_Heavy 16482.541552875442 ns/iter 17410.107325722332 ns/iter 0.95
JSON_Parse_Object_Short_Keys 7848.397295088562 ns/iter 7000.901932777188 ns/iter 1.12
JSON_Parse_Object_Scalar_Properties 4035.1475931389314 ns/iter 3702.732666874994 ns/iter 1.09
JSON_Parse_Object_Array_Properties 5490.22022299491 ns/iter 5072.516725855667 ns/iter 1.08
JSON_Parse_Object_Object_Properties 5461.192116767846 ns/iter 5049.220860809139 ns/iter 1.08
JSON_Parse_Nested_Containers 45581.10602613276 ns/iter 41855.35401152712 ns/iter 1.09
JSON_From_String_Copy 20.750530423658066 ns/iter 15.266296653050759 ns/iter 1.36
JSON_From_String_Temporary 17.93736581551775 ns/iter 14.806726461216627 ns/iter 1.21
JSON_Number_To_Double 22.508606472567045 ns/iter 22.392155362936617 ns/iter 1.01
JSON_Object_At_Last_Key/8 4.008597466882241 ns/iter 4.7263463315583385 ns/iter 0.85
JSON_Object_At_Last_Key/32 13.10367452483957 ns/iter 17.998297366249492 ns/iter 0.73
JSON_Object_At_Last_Key/128 56.75898248142637 ns/iter 73.99744103070864 ns/iter 0.77
JSON_Object_At_Last_Key/512 370.53345568580687 ns/iter 304.90527802929694 ns/iter 1.22
JSON_Fast_Hash_Helm_Chart_Lock 73.14085963327767 ns/iter 57.13275022960341 ns/iter 1.28
JSON_Equality_Helm_Chart_Lock 161.78591524851916 ns/iter 128.28636288488278 ns/iter 1.26
JSON_Divisible_By_Decimal 256.5325197633197 ns/iter 259.44924646906003 ns/iter 0.99
JSON_String_Equal/10 5.737530689673203 ns/iter 4.329258933179864 ns/iter 1.33
JSON_String_Equal/100 6.332308166324497 ns/iter 5.477200429457845 ns/iter 1.16
JSON_String_Equal_Small_By_Perfect_Hash/10 1.0565365629744385 ns/iter 0.6914046329672003 ns/iter 1.53
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 12.336658230976715 ns/iter 9.80380575125284 ns/iter 1.26
JSON_String_Fast_Hash/10 2.8269639800571644 ns/iter 2.306560821305091 ns/iter 1.23
JSON_String_Fast_Hash/100 2.814295540318748 ns/iter 2.3064176325058265 ns/iter 1.22
JSON_String_Key_Hash/10 2.4622859669438864 ns/iter 1.7300014070882275 ns/iter 1.42
JSON_String_Key_Hash/100 7.73277690592126 ns/iter 6.627094419816275 ns/iter 1.17
JSON_Object_Defines_Miss_Same_Length 3.2003890299124333 ns/iter 3.457336461195017 ns/iter 0.93
JSON_Object_Defines_Miss_Too_Small 4.222833753999072 ns/iter 4.26495079016155 ns/iter 0.99
JSON_Object_Defines_Miss_Too_Large 2.9339385095457446 ns/iter 3.0262551594175897 ns/iter 0.97
Pointer_Object_Traverse 30.727670595316965 ns/iter 30.009627305725708 ns/iter 1.02
Pointer_Object_Try_Traverse 32.95087551029104 ns/iter 35.21162963261133 ns/iter 0.94
Pointer_Push_Back_Pointer_To_Weak_Pointer 188.63035441814446 ns/iter 154.36108557179062 ns/iter 1.22
Pointer_Walker_Schema_ISO_Language 2750869.5634920183 ns/iter 2676145.585820762 ns/iter 1.03
Pointer_Maybe_Tracked_Deeply_Nested/0 1368125.2543688281 ns/iter 1141310.2552167717 ns/iter 1.20
Pointer_Maybe_Tracked_Deeply_Nested/1 1576190.8783784944 ns/iter 2026266.7404132145 ns/iter 0.78
Pointer_Position_Tracker_Get_Deeply_Nested 674.8043647176863 ns/iter 702.2100472927825 ns/iter 0.96
JSONPath_Descendant_Filter_Nested 1583.973801472261 ns/iter 1460.6625425152881 ns/iter 1.08
URITemplateRouter_Create 29985.14873107379 ns/iter 29304.1288875858 ns/iter 1.02
URITemplateRouter_Match 179.5981081757713 ns/iter 157.1271015189385 ns/iter 1.14
URITemplateRouter_Match_BasePath 211.076270307977 ns/iter 175.11754102549915 ns/iter 1.21
URITemplateRouterView_Restore 9937.177180349334 ns/iter 3709.8512986220176 ns/iter 2.68
URITemplateRouterView_Match 143.62924606888 ns/iter 126.95030564661384 ns/iter 1.13
URITemplateRouterView_Match_BasePath 164.81244918792814 ns/iter 141.93979607883523 ns/iter 1.16
URITemplateRouterView_Arguments 450.9997618856071 ns/iter 417.3099680787403 ns/iter 1.08
JSONL_Parse_Large 9451401.270268887 ns/iter 9048542.155844849 ns/iter 1.04
JSONL_Parse_Large_GZIP 11113955.603173776 ns/iter 10448649.432836605 ns/iter 1.06
JSONLD_Catalog_Annotation_List_Populate 1292551.1700553666 ns/iter 1210942.948096853 ns/iter 1.07
JSONLD_Catalog_Materialize 4268574.466666932 ns/iter 4227385.41317358 ns/iter 1.01
HTML_Build_Table_100000 69744121.60000156 ns/iter 70382944.69999756 ns/iter 0.99
HTML_Render_Table_100000 5047724.330882422 ns/iter 9792086.802816888 ns/iter 0.52
GZIP_Compress_ISO_Language_Set_3_Locations 35717719.45000251 ns/iter 30820650.52173833 ns/iter 1.16
GZIP_Decompress_ISO_Language_Set_3_Locations 4278256.378048665 ns/iter 4819318.323308281 ns/iter 0.89
GZIP_Compress_ISO_Language_Set_3_Schema 2114825.990881571 ns/iter 1856264.702127569 ns/iter 1.14
GZIP_Decompress_ISO_Language_Set_3_Schema 276198.5687747123 ns/iter 337130.54013539065 ns/iter 0.82
JOSE_VerifySignature_RS256 63759.561605104194 ns/iter 49368.879586275376 ns/iter 1.29
JOSE_VerifySignature_ES512 2678872.950381974 ns/iter 2087167.9432835365 ns/iter 1.28

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: b9e98aa Previous: 42d50f3 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 1.9339684849565724 ns/iter 1.783042686977369 ns/iter 1.08
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.9512408480232923 ns/iter 1.8232912960974221 ns/iter 1.07
Regex_Period_Asterisk 2.1384627444539364 ns/iter 1.9695134798928566 ns/iter 1.09
Regex_Group_Period_Asterisk_Group 1.822052342498706 ns/iter 1.8180227841770564 ns/iter 1.00
Regex_Period_Plus 2.3369499711024835 ns/iter 2.0933113536427586 ns/iter 1.12
Regex_Period 2.0059214917432495 ns/iter 2.157509267217269 ns/iter 0.93
Regex_Caret_Period_Plus_Dollar 2.260995697543239 ns/iter 2.1323188862474876 ns/iter 1.06
Regex_Caret_Group_Period_Plus_Group_Dollar 2.3588473299515096 ns/iter 2.1202780614113492 ns/iter 1.11
Regex_Caret_Period_Asterisk_Dollar 2.0225636487685423 ns/iter 2.180646485119402 ns/iter 0.93
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.938814241893514 ns/iter 1.7933774911423292 ns/iter 1.08
Regex_Caret_X_Hyphen 6.818800981448714 ns/iter 6.911798644041426 ns/iter 0.99
Regex_Period_Md_Dollar 17.952484995053677 ns/iter 17.20676013513753 ns/iter 1.04
Regex_Caret_Slash_Period_Asterisk 5.170206249999865 ns/iter 4.669530047691651 ns/iter 1.11
Regex_Caret_Period_Range_Dollar 2.0172956394362744 ns/iter 1.962836292773221 ns/iter 1.03
Regex_Nested_Backtrack 30.12393388950732 ns/iter 28.42217090459995 ns/iter 1.06
JSON_Array_Of_Objects_Unique 390.3210539725226 ns/iter 352.1471249142411 ns/iter 1.11
JSON_Parse_1 6509.857563684269 ns/iter 6356.370140890846 ns/iter 1.02
JSON_Parse_Real 7790.7206287173485 ns/iter 6123.573425101789 ns/iter 1.27
JSON_Parse_Decimal 8458.275632490335 ns/iter 7211.9538307799985 ns/iter 1.17
JSON_Parse_Schema_ISO_Language 4285274.328857295 ns/iter 4023358.651934535 ns/iter 1.07
JSON_Parse_Integer 5502.60494005615 ns/iter 4602.930087585048 ns/iter 1.20
JSON_Parse_String_NonSSO_Plain 8591.209921704012 ns/iter 8063.282693311098 ns/iter 1.07
JSON_Parse_String_SSO_Plain 3396.4089537893483 ns/iter 3038.4353470750057 ns/iter 1.12
JSON_Parse_String_Escape_Heavy 23596.37868022527 ns/iter 20947.901185501167 ns/iter 1.13
JSON_Parse_Object_Short_Keys 8729.586133857567 ns/iter 8339.884534140188 ns/iter 1.05
JSON_Parse_Object_Scalar_Properties 5507.446913578047 ns/iter 5698.740089425513 ns/iter 0.97
JSON_Parse_Object_Array_Properties 8560.95913922549 ns/iter 8550.161123311802 ns/iter 1.00
JSON_Parse_Object_Object_Properties 8756.861674964599 ns/iter 7604.85700090778 ns/iter 1.15
JSON_Parse_Nested_Containers 63499.59357436285 ns/iter 59885.7595209478 ns/iter 1.06
JSON_From_String_Copy 23.61218410507751 ns/iter 23.920316673715458 ns/iter 0.99
JSON_From_String_Temporary 18.861296919054116 ns/iter 18.413460694444804 ns/iter 1.02
JSON_Number_To_Double 35.598451697723746 ns/iter 32.68875616205199 ns/iter 1.09
JSON_Object_At_Last_Key/8 5.16008588583644 ns/iter 4.06845226642937 ns/iter 1.27
JSON_Object_At_Last_Key/32 12.557383514787036 ns/iter 12.620329990164578 ns/iter 1.00
JSON_Object_At_Last_Key/128 55.896095707317606 ns/iter 57.94065129163274 ns/iter 0.96
JSON_Object_At_Last_Key/512 220.48050980281553 ns/iter 194.7674213681946 ns/iter 1.13
JSON_Fast_Hash_Helm_Chart_Lock 63.88896502298592 ns/iter 60.8237471616133 ns/iter 1.05
JSON_Equality_Helm_Chart_Lock 206.557658572887 ns/iter 173.28556440110407 ns/iter 1.19
JSON_Divisible_By_Decimal 344.9484747917113 ns/iter 223.62012709898946 ns/iter 1.54
JSON_String_Equal/10 8.212889474914263 ns/iter 8.464537563149264 ns/iter 0.97
JSON_String_Equal/100 8.569009130673946 ns/iter 7.207351476801453 ns/iter 1.19
JSON_String_Equal_Small_By_Perfect_Hash/10 0.3834479352624888 ns/iter 0.3278661983976317 ns/iter 1.17
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 3.5629706529351415 ns/iter 3.3208253585937775 ns/iter 1.07
JSON_String_Fast_Hash/10 2.4895459096571346 ns/iter 2.5029379182060065 ns/iter 0.99
JSON_String_Fast_Hash/100 2.3404289445243744 ns/iter 1.9816470350671143 ns/iter 1.18
JSON_String_Key_Hash/10 1.724332708628347 ns/iter 1.789962606565536 ns/iter 0.96
JSON_String_Key_Hash/100 2.554591378883507 ns/iter 2.283284404230977 ns/iter 1.12
JSON_Object_Defines_Miss_Same_Length 2.7400493960707917 ns/iter 2.7796618431789035 ns/iter 0.99
JSON_Object_Defines_Miss_Too_Small 2.767152836847165 ns/iter 2.7288525444977036 ns/iter 1.01
JSON_Object_Defines_Miss_Too_Large 3.256417254926069 ns/iter 2.958404498018366 ns/iter 1.10
Pointer_Object_Traverse 30.05361266277052 ns/iter 26.559727374633677 ns/iter 1.13
Pointer_Object_Try_Traverse 21.929047355255427 ns/iter 21.776313622241478 ns/iter 1.01
Pointer_Push_Back_Pointer_To_Weak_Pointer 191.17448113955973 ns/iter 184.7090736522563 ns/iter 1.04
Pointer_Walker_Schema_ISO_Language 2646406.8826083783 ns/iter 2625900.0000003274 ns/iter 1.01
Pointer_Maybe_Tracked_Deeply_Nested/0 1272323.1865287514 ns/iter 1242192.0990259158 ns/iter 1.02
Pointer_Maybe_Tracked_Deeply_Nested/1 1076753.4782612727 ns/iter 1039464.8191825999 ns/iter 1.04
Pointer_Position_Tracker_Get_Deeply_Nested 395.7654694316009 ns/iter 310.70473912804687 ns/iter 1.27
JSONPath_Descendant_Filter_Nested 1395.8958468080498 ns/iter 1209.6832355030276 ns/iter 1.15
URITemplateRouter_Create 24193.887512012097 ns/iter 22207.400252328072 ns/iter 1.09
URITemplateRouter_Match 190.70809278384863 ns/iter 166.47825446593063 ns/iter 1.15
URITemplateRouter_Match_BasePath 207.18008560265034 ns/iter 199.85052980685978 ns/iter 1.04
URITemplateRouterView_Restore 17556.5886955563 ns/iter 11347.795061762545 ns/iter 1.55
URITemplateRouterView_Match 164.3122711779237 ns/iter 158.48548661694835 ns/iter 1.04
URITemplateRouterView_Match_BasePath 178.637230891876 ns/iter 160.36814422182823 ns/iter 1.11
URITemplateRouterView_Arguments 606.8586479967555 ns/iter 545.388318737999 ns/iter 1.11
JSONL_Parse_Large 10007057.588234816 ns/iter 11722533.89830661 ns/iter 0.85
JSONL_Parse_Large_GZIP 13422518.442625841 ns/iter 11320278.44444507 ns/iter 1.19
JSONLD_Catalog_Annotation_List_Populate 1005696.8581365645 ns/iter 907110.5885922058 ns/iter 1.11
JSONLD_Catalog_Materialize 4733293.053335122 ns/iter 4642542.338710736 ns/iter 1.02
HTML_Build_Table_100000 38490203.7222269 ns/iter 36692810.4000067 ns/iter 1.05
HTML_Render_Table_100000 1652511.11713682 ns/iter 1775657.9750569877 ns/iter 0.93
GZIP_Compress_ISO_Language_Set_3_Locations 27204683.319996547 ns/iter 26145298.913048543 ns/iter 1.04
GZIP_Decompress_ISO_Language_Set_3_Locations 3382349.65437873 ns/iter 3217261.1382491365 ns/iter 1.05
GZIP_Compress_ISO_Language_Set_3_Schema 1774052.7458826203 ns/iter 1600365.310782119 ns/iter 1.11
GZIP_Decompress_ISO_Language_Set_3_Schema 280499.03572862694 ns/iter 305063.61308995314 ns/iter 0.92
JOSE_VerifySignature_RS256 23485.986728989345 ns/iter 22546.233582921795 ns/iter 1.04
JOSE_VerifySignature_ES512 1273813.7626256014 ns/iter 1186241.0968282628 ns/iter 1.07

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: b9e98aa Previous: 42d50f3 Ratio
JOSE_VerifySignature_RS256 22081.980755672095 ns/iter 22115.95611225507 ns/iter 1.00
JOSE_VerifySignature_ES512 577106.0445177215 ns/iter 576844.1343776552 ns/iter 1.00
GZIP_Compress_ISO_Language_Set_3_Locations 36546380.68420761 ns/iter 36663347.42105224 ns/iter 1.00
GZIP_Decompress_ISO_Language_Set_3_Locations 4257584.860606171 ns/iter 4252334.692771537 ns/iter 1.00
GZIP_Compress_ISO_Language_Set_3_Schema 2041708.3148688276 ns/iter 2039559.4985421181 ns/iter 1.00
GZIP_Decompress_ISO_Language_Set_3_Schema 376833.8406030725 ns/iter 376096.99892643903 ns/iter 1.00
HTML_Build_Table_100000 64627454.72727379 ns/iter 65638070.363640755 ns/iter 0.98
HTML_Render_Table_100000 1824666.345549718 ns/iter 1962131.0564971128 ns/iter 0.93
JSONLD_Catalog_Annotation_List_Populate 1297211.3122674986 ns/iter 1311968.613806084 ns/iter 0.99
JSONLD_Catalog_Materialize 6866585.817307352 ns/iter 7506755.731958374 ns/iter 0.91
JSONL_Parse_Large 13660043.725490497 ns/iter 13726773.764705839 ns/iter 1.00
JSONL_Parse_Large_GZIP 15104119.239130462 ns/iter 15098451.347826183 ns/iter 1.00
URITemplateRouter_Create 31042.448350387927 ns/iter 31019.85825037139 ns/iter 1.00
URITemplateRouter_Match 158.4859948767905 ns/iter 158.46502160417737 ns/iter 1.00
URITemplateRouter_Match_BasePath 184.66902416058826 ns/iter 185.79104588731272 ns/iter 0.99
URITemplateRouterView_Restore 8396.880915297314 ns/iter 8684.95305061454 ns/iter 0.97
URITemplateRouterView_Match 128.23199465624515 ns/iter 129.08159545903175 ns/iter 0.99
URITemplateRouterView_Match_BasePath 153.5171149412599 ns/iter 154.98228331591778 ns/iter 0.99
URITemplateRouterView_Arguments 480.25646868893216 ns/iter 475.0763084441972 ns/iter 1.01
JSONPath_Descendant_Filter_Nested 1718.0760969219427 ns/iter 1686.8400101551185 ns/iter 1.02
Pointer_Object_Traverse 30.28084769645413 ns/iter 30.481090304285363 ns/iter 0.99
Pointer_Object_Try_Traverse 25.332546040643884 ns/iter 25.32684454131865 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 148.58667349410706 ns/iter 157.71362643593156 ns/iter 0.94
Pointer_Walker_Schema_ISO_Language 2770001.8705882384 ns/iter 2856602.526104822 ns/iter 0.97
Pointer_Maybe_Tracked_Deeply_Nested/0 1909734.0082419498 ns/iter 1857148.6694216935 ns/iter 1.03
Pointer_Maybe_Tracked_Deeply_Nested/1 1740556.84863529 ns/iter 1727246.3538084312 ns/iter 1.01
Pointer_Position_Tracker_Get_Deeply_Nested 406.28685610113143 ns/iter 477.93700321345835 ns/iter 0.85
JSON_Array_Of_Objects_Unique 434.94444025029196 ns/iter 436.48243047748366 ns/iter 1.00
JSON_Parse_1 9943.227265646208 ns/iter 10011.866751594996 ns/iter 0.99
JSON_Parse_Real 7943.291096475005 ns/iter 7957.462195191035 ns/iter 1.00
JSON_Parse_Decimal 13014.683796970387 ns/iter 12995.496911805258 ns/iter 1.00
JSON_Parse_Schema_ISO_Language 6659496.048077183 ns/iter 6768373.685714495 ns/iter 0.98
JSON_Parse_Integer 5716.532187837527 ns/iter 5702.157822797354 ns/iter 1.00
JSON_Parse_String_NonSSO_Plain 12107.330371206901 ns/iter 12004.41016792071 ns/iter 1.01
JSON_Parse_String_SSO_Plain 5075.710164719856 ns/iter 5096.475938850869 ns/iter 1.00
JSON_Parse_String_Escape_Heavy 26239.250913290674 ns/iter 26185.096937632003 ns/iter 1.00
JSON_Parse_Object_Short_Keys 13764.527576169921 ns/iter 14028.471418559178 ns/iter 0.98
JSON_Parse_Object_Scalar_Properties 6985.775200713577 ns/iter 7026.778289790723 ns/iter 0.99
JSON_Parse_Object_Array_Properties 12286.94025609467 ns/iter 12647.380312998934 ns/iter 0.97
JSON_Parse_Object_Object_Properties 12062.915168026195 ns/iter 12469.380791120033 ns/iter 0.97
JSON_Parse_Nested_Containers 101818.55630006915 ns/iter 99718.08151940773 ns/iter 1.02
JSON_From_String_Copy 18.236495955165925 ns/iter 18.243700964942175 ns/iter 1.00
JSON_From_String_Temporary 15.342427908700675 ns/iter 15.36403591612288 ns/iter 1.00
JSON_Number_To_Double 20.644086650718126 ns/iter 20.568636197184986 ns/iter 1.00
JSON_Object_At_Last_Key/8 5.675029950178688 ns/iter 5.6183725640430415 ns/iter 1.01
JSON_Object_At_Last_Key/32 21.83431837828594 ns/iter 21.540860827398312 ns/iter 1.01
JSON_Object_At_Last_Key/128 87.51867718954766 ns/iter 87.25237176365022 ns/iter 1.00
JSON_Object_At_Last_Key/512 403.0090681648523 ns/iter 400.9438483754943 ns/iter 1.01
JSON_Fast_Hash_Helm_Chart_Lock 62.03089636024532 ns/iter 61.73954672035184 ns/iter 1.00
JSON_Equality_Helm_Chart_Lock 157.00322688547425 ns/iter 157.8540971864256 ns/iter 0.99
JSON_Divisible_By_Decimal 250.62563262907574 ns/iter 250.05120544745378 ns/iter 1.00
JSON_String_Equal/10 5.41715359071984 ns/iter 5.4155710546688836 ns/iter 1.00
JSON_String_Equal/100 6.0398273967088 ns/iter 6.0401966427788 ns/iter 1.00
JSON_String_Equal_Small_By_Perfect_Hash/10 0.749479067349803 ns/iter 0.7497105117353695 ns/iter 1.00
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 25.199335267288205 ns/iter 25.201231393649316 ns/iter 1.00
JSON_String_Fast_Hash/10 2.2640032039213827 ns/iter 2.2624011951043532 ns/iter 1.00
JSON_String_Fast_Hash/100 2.2600329263549455 ns/iter 2.2652134027140396 ns/iter 1.00
JSON_String_Key_Hash/10 1.5602503001609427 ns/iter 1.5615361058967296 ns/iter 1.00
JSON_String_Key_Hash/100 12.440875528101355 ns/iter 12.456363464007657 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 3.1187666859015177 ns/iter 3.1174325275757186 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Small 3.25991980512828 ns/iter 3.1163720864451165 ns/iter 1.05
JSON_Object_Defines_Miss_Too_Large 3.1129411045622373 ns/iter 3.1146047626313544 ns/iter 1.00
Regex_Lower_S_Or_Upper_S_Asterisk 0.6225279917414113 ns/iter 0.6351043736257029 ns/iter 0.98
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 0.622785707950921 ns/iter 0.622416478077001 ns/iter 1.00
Regex_Period_Asterisk 0.623015157170109 ns/iter 0.6234451955325603 ns/iter 1.00
Regex_Group_Period_Asterisk_Group 0.6262561552700708 ns/iter 0.6237273188148345 ns/iter 1.00
Regex_Period_Plus 0.6234598681439872 ns/iter 0.6232014986549648 ns/iter 1.00
Regex_Period 0.6230287205502745 ns/iter 0.6234117247581002 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 0.6228590238825661 ns/iter 0.624770411898652 ns/iter 1.00
Regex_Caret_Group_Period_Plus_Group_Dollar 0.6226293189517427 ns/iter 0.6238571150167853 ns/iter 1.00
Regex_Caret_Period_Asterisk_Dollar 0.6226768750033701 ns/iter 0.6239456212206241 ns/iter 1.00
Regex_Caret_Group_Period_Asterisk_Group_Dollar 0.6246028457833175 ns/iter 0.6228493803955791 ns/iter 1.00
Regex_Caret_X_Hyphen 4.052233743414709 ns/iter 4.0529724003621945 ns/iter 1.00
Regex_Period_Md_Dollar 30.406701358315072 ns/iter 29.08307047895464 ns/iter 1.05
Regex_Caret_Slash_Period_Asterisk 4.356682725394311 ns/iter 4.368403734190799 ns/iter 1.00
Regex_Caret_Period_Range_Dollar 1.2450267770979202 ns/iter 1.2459320888087255 ns/iter 1.00
Regex_Nested_Backtrack 39.3347771821883 ns/iter 44.06222939823592 ns/iter 0.89

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 (windows/msvc)

Details
Benchmark suite Current: b9e98aa Previous: 42d50f3 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 5.366711607144176 ns/iter 5.4843159999995805 ns/iter 0.98
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 5.039822000001095 ns/iter 5.05492767857163 ns/iter 1.00
Regex_Period_Asterisk 5.1110319999997955 ns/iter 5.232120000000577 ns/iter 0.98
Regex_Group_Period_Asterisk_Group 5.027566999999635 ns/iter 5.20477499999978 ns/iter 0.97
Regex_Period_Plus 5.038795000000391 ns/iter 5.144553000000087 ns/iter 0.98
Regex_Period 5.426300999999967 ns/iter 5.412813000000369 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 5.037516964285211 ns/iter 5.062465999999404 ns/iter 1.00
Regex_Caret_Group_Period_Plus_Group_Dollar 5.362286999998105 ns/iter 5.434699107143257 ns/iter 0.99
Regex_Caret_Period_Asterisk_Dollar 5.393583928571795 ns/iter 5.384469000000535 ns/iter 1.00
Regex_Caret_Group_Period_Asterisk_Group_Dollar 5.047156999999061 ns/iter 5.080500892857133 ns/iter 0.99
Regex_Caret_X_Hyphen 8.744006696428386 ns/iter 8.697779425457508 ns/iter 1.01
Regex_Period_Md_Dollar 45.4763875000026 ns/iter 45.434208969337746 ns/iter 1.00
Regex_Caret_Slash_Period_Asterisk 7.879486607141725 ns/iter 7.9196975446446265 ns/iter 0.99
Regex_Caret_Period_Range_Dollar 6.0682205357157475 ns/iter 6.029202678571925 ns/iter 1.01
Regex_Nested_Backtrack 54.98342999999296 ns/iter 55.60806000000866 ns/iter 0.99
JSON_Array_Of_Objects_Unique 596.9801785714221 ns/iter 611.6032142857973 ns/iter 0.98
JSON_Parse_1 8971.107718269064 ns/iter 9395.931268163407 ns/iter 0.95
JSON_Parse_Real 16095.609374998177 ns/iter 16673.810267856687 ns/iter 0.97
JSON_Parse_Decimal 11883.816071429821 ns/iter 11753.860714285176 ns/iter 1.01
JSON_Parse_Schema_ISO_Language 7364021.428571732 ns/iter 7640054.444444408 ns/iter 0.96
JSON_Parse_Integer 6273.151785714097 ns/iter 6198.433928572302 ns/iter 1.01
JSON_Parse_String_NonSSO_Plain 7952.181919644069 ns/iter 7798.34709821411 ns/iter 1.02
JSON_Parse_String_SSO_Plain 3831.3269083443993 ns/iter 3734.50743837939 ns/iter 1.03
JSON_Parse_String_Escape_Heavy 21837.215624998407 ns/iter 21785.381250005285 ns/iter 1.00
JSON_Parse_Object_Short_Keys 13356.034794487996 ns/iter 13523.494314756805 ns/iter 0.99
JSON_Parse_Object_Scalar_Properties 6890.3593750008995 ns/iter 6909.912946430857 ns/iter 1.00
JSON_Parse_Object_Array_Properties 11325.203125000628 ns/iter 11466.803124999813 ns/iter 0.99
JSON_Parse_Object_Object_Properties 11635.62812500274 ns/iter 11527.382812499098 ns/iter 1.01
JSON_Parse_Nested_Containers 79058.62723213935 ns/iter 79691.74107143674 ns/iter 0.99
JSON_From_String_Copy 63.808616071412416 ns/iter 64.4674196428647 ns/iter 0.99
JSON_From_String_Temporary 59.09311607142952 ns/iter 58.39578571429424 ns/iter 1.01
JSON_Number_To_Double 123.14405357143089 ns/iter 123.33505357141965 ns/iter 1.00
JSON_Object_At_Last_Key/8 7.2701812500010226 ns/iter 7.268348214287203 ns/iter 1.00
JSON_Object_At_Last_Key/32 23.488241925351566 ns/iter 23.317603534400316 ns/iter 1.01
JSON_Object_At_Last_Key/128 90.39614328588395 ns/iter 90.17401785713324 ns/iter 1.00
JSON_Object_At_Last_Key/512 426.5353389676352 ns/iter 428.3319240696979 ns/iter 1.00
JSON_Fast_Hash_Helm_Chart_Lock 102.75098437499963 ns/iter 102.87551326448006 ns/iter 1.00
JSON_Equality_Helm_Chart_Lock 238.14774999997164 ns/iter 232.63796874999798 ns/iter 1.02
JSON_Divisible_By_Decimal 299.04834608839246 ns/iter 296.6244043945939 ns/iter 1.01
JSON_String_Equal/10 10.561991470703925 ns/iter 10.378190578667592 ns/iter 1.02
JSON_String_Equal/100 11.65144285714145 ns/iter 11.63411874999909 ns/iter 1.00
JSON_String_Equal_Small_By_Perfect_Hash/10 2.508541071428486 ns/iter 2.550438613225139 ns/iter 0.98
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 15.015605959750102 ns/iter 15.230673815936147 ns/iter 0.99
JSON_String_Fast_Hash/10 6.667143973214504 ns/iter 6.688004464286174 ns/iter 1.00
JSON_String_Fast_Hash/100 6.610363839286545 ns/iter 6.59607477678443 ns/iter 1.00
JSON_String_Key_Hash/10 5.346219000000474 ns/iter 5.413217000000259 ns/iter 0.99
JSON_String_Key_Hash/100 11.873808928567898 ns/iter 11.912937499999998 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 3.8228822544640804 ns/iter 3.8255319574546403 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Small 4.090697544643719 ns/iter 4.104666852679121 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 3.7662728504174554 ns/iter 3.819672627960169 ns/iter 0.99
Pointer_Object_Traverse 67.66264508927732 ns/iter 67.63568080356512 ns/iter 1.00
Pointer_Object_Try_Traverse 70.91537500000656 ns/iter 73.06825000000572 ns/iter 0.97
Pointer_Push_Back_Pointer_To_Weak_Pointer 166.8631852809919 ns/iter 170.74873911261835 ns/iter 0.98
Pointer_Walker_Schema_ISO_Language 11902796.42857003 ns/iter 10709949.999998968 ns/iter 1.11
Pointer_Maybe_Tracked_Deeply_Nested/0 2623872.499999282 ns/iter 2446671.8875499787 ns/iter 1.07
Pointer_Maybe_Tracked_Deeply_Nested/1 3726421.3903744286 ns/iter 3623848.039215354 ns/iter 1.03
Pointer_Position_Tracker_Get_Deeply_Nested 518.7404864599091 ns/iter 542.5918567570131 ns/iter 0.96
JSONPath_Descendant_Filter_Nested 2605.4699715735965 ns/iter 2355.94535714329 ns/iter 1.11
URITemplateRouter_Create 41644.61249999363 ns/iter 41944.524403690724 ns/iter 0.99
URITemplateRouter_Match 235.36098935700576 ns/iter 236.20828836958404 ns/iter 1.00
URITemplateRouter_Match_BasePath 272.0000000000157 ns/iter 271.42121524202196 ns/iter 1.00
URITemplateRouterView_Restore 36390.43409939251 ns/iter 32513.89865467239 ns/iter 1.12
URITemplateRouterView_Match 181.16779296144978 ns/iter 180.86292059351504 ns/iter 1.00
URITemplateRouterView_Match_BasePath 208.6539025583852 ns/iter 204.6198457759161 ns/iter 1.02
URITemplateRouterView_Arguments 536.4942857143872 ns/iter 531.244821428548 ns/iter 1.01
JSONL_Parse_Large 32807171.42857135 ns/iter 32945485.714283984 ns/iter 1.00
JSONL_Parse_Large_GZIP 33900735.00000881 ns/iter 33854780.00000148 ns/iter 1.00
JSONLD_Catalog_Annotation_List_Populate 2727417.6706831637 ns/iter 2658483.1325297737 ns/iter 1.03
JSONLD_Catalog_Materialize 8242578.888889005 ns/iter 7821155.555555177 ns/iter 1.05
HTML_Build_Table_100000 89965571.42859273 ns/iter 89618928.5714237 ns/iter 1.00
HTML_Render_Table_100000 7768122.222220578 ns/iter 7578804.444445572 ns/iter 1.02
GZIP_Compress_ISO_Language_Set_3_Locations 35309173.68420648 ns/iter 38467289.99999414 ns/iter 0.92
GZIP_Decompress_ISO_Language_Set_3_Locations 9911014.666668052 ns/iter 10045124.000001427 ns/iter 0.99
GZIP_Compress_ISO_Language_Set_3_Schema 2085158.124999964 ns/iter 2079319.6875004582 ns/iter 1.00
GZIP_Decompress_ISO_Language_Set_3_Schema 631396.2499999906 ns/iter 651204.017857156 ns/iter 0.97
JOSE_VerifySignature_RS256 21602.17812500065 ns/iter 21374.906250002823 ns/iter 1.01
JOSE_VerifySignature_ES512 1555291.7410716864 ns/iter 1541340.401785821 ns/iter 1.01

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

Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
@jviotti
jviotti merged commit 99b6a5e into main Jul 25, 2026
12 checks passed
@jviotti
jviotti deleted the http-system-secure branch July 25, 2026 17:19
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