Skip to content

Turn PCRE2's SLJIT dependency into its own CMake library - #2877

Merged
jviotti merged 5 commits into
mainfrom
sljit-separate
Sep 24, 2026
Merged

jviotti merged 5 commits into
mainfrom
sljit-separate

Conversation

@jviotti

@jviotti jviotti commented Sep 24, 2026 •

Copy link
Copy Markdown
Member

No description provided.

To use it for other purposes.

Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
@jviotti jviotti changed the title sljit separate Turn PCRE2's SLJIT dependency into its own CMake library Sep 24, 2026

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

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="patches/pcre2/0001-Link-the-JIT-code-generator-instead-of-including-its.patch">

<violation number="1" location="patches/pcre2/0001-Link-the-JIT-code-generator-instead-of-including-its.patch:44">
P1: Including `sljitLir.h` makes the JIT's `SLJIT_MALLOC/FREE` macros ignore `&re->memctl` and call libc allocation directly. This breaks PCRE2's custom allocator contract for JIT compilation; preserve the allocator hook when separating SLJIT.</violation>
</file>

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

Re-trigger cubic

-#define SLJIT_CONFIG_AUTO 1
-#define SLJIT_CONFIG_STATIC 1
-#define SLJIT_VERBOSE 0
+#include "sljitLir.h"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1: Including sljitLir.h makes the JIT's SLJIT_MALLOC/FREE macros ignore &re->memctl and call libc allocation directly. This breaks PCRE2's custom allocator contract for JIT compilation; preserve the allocator hook when separating SLJIT.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At patches/pcre2/0001-Link-the-JIT-code-generator-instead-of-including-its.patch, line 44:

<comment>Including `sljitLir.h` makes the JIT's `SLJIT_MALLOC/FREE` macros ignore `&re->memctl` and call libc allocation directly. This breaks PCRE2's custom allocator contract for JIT compilation; preserve the allocator hook when separating SLJIT.</comment>

<file context>
@@ -0,0 +1,73 @@
+-#define SLJIT_CONFIG_AUTO 1
+-#define SLJIT_CONFIG_STATIC 1
+-#define SLJIT_VERBOSE 0
++#include "sljitLir.h"
+ 
+-#ifdef PCRE2_DEBUG
</file context>

Comment thread CMakeLists.txt
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
@github-actions

github-actions Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

Benchmark linux/llvm

Measured against main at 64f15b1.

10 slower, 7 faster, 82 within 5%.

