Skip to content

Add EdDSA support on JOSE#2521

Merged
jviotti merged 2 commits into
mainfrom
jose-eddsa
Jun 16, 2026
Merged

Add EdDSA support on JOSE#2521
jviotti merged 2 commits into
mainfrom
jose-eddsa

Conversation

@jviotti

@jviotti jviotti commented Jun 16, 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>

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

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

Re-trigger cubic

Comment thread src/core/jose/include/sourcemeta/core/jose_jwk.h
@augmentcode

augmentcode Bot commented Jun 16, 2026

Copy link
Copy Markdown
🤖 Augment PR Summary

Summary: This PR adds EdDSA (RFC 8037) support to the JOSE verification stack.

Changes:

  • Extends JWSAlgorithm with EdDSA and teaches to_jws_algorithm to parse the new alg value.
  • Adds OKP (Octet Key Pair) parsing to JWK, validating crv (Ed25519/Ed448), enforcing fixed public-key lengths, and rejecting private keys via presence of d.
  • Ensures JWK alg hints are only stored when consistent with the parsed key type (now including OKP/EdDSA).
  • Implements EdDSA verification in jws_verify_signature, selecting Ed25519 vs Ed448 based on the JWK curve and using the encoded public key as coordinate_x.
  • Adds test coverage for EdDSA algorithm parsing, OKP JWK parsing/validation, JWS Ed25519 verification, and JWT signature verification for Ed25519 and Ed448.

Technical Notes: EdDSA curve selection is driven by the JWK’s crv (not the alg), aligning with RFC 8037’s JOSE conventions.

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

Comment thread src/core/jose/include/sourcemeta/core/jose_jwk.h
Comment thread src/core/jose/jose_jws_verify_signature.cc
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/gcc)

