Skip to content

Fix compiler error with recursive types on recursive templates by using dyn instead of plain generic bounds#726

Merged
GuillaumeGomez merged 2 commits intoaskama-rs:mainfrom
GuillaumeGomez:recursive-template
Apr 11, 2026
Merged

Fix compiler error with recursive types on recursive templates by using dyn instead of plain generic bounds#726
GuillaumeGomez merged 2 commits intoaskama-rs:mainfrom
GuillaumeGomez:recursive-template

Conversation

@GuillaumeGomez
Copy link
Copy Markdown
Collaborator

Fixes #393.

@GuillaumeGomez GuillaumeGomez merged commit 5d38d64 into askama-rs:main Apr 11, 2026
51 checks passed
@GuillaumeGomez GuillaumeGomez deleted the recursive-template branch April 11, 2026 13:42
@Kijewski
Copy link
Copy Markdown
Member

Did you benchmark the change? I fear that dynamic method calls could have an extreme impact.

@GuillaumeGomez
Copy link
Copy Markdown
Collaborator Author

I didn't. Are you worried about runtime or compile-time?

@GuillaumeGomez
Copy link
Copy Markdown
Collaborator Author

So I ran cargo bench with this PR commits first, then again without these commits, here's the output without these commits:

$ cargo bench
   Compiling askama_derive v0.15.6 (/home/imperio/rust/askama/askama_derive)
   Compiling askama_testing v0.0.0 (/home/imperio/rust/askama/testing)
   Compiling askama_macros v0.15.6 (/home/imperio/rust/askama/askama_macros)
   Compiling askama v0.15.6 (/home/imperio/rust/askama/askama)
   Compiling clippy_test v0.0.0 (/home/imperio/rust/askama/testing/tests/clippy_lints)
    Finished `bench` profile [optimized] target(s) in 10.02s
     Running unittests src/lib.rs (target/release/deps/askama-8b9800ead2c7494d)

running 35 tests
test filters::alloc::tests::test_capitalize ... ignored
test filters::alloc::tests::test_lower ... ignored
test filters::alloc::tests::test_title ... ignored
test filters::alloc::tests::test_trim ... ignored
test filters::alloc::tests::test_upper ... ignored
test filters::core::tests::test_center ... ignored
test filters::core::tests::test_join ... ignored
test filters::core::tests::test_linebreaks ... ignored
test filters::core::tests::test_linebreaksbr ... ignored
test filters::core::tests::test_paragraphbreaks ... ignored
test filters::core::tests::test_wordcount ... ignored
test filters::core::tests::test_wordcount_on_partial_input ... ignored
test filters::default::test_default_filterable ... ignored
test filters::escape::test_escape ... ignored
test filters::escape::test_html_safe_marker ... ignored
test filters::humansize::test_filesizeformat_edgecases ... ignored
test filters::humansize::test_filesizeformat_prec2 ... ignored
test filters::humansize::test_filesizeformat_prec3 ... ignored
test filters::indent::tests::test_indent ... ignored
test filters::indent::tests::test_indent_chunked ... ignored
test filters::indent::tests::test_indent_complicated ... ignored
test filters::indent::tests::test_indent_str ... ignored
test filters::json::tests::test_pretty ... ignored
test filters::json::tests::test_ugly ... ignored
test filters::std::test::test_unique ... ignored
test filters::urlencode::test_urlencoding ... ignored
test html::test_simple_html_string_escaping ... ignored
test tests::dyn_template ... ignored
test values::tests::values_deque ... ignored
test values::tests::values_list ... ignored
test values::tests::values_on_btreemap ... ignored
test values::tests::values_on_hashmap ... ignored
test values::tests::values_on_slice ... ignored
test values::tests::values_on_tuple ... ignored
test values::tests::values_vec ... ignored

test result: ok. 0 passed; 0 failed; 35 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running benches/escape.rs (target/release/deps/escape-ef1e17fcd7853657)
Gnuplot not found, using plotters backend
Escaping                time:   [3.9633 µs 3.9693 µs 3.9766 µs]
                        change: [−1.1444% −0.8467% −0.6025%] (p = 0.00 < 0.05)
                        Change within noise threshold.
Found 9 outliers among 100 measurements (9.00%)
  5 (5.00%) high mild
  4 (4.00%) high severe

     Running benches/to-json.rs (target/release/deps/to_json-614846bccf48ab43)
Gnuplot not found, using plotters backend
escape JSON             time:   [7.8086 µs 7.8135 µs 7.8190 µs]
                        change: [+3.9057% +4.0812% +4.2720%] (p = 0.00 < 0.05)
                        Performance has regressed.