Benchmark main This branch Change
Regex_Caret_Period_Asterisk_Dollar 2.49 ns 3.43 ns +37.5%
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.49 ns 3.42 ns +37.5%
JSON_String_Fast_Hash_10 2.18 ns 2.49 ns +14.2%
JSON_String_Fast_Hash_100 2.18 ns 2.49 ns +14.2%
Regex_Caret_Group_Period_Plus_Group_Dollar 2.50 ns 2.80 ns +12.0%
JSON_Fast_Hash_Helm_Chart_Lock 54.78 ns 61.31 ns +11.9%
JSON_Parse_Schema_ISO_Language 3.23 ms 3.45 ms +6.9%
Schema_Tracker_ISO_Language 4.27 ms 4.51 ms +5.6%
URITemplateRouter_Match_BasePath 195.74 ns 206.05 ns +5.3%
GZIP_Compress_ISO_Language_Set_3_Locations 37.28 ms 39.22 ms +5.2%
JSON_From_String_Copy 11.56 ns 10.73 ns -7.2%
Regex_Caret_X_Hyphen 7.16 ns 6.54 ns -8.6%
JSON_String_Equal_100 7.16 ns 6.54 ns -8.7%
JSON_String_Equal_10 6.54 ns 5.92 ns -9.5%
JSON_Array_Of_Objects_Unique 451.27 ns 399.64 ns -11.4%
Regex_Nested_Backtrack 43.91 ns 38.34 ns -12.7%
Regex_Caret_Slash_Period_Asterisk 7.17 ns 6.23 ns -13.1%
All 99 benchmarks
Benchmark main This branch Change
Regex_Lower_S_Or_Upper_S_Asterisk 2.18 ns 2.18 ns -0.2%
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.18 ns 2.18 ns +0.1%
Regex_Period_Asterisk 2.18 ns 2.18 ns +0.1%
Regex_Group_Period_Asterisk_Group 2.18 ns 2.18 ns +0.0%
Regex_Period_Plus 3.11 ns 3.11 ns +0.0%
Regex_Period 3.11 ns 3.11 ns +0.0%
Regex_Caret_Period_Plus_Dollar 2.80 ns 2.80 ns +0.1%
Regex_Caret_Group_Period_Plus_Group_Dollar 2.50 ns 2.80 ns +12.0%
Regex_Caret_Period_Asterisk_Dollar 2.49 ns 3.43 ns +37.5%
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.49 ns 3.42 ns +37.5%
Regex_Caret_X_Hyphen 7.16 ns 6.54 ns -8.6%
Regex_Period_Md_Dollar 26.99 ns 27.03 ns +0.2%
Regex_Caret_Slash_Period_Asterisk 7.17 ns 6.23 ns -13.1%
Regex_Caret_Period_Range_Dollar 4.05 ns 4.05 ns +0.0%
Regex_Nested_Backtrack 43.91 ns 38.34 ns -12.7%
JSON_Array_Of_Objects_Unique 451.27 ns 399.64 ns -11.4%
JSON_Parse_1 4.52 us 4.52 us +0.1%
JSON_Parse_Real 5.01 us 5.10 us +1.8%
JSON_Parse_Decimal 7.42 us 7.49 us +1.0%
JSON_Parse_Schema_ISO_Language 3.23 ms 3.45 ms +6.9%
JSON_Parse_Integer 3.55 us 3.63 us +2.1%
JSON_Parse_String_NonSSO_Plain 3.02 us 3.10 us +2.6%
JSON_Parse_String_SSO_Plain 2.57 us 2.62 us +2.1%
JSON_Parse_String_Escape_Heavy 12.04 us 11.91 us -1.1%
JSON_Parse_Object_Short_Keys 7.95 us 7.65 us -3.8%
JSON_Parse_Object_Scalar_Properties 4.05 us 3.89 us -4.1%
JSON_Parse_Object_Array_Properties 5.43 us 5.51 us +1.5%
JSON_Parse_Object_Object_Properties 5.46 us 5.53 us +1.3%
JSON_Parse_Nested_Containers 34.22 us 34.54 us +0.9%
JSON_Fast_Hash_Helm_Chart_Lock 54.78 ns 61.31 ns +11.9%
JSON_Equality_Helm_Chart_Lock 158.86 ns 158.53 ns -0.2%
JSON_String_Equal_10 6.54 ns 5.92 ns -9.5%
JSON_String_Equal_100 7.16 ns 6.54 ns -8.7%
JSON_String_Equal_Small_By_Perfect_Hash_10 0.94 ns 0.94 ns -0.1%
JSON_String_Equal_Small_By_Runtime_Perfect_Hash_10 10.27 ns 10.27 ns +0.0%
JSON_String_Fast_Hash_10 2.18 ns 2.49 ns +14.2%
JSON_String_Fast_Hash_100 2.18 ns 2.49 ns +14.2%
JSON_String_Key_Hash_10 2.18 ns 2.18 ns -0.0%
JSON_String_Key_Hash_100 6.54 ns 6.54 ns -0.0%
JSON_Object_Defines_Miss_Same_Length 2.63 ns 2.56 ns -2.6%
JSON_Object_Defines_Miss_Too_Small 2.58 ns 2.66 ns +3.0%
JSON_Object_Defines_Miss_Too_Large 2.90 ns 2.88 ns -0.7%
JSON_From_String_Copy 11.56 ns 10.73 ns -7.2%
JSON_From_String_Temporary 10.17 ns 9.77 ns -4.0%
JSON_Number_To_Double 21.70 ns 22.19 ns +2.3%
JSON_Object_At_Last_Key_8 3.92 ns 3.84 ns -2.3%
JSON_Object_At_Last_Key_32 21.49 ns 21.48 ns -0.0%
JSON_Object_At_Last_Key_128 48.35 ns 48.30 ns -0.1%
JSON_Object_At_Last_Key_512 391.52 ns 391.36 ns -0.0%
JSON_Divisible_By_Decimal 239.87 ns 233.70 ns -2.6%
Pointer_Object_Traverse 28.20 ns 28.46 ns +0.9%
Pointer_Object_Try_Traverse 30.54 ns 30.21 ns -1.1%
Pointer_Push_Back_Pointer_To_Weak_Pointer 144.82 ns 144.57 ns -0.2%
Pointer_Walker_Schema_ISO_Language 1.52 ms 1.49 ms -2.0%
Pointer_Untracked_Deeply_Nested 1.23 ms 1.26 ms +2.2%
Pointer_Tracked_Deeply_Nested 1.65 ms 1.60 ms -3.1%
Pointer_Position_Tracker_Get_Deeply_Nested 609.30 ns 608.58 ns -0.1%
Schema_Tracker_ISO_Language 4.27 ms 4.51 ms +5.6%
Schema_Tracker_ISO_Language_To_JSON 15.91 ms 16.10 ms +1.2%
Schema_Frame_WoT_References 2.18 ms 2.15 ms -1.4%
Schema_Frame_OMC_References 9.43 ms 9.39 ms -0.4%
Schema_Frame_OMC_Pointers 17.77 ms 17.75 ms -0.1%
Schema_Frame_OMC_Locations 8.15 ms 8.10 ms -0.6%
Schema_Frame_ISO_Language_Locations 39.59 ms 39.38 ms -0.5%
Schema_Frame_ISO_Language_Root 306.92 ns 295.24 ns -3.8%
Schema_Frame_KrakenD_References 14.93 ms 14.83 ms -0.7%
Schema_Frame_KrakenD_Reachable 148.25 ms 146.04 ms -1.5%
Schema_Frame_ISO_Language_Locations_To_JSON 29.66 ms 30.56 ms +3.0%
Schema_Frame_Many_Resources_References 129.10 ms 128.86 ms -0.2%
Schema_Frame_Deeply_Nested_References 10.54 ms 10.60 ms +0.6%
Schema_Format_ISO_Language 44.94 ms 44.93 ms -0.0%
Schema_Bundle_Meta_2020_12 584.04 us 577.34 us -1.1%
Schema_Bundle_Many_Remotes_With_Fragments 6.71 ms 6.66 ms -0.8%
JSONPath_Descendant_Filter_Nested 1.65 us 1.60 us -2.7%
URITemplateRouter_Create 24.09 us 24.28 us +0.8%
URITemplateRouter_Match 174.12 ns 180.59 ns +3.7%
URITemplateRouterView_Restore 8.39 us 8.40 us +0.1%
URITemplateRouterView_Match 142.24 ns 141.32 ns -0.6%
URITemplateRouterView_Arguments 428.43 ns 433.53 ns +1.2%
URITemplateRouter_Match_BasePath 195.74 ns 206.05 ns +5.3%
URITemplateRouterView_Match_BasePath 161.10 ns 162.44 ns +0.8%
JSONL_Parse_Large 9.02 ms 9.15 ms +1.4%
JSONL_Parse_Large_GZIP 9.18 ms 9.34 ms +1.8%
JSONLD_Catalog_Annotation_List_Populate 592.99 us 600.02 us +1.2%
JSONLD_Catalog_Materialize 3.43 ms 3.49 ms +1.7%
HTML_Build_Table_100000 37.40 ms 37.55 ms +0.4%
HTML_Render_Table_100000 1.94 ms 1.96 ms +1.5%
Markdown_To_HTML_Realistic_Document 4.11 ms 4.18 ms +1.7%
Markdown_To_HTML_Pathological 13.75 ms 13.09 ms -4.8%
Markdown_To_HTML_Short_Descriptions 558.76 ns 586.65 ns +5.0%
GZIP_Compress_ISO_Language_Set_3_Locations 37.28 ms 39.22 ms +5.2%
GZIP_Decompress_ISO_Language_Set_3_Locations 5.14 ms 5.11 ms -0.5%
GZIP_Decompress_Default_Level_ISO_Language_Set_3_Locations 7.14 ms 7.09 ms -0.7%
GZIP_Decompress_Stream_Default_Level_ISO_Language_Set_3_Locations 8.78 ms 8.53 ms -2.8%
GZIP_Compress_ISO_Language_Set_3_Schema 2.23 ms 2.30 ms +3.5%
GZIP_Decompress_ISO_Language_Set_3_Schema 425.06 us 426.67 us +0.4%
JOSE_VerifySignature_RS256 46.81 us 48.31 us +3.2%
JOSE_VerifySignature_ES512 1.78 ms 1.74 ms -2.2%
Crypto_CRC32_Large_JSONL 101.68 us 101.50 us -0.2%