Details
Benchmark suite Current: 2f48d7a Previous: c9a31f2 Ratio
GZIP_Compress_ISO_Language_Set_3_Locations 32516359.22727432 ns/iter 39308709.222224385 ns/iter 0.83
GZIP_Decompress_ISO_Language_Set_3_Locations 4891601.098484333 ns/iter 4050543.32369899 ns/iter 1.21
GZIP_Compress_ISO_Language_Set_3_Schema 2072788.1065087689 ns/iter 2288861.0749183167 ns/iter 0.91
GZIP_Decompress_ISO_Language_Set_3_Schema 347406.7583457741 ns/iter 275511.4411522314 ns/iter 1.26
HTML_Build_Table_100000 58957479.083337225 ns/iter 70058915.59999782 ns/iter 0.84
HTML_Render_Table_100000 3149315.0177781596 ns/iter 2023230.8953487112 ns/iter 1.56
JSONL_Parse_Large 13290186.905660106 ns/iter 12220785.473683113 ns/iter 1.09
JSONL_Parse_Large_GZIP 14419337.458332866 ns/iter 13780227.156862745 ns/iter 1.05
URITemplateRouter_Create 27943.62394118344 ns/iter 29649.534585354213 ns/iter 0.94
URITemplateRouter_Match 144.53482239281612 ns/iter 158.64090990996218 ns/iter 0.91
URITemplateRouter_Match_BasePath 161.53539614737682 ns/iter 190.12559686270794 ns/iter 0.85
URITemplateRouterView_Restore 3424.6115388733638 ns/iter 8651.65362677127 ns/iter 0.40
URITemplateRouterView_Match 119.10645900650148 ns/iter 126.78506947136827 ns/iter 0.94
URITemplateRouterView_Match_BasePath 135.0181425555959 ns/iter 142.99034194992618 ns/iter 0.94
URITemplateRouterView_Arguments 536.113718561562 ns/iter 453.2573840400594 ns/iter 1.18
Pointer_Object_Traverse 29.74137183272531 ns/iter 29.841653437003952 ns/iter 1.00
Pointer_Object_Try_Traverse 24.612489999842886 ns/iter 22.816357438917688 ns/iter 1.08
Pointer_Push_Back_Pointer_To_Weak_Pointer 170.83598722510212 ns/iter 168.18227402442423 ns/iter 1.02
Pointer_Walker_Schema_ISO_Language 1761529.3548386905 ns/iter 1910352.4643872352 ns/iter 0.92
Pointer_Maybe_Tracked_Deeply_Nested/0 1501914.4387097382 ns/iter 1542548.46035249 ns/iter 0.97
Pointer_Maybe_Tracked_Deeply_Nested/1 2055558.5427727022 ns/iter 1673269.8257755665 ns/iter 1.23
Pointer_Position_Tracker_Get_Deeply_Nested 527.7896809295685 ns/iter 633.353984054478 ns/iter 0.83
JSON_Array_Of_Objects_Unique 321.73840420343237 ns/iter 391.29760458119495 ns/iter 0.82
JSON_Parse_1 6794.621161723428 ns/iter 7589.775072166016 ns/iter 0.90
JSON_Parse_Real 5866.128908153492 ns/iter 6572.42646194607 ns/iter 0.89
JSON_Parse_Decimal 9101.950284258044 ns/iter 9597.656043246105 ns/iter 0.95
JSON_Parse_Schema_ISO_Language 4792857.087248182 ns/iter 5085918.4338232875 ns/iter 0.94
JSON_Parse_Integer 4676.766892547026 ns/iter 4750.336281323393 ns/iter 0.98
JSON_Parse_String_NonSSO_Plain 7523.105268249346 ns/iter 8591.2701759555 ns/iter 0.88
JSON_Parse_String_SSO_Plain 3529.268792228401 ns/iter 3618.30853606994 ns/iter 0.98
JSON_Parse_String_Escape_Heavy 19163.012572586056 ns/iter 19616.290559352896 ns/iter 0.98
JSON_Parse_Object_Short_Keys 9961.786542098363 ns/iter 11277.111366596979 ns/iter 0.88
JSON_Parse_Object_Scalar_Properties 5143.413984715199 ns/iter 5730.360654125483 ns/iter 0.90
JSON_Parse_Object_Array_Properties 7844.559948378956 ns/iter 8807.414738300857 ns/iter 0.89
JSON_Parse_Object_Object_Properties 8043.167921496684 ns/iter 9241.50745835217 ns/iter 0.87
JSON_Parse_Nested_Containers 65375.29793592656 ns/iter 72861.83511030558 ns/iter 0.90
JSON_From_String_Copy 16.029510089564983 ns/iter 19.740653655439345 ns/iter 0.81
JSON_From_String_Temporary 13.588160135168826 ns/iter 16.622736849107888 ns/iter 0.82
JSON_Number_To_Double 19.174072757926652 ns/iter 19.367469303184485 ns/iter 0.99
JSON_Object_At_Last_Key/8 8.073490234949135 ns/iter 9.19657144206356 ns/iter 0.88
JSON_Object_At_Last_Key/32 28.848115675163807 ns/iter 34.47436739153751 ns/iter 0.84
JSON_Object_At_Last_Key/128 118.79040226331473 ns/iter 135.81758187699944 ns/iter 0.87
JSON_Object_At_Last_Key/512 451.0790063360894 ns/iter 559.0863164827957 ns/iter 0.81
JSON_Fast_Hash_Helm_Chart_Lock 48.37510361226501 ns/iter 53.43399589470027 ns/iter 0.91
JSON_Equality_Helm_Chart_Lock 135.34804105816752 ns/iter 166.95083616601482 ns/iter 0.81
JSON_Divisible_By_Decimal 254.2108018078086 ns/iter 231.4863879430501 ns/iter 1.10
JSON_String_Equal/10 5.581062101844971 ns/iter 6.420285041855429 ns/iter 0.87
JSON_String_Equal/100 6.737115213168481 ns/iter 7.136243209535237 ns/iter 0.94
JSON_String_Equal_Small_By_Perfect_Hash/10 0.8265127248013343 ns/iter 0.7170362072053337 ns/iter 1.15
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 17.002377086303106 ns/iter 21.938458087219058 ns/iter 0.78
JSON_String_Fast_Hash/10 1.440491350374735 ns/iter 1.4117318738336029 ns/iter 1.02
JSON_String_Fast_Hash/100 1.4416812844221127 ns/iter 1.4078993169526306 ns/iter 1.02
JSON_String_Key_Hash/10 1.154354039566805 ns/iter 1.0855988622266215 ns/iter 1.06
JSON_String_Key_Hash/100 11.823381312010769 ns/iter 14.755479966013395 ns/iter 0.80
JSON_Object_Defines_Miss_Same_Length 3.1525816230122934 ns/iter 3.519225014199492 ns/iter 0.90
JSON_Object_Defines_Miss_Too_Small 3.297257540158296 ns/iter 3.517459788342619 ns/iter 0.94
JSON_Object_Defines_Miss_Too_Large 3.322022406606128 ns/iter 3.8858571831513413 ns/iter 0.85
Regex_Lower_S_Or_Upper_S_Asterisk 0.8645755745786212 ns/iter 0.7035723414292654 ns/iter 1.23
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.1527508533734967 ns/iter 1.074732002013497 ns/iter 1.07
Regex_Period_Asterisk 1.1520169270291076 ns/iter 1.0553572827877549 ns/iter 1.09
Regex_Group_Period_Asterisk_Group 0.8644341138732623 ns/iter 0.7035413303782945 ns/iter 1.23
Regex_Period_Plus 0.8643574786862699 ns/iter 0.7038588817538753 ns/iter 1.23
Regex_Period 1.1530721378007507 ns/iter 1.05579168921459 ns/iter 1.09
Regex_Caret_Period_Plus_Dollar 1.1522957698628422 ns/iter 1.056284540100192 ns/iter 1.09
Regex_Caret_Group_Period_Plus_Group_Dollar 0.8642913522910612 ns/iter 0.7083036328344906 ns/iter 1.22
Regex_Caret_Period_Asterisk_Dollar 0.8646741869538175 ns/iter 0.7049063586182978 ns/iter 1.23
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.1527090631343817 ns/iter 1.0559543245225718 ns/iter 1.09
Regex_Caret_X_Hyphen 3.1701000372528427 ns/iter 3.868587485734082 ns/iter 0.82
Regex_Period_Md_Dollar 23.65461432946796 ns/iter 33.66726872686224 ns/iter 0.70
Regex_Caret_Slash_Period_Asterisk 3.172121575739968 ns/iter 4.226834118591874 ns/iter 0.75
Regex_Caret_Period_Range_Dollar 1.4407452302645376 ns/iter 1.4137325606748683 ns/iter 1.02
Regex_Nested_Backtrack 34.10645718082948 ns/iter 38.762107871930176 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/llvm)