Found 8 outliers among 100 measurements (8.00%)
  6 (6.00%) high mild
  2 (2.00%) high severe

escape JSON (pretty)    time:   [7.8522 µs 7.8681 µs 7.8950 µs]
                        change: [−6.9580% −6.6290% −6.3133%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 5 outliers among 100 measurements (5.00%)
  1 (1.00%) high mild
  4 (4.00%) high severe

escape JSON for HTML    time:   [12.845 µs 12.857 µs 12.874 µs]
                        change: [+4.9147% +5.2359% +5.5730%] (p = 0.00 < 0.05)
                        Performance has regressed.
Found 9 outliers among 100 measurements (9.00%)
  4 (4.00%) high mild
  5 (5.00%) high severe

Benchmarking escape JSON for HTML (pretty): Collecting 100 samples in estimated 5.0497 s (404k iterationescape JSON for HTML (pretty)
                        time:   [12.461 µs 12.469 µs 12.480 µs]
                        change: [−1.9126% −0.8235% +1.0241%] (p = 0.34 > 0.05)
                        No change in performance detected.
Found 9 outliers among 100 measurements (9.00%)
  4 (4.00%) high mild
  5 (5.00%) high severe

     Running unittests src/lib.rs (target/release/deps/askama_derive-a51cc54373daf6c8)

running 44 tests
test config::tests::add_syntax ... ignored
test config::tests::add_syntax_two ... ignored
test config::tests::duplicated_syntax_name_on_list - should panic ... ignored
test config::tests::escape_modes ... ignored
test config::tests::find_absolute ... ignored
test config::tests::find_relative ... ignored
test config::tests::find_relative_nonexistent - should panic ... ignored
test config::tests::find_relative_sub ... ignored
test config::tests::illegal_delimiters ... ignored
test config::tests::is_not_exist_default_syntax - should panic ... ignored
test config::tests::longer_delimiters ... ignored
test config::tests::test_config_dirs ... ignored
test config::tests::test_default_config ... ignored
test config::tests::test_whitespace_in_template ... ignored
test config::tests::test_whitespace_parsing ... ignored
test config::tests::use_default_at_syntax_name - should panic ... ignored
test generator::helpers::paths::test_diff_paths ... ignored
test html::test_simple_html_string_escaping ... ignored
test input::get_source ... ignored
test tests::check_bool_conditions ... ignored
test tests::check_escaping_at_compile_time ... ignored
test tests::check_expr_ungrouping ... ignored
test tests::check_if_let ... ignored
test tests::check_if_let_chain ... ignored
test tests::check_includes_only_once ... ignored
test tests::check_is_defined ... ignored
test tests::check_size_hint ... ignored
test tests::extends_with_whitespace_control ... ignored
test tests::fuzzed_0b85 ... ignored
test tests::fuzzed_comparator_chain ... ignored
test tests::regression_tests_span_change ... ignored
test tests::test_bare_cr_doc_comment ... ignored
test tests::test_code_in_comment ... ignored
test tests::test_compound_assignment ... ignored
test tests::test_concat ... ignored
test tests::test_filter_with_path ... ignored
test tests::test_generated_with_error ... ignored
test tests::test_macro_call_raw_prefix_without_data ... ignored
test tests::test_macro_call_reserved_prefix ... ignored
test tests::test_macro_call_valid_raw_cstring ... ignored
test tests::test_macro_calls_need_proper_tokens ... ignored
test tests::test_macro_names_that_need_escaping ... ignored
test tests::test_pluralize ... ignored
test tests::test_with_config ... ignored

test result: ok. 0 passed; 0 failed; 44 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running benches/complex-expression.rs (target/release/deps/complex_expression-3f68023ac62a523e)
Gnuplot not found, using plotters backend
range ops/x1            time:   [53.537 µs 53.673 µs 53.810 µs]
                        thrpt:  [18.584 Kelem/s 18.631 Kelem/s 18.679 Kelem/s]
                        thrpt:  [471.86 KiB/s 473.06 KiB/s 474.26 KiB/s]
                 change:
                        time:   [+37206% +37543% +37875%] (p = 0.00 < 0.05)
                        thrpt:  [−99.737% −99.734% −99.732%]
                        Performance has regressed.
Found 4 outliers among 100 measurements (4.00%)
  1 (1.00%) high mild
  3 (3.00%) high severe
range ops/x10           time:   [57.470 µs 57.589 µs 57.689 µs]
                        thrpt:  [173.34 Kelem/s 173.64 Kelem/s 174.00 Kelem/s]
                        thrpt:  [1.4052 MiB/s 1.4076 MiB/s 1.4105 MiB/s]
                 change:
                        time:   [+40692% +41486% +42109%] (p = 0.00 < 0.05)
                        thrpt:  [−99.763% −99.760% −99.755%]
                        Performance has regressed.
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high severe
range ops/x100          time:   [67.967 µs 68.275 µs 68.527 µs]
                        thrpt:  [1.4593 Melem/s 1.4647 Melem/s 1.4713 Melem/s]
                        thrpt:  [10.577 MiB/s 10.616 MiB/s 10.664 MiB/s]
                 change:
                        time:   [+43655% +44036% +44380%] (p = 0.00 < 0.05)
                        thrpt:  [−99.775% −99.773% −99.771%]
                        Performance has regressed.
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild

mult ops/x1             time:   [55.462 µs 55.586 µs 55.690 µs]
                        thrpt:  [17.956 Kelem/s 17.990 Kelem/s 18.030 Kelem/s]
                        thrpt:  [403.32 KiB/s 404.07 KiB/s 404.98 KiB/s]
                 change:
                        time:   [+38723% +39340% +40217%] (p = 0.00 < 0.05)
                        thrpt:  [−99.752% −99.746% −99.742%]
                        Performance has regressed.
Found 2 outliers among 100 measurements (2.00%)
  2 (2.00%) high severe
mult ops/x10            time:   [57.541 µs 57.922 µs 58.383 µs]
                        thrpt:  [171.28 Kelem/s 172.65 Kelem/s 173.79 Kelem/s]
                        thrpt:  [1.1271 MiB/s 1.1361 MiB/s 1.1436 MiB/s]
                 change:
                        time:   [+41156% +41586% +42065%] (p = 0.00 < 0.05)
                        thrpt:  [−99.763% −99.760% −99.758%]
                        Performance has regressed.
Found 4 outliers among 100 measurements (4.00%)
  3 (3.00%) high mild
  1 (1.00%) high severe
mult ops/x100           time:   [66.935 µs 67.197 µs 67.426 µs]
                        thrpt:  [1.4831 Melem/s 1.4882 Melem/s 1.4940 Melem/s]
                        thrpt:  [8.6278 MiB/s 8.6573 MiB/s 8.6911 MiB/s]
                 change:
                        time:   [+44223% +44585% +44943%] (p = 0.00 < 0.05)
                        thrpt:  [−99.778% −99.776% −99.774%]
                        Performance has regressed.
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high severe

mixed ops/x1            time:   [55.957 µs 56.101 µs 56.234 µs]
                        thrpt:  [17.783 Kelem/s 17.825 Kelem/s 17.871 Kelem/s]
                        thrpt:  [416.79 KiB/s 417.78 KiB/s 418.84 KiB/s]
                 change:
                        time:   [+39257% +39593% +39928%] (p = 0.00 < 0.05)
                        thrpt:  [−99.750% −99.748% −99.746%]
                        Performance has regressed.
Found 2 outliers among 100 measurements (2.00%)
  1 (1.00%) high mild
  1 (1.00%) high severe
mixed ops/x10           time:   [57.169 µs 57.377 µs 57.544 µs]
                        thrpt:  [173.78 Kelem/s 174.29 Kelem/s 174.92 Kelem/s]
                        thrpt:  [1.4253 MiB/s 1.4294 MiB/s 1.4346 MiB/s]
                 change:
                        time:   [+40952% +41332% +41705%] (p = 0.00 < 0.05)
                        thrpt:  [−99.761% −99.759% −99.756%]
                        Performance has regressed.
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
mixed ops/x100          time:   [68.079 µs 68.359 µs 68.589 µs]
                        thrpt:  [1.4580 Melem/s 1.4629 Melem/s 1.4689 Melem/s]
                        thrpt:  [10.206 MiB/s 10.240 MiB/s 10.282 MiB/s]
                 change:
                        time:   [+44126% +44483% +44809%] (p = 0.00 < 0.05)
                        thrpt:  [−99.777% −99.776% −99.774%]
                        Performance has regressed.

     Running benches/derive-template.rs (target/release/deps/derive_template-3d1cd954d98c3e8e)
Gnuplot not found, using plotters backend
synthetic/hello_world   time:   [76.713 µs 76.856 µs 76.986 µs]
                        thrpt:  [646.93 KiB/s 648.03 KiB/s 649.23 KiB/s]
                 change:
                        time:   [+4.3907% +4.8412% +5.2399%] (p = 0.00 < 0.05)
                        thrpt:  [−4.9790% −4.6176% −4.2060%]
                        Performance has regressed.
Found 4 outliers among 100 measurements (4.00%)
  3 (3.00%) high mild
  1 (1.00%) high severe

librustdoc/item_info.html
                        time:   [101.37 µs 101.52 µs 101.70 µs]
                        thrpt:  [1.5473 MiB/s 1.5500 MiB/s 1.5523 MiB/s]
                 change:
                        time:   [+4.3633% +4.6430% +4.9133%] (p = 0.00 < 0.05)
                        thrpt:  [−4.6832% −4.4370% −4.1809%]
                        Performance has regressed.
Found 4 outliers among 100 measurements (4.00%)
  4 (4.00%) high severe
librustdoc/item_union.html
                        time:   [279.28 µs 279.48 µs 279.75 µs]
                        thrpt:  [3.5284 MiB/s 3.5317 MiB/s 3.5343 MiB/s]
                 change:
                        time:   [+1.9027% +2.3031% +2.6239%] (p = 0.00 < 0.05)
                        thrpt:  [−2.5568% −2.2512% −1.8672%]
                        Performance has regressed.
Found 8 outliers among 100 measurements (8.00%)
  1 (1.00%) high mild
  7 (7.00%) high severe
Benchmarking librustdoc/page.html: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 6.2s, enable flat sampling, or reduce sample count to 60.
librustdoc/page.html    time:   [1.1290 ms 1.1307 ms 1.1330 ms]
                        thrpt:  [5.4655 MiB/s 5.4762 MiB/s 5.4847 MiB/s]
                 change:
                        time:   [+1.6340% +1.8025% +1.9800%] (p = 0.00 < 0.05)
                        thrpt:  [−1.9415% −1.7706% −1.6077%]
                        Performance has regressed.
Found 9 outliers among 100 measurements (9.00%)
  3 (3.00%) high mild
  6 (6.00%) high severe
librustdoc/print_item.html
                        time:   [228.35 µs 228.71 µs 229.15 µs]
                        thrpt:  [4.1201 MiB/s 4.1281 MiB/s 4.1345 MiB/s]
                 change:
                        time:   [+2.2123% +2.3851% +2.5755%] (p = 0.00 < 0.05)
                        thrpt:  [−2.5109% −2.3296% −2.1644%]
                        Performance has regressed.
Found 14 outliers among 100 measurements (14.00%)
  7 (7.00%) high mild
  7 (7.00%) high severe
Benchmarking librustdoc/short_item_info.html: Collecting 100 samples in estimated 5.1635 s (20k iteratiolibrustdoc/short_item_info.html
                        time:   [231.98 µs 232.20 µs 232.44 µs]
                        thrpt:  [3.8977 MiB/s 3.9018 MiB/s 3.9054 MiB/s]
                 change:
                        time:   [+4.4379% +4.6456% +4.8760%] (p = 0.00 < 0.05)
                        thrpt:  [−4.6493% −4.4394% −4.2493%]
                        Performance has regressed.
Found 6 outliers among 100 measurements (6.00%)
  3 (3.00%) high mild
  3 (3.00%) high severe
librustdoc/sidebar.html time:   [307.10 µs 307.66 µs 308.37 µs]
                        thrpt:  [4.0019 MiB/s 4.0111 MiB/s 4.0185 MiB/s]
                 change:
                        time:   [+2.6322% +3.9088% +5.4986%] (p = 0.00 < 0.05)
                        thrpt:  [−5.2120% −3.7618% −2.5647%]
                        Performance has regressed.
Found 12 outliers among 100 measurements (12.00%)
  8 (8.00%) high mild
  4 (4.00%) high severe
librustdoc/source.html  time:   [179.88 µs 180.14 µs 180.44 µs]
                        thrpt:  [4.0854 MiB/s 4.0923 MiB/s 4.0983 MiB/s]
                 change:
                        time:   [+2.3701% +2.5748% +2.7409%] (p = 0.00 < 0.05)
                        thrpt:  [−2.6678% −2.5102% −2.3152%]
                        Performance has regressed.
Found 3 outliers among 100 measurements (3.00%)
  3 (3.00%) high mild
librustdoc/type_layout.html
                        time:   [235.26 µs 235.88 µs 236.60 µs]
                        thrpt:  [11.379 MiB/s 11.413 MiB/s 11.444 MiB/s]
                 change:
                        time:   [+0.7484% +1.3831% +1.9803%] (p = 0.00 < 0.05)
                        thrpt:  [−1.9418% −1.3642% −0.7428%]
                        Change within noise threshold.
Found 11 outliers among 100 measurements (11.00%)
  3 (3.00%) high mild
  8 (8.00%) high severe
Benchmarking librustdoc/type_layout_size.html: Collecting 100 samples in estimated 5.5072 s (45k iteratilibrustdoc/type_layout_size.html
                        time:   [108.70 µs 108.81 µs 108.94 µs]
                        thrpt:  [2.4861 MiB/s 2.4891 MiB/s 2.4917 MiB/s]
                 change:
                        time:   [−2.1959% −0.6428% +0.7434%] (p = 0.42 > 0.05)
                        thrpt:  [−0.7379% +0.6470% +2.2452%]
                        No change in performance detected.
Found 2 outliers among 100 measurements (2.00%)
  1 (1.00%) high mild
  1 (1.00%) high severe

     Running unittests src/lib.rs (target/release/deps/askama_escape-17be71037f6ee21c)

running 1 test
test tests::test_escape ... ignored

test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running benches/all.rs (target/release/deps/all-ff41036871fb61b2)
Gnuplot not found, using plotters backend
escape_html             time:   [2.8245 µs 2.8272 µs 2.8302 µs]
                        change: [−0.5286% −0.3692% −0.2049%] (p = 0.00 < 0.05)
                        Change within noise threshold.
Found 6 outliers among 100 measurements (6.00%)
  2 (2.00%) high mild
  4 (4.00%) high severe

all/escape_html         time:   [2.8227 µs 2.8295 µs 2.8415 µs]
                        thrpt:  [1.2707 GiB/s 1.2761 GiB/s 1.2792 GiB/s]
                 change:
                        time:   [−2.0887% −1.6870% −1.2479%] (p = 0.00 < 0.05)
                        thrpt:  [+1.2637% +1.7160% +2.1333%]
                        Performance has improved.
Found 8 outliers among 100 measurements (8.00%)
  4 (4.00%) high mild
  4 (4.00%) high severe

     Running unittests src/lib.rs (target/release/deps/askama_macros-67441f3848b5a14d)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/release/deps/askama_parser-3432b9e27d4f1d69)

running 55 tests
test test::test_char_lit ... ignored
test test::test_check_base_digits ... ignored
test test::test_is_rust_keyword ... ignored
test test::test_num_lit ... ignored
test test::test_str_lit ... ignored
test test::test_strip_common ... ignored
test tests::change_delimiters_parse_filter ... ignored
test tests::comparison_operators_cannot_be_chained ... ignored
test tests::extends_with_whitespace_control ... ignored
test tests::fuzzed_comment_depth ... ignored
test tests::fuzzed_deeply_tested_if_let ... ignored
test tests::fuzzed_excessive_filter_block ... ignored
test tests::fuzzed_excessive_syntax_lengths ... ignored
test tests::fuzzed_filter_recursion ... ignored
test tests::fuzzed_macro_no_end ... ignored
test tests::fuzzed_span_is_not_substring_of_source ... ignored
test tests::fuzzed_target_recursion ... ignored
test tests::fuzzed_unary_recursion ... ignored
test tests::fuzzed_unicode_slice ... ignored
test tests::let_set ... ignored
test tests::macro_calls_can_have_raw_prefixes ... ignored
test tests::macro_comments_in_macro_calls ... ignored
test tests::regression_tests_span_change ... ignored
test tests::test_associativity ... ignored
test tests::test_byte_literal_multi_byte ... ignored
test tests::test_excessive_call_depth ... ignored
test tests::test_expr_end_catastrophic_backtracking ... ignored
test tests::test_filter_with_path ... ignored
test tests::test_generics_parsing ... ignored
test tests::test_invalid_block - should panic ... ignored
test tests::test_isolated_cr_in_raw_string ... ignored
test tests::test_macro_call_illegal_raw_identifier ... ignored
test tests::test_macro_call_nested_comments ... ignored
test tests::test_missing_space_after_kw ... ignored
test tests::test_odd_calls ... ignored
test tests::test_parse_array ... ignored
test tests::test_parse_comments ... ignored
test tests::test_parse_const ... ignored
test tests::test_parse_filter ... ignored
test tests::test_parse_numbers ... ignored
test tests::test_parse_path ... ignored
test tests::test_parse_path_call ... ignored
test tests::test_parse_root_path ... ignored
test tests::test_parse_tuple ... ignored
test tests::test_parse_var ... ignored
test tests::test_parse_var_call ... ignored
test tests::test_precedence ... ignored
test tests::test_raw ... ignored
test tests::test_rust_macro ... ignored
test tests::test_try_reserved_raw_identifier ... ignored
test tests::test_unclosed_prefixed_string ... ignored
test tests::test_ws_splitter ... ignored
test tests::there_is_no_digit_two_in_a_binary_integer ... ignored
test tests::underscore_is_an_identifier ... ignored
test tests::unicode_delimiters_in_syntax ... ignored

test result: ok. 0 passed; 0 failed; 55 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running benches/from_str.rs (target/release/deps/from_str-57304279c211ec4a)
Gnuplot not found, using plotters backend
librustdoc/all          time:   [535.38 µs 535.84 µs 536.41 µs]
                        thrpt:  [26.325 MiB/s 26.353 MiB/s 26.376 MiB/s]
                 change:
                        time:   [−0.5793% −0.2984% −0.0722%] (p = 0.01 < 0.05)
                        thrpt:  [+0.0722% +0.2993% +0.5827%]
                        Change within noise threshold.
Found 9 outliers among 100 measurements (9.00%)
  4 (4.00%) high mild
  5 (5.00%) high severe
librustdoc/item_info    time:   [6.9802 µs 6.9865 µs 6.9934 µs]
                        thrpt:  [22.501 MiB/s 22.523 MiB/s 22.543 MiB/s]
                 change:
                        time:   [+0.1659% +0.3504% +0.5372%] (p = 0.00 < 0.05)
                        thrpt:  [−0.5343% −0.3492% −0.1656%]
                        Change within noise threshold.
Found 3 outliers among 100 measurements (3.00%)
  3 (3.00%) high mild
librustdoc/item_union   time:   [47.586 µs 47.780 µs 48.111 µs]
                        thrpt:  [20.516 MiB/s 20.658 MiB/s 20.743 MiB/s]
                 change:
                        time:   [+0.4259% +0.7254% +1.0823%] (p = 0.00 < 0.05)
                        thrpt:  [−1.0708% −0.7202% −0.4241%]
                        Change within noise threshold.
Found 13 outliers among 100 measurements (13.00%)
  3 (3.00%) high mild
  10 (10.00%) high severe
librustdoc/page         time:   [233.59 µs 234.20 µs 234.99 µs]
                        thrpt:  [26.351 MiB/s 26.440 MiB/s 26.509 MiB/s]
                 change:
                        time:   [−1.3290% −0.6065% +0.1951%] (p = 0.11 > 0.05)
                        thrpt:  [−0.1947% +0.6102% +1.3469%]
                        No change in performance detected.
Found 14 outliers among 100 measurements (14.00%)
  4 (4.00%) high mild
  10 (10.00%) high severe
librustdoc/print_item   time:   [24.369 µs 24.495 µs 24.691 µs]
                        thrpt:  [38.238 MiB/s 38.544 MiB/s 38.744 MiB/s]
                 change:
                        time:   [−1.1346% −0.4047% +0.3654%] (p = 0.31 > 0.05)
                        thrpt:  [−0.3641% +0.4063% +1.1476%]
                        No change in performance detected.
Found 15 outliers among 100 measurements (15.00%)
  5 (5.00%) high mild
  10 (10.00%) high severe
librustdoc/short_item_info
                        time:   [22.882 µs 22.899 µs 22.917 µs]
                        thrpt:  [39.533 MiB/s 39.565 MiB/s 39.594 MiB/s]
                 change:
                        time:   [−0.2338% +0.0946% +0.3448%] (p = 0.58 > 0.05)
                        thrpt:  [−0.3436% −0.0945% +0.2343%]
                        No change in performance detected.
Found 7 outliers among 100 measurements (7.00%)
  6 (6.00%) high mild
  1 (1.00%) high severe
librustdoc/sidebar      time:   [48.366 µs 48.408 µs 48.458 µs]
                        thrpt:  [25.466 MiB/s 25.493 MiB/s 25.515 MiB/s]
                 change:
                        time:   [−1.0961% −0.4972% −0.0836%] (p = 0.04 < 0.05)
                        thrpt:  [+0.0837% +0.4996% +1.1082%]
                        Change within noise threshold.
Found 9 outliers among 100 measurements (9.00%)
  2 (2.00%) low mild
  5 (5.00%) high mild
  2 (2.00%) high severe
librustdoc/source       time:   [17.443 µs 17.590 µs 17.883 µs]
                        thrpt:  [41.224 MiB/s 41.911 MiB/s 42.262 MiB/s]
                 change:
                        time:   [−0.7628% −0.1661% +0.5989%] (p = 0.69 > 0.05)
                        thrpt:  [−0.5954% +0.1664% +0.7686%]
                        No change in performance detected.
Found 13 outliers among 100 measurements (13.00%)
  3 (3.00%) high mild
  10 (10.00%) high severe
librustdoc/type_layout_size
                        time:   [9.5877 µs 9.6074 µs 9.6307 µs]
                        thrpt:  [28.123 MiB/s 28.191 MiB/s 28.249 MiB/s]
                 change:
                        time:   [−1.1551% −0.8192% −0.5381%] (p = 0.00 < 0.05)
                        thrpt:  [+0.5410% +0.8260% +1.1686%]
                        Change within noise threshold.
Found 17 outliers among 100 measurements (17.00%)
  5 (5.00%) high mild
  12 (12.00%) high severe
librustdoc/type_layout  time:   [42.143 µs 42.263 µs 42.495 µs]
                        thrpt:  [63.354 MiB/s 63.701 MiB/s 63.883 MiB/s]
                 change:
                        time:   [+1.3594% +1.8398% +2.6457%] (p = 0.00 < 0.05)
                        thrpt:  [−2.5775% −1.8066% −1.3411%]
                        Performance has regressed.
Found 15 outliers among 100 measurements (15.00%)
  2 (2.00%) low mild
  3 (3.00%) high mild
  10 (10.00%) high severe

     Running benches/parse-complex-expression.rs (target/release/deps/parse_complex_expression-1de733996a3d7e7b)
Gnuplot not found, using plotters backend
range ops/x1            time:   [139.21 ns 139.28 ns 139.38 ns]
                        thrpt:  [7.1748 Melem/s 7.1795 Melem/s 7.1834 Melem/s]
                        thrpt:  [177.90 MiB/s 178.02 MiB/s 178.12 MiB/s]
                 change:
                        time:   [−99.741% −99.739% −99.738%] (p = 0.00 < 0.05)
                        thrpt:  [+38134% +38275% +38444%]
                        Performance has improved.
Found 5 outliers among 100 measurements (5.00%)
  3 (3.00%) high mild
  2 (2.00%) high severe
range ops/x10           time:   [133.49 ns 133.64 ns 133.91 ns]
                        thrpt:  [74.677 Melem/s 74.830 Melem/s 74.912 Melem/s]
                        thrpt:  [605.35 MiB/s 606.59 MiB/s 607.25 MiB/s]
                 change:
                        time:   [−99.768% −99.766% −99.765%] (p = 0.00 < 0.05)
                        thrpt:  [+42477% +42709% +42920%]
                        Performance has improved.
Found 7 outliers among 100 measurements (7.00%)
  3 (3.00%) high mild
  4 (4.00%) high severe
range ops/x100          time:   [149.05 ns 149.28 ns 149.72 ns]
                        thrpt:  [667.91 Melem/s 669.89 Melem/s 670.93 Melem/s]
                        thrpt:  [4.7275 GiB/s 4.7415 GiB/s 4.7488 GiB/s]
                 change:
                        time:   [−99.780% −99.778% −99.777%] (p = 0.00 < 0.05)
                        thrpt:  [+44805% +45038% +45266%]
                        Performance has improved.
Found 4 outliers among 100 measurements (4.00%)
  1 (1.00%) high mild
  3 (3.00%) high severe

mult ops/x1             time:   [137.76 ns 138.24 ns 139.20 ns]
                        thrpt:  [7.1839 Melem/s 7.2338 Melem/s 7.2590 Melem/s]
                        thrpt:  [157.58 MiB/s 158.67 MiB/s 159.22 MiB/s]
                 change:
                        time:   [−99.757% −99.752% −99.749%] (p = 0.00 < 0.05)
                        thrpt:  [+39721% +40249% +41027%]
                        Performance has improved.
Found 8 outliers among 100 measurements (8.00%)
  4 (4.00%) high mild
  4 (4.00%) high severe
mult ops/x10            time:   [133.66 ns 133.83 ns 134.04 ns]
                        thrpt:  [74.605 Melem/s 74.721 Melem/s 74.815 Melem/s]
                        thrpt:  [490.93 MiB/s 491.69 MiB/s 492.31 MiB/s]
                 change:
                        time:   [−99.768% −99.766% −99.764%] (p = 0.00 < 0.05)
                        thrpt:  [+42334% +42600% +42915%]
                        Performance has improved.
Found 13 outliers among 100 measurements (13.00%)
  3 (3.00%) high mild
  10 (10.00%) high severe
mult ops/x100           time:   [147.12 ns 147.22 ns 147.36 ns]
                        thrpt:  [678.63 Melem/s 679.27 Melem/s 679.73 Melem/s]
                        thrpt:  [3.8553 GiB/s 3.8590 GiB/s 3.8616 GiB/s]
                 change:
                        time:   [−99.780% −99.779% −99.778%] (p = 0.00 < 0.05)
                        thrpt:  [+45016% +45176% +45351%]
                        Performance has improved.
Found 8 outliers among 100 measurements (8.00%)
  3 (3.00%) high mild
  5 (5.00%) high severe

mixed ops/x1            time:   [138.04 ns 138.18 ns 138.32 ns]
                        thrpt:  [7.2297 Melem/s 7.2368 Melem/s 7.2442 Melem/s]
                        thrpt:  [165.47 MiB/s 165.64 MiB/s 165.81 MiB/s]
                 change:
                        time:   [−99.753% −99.752% −99.752%] (p = 0.00 < 0.05)
                        thrpt:  [+40151% +40284% +40431%]
                        Performance has improved.
Found 3 outliers among 100 measurements (3.00%)
  2 (2.00%) high mild
  1 (1.00%) high severe
mixed ops/x10           time:   [133.62 ns 133.72 ns 133.86 ns]
                        thrpt:  [74.706 Melem/s 74.782 Melem/s 74.841 Melem/s]
                        thrpt:  [612.71 MiB/s 613.33 MiB/s 613.82 MiB/s]
                 change:
                        time:   [−99.765% −99.764% −99.763%] (p = 0.00 < 0.05)
                        thrpt:  [+42094% +42295% +42507%]
                        Performance has improved.
Found 8 outliers among 100 measurements (8.00%)
  3 (3.00%) high mild
  5 (5.00%) high severe
mixed ops/x100          time:   [149.19 ns 149.25 ns 149.32 ns]
                        thrpt:  [669.70 Melem/s 670.03 Melem/s 670.28 Melem/s]
                        thrpt:  [4.5780 GiB/s 4.5802 GiB/s 4.5820 GiB/s]
                 change:
                        time:   [−99.780% −99.779% −99.778%] (p = 0.00 < 0.05)
                        thrpt:  [+45043% +45179% +45323%]
                        Performance has improved.
Found 5 outliers among 100 measurements (5.00%)
  3 (3.00%) high mild
  2 (2.00%) high severe

     Running benches/all.rs (target/release/deps/all-33d66b703eb8ae3d)
Gnuplot not found, using plotters backend
Big table               time:   [97.103 µs 97.140 µs 97.183 µs]
                        change: [−46.236% −45.700% −45.401%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 12 outliers among 100 measurements (12.00%)
  4 (4.00%) low mild
  2 (2.00%) high mild
  6 (6.00%) high severe

Big table (fmt)         time:   [193.02 µs 193.31 µs 193.64 µs]
                        change: [−0.8056% −0.5790% −0.3152%] (p = 0.00 < 0.05)
                        Change within noise threshold.
Found 10 outliers among 100 measurements (10.00%)
  2 (2.00%) high mild
  8 (8.00%) high severe

Big table (io)          time:   [100.92 µs 100.97 µs 101.02 µs]
                        change: [−57.927% −57.869% −57.815%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 7 outliers among 100 measurements (7.00%)
  1 (1.00%) high mild
  6 (6.00%) high severe

Teams                   time:   [191.90 ns 192.59 ns 193.26 ns]
                        change: [−32.086% −31.888% −31.698%] (p = 0.00 < 0.05)
                        Performance has improved.

Teams (fmt)             time:   [439.34 ns 439.61 ns 439.91 ns]
                        change: [−0.1934% +0.3055% +0.7195%] (p = 0.20 > 0.05)
                        No change in performance detected.
Found 15 outliers among 100 measurements (15.00%)
  2 (2.00%) low mild
  3 (3.00%) high mild
  10 (10.00%) high severe

Teams (io)              time:   [308.25 ns 308.41 ns 308.60 ns]
                        change: [−32.762% −32.384% −32.166%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 2 outliers among 100 measurements (2.00%)
  2 (2.00%) high severe

     Running unittests lib.rs (target/release/deps/clippy_test-16e9b5e55c63a16c)

running 1 test
test elidable_lifetime_names::test_output ... ignored

test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s

@GuillaumeGomez
Copy link
Copy Markdown
Collaborator Author

Regressions and improvements.

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.

Recursive templates fail to render when the {{ child }} is escaped

2 participants