@github-actions

Copy link
Copy Markdown

Benchmark linux/gcc

Measured against main at 64f15b1.

8 slower, 18 faster, 73 within 5%.

Benchmark main This branch Change
JSON_Object_Defines_Miss_Too_Small 2.63 ns 3.02 ns +14.8%
JSON_String_Key_Hash_100 11.74 ns 13.13 ns +11.8%
JSON_Number_To_Double 18.40 ns 20.57 ns +11.8%
JSON_String_Fast_Hash_10 2.62 ns 2.90 ns +10.7%
JSON_String_Fast_Hash_100 2.62 ns 2.90 ns +10.7%
JSON_Array_Of_Objects_Unique 323.18 ns 350.95 ns +8.6%
JSON_Fast_Hash_Helm_Chart_Lock 56.57 ns 60.35 ns +6.7%
URITemplateRouter_Match 129.44 ns 137.72 ns +6.4%
JSON_String_Equal_100 6.29 ns 5.98 ns -5.0%
JSON_Object_Defines_Miss_Too_Large 3.13 ns 2.94 ns -6.0%
JSON_String_Equal_10 5.21 ns 4.89 ns -6.2%
JSON_From_String_Copy 7.56 ns 7.05 ns -6.7%
Pointer_Position_Tracker_Get_Deeply_Nested 554.04 ns 513.76 ns -7.3%
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.66 ns 2.45 ns -7.7%
JSON_Object_At_Last_Key_8 6.26 ns 5.64 ns -10.0%
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.66 ns 2.38 ns -10.4%
Regex_Period 2.65 ns 2.38 ns -10.4%
Regex_Group_Period_Asterisk_Group 2.72 ns 2.31 ns -15.1%
Regex_Lower_S_Or_Upper_S_Asterisk 2.79 ns 2.37 ns -15.1%
Regex_Caret_Group_Period_Plus_Group_Dollar 2.72 ns 2.31 ns -15.1%
Regex_Caret_Period_Asterisk_Dollar 2.79 ns 2.36 ns -15.6%
Regex_Period_Asterisk 2.72 ns 2.29 ns -15.9%
Regex_Period_Plus 2.79 ns 2.35 ns -15.9%
JSON_String_Key_Hash_10 3.22 ns 2.66 ns -17.4%
Regex_Caret_Period_Plus_Dollar 2.84 ns 2.30 ns -19.0%
JSON_Object_At_Last_Key_512 295.15 ns 227.00 ns -23.1%
All 99 benchmarks
Benchmark main This branch Change
Crypto_CRC32_Large_JSONL 45.29 us 45.31 us +0.0%
JOSE_VerifySignature_RS256 18.70 us 18.74 us +0.2%
JOSE_VerifySignature_ES512 427.70 us 427.72 us +0.0%
GZIP_Compress_ISO_Language_Set_3_Locations 23.74 ms 23.87 ms +0.5%
GZIP_Decompress_ISO_Language_Set_3_Locations 3.62 ms 3.62 ms +0.0%
GZIP_Decompress_Default_Level_ISO_Language_Set_3_Locations 5.03 ms 5.06 ms +0.6%
GZIP_Decompress_Stream_Default_Level_ISO_Language_Set_3_Locations 7.08 ms 6.99 ms -1.2%
GZIP_Compress_ISO_Language_Set_3_Schema 1.88 ms 1.86 ms -1.5%
GZIP_Decompress_ISO_Language_Set_3_Schema 370.79 us 369.46 us -0.4%
Markdown_To_HTML_Realistic_Document 4.08 ms 4.10 ms +0.3%
Markdown_To_HTML_Pathological 11.08 ms 11.24 ms +1.4%
Markdown_To_HTML_Short_Descriptions 450.91 ns 450.13 ns -0.2%
HTML_Build_Table_100000 29.37 ms 28.59 ms -2.7%
HTML_Render_Table_100000 2.65 ms 2.63 ms -0.5%
JSONLD_Catalog_Annotation_List_Populate 644.65 us 640.51 us -0.6%
JSONLD_Catalog_Materialize 2.79 ms 2.73 ms -2.1%
JSONL_Parse_Large 7.89 ms 7.66 ms -2.9%
JSONL_Parse_Large_GZIP 8.18 ms 7.95 ms -2.8%
URITemplateRouter_Create 14.54 us 14.69 us +1.0%
URITemplateRouter_Match 129.44 ns 137.72 ns +6.4%
URITemplateRouterView_Restore 2.87 us 2.83 us -1.2%
URITemplateRouterView_Match 99.18 ns 100.11 ns +0.9%
URITemplateRouterView_Arguments 382.70 ns 381.73 ns -0.3%
URITemplateRouter_Match_BasePath 147.93 ns 154.87 ns +4.7%
URITemplateRouterView_Match_BasePath 113.62 ns 114.13 ns +0.4%
JSONPath_Descendant_Filter_Nested 1.17 us 1.19 us +2.5%
Schema_Frame_WoT_References 1.89 ms 1.88 ms -0.6%
Schema_Frame_OMC_References 8.19 ms 8.07 ms -1.5%
Schema_Frame_OMC_Pointers 15.13 ms 14.93 ms -1.3%
Schema_Frame_OMC_Locations 7.11 ms 7.01 ms -1.4%
Schema_Frame_ISO_Language_Locations 30.47 ms 30.04 ms -1.4%
Schema_Frame_ISO_Language_Root 233.35 ns 234.01 ns +0.3%
Schema_Frame_KrakenD_References 12.91 ms 12.77 ms -1.1%
Schema_Frame_KrakenD_Reachable 102.24 ms 101.84 ms -0.4%
Schema_Frame_ISO_Language_Locations_To_JSON 22.80 ms 22.38 ms -1.8%
Schema_Frame_Many_Resources_References 117.87 ms 114.92 ms -2.5%
Schema_Frame_Deeply_Nested_References 8.75 ms 8.68 ms -0.8%
Schema_Format_ISO_Language 33.68 ms 33.42 ms -0.8%
Schema_Bundle_Meta_2020_12 489.74 us 483.81 us -1.2%
Schema_Bundle_Many_Remotes_With_Fragments 5.26 ms 5.18 ms -1.4%
Pointer_Object_Traverse 17.74 ns 18.23 ns +2.8%
Pointer_Object_Try_Traverse 20.46 ns 20.13 ns -1.6%
Pointer_Push_Back_Pointer_To_Weak_Pointer 165.72 ns 162.00 ns -2.2%
Pointer_Walker_Schema_ISO_Language 1.68 ms 1.67 ms -0.5%
Pointer_Untracked_Deeply_Nested 1.05 ms 1.04 ms -0.1%
Pointer_Tracked_Deeply_Nested 1.54 ms 1.57 ms +2.0%
Pointer_Position_Tracker_Get_Deeply_Nested 554.04 ns 513.76 ns -7.3%
Schema_Tracker_ISO_Language 4.12 ms 4.09 ms -0.9%
Schema_Tracker_ISO_Language_To_JSON 13.06 ms 12.94 ms -0.9%
JSON_Array_Of_Objects_Unique 323.18 ns 350.95 ns +8.6%
JSON_Parse_1 3.98 us 3.93 us -1.5%
JSON_Parse_Real 4.21 us 4.18 us -0.7%
JSON_Parse_Decimal 6.46 us 6.45 us -0.2%
JSON_Parse_Schema_ISO_Language 2.95 ms 2.91 ms -1.4%
JSON_Parse_Integer 2.81 us 2.72 us -3.2%
JSON_Parse_String_NonSSO_Plain 2.53 us 2.50 us -1.2%
JSON_Parse_String_SSO_Plain 2.21 us 2.22 us +0.4%
JSON_Parse_String_Escape_Heavy 13.09 us 13.32 us +1.8%
JSON_Parse_Object_Short_Keys 7.11 us 6.86 us -3.5%
JSON_Parse_Object_Scalar_Properties 3.65 us 3.64 us -0.4%
JSON_Parse_Object_Array_Properties 5.06 us 5.05 us -0.2%
JSON_Parse_Object_Object_Properties 5.11 us 5.10 us -0.2%
JSON_Parse_Nested_Containers 32.02 us 31.82 us -0.6%
JSON_Fast_Hash_Helm_Chart_Lock 56.57 ns 60.35 ns +6.7%
JSON_Equality_Helm_Chart_Lock 123.48 ns 126.79 ns +2.7%
JSON_String_Equal_10 5.21 ns 4.89 ns -6.2%
JSON_String_Equal_100 6.29 ns 5.98 ns -5.0%
JSON_String_Equal_Small_By_Perfect_Hash_10 0.80 ns 0.80 ns +0.0%
JSON_String_Equal_Small_By_Runtime_Perfect_Hash_10 8.74 ns 8.66 ns -0.9%
JSON_String_Fast_Hash_10 2.62 ns 2.90 ns +10.7%
JSON_String_Fast_Hash_100 2.62 ns 2.90 ns +10.7%
JSON_String_Key_Hash_10 3.22 ns 2.66 ns -17.4%
JSON_String_Key_Hash_100 11.74 ns 13.13 ns +11.8%
JSON_Object_Defines_Miss_Same_Length 2.85 ns 2.80 ns -1.5%
JSON_Object_Defines_Miss_Too_Small 2.63 ns 3.02 ns +14.8%
JSON_Object_Defines_Miss_Too_Large 3.13 ns 2.94 ns -6.0%
JSON_From_String_Copy 7.56 ns 7.05 ns -6.7%
JSON_From_String_Temporary 5.30 ns 5.30 ns -0.1%
JSON_Number_To_Double 18.40 ns 20.57 ns +11.8%
JSON_Object_At_Last_Key_8 6.26 ns 5.64 ns -10.0%
JSON_Object_At_Last_Key_32 19.00 ns 18.74 ns -1.4%
JSON_Object_At_Last_Key_128 72.67 ns 70.30 ns -3.3%
JSON_Object_At_Last_Key_512 295.15 ns 227.00 ns -23.1%
JSON_Divisible_By_Decimal 220.06 ns 218.91 ns -0.5%
Regex_Lower_S_Or_Upper_S_Asterisk 2.79 ns 2.37 ns -15.1%
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.66 ns 2.38 ns -10.4%
Regex_Period_Asterisk 2.72 ns 2.29 ns -15.9%
Regex_Group_Period_Asterisk_Group 2.72 ns 2.31 ns -15.1%
Regex_Period_Plus 2.79 ns 2.35 ns -15.9%
Regex_Period 2.65 ns 2.38 ns -10.4%
Regex_Caret_Period_Plus_Dollar 2.84 ns 2.30 ns -19.0%
Regex_Caret_Group_Period_Plus_Group_Dollar 2.72 ns 2.31 ns -15.1%
Regex_Caret_Period_Asterisk_Dollar 2.79 ns 2.36 ns -15.6%
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.66 ns 2.45 ns -7.7%
Regex_Caret_X_Hyphen 5.52 ns 5.42 ns -1.8%
Regex_Period_Md_Dollar 16.84 ns 16.77 ns -0.4%
Regex_Caret_Slash_Period_Asterisk 5.58 ns 5.47 ns -2.0%
Regex_Caret_Period_Range_Dollar 2.92 ns 3.04 ns +4.1%
Regex_Nested_Backtrack 32.07 ns 32.51 ns +1.4%