Details
Benchmark suite Current: 2f48d7a Previous: c9a31f2 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.4800866241583326 ns/iter 2.204594915212281 ns/iter 1.12
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.4620093691596963 ns/iter 2.191908198457735 ns/iter 1.12
Regex_Period_Asterisk 2.462208199401338 ns/iter 2.197088759090192 ns/iter 1.12
Regex_Group_Period_Asterisk_Group 2.462720062770241 ns/iter 2.2228478162852094 ns/iter 1.11
Regex_Period_Plus 3.866991073933864 ns/iter 2.802649143898366 ns/iter 1.38
Regex_Period 3.5186322955896476 ns/iter 2.4923419747967617 ns/iter 1.41
Regex_Caret_Period_Plus_Dollar 3.270241212199945 ns/iter 2.491268606091051 ns/iter 1.31
Regex_Caret_Group_Period_Plus_Group_Dollar 2.463506247878573 ns/iter 2.8027236475895605 ns/iter 0.88
Regex_Caret_Period_Asterisk_Dollar 3.866423216333679 ns/iter 3.4245752712682105 ns/iter 1.13
Regex_Caret_Group_Period_Asterisk_Group_Dollar 3.5156444510479843 ns/iter 3.1206291785748728 ns/iter 1.13
Regex_Caret_X_Hyphen 6.679636071652312 ns/iter 6.5459916636804 ns/iter 1.02
Regex_Period_Md_Dollar 28.73531072385263 ns/iter 28.077353026761497 ns/iter 1.02
Regex_Caret_Slash_Period_Asterisk 6.341658792638077 ns/iter 6.353634858394133 ns/iter 1.00
Regex_Caret_Period_Range_Dollar 2.4638698171815325 ns/iter 3.4244231366199154 ns/iter 0.72
Regex_Nested_Backtrack 37.67749983836541 ns/iter 43.543605663358406 ns/iter 0.87
JSON_Array_Of_Objects_Unique 487.69240826638475 ns/iter 456.5111618868605 ns/iter 1.07
JSON_Parse_1 4577.945505959853 ns/iter 4768.019399173138 ns/iter 0.96
JSON_Parse_Real 4947.203472075307 ns/iter 5216.204388506317 ns/iter 0.95
JSON_Parse_Decimal 7187.948174928298 ns/iter 7260.873451033884 ns/iter 0.99
JSON_Parse_Schema_ISO_Language 3558408.319797083 ns/iter 3450164.8040202954 ns/iter 1.03
JSON_Parse_Integer 3780.4991749710402 ns/iter 3818.4511635536614 ns/iter 0.99
JSON_Parse_String_NonSSO_Plain 5017.085802152396 ns/iter 4917.410555644085 ns/iter 1.02
JSON_Parse_String_SSO_Plain 2792.33151091248 ns/iter 2673.9930172564164 ns/iter 1.04
JSON_Parse_String_Escape_Heavy 14536.769514495041 ns/iter 14174.48309422509 ns/iter 1.03
JSON_Parse_Object_Short_Keys 7801.693431712715 ns/iter 10532.061527826618 ns/iter 0.74
JSON_Parse_Object_Scalar_Properties 4059.3665217167822 ns/iter 4089.8277986374906 ns/iter 0.99
JSON_Parse_Object_Array_Properties 5476.310370280723 ns/iter 5582.005519874832 ns/iter 0.98
JSON_Parse_Object_Object_Properties 5450.50127504271 ns/iter 5669.602668067891 ns/iter 0.96
JSON_Parse_Nested_Containers 44783.3324760495 ns/iter 44819.12648476066 ns/iter 1.00
JSON_From_String_Copy 22.384183725989008 ns/iter 19.63725866754274 ns/iter 1.14
JSON_From_String_Temporary 19.006297198484564 ns/iter 17.846999184776926 ns/iter 1.06
JSON_Number_To_Double 22.843048142104493 ns/iter 24.075789094324406 ns/iter 0.95
JSON_Object_At_Last_Key/8 3.8538916385881112 ns/iter 3.7114693810135084 ns/iter 1.04
JSON_Object_At_Last_Key/32 13.01962013912282 ns/iter 11.937259100404711 ns/iter 1.09
JSON_Object_At_Last_Key/128 46.78835001905776 ns/iter 48.29993144284837 ns/iter 0.97
JSON_Object_At_Last_Key/512 373.1903135756286 ns/iter 386.97698978487375 ns/iter 0.96
JSON_Fast_Hash_Helm_Chart_Lock 66.11709878955128 ns/iter 61.05702457660014 ns/iter 1.08
JSON_Equality_Helm_Chart_Lock 184.27490287426295 ns/iter 183.18386833650902 ns/iter 1.01
JSON_Divisible_By_Decimal 252.55094708574154 ns/iter 251.3033528164525 ns/iter 1.00
JSON_String_Equal/10 5.628855558486256 ns/iter 5.92087507140848 ns/iter 0.95
JSON_String_Equal/100 6.335241986005074 ns/iter 6.547282824013433 ns/iter 0.97
JSON_String_Equal_Small_By_Perfect_Hash/10 1.0554123302265572 ns/iter 0.9351376100647943 ns/iter 1.13
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 12.334803767101056 ns/iter 10.58666345587432 ns/iter 1.17
JSON_String_Fast_Hash/10 2.461710473711185 ns/iter 2.493219363713232 ns/iter 0.99
JSON_String_Fast_Hash/100 2.462372785487388 ns/iter 2.492284515465623 ns/iter 0.99
JSON_String_Key_Hash/10 2.4616227446431598 ns/iter 2.1804110648840798 ns/iter 1.13
JSON_String_Key_Hash/100 7.737266749495983 ns/iter 6.5383733823128445 ns/iter 1.18
JSON_Object_Defines_Miss_Same_Length 2.930487914496867 ns/iter 2.7355020905626706 ns/iter 1.07
JSON_Object_Defines_Miss_Too_Small 4.230749734206351 ns/iter 3.7366011916112467 ns/iter 1.13
JSON_Object_Defines_Miss_Too_Large 2.8959966373660597 ns/iter 2.7705193109591773 ns/iter 1.05
Pointer_Object_Traverse 25.503227850075035 ns/iter 24.39833432138603 ns/iter 1.05
Pointer_Object_Try_Traverse 31.86014139367007 ns/iter 30.217277542663464 ns/iter 1.05
Pointer_Push_Back_Pointer_To_Weak_Pointer 173.39138253171495 ns/iter 164.25163501249796 ns/iter 1.06
Pointer_Walker_Schema_ISO_Language 1853942.3693931352 ns/iter 1739918.0694791093 ns/iter 1.07
Pointer_Maybe_Tracked_Deeply_Nested/0 1262430.8643761573 ns/iter 1237455.6249998899 ns/iter 1.02
Pointer_Maybe_Tracked_Deeply_Nested/1 1594360.1052633824 ns/iter 1599015.9305558833 ns/iter 1.00
Pointer_Position_Tracker_Get_Deeply_Nested 755.364317576444 ns/iter 714.6836278318038 ns/iter 1.06
URITemplateRouter_Create 30017.548882802763 ns/iter 31936.243518185216 ns/iter 0.94
URITemplateRouter_Match 182.04816330111265 ns/iter 177.5222310238886 ns/iter 1.03
URITemplateRouter_Match_BasePath 226.62761977062195 ns/iter 207.0345760780482 ns/iter 1.09
URITemplateRouterView_Restore 8755.234876879173 ns/iter 7855.387215322749 ns/iter 1.11
URITemplateRouterView_Match 145.50748979833355 ns/iter 146.16400495530868 ns/iter 1.00
URITemplateRouterView_Match_BasePath 165.0788008068164 ns/iter 165.12563758078568 ns/iter 1.00
URITemplateRouterView_Arguments 449.5612620287193 ns/iter 429.55543382612 ns/iter 1.05
JSONL_Parse_Large 9190494.631579177 ns/iter 9903262.3661963 ns/iter 0.93
JSONL_Parse_Large_GZIP 10918413.687500462 ns/iter 11556576.114750642 ns/iter 0.94
HTML_Build_Table_100000 73306995.11111207 ns/iter 68528203.10000424 ns/iter 1.07
HTML_Render_Table_100000 5347618.730769017 ns/iter 5402538.5703120325 ns/iter 0.99
GZIP_Compress_ISO_Language_Set_3_Locations 35792587.052631125 ns/iter 33540752.571427997 ns/iter 1.07
GZIP_Decompress_ISO_Language_Set_3_Locations 4306101.5030672345 ns/iter 4259842.940120213 ns/iter 1.01
GZIP_Compress_ISO_Language_Set_3_Schema 2136161.1009174045 ns/iter 1891447.037837679 ns/iter 1.13
GZIP_Decompress_ISO_Language_Set_3_Schema 275706.3597320815 ns/iter 352205.5128205891 ns/iter 0.78

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: 2f48d7a Previous: c9a31f2 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 1.7053577802991942 ns/iter 1.7170759750984135 ns/iter 0.99
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.6747904711962323 ns/iter 1.814388270806821 ns/iter 0.92
Regex_Period_Asterisk 1.793959617213296 ns/iter 1.779408323233057 ns/iter 1.01
Regex_Group_Period_Asterisk_Group 1.7170845660002347 ns/iter 1.7215304993751157 ns/iter 1.00
Regex_Period_Plus 2.376737067823193 ns/iter 2.096003703185617 ns/iter 1.13
Regex_Period 2.0982815847720677 ns/iter 2.1441795702282 ns/iter 0.98
Regex_Caret_Period_Plus_Dollar 2.0874903532889766 ns/iter 2.2381447567843633 ns/iter 0.93
Regex_Caret_Group_Period_Plus_Group_Dollar 2.079860408998277 ns/iter 2.134209301765577 ns/iter 0.97
Regex_Caret_Period_Asterisk_Dollar 1.6949393487846764 ns/iter 1.780209361360703 ns/iter 0.95
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.706165915002974 ns/iter 1.7806635587127215 ns/iter 0.96
Regex_Caret_X_Hyphen 5.9726880196554255 ns/iter 6.308466264113434 ns/iter 0.95
Regex_Period_Md_Dollar 16.681872961509534 ns/iter 17.762077259422053 ns/iter 0.94
Regex_Caret_Slash_Period_Asterisk 4.522123184608973 ns/iter 4.956753876898896 ns/iter 0.91
Regex_Caret_Period_Range_Dollar 1.9805586718556438 ns/iter 2.0407799319205915 ns/iter 0.97
Regex_Nested_Backtrack 24.50579445936173 ns/iter 24.83634623591258 ns/iter 0.99
JSON_Array_Of_Objects_Unique 334.0214141895246 ns/iter 345.7617512366742 ns/iter 0.97
JSON_Parse_1 3964.257021652814 ns/iter 3742.772488929958 ns/iter 1.06
JSON_Parse_Real 6674.216514925306 ns/iter 6014.16523404838 ns/iter 1.11
JSON_Parse_Decimal 6132.161238977572 ns/iter 5805.278270348018 ns/iter 1.06
JSON_Parse_Schema_ISO_Language 3281540.131578559 ns/iter 2877491.8604651336 ns/iter 1.14
JSON_Parse_Integer 3023.830566217881 ns/iter 3162.605167005826 ns/iter 0.96
JSON_Parse_String_NonSSO_Plain 3557.3617540385903 ns/iter 3502.242441719212 ns/iter 1.02
JSON_Parse_String_SSO_Plain 2284.6621789133205 ns/iter 1787.6757320542924 ns/iter 1.28
JSON_Parse_String_Escape_Heavy 17777.557806465764 ns/iter 16321.77527595872 ns/iter 1.09
JSON_Parse_Object_Short_Keys 5330.648064637469 ns/iter 5167.181010566036 ns/iter 1.03
JSON_Parse_Object_Scalar_Properties 2745.4781900466237 ns/iter 2723.068233218231 ns/iter 1.01
JSON_Parse_Object_Array_Properties 3413.214267775632 ns/iter 3402.73075367881 ns/iter 1.00
JSON_Parse_Object_Object_Properties 3996.9187718573066 ns/iter 3521.4123175863206 ns/iter 1.14
JSON_Parse_Nested_Containers 37306.07103802495 ns/iter 30281.60129646291 ns/iter 1.23
JSON_From_String_Copy 28.45970181716046 ns/iter 24.437457520929776 ns/iter 1.16
JSON_From_String_Temporary 19.983580221049802 ns/iter 19.578124549536444 ns/iter 1.02
JSON_Number_To_Double 38.66150837881313 ns/iter 37.62677492916607 ns/iter 1.03
JSON_Object_At_Last_Key/8 4.3449225943907255 ns/iter 3.8022873263377996 ns/iter 1.14
JSON_Object_At_Last_Key/32 14.233876912879744 ns/iter 11.833856298387587 ns/iter 1.20
JSON_Object_At_Last_Key/128 54.69620442759596 ns/iter 53.34712498676358 ns/iter 1.03
JSON_Object_At_Last_Key/512 187.48595900404467 ns/iter 187.0735766737815 ns/iter 1.00
JSON_Fast_Hash_Helm_Chart_Lock 59.184280189061 ns/iter 57.94583675785007 ns/iter 1.02
JSON_Equality_Helm_Chart_Lock 138.0787945191824 ns/iter 130.740098941196 ns/iter 1.06
JSON_Divisible_By_Decimal 176.85321967868026 ns/iter 176.5793411045595 ns/iter 1.00
JSON_String_Equal/10 6.740882492456281 ns/iter 6.806712909480208 ns/iter 0.99
JSON_String_Equal/100 6.404532588797959 ns/iter 6.397354962545606 ns/iter 1.00
JSON_String_Equal_Small_By_Perfect_Hash/10 0.8614759611729536 ns/iter 0.7633610924386263 ns/iter 1.13
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 3.4531316283660143 ns/iter 3.297629774236439 ns/iter 1.05
JSON_String_Fast_Hash/10 2.6044903646342696 ns/iter 2.2784295236152254 ns/iter 1.14
JSON_String_Fast_Hash/100 2.0932446742332114 ns/iter 2.0388992935194943 ns/iter 1.03
JSON_String_Key_Hash/10 1.381697701977807 ns/iter 1.356185241142552 ns/iter 1.02
JSON_String_Key_Hash/100 2.558585597969008 ns/iter 2.134961065828774 ns/iter 1.20
JSON_Object_Defines_Miss_Same_Length 2.420211688637116 ns/iter 2.3790127251868203 ns/iter 1.02
JSON_Object_Defines_Miss_Too_Small 2.460028009493164 ns/iter 2.347671219820777 ns/iter 1.05
JSON_Object_Defines_Miss_Too_Large 2.3574245367388653 ns/iter 2.297981444168019 ns/iter 1.03
Pointer_Object_Traverse 14.284600102554707 ns/iter 13.87773032901739 ns/iter 1.03
Pointer_Object_Try_Traverse 23.171382835780996 ns/iter 23.532233830403282 ns/iter 0.98
Pointer_Push_Back_Pointer_To_Weak_Pointer 153.73238761009415 ns/iter 150.61197166013093 ns/iter 1.02
Pointer_Walker_Schema_ISO_Language 3335909.5763887893 ns/iter 2534329.2385965115 ns/iter 1.32
Pointer_Maybe_Tracked_Deeply_Nested/0 1065154.4921987394 ns/iter 866076.6238993593 ns/iter 1.23
Pointer_Maybe_Tracked_Deeply_Nested/1 1253245.3554120597 ns/iter 1107209.0551179848 ns/iter 1.13
Pointer_Position_Tracker_Get_Deeply_Nested 356.16572692581343 ns/iter 351.66828008191686 ns/iter 1.01
URITemplateRouter_Create 23168.30605564131 ns/iter 22652.16933676443 ns/iter 1.02
URITemplateRouter_Match 165.7916875939893 ns/iter 158.72305973360648 ns/iter 1.04
URITemplateRouter_Match_BasePath 215.0833710318447 ns/iter 191.96795210193164 ns/iter 1.12
URITemplateRouterView_Restore 11970.108640776305 ns/iter 9251.420223990013 ns/iter 1.29
URITemplateRouterView_Match 142.65822036951778 ns/iter 125.89069313579213 ns/iter 1.13
URITemplateRouterView_Match_BasePath 152.89222482705676 ns/iter 148.784081575014 ns/iter 1.03
URITemplateRouterView_Arguments 449.56057159191056 ns/iter 398.3517951210693 ns/iter 1.13
JSONL_Parse_Large 13855946.808510626 ns/iter 12159046.689654244 ns/iter 1.14
JSONL_Parse_Large_GZIP 16652778.89795719 ns/iter 13743270.411766265 ns/iter 1.21
HTML_Build_Table_100000 76970129.66665776 ns/iter 78443636.36363803 ns/iter 0.98
HTML_Render_Table_100000 4545934.226414074 ns/iter 3819672.3300971314 ns/iter 1.19
GZIP_Compress_ISO_Language_Set_3_Locations 29634608.32000237 ns/iter 32304933.320001513 ns/iter 0.92
GZIP_Decompress_ISO_Language_Set_3_Locations 6791415.2393146865 ns/iter 6028109.842975576 ns/iter 1.13
GZIP_Compress_ISO_Language_Set_3_Schema 1578230.065759523 ns/iter 1629568.5499999635 ns/iter 0.97
GZIP_Decompress_ISO_Language_Set_3_Schema 297661.3824339746 ns/iter 288166.91827698366 ns/iter 1.03

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: 2f48d7a Previous: c9a31f2 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.4701282142854906 ns/iter 5.049748214286102 ns/iter 0.49
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.3958989285712766 ns/iter 5.034616999998889 ns/iter 0.48
Regex_Period_Asterisk 2.3895371428571774 ns/iter 5.026743000000806 ns/iter 0.48
Regex_Group_Period_Asterisk_Group 2.3879014285715323 ns/iter 5.024964000001546 ns/iter 0.48
Regex_Period_Plus 2.51531321428534 ns/iter 5.019916999999623 ns/iter 0.50
Regex_Period 2.6923700645603446 ns/iter 5.018075999998928 ns/iter 0.54
Regex_Caret_Period_Plus_Dollar 2.528432765599288 ns/iter 5.024493000000803 ns/iter 0.50
Regex_Caret_Group_Period_Plus_Group_Dollar 2.6258537699769997 ns/iter 5.0264789999982895 ns/iter 0.52
Regex_Caret_Period_Asterisk_Dollar 2.4502782142852606 ns/iter 5.175729464284018 ns/iter 0.47
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.411286428571202 ns/iter 5.015544000000318 ns/iter 0.48
Regex_Caret_X_Hyphen 5.851637500001061 ns/iter 8.160581473214888 ns/iter 0.72
Regex_Period_Md_Dollar 29.565743171579467 ns/iter 44.424012103357164 ns/iter 0.67
Regex_Caret_Slash_Period_Asterisk 5.825281999998424 ns/iter 7.849753348213743 ns/iter 0.74
Regex_Caret_Period_Range_Dollar 2.6918803571431584 ns/iter 5.737712999998621 ns/iter 0.47
Regex_Nested_Backtrack 39.84744419642488 ns/iter 56.68230357142891 ns/iter 0.70
JSON_Array_Of_Objects_Unique 402.20970982142643 ns/iter 535.7274999998936 ns/iter 0.75
JSON_Parse_1 8007.214285713969 ns/iter 8839.984375000093 ns/iter 0.91
JSON_Parse_Real 12020.16785714071 ns/iter 15996.850446430448 ns/iter 0.75
JSON_Parse_Decimal 9223.962393025004 ns/iter 11810.328571430415 ns/iter 0.78
JSON_Parse_Schema_ISO_Language 7848025.555555675 ns/iter 7522957.777776659 ns/iter 1.04
JSON_Parse_Integer 4382.773124999062 ns/iter 6129.915178569994 ns/iter 0.71
JSON_Parse_String_NonSSO_Plain 6607.304464286099 ns/iter 7759.744419644221 ns/iter 0.85
JSON_Parse_String_SSO_Plain 2798.816449043197 ns/iter 3720.8660714276625 ns/iter 0.75
JSON_Parse_String_Escape_Heavy 22309.80937499538 ns/iter 21916.896874998318 ns/iter 1.02
JSON_Parse_Object_Short_Keys 9409.306654878483 ns/iter 13303.296428570578 ns/iter 0.71
JSON_Parse_Object_Scalar_Properties 4861.200000000281 ns/iter 6849.545535713121 ns/iter 0.71
JSON_Parse_Object_Array_Properties 8663.830072188695 ns/iter 11322.581250002628 ns/iter 0.77
JSON_Parse_Object_Object_Properties 8691.196428571857 ns/iter 11421.634375000878 ns/iter 0.76
JSON_Parse_Nested_Containers 66009.09821427437 ns/iter 79201.59598214635 ns/iter 0.83
JSON_From_String_Copy 46.332851480655414 ns/iter 63.622776785722735 ns/iter 0.73
JSON_From_String_Temporary 53.232303571430094 ns/iter 58.98159000000761 ns/iter 0.90
JSON_Number_To_Double 85.48527901783842 ns/iter 119.4565714285594 ns/iter 0.72
JSON_Object_At_Last_Key/8 6.718850892856461 ns/iter 7.250651785713253 ns/iter 0.93
JSON_Object_At_Last_Key/32 20.787409430187335 ns/iter 23.25989706182922 ns/iter 0.89
JSON_Object_At_Last_Key/128 92.99311191995197 ns/iter 89.18790673267793 ns/iter 1.04
JSON_Object_At_Last_Key/512 317.06763392855515 ns/iter 426.2908738262682 ns/iter 0.74
JSON_Fast_Hash_Helm_Chart_Lock 48.169031373867796 ns/iter 69.43446428570508 ns/iter 0.69
JSON_Equality_Helm_Chart_Lock 258.7217593179232 ns/iter 305.37386100737496 ns/iter 0.85
JSON_Divisible_By_Decimal 274.50910828083835 ns/iter 302.69986607141925 ns/iter 0.91
JSON_String_Equal/10 11.874501785712255 ns/iter 16.017529580241725 ns/iter 0.74
JSON_String_Equal/100 14.538051497597973 ns/iter 17.289944750290108 ns/iter 0.84
JSON_String_Equal_Small_By_Perfect_Hash/10 1.2068559374998955 ns/iter 2.5088925000001643 ns/iter 0.48
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 9.12169754464287 ns/iter 14.204099266944539 ns/iter 0.64
JSON_String_Fast_Hash/10 2.961682674604218 ns/iter 5.017958000000817 ns/iter 0.59
JSON_String_Fast_Hash/100 2.92384086661979 ns/iter 5.023748000000978 ns/iter 0.58
JSON_String_Key_Hash/10 2.9331860674999213 ns/iter 5.336104000000432 ns/iter 0.55
JSON_String_Key_Hash/100 7.354990178571694 ns/iter 11.956614285716276 ns/iter 0.62
JSON_Object_Defines_Miss_Same_Length 4.953613392856937 ns/iter 5.022656000001007 ns/iter 0.99
JSON_Object_Defines_Miss_Too_Small 4.710990412301163 ns/iter 4.079168444785098 ns/iter 1.15
JSON_Object_Defines_Miss_Too_Large 3.543286556964135 ns/iter 4.092041346592111 ns/iter 0.87
Pointer_Object_Traverse 42.96608749999109 ns/iter 66.97249107142105 ns/iter 0.64
Pointer_Object_Try_Traverse 50.73231250000682 ns/iter 67.61998883926574 ns/iter 0.75
Pointer_Push_Back_Pointer_To_Weak_Pointer 186.79584703535818 ns/iter 186.22549877015422 ns/iter 1.00
Pointer_Walker_Schema_ISO_Language 8237878.888889504 ns/iter 7810205.5555544 ns/iter 1.05
Pointer_Maybe_Tracked_Deeply_Nested/0 2180640.1515143327 ns/iter 2423628.112449635 ns/iter 0.90
Pointer_Maybe_Tracked_Deeply_Nested/1 3916030.167596922 ns/iter 3631134.7593593067 ns/iter 1.08
Pointer_Position_Tracker_Get_Deeply_Nested 535.6779278148732 ns/iter 531.6575000000918 ns/iter 1.01
URITemplateRouter_Create 38247.924144212106 ns/iter 40315.07747664416 ns/iter 0.95
URITemplateRouter_Match 217.05334375006657 ns/iter 191.28336529316442 ns/iter 1.13
URITemplateRouter_Match_BasePath 247.2891071428356 ns/iter 217.23696875000087 ns/iter 1.14
URITemplateRouterView_Restore 25751.989285717107 ns/iter 32213.293957717688 ns/iter 0.80
URITemplateRouterView_Match 163.73474087512116 ns/iter 157.37736607143964 ns/iter 1.04
URITemplateRouterView_Match_BasePath 182.181440527626 ns/iter 175.20877289342704 ns/iter 1.04
URITemplateRouterView_Arguments 446.94218749995684 ns/iter 522.7442000000337 ns/iter 0.85
JSONL_Parse_Large 27510969.230775118 ns/iter 32645504.761895996 ns/iter 0.84
JSONL_Parse_Large_GZIP 27827051.999993272 ns/iter 33295709.523805443 ns/iter 0.84
HTML_Build_Table_100000 94973857.14283673 ns/iter 90413528.57142165 ns/iter 1.05
HTML_Render_Table_100000 12474792.85714397 ns/iter 8044925.555554982 ns/iter 1.55
GZIP_Compress_ISO_Language_Set_3_Locations 33689340.00000081 ns/iter 35909415.78947518 ns/iter 0.94
GZIP_Decompress_ISO_Language_Set_3_Locations 11907766.07143107 ns/iter 9911593.333332956 ns/iter 1.20
GZIP_Compress_ISO_Language_Set_3_Schema 2042953.1249995134 ns/iter 2100028.4374999013 ns/iter 0.97
GZIP_Decompress_ISO_Language_Set_3_Schema 663153.2366070709 ns/iter 643655.8928572009 ns/iter 1.03

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

@jviotti jviotti merged commit 970b645 into main Jun 16, 2026
13 checks passed
@jviotti jviotti deleted the jose-eddsa branch June 16, 2026 18:18
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