@github-actions

Copy link
Copy Markdown

Benchmark windows/msvc

Measured against main at 64f15b1.

2 slower, 3 faster, 94 within 5%.

Benchmark main This branch Change
JSONLD_Catalog_Materialize 9.23 ms 9.98 ms +8.1%
Markdown_To_HTML_Short_Descriptions 698.93 ns 736.46 ns +5.4%
Schema_Frame_KrakenD_References 44.60 ms 42.00 ms -5.8%
Schema_Format_ISO_Language 97.16 ms 90.60 ms -6.8%
Schema_Frame_OMC_Locations 21.75 ms 19.69 ms -9.5%
All 99 benchmarks
Benchmark main This branch Change
Regex_Lower_S_Or_Upper_S_Asterisk 4.71 ns 4.70 ns -0.2%
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 4.70 ns 4.70 ns +0.1%
Regex_Period_Asterisk 4.70 ns 4.71 ns +0.1%
Regex_Group_Period_Asterisk_Group 4.71 ns 4.70 ns -0.3%
Regex_Period_Plus 4.71 ns 4.71 ns -0.1%
Regex_Period 4.70 ns 4.70 ns +0.0%
Regex_Caret_Period_Plus_Dollar 4.71 ns 4.71 ns -0.2%
Regex_Caret_Group_Period_Plus_Group_Dollar 4.71 ns 4.71 ns +0.0%
Regex_Caret_Period_Asterisk_Dollar 4.71 ns 4.70 ns -0.1%
Regex_Caret_Group_Period_Asterisk_Group_Dollar 4.70 ns 4.71 ns +0.2%
Regex_Caret_X_Hyphen 7.85 ns 7.86 ns +0.1%
Regex_Period_Md_Dollar 45.86 ns 45.90 ns +0.1%
Regex_Caret_Slash_Period_Asterisk 7.55 ns 7.52 ns -0.4%
Regex_Caret_Period_Range_Dollar 5.34 ns 5.33 ns -0.1%
Regex_Nested_Backtrack 57.01 ns 56.80 ns -0.4%
JSON_Array_Of_Objects_Unique 593.18 ns 611.03 ns +3.0%
JSON_Parse_1 8.78 us 8.86 us +0.9%
JSON_Parse_Real 15.96 us 16.00 us +0.2%
JSON_Parse_Decimal 11.71 us 11.73 us +0.2%
JSON_Parse_Schema_ISO_Language 7.67 ms 7.60 ms -1.0%
JSON_Parse_Integer 6.18 us 6.15 us -0.4%
JSON_Parse_String_NonSSO_Plain 8.30 us 8.31 us +0.1%
JSON_Parse_String_SSO_Plain 4.04 us 3.95 us -2.2%
JSON_Parse_String_Escape_Heavy 21.59 us 21.55 us -0.2%
JSON_Parse_Object_Short_Keys 12.97 us 13.02 us +0.4%
JSON_Parse_Object_Scalar_Properties 6.66 us 6.70 us +0.5%
JSON_Parse_Object_Array_Properties 11.48 us 11.56 us +0.7%
JSON_Parse_Object_Object_Properties 11.78 us 11.79 us +0.1%
JSON_Parse_Nested_Containers 80.25 us 79.78 us -0.6%
JSON_Fast_Hash_Helm_Chart_Lock 102.85 ns 106.74 ns +3.8%
JSON_Equality_Helm_Chart_Lock 216.08 ns 210.28 ns -2.7%
JSON_String_Equal_10 10.41 ns 10.05 ns -3.5%
JSON_String_Equal_100 11.68 ns 11.52 ns -1.3%
JSON_String_Equal_Small_By_Perfect_Hash_10 2.20 ns 2.19 ns -0.1%
JSON_String_Equal_Small_By_Runtime_Perfect_Hash_10 14.14 ns 14.16 ns +0.2%
JSON_String_Fast_Hash_10 6.30 ns 6.31 ns +0.2%
JSON_String_Fast_Hash_100 6.32 ns 6.34 ns +0.4%
JSON_String_Key_Hash_10 5.03 ns 5.01 ns -0.3%
JSON_String_Key_Hash_100 11.88 ns 11.85 ns -0.2%
JSON_Object_Defines_Miss_Same_Length 4.08 ns 4.09 ns +0.3%
JSON_Object_Defines_Miss_Too_Small 3.76 ns 3.76 ns +0.1%
JSON_Object_Defines_Miss_Too_Large 3.50 ns 3.45 ns -1.5%
JSON_From_String_Copy 64.35 ns 64.45 ns +0.2%
JSON_From_String_Temporary 59.15 ns 61.44 ns +3.9%
JSON_Number_To_Double 119.01 ns 120.41 ns +1.2%
JSON_Object_At_Last_Key_8 6.91 ns 6.92 ns +0.1%
JSON_Object_At_Last_Key_32 23.25 ns 23.24 ns -0.0%
JSON_Object_At_Last_Key_128 90.02 ns 89.16 ns -1.0%
JSON_Object_At_Last_Key_512 422.60 ns 420.87 ns -0.4%
JSON_Divisible_By_Decimal 306.28 ns 302.09 ns -1.4%
Pointer_Object_Traverse 69.66 ns 69.63 ns -0.1%
Pointer_Object_Try_Traverse 70.56 ns 73.51 ns +4.2%
Pointer_Push_Back_Pointer_To_Weak_Pointer 178.71 ns 180.09 ns +0.8%
Pointer_Walker_Schema_ISO_Language 11.71 ms 11.76 ms +0.4%
Pointer_Untracked_Deeply_Nested 2.42 ms 2.37 ms -2.2%
Pointer_Tracked_Deeply_Nested 3.70 ms 3.74 ms +1.1%
Pointer_Position_Tracker_Get_Deeply_Nested 595.54 ns 575.52 ns -3.4%
Schema_Tracker_ISO_Language 11.33 ms 11.47 ms +1.3%
Schema_Tracker_ISO_Language_To_JSON 63.99 ms 64.71 ms +1.1%
Schema_Frame_WoT_References 5.56 ms 5.46 ms -1.7%
Schema_Frame_OMC_References 24.17 ms 24.56 ms +1.6%
Schema_Frame_OMC_Pointers 46.71 ms 45.27 ms -3.1%
Schema_Frame_OMC_Locations 21.75 ms 19.69 ms -9.5%
Schema_Frame_ISO_Language_Locations 89.94 ms 86.35 ms -4.0%
Schema_Frame_ISO_Language_Root 2.18 us 2.20 us +0.7%
Schema_Frame_KrakenD_References 44.60 ms 42.00 ms -5.8%
Schema_Frame_KrakenD_Reachable 320.06 ms 313.60 ms -2.0%
Schema_Frame_ISO_Language_Locations_To_JSON 170.45 ms 165.35 ms -3.0%
Schema_Frame_Many_Resources_References 715.34 ms 718.28 ms +0.4%
Schema_Frame_Deeply_Nested_References 23.73 ms 22.95 ms -3.3%
Schema_Format_ISO_Language 97.16 ms 90.60 ms -6.8%
Schema_Bundle_Meta_2020_12 1.49 ms 1.49 ms -0.1%
Schema_Bundle_Many_Remotes_With_Fragments 29.77 ms 30.27 ms +1.7%
JSONPath_Descendant_Filter_Nested 2.41 us 2.42 us +0.4%
URITemplateRouter_Create 39.77 us 39.94 us +0.4%
URITemplateRouter_Match 231.97 ns 237.18 ns +2.2%
URITemplateRouterView_Restore 33.14 us 32.80 us -1.0%
URITemplateRouterView_Match 176.86 ns 180.68 ns +2.2%
URITemplateRouterView_Arguments 541.05 ns 532.11 ns -1.7%
URITemplateRouter_Match_BasePath 263.88 ns 269.14 ns +2.0%
URITemplateRouterView_Match_BasePath 201.04 ns 208.56 ns +3.7%
JSONL_Parse_Large 32.94 ms 33.00 ms +0.2%
JSONL_Parse_Large_GZIP 31.79 ms 31.72 ms -0.2%
JSONLD_Catalog_Annotation_List_Populate 3.02 ms 3.01 ms -0.5%
JSONLD_Catalog_Materialize 9.23 ms 9.98 ms +8.1%
HTML_Build_Table_100000 66.63 ms 66.74 ms +0.2%
HTML_Render_Table_100000 7.90 ms 7.82 ms -1.0%
Markdown_To_HTML_Realistic_Document 5.70 ms 5.70 ms +0.0%
Markdown_To_HTML_Pathological 17.72 ms 17.71 ms -0.1%
Markdown_To_HTML_Short_Descriptions 698.93 ns 736.46 ns +5.4%
GZIP_Compress_ISO_Language_Set_3_Locations 37.93 ms 38.17 ms +0.6%
GZIP_Decompress_ISO_Language_Set_3_Locations 9.53 ms 9.53 ms -0.0%
GZIP_Decompress_Default_Level_ISO_Language_Set_3_Locations 11.96 ms 11.83 ms -1.1%
GZIP_Decompress_Stream_Default_Level_ISO_Language_Set_3_Locations 14.43 ms 14.52 ms +0.7%
GZIP_Compress_ISO_Language_Set_3_Schema 2.33 ms 2.35 ms +0.8%
GZIP_Decompress_ISO_Language_Set_3_Schema 634.17 us 635.96 us +0.3%
JOSE_VerifySignature_RS256 21.27 us 21.45 us +0.8%
JOSE_VerifySignature_ES512 1.37 ms 1.37 ms -0.1%
Crypto_CRC32_Large_JSONL 102.89 us 103.41 us +0.5%

@jviotti
jviotti merged commit 8c8cc82 into main Sep 24, 2026
15 checks passed
@jviotti
jviotti deleted the sljit-separate branch September 24, 2026 19:44
@github-actions

Copy link
Copy Markdown

Benchmark macos/llvm

Measured against main at 64f15b1.

32 slower, 18 faster, 49 within 5%.

Benchmark main This branch Change
JSON_String_Fast_Hash_100 2.37 ns 2.87 ns +21.2%
JSON_Parse_Object_Scalar_Properties 3.43 us 4.15 us +21.2%
JSON_Parse_Object_Short_Keys 7.12 us 8.52 us +19.7%
JSON_Object_Defines_Miss_Same_Length 3.06 ns 3.65 ns +19.3%
JSON_Array_Of_Objects_Unique 456.97 ns 529.33 ns +15.8%
GZIP_Decompress_ISO_Language_Set_3_Schema 314.50 us 359.83 us +14.4%
JSON_From_String_Temporary 7.82 ns 8.92 ns +14.1%
JSON_Object_Defines_Miss_Too_Small 3.12 ns 3.54 ns +13.3%
Schema_Frame_WoT_References 2.89 ms 3.27 ms +13.0%
URITemplateRouterView_Match_BasePath 186.98 ns 209.27 ns +11.9%
JSON_Parse_Object_Array_Properties 4.21 us 4.70 us +11.7%
JSON_String_Equal_Small_By_Runtime_Perfect_Hash_10 4.06 ns 4.51 ns +11.1%
JSON_String_Key_Hash_100 2.60 ns 2.89 ns +11.1%
Schema_Frame_OMC_Pointers 25.85 ms 28.67 ms +10.9%
JSON_String_Fast_Hash_10 2.64 ns 2.90 ns +10.2%
Schema_Frame_Deeply_Nested_References 15.06 ms 16.58 ms +10.1%
Regex_Period 2.49 ns 2.74 ns +9.9%
GZIP_Compress_ISO_Language_Set_3_Schema 2.01 ms 2.21 ms +9.9%
JSON_Object_At_Last_Key_32 14.59 ns 15.96 ns +9.4%
Schema_Frame_ISO_Language_Locations 31.16 ms 33.85 ms +8.6%
Pointer_Object_Traverse 24.64 ns 26.69 ns +8.3%
Pointer_Untracked_Deeply_Nested 1.04 ms 1.12 ms +8.1%
JSON_Parse_1 4.26 us 4.60 us +8.0%
JSON_Parse_String_Escape_Heavy 20.22 us 21.63 us +7.0%
JSON_Object_Defines_Miss_Too_Large 3.32 ns 3.54 ns +6.8%
JSON_Object_At_Last_Key_8 5.28 ns 5.62 ns +6.6%
Schema_Bundle_Meta_2020_12 678.28 us 716.55 us +5.6%
Pointer_Tracked_Deeply_Nested 1.34 ms 1.41 ms +5.4%
Schema_Bundle_Many_Remotes_With_Fragments 7.54 ms 7.94 ms +5.2%
Regex_Group_Period_Asterisk_Group 2.20 ns 2.32 ns +5.2%
Regex_Period_Md_Dollar 24.67 ns 25.95 ns +5.2%
JSON_Parse_Schema_ISO_Language 2.89 ms 3.03 ms +5.0%
Crypto_CRC32_Large_JSONL 27.45 us 25.98 us -5.3%
JSONL_Parse_Large 8.95 ms 8.47 ms -5.4%
JSON_Equality_Helm_Chart_Lock 220.48 ns 207.90 ns -5.7%
Schema_Tracker_ISO_Language_To_JSON 14.52 ms 13.62 ms -6.2%
Pointer_Push_Back_Pointer_To_Weak_Pointer 187.03 ns 173.86 ns -7.0%
URITemplateRouter_Match 216.92 ns 200.33 ns -7.6%
JSON_Parse_Object_Object_Properties 4.68 us 4.31 us -7.9%
Schema_Format_ISO_Language 35.47 ms 32.67 ms -7.9%
Regex_Period_Asterisk 2.19 ns 2.01 ns -8.1%
Schema_Frame_ISO_Language_Root 157.63 ns 142.84 ns -9.4%
JSON_Object_At_Last_Key_128 71.48 ns 64.14 ns -10.3%
Markdown_To_HTML_Pathological 13.48 ms 12.06 ms -10.5%
JSONPath_Descendant_Filter_Nested 1.57 us 1.40 us -10.6%
JSON_Object_At_Last_Key_512 275.48 ns 242.16 ns -12.1%
Regex_Caret_Period_Range_Dollar 3.46 ns 3.02 ns -12.6%
JSON_Parse_Nested_Containers 34.09 us 28.92 us -15.2%
HTML_Render_Table_100000 2.35 ms 1.97 ms -16.2%
Pointer_Object_Try_Traverse 47.45 ns 37.92 ns -20.1%
All 99 benchmarks
Benchmark main This branch Change
Regex_Lower_S_Or_Upper_S_Asterisk 2.20 ns 2.28 ns +3.7%
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.18 ns 2.25 ns +3.1%
Regex_Period_Asterisk 2.19 ns 2.01 ns -8.1%
Regex_Group_Period_Asterisk_Group 2.20 ns 2.32 ns +5.2%
Regex_Period_Plus 2.45 ns 2.47 ns +0.8%
Regex_Period 2.49 ns 2.74 ns +9.9%
Regex_Caret_Period_Plus_Dollar 2.52 ns 2.54 ns +0.8%
Regex_Caret_Group_Period_Plus_Group_Dollar 2.56 ns 2.62 ns +2.3%
Regex_Caret_Period_Asterisk_Dollar 2.28 ns 2.25 ns -1.0%
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.26 ns 2.20 ns -2.3%
Regex_Caret_X_Hyphen 7.62 ns 7.54 ns -1.1%
Regex_Period_Md_Dollar 24.67 ns 25.95 ns +5.2%
Regex_Caret_Slash_Period_Asterisk 5.91 ns 6.07 ns +2.6%
Regex_Caret_Period_Range_Dollar 3.46 ns 3.02 ns -12.6%
Regex_Nested_Backtrack 37.98 ns 38.71 ns +1.9%
JSON_Array_Of_Objects_Unique 456.97 ns 529.33 ns +15.8%
JSON_Parse_1 4.26 us 4.60 us +8.0%
JSON_Parse_Real 6.58 us 6.62 us +0.6%
JSON_Parse_Decimal 7.55 us 7.45 us -1.3%
JSON_Parse_Schema_ISO_Language 2.89 ms 3.03 ms +5.0%
JSON_Parse_Integer 4.06 us 4.23 us +4.1%
JSON_Parse_String_NonSSO_Plain 3.93 us 3.76 us -4.2%
JSON_Parse_String_SSO_Plain 2.28 us 2.28 us +0.1%
JSON_Parse_String_Escape_Heavy 20.22 us 21.63 us +7.0%
JSON_Parse_Object_Short_Keys 7.12 us 8.52 us +19.7%
JSON_Parse_Object_Scalar_Properties 3.43 us 4.15 us +21.2%
JSON_Parse_Object_Array_Properties 4.21 us 4.70 us +11.7%
JSON_Parse_Object_Object_Properties 4.68 us 4.31 us -7.9%
JSON_Parse_Nested_Containers 34.09 us 28.92 us -15.2%
JSON_Fast_Hash_Helm_Chart_Lock 71.76 ns 70.67 ns -1.5%
JSON_Equality_Helm_Chart_Lock 220.48 ns 207.90 ns -5.7%
JSON_String_Equal_10 8.27 ns 8.01 ns -3.1%
JSON_String_Equal_100 8.22 ns 8.25 ns +0.4%
JSON_String_Equal_Small_By_Perfect_Hash_10 0.38 ns 0.38 ns +0.5%
JSON_String_Equal_Small_By_Runtime_Perfect_Hash_10 4.06 ns 4.51 ns +11.1%
JSON_String_Fast_Hash_10 2.64 ns 2.90 ns +10.2%
JSON_String_Fast_Hash_100 2.37 ns 2.87 ns +21.2%
JSON_String_Key_Hash_10 2.09 ns 2.18 ns +4.2%
JSON_String_Key_Hash_100 2.60 ns 2.89 ns +11.1%
JSON_Object_Defines_Miss_Same_Length 3.06 ns 3.65 ns +19.3%
JSON_Object_Defines_Miss_Too_Small 3.12 ns 3.54 ns +13.3%
JSON_Object_Defines_Miss_Too_Large 3.32 ns 3.54 ns +6.8%
JSON_From_String_Copy 13.72 ns 13.81 ns +0.6%
JSON_From_String_Temporary 7.82 ns 8.92 ns +14.1%
JSON_Number_To_Double 43.16 ns 43.31 ns +0.3%
JSON_Object_At_Last_Key_8 5.28 ns 5.62 ns +6.6%
JSON_Object_At_Last_Key_32 14.59 ns 15.96 ns +9.4%
JSON_Object_At_Last_Key_128 71.48 ns 64.14 ns -10.3%
JSON_Object_At_Last_Key_512 275.48 ns 242.16 ns -12.1%
JSON_Divisible_By_Decimal 222.58 ns 211.72 ns -4.9%
Pointer_Object_Traverse 24.64 ns 26.69 ns +8.3%
Pointer_Object_Try_Traverse 47.45 ns 37.92 ns -20.1%
Pointer_Push_Back_Pointer_To_Weak_Pointer 187.03 ns 173.86 ns -7.0%
Pointer_Walker_Schema_ISO_Language 1.92 ms 1.84 ms -4.4%
Pointer_Untracked_Deeply_Nested 1.04 ms 1.12 ms +8.1%
Pointer_Tracked_Deeply_Nested 1.34 ms 1.41 ms +5.4%
Pointer_Position_Tracker_Get_Deeply_Nested 448.94 ns 441.93 ns -1.6%
Schema_Tracker_ISO_Language 4.09 ms 3.93 ms -3.8%
Schema_Tracker_ISO_Language_To_JSON 14.52 ms 13.62 ms -6.2%
Schema_Frame_WoT_References 2.89 ms 3.27 ms +13.0%
Schema_Frame_OMC_References 14.51 ms 14.20 ms -2.1%
Schema_Frame_OMC_Pointers 25.85 ms 28.67 ms +10.9%
Schema_Frame_OMC_Locations 11.86 ms 12.35 ms +4.1%
Schema_Frame_ISO_Language_Locations 31.16 ms 33.85 ms +8.6%
Schema_Frame_ISO_Language_Root 157.63 ns 142.84 ns -9.4%
Schema_Frame_KrakenD_References 19.70 ms 19.22 ms -2.4%
Schema_Frame_KrakenD_Reachable 239.94 ms 241.24 ms +0.5%
Schema_Frame_ISO_Language_Locations_To_JSON 28.03 ms 27.35 ms -2.4%
Schema_Frame_Many_Resources_References 148.27 ms 149.86 ms +1.1%
Schema_Frame_Deeply_Nested_References 15.06 ms 16.58 ms +10.1%
Schema_Format_ISO_Language 35.47 ms 32.67 ms -7.9%
Schema_Bundle_Meta_2020_12 678.28 us 716.55 us +5.6%
Schema_Bundle_Many_Remotes_With_Fragments 7.54 ms 7.94 ms +5.2%
JSONPath_Descendant_Filter_Nested 1.57 us 1.40 us -10.6%
URITemplateRouter_Create 22.39 us 21.90 us -2.2%
URITemplateRouter_Match 216.92 ns 200.33 ns -7.6%
URITemplateRouterView_Restore 13.14 us 13.25 us +0.8%
URITemplateRouterView_Match 173.89 ns 171.04 ns -1.6%
URITemplateRouterView_Arguments 660.26 ns 645.90 ns -2.2%
URITemplateRouter_Match_BasePath 254.27 ns 254.57 ns +0.1%
URITemplateRouterView_Match_BasePath 186.98 ns 209.27 ns +11.9%
JSONL_Parse_Large 8.95 ms 8.47 ms -5.4%
JSONL_Parse_Large_GZIP 8.10 ms 7.76 ms -4.2%
JSONLD_Catalog_Annotation_List_Populate 667.78 us 647.85 us -3.0%
JSONLD_Catalog_Materialize 3.17 ms 3.24 ms +2.2%
HTML_Build_Table_100000 32.97 ms 34.24 ms +3.8%
HTML_Render_Table_100000 2.35 ms 1.97 ms -16.2%
Markdown_To_HTML_Realistic_Document 4.11 ms 3.93 ms -4.3%
Markdown_To_HTML_Pathological 13.48 ms 12.06 ms -10.5%
Markdown_To_HTML_Short_Descriptions 453.40 ns 449.84 ns -0.8%
GZIP_Compress_ISO_Language_Set_3_Locations 35.59 ms 36.46 ms +2.4%
GZIP_Decompress_ISO_Language_Set_3_Locations 3.73 ms 3.84 ms +3.0%
GZIP_Decompress_Default_Level_ISO_Language_Set_3_Locations 5.18 ms 5.40 ms +4.2%
GZIP_Decompress_Stream_Default_Level_ISO_Language_Set_3_Locations 6.69 ms 6.84 ms +2.3%
GZIP_Compress_ISO_Language_Set_3_Schema 2.01 ms 2.21 ms +9.9%
GZIP_Decompress_ISO_Language_Set_3_Schema 314.50 us 359.83 us +14.4%
JOSE_VerifySignature_RS256 26.63 us 26.69 us +0.2%
JOSE_VerifySignature_ES512 1.22 ms 1.20 ms -1.1%
Crypto_CRC32_Large_JSONL 27.45 us 25.98 us -5.3%

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