Skip to content

add missing #include <new>#733

Merged
AlexInLog merged 4 commits into
AlexInLog:v2from
iKoznov:v2
Feb 15, 2026
Merged

add missing #include <new>#733
AlexInLog merged 4 commits into
AlexInLog:v2from
iKoznov:v2

Conversation

@iKoznov

@iKoznov iKoznov commented Jan 23, 2026

Copy link
Copy Markdown
Contributor

Fix compilation error with clang 21 and c++23:

error: no member named 'launder' in namespace 'std'
143 | return std::launder(reinterpret_cast<const rpp::disposable_wrapper*>(&m_data[i * sizeof(rpp::disposable_wrapper)]));

Summary by CodeRabbit

  • Chores
    • Minor internal improvements and maintenance.

✏️ Tip: You can customize this high-level summary in your review settings.

Fix compilation error with clang 21 and c++23:

error: no member named 'launder' in namespace 'std'
  143 |             return std::launder(reinterpret_cast<const rpp::disposable_wrapper*>(&m_data[i * sizeof(rpp::disposable_wrapper)]));
@iKoznov iKoznov linked an issue Jan 23, 2026 that may be closed by this pull request
@coderabbitai

coderabbitai Bot commented Jan 23, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

A single standard library header (<new>) is added to the container header file in the disposables module. No functional changes are introduced; this addition appears to support memory allocation operations.

Changes

Cohort / File(s) Summary
Header Addition
src/rpp/rpp/disposables/details/container.hpp
Added #include <new> standard library header for memory allocation support

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~2 minutes

Poem

🐰 A tiny header joins the fold,
New memory magic to behold,
One line added, pure and clean,
The smallest change you've ever seen!

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'add missing #include ' directly and clearly summarizes the main change in the pull request: adding a missing standard header include.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions

Copy link
Copy Markdown
Contributor

BENCHMARK RESULTS (AUTOGENERATED)

ci-ubuntu-gcc

General

name rxcpp rpp prev rpp ratio rpp no optimization
Subscribe empty callbacks to empty observable 303.23 ns 1.89 ns 1.88 ns 1.00 1.56 ns
Subscribe empty callbacks to empty observable via pipe operator 305.03 ns 1.86 ns 1.86 ns 1.00 1.55 ns

Sources

name rxcpp rpp prev rpp ratio rpp no optimization
from array of 1 - create + subscribe + immediate 694.65 ns 0.31 ns 0.31 ns 1.00 0.31 ns
from array of 1 - create + subscribe + current_thread 1041.89 ns 3.73 ns 3.73 ns 1.00 3.73 ns
concat_as_source of just(1 immediate) create + subscribe 2269.92 ns 116.78 ns 115.07 ns 1.01 115.03 ns
defer from array of 1 - defer + create + subscribe + immediate 737.81 ns 0.31 ns 0.31 ns 1.00 0.31 ns
interval - interval + take(3) + subscribe + immediate 2161.37 ns 59.61 ns 59.59 ns 1.00 59.65 ns
interval - interval + take(3) + subscribe + current_thread 3032.96 ns 32.66 ns 32.65 ns 1.00 34.51 ns
from array of 1 - create + as_blocking + subscribe + new_thread 37333.48 ns 34188.97 ns 34768.53 ns 0.98 31826.56 ns
from array of 1000 - create + as_blocking + subscribe + new_thread 46266.59 ns 56226.28 ns 58446.65 ns 0.96 54155.76 ns
concat_as_source of just(1 immediate) and just(1,2 immediate)create + subscribe 3530.36 ns 143.79 ns 136.74 ns 1.05 154.88 ns

Filtering Operators

name rxcpp rpp prev rpp ratio rpp no optimization
immediate_just+take(1)+subscribe 1113.70 ns 0.31 ns 0.31 ns 1.00 0.31 ns
immediate_just+filter(true)+subscribe 851.96 ns 0.31 ns 0.31 ns 1.00 0.31 ns
immediate_just(1,2)+skip(1)+subscribe 1027.38 ns 0.31 ns 0.31 ns 1.00 0.31 ns
immediate_just(1,1,2)+distinct_until_changed()+subscribe 858.58 ns 0.31 ns 0.31 ns 1.00 0.31 ns
immediate_just(1,2)+first()+subscribe 1312.13 ns 0.31 ns 0.31 ns 1.00 0.31 ns
immediate_just(1,2)+last()+subscribe 958.63 ns 0.31 ns 0.31 ns 1.00 0.31 ns
immediate_just+take_last(1)+subscribe 1182.37 ns 18.85 ns 18.64 ns 1.01 20.20 ns
immediate_just(1,2,3)+element_at(1)+subscribe 828.50 ns 0.31 ns 0.31 ns 1.00 0.31 ns

Schedulers

name rxcpp rpp prev rpp ratio rpp no optimization
immediate scheduler create worker + schedule 272.46 ns 0.47 ns 0.47 ns 1.00 0.62 ns
current_thread scheduler create worker + schedule 365.47 ns 4.35 ns 4.35 ns 1.00 4.66 ns
current_thread scheduler create worker + schedule + recursive schedule 826.87 ns 61.09 ns 61.18 ns 1.00 64.00 ns

Transforming Operators

name rxcpp rpp prev rpp ratio rpp no optimization
immediate_just+map(v*2)+subscribe 874.43 ns 0.31 ns 0.31 ns 1.00 0.31 ns
immediate_just+scan(10, std::plus)+subscribe 941.09 ns 0.31 ns 0.31 ns 1.00 0.31 ns
immediate_just+flat_map(immediate_just(v*2))+subscribe 2369.68 ns 131.22 ns 128.20 ns 1.02 165.78 ns
immediate_just+buffer(2)+subscribe 1527.36 ns 13.68 ns 13.99 ns 0.98 17.77 ns
immediate_just+window(2)+subscribe + subscsribe inner 2415.60 ns 1245.49 ns 1303.08 ns 0.96 1422.95 ns

Conditional Operators

name rxcpp rpp prev rpp ratio rpp no optimization
immediate_just+take_while(false)+subscribe 880.89 ns - - 0.00 -
immediate_just+take_while(true)+subscribe 880.29 ns 0.31 ns 0.31 ns 1.00 0.31 ns

Utility Operators

name rxcpp rpp prev rpp ratio rpp no optimization
immediate_just(1)+subscribe_on(immediate)+subscribe 2060.52 ns 0.31 ns 0.31 ns 1.00 0.31 ns

Combining Operators

name rxcpp rpp prev rpp ratio rpp no optimization
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 3438.14 ns 156.94 ns 179.98 ns 0.87 171.37 ns
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3721.59 ns 178.25 ns 157.01 ns 1.14 164.01 ns
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 134.84 ns 130.21 ns 1.04 157.99 ns
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 3669.13 ns 440.82 ns 413.29 ns 1.07 405.00 ns
immediate_just(1) + zip(immediate_just(2)) + subscribe 2162.26 ns 210.99 ns 215.61 ns 0.98 210.39 ns
immediate_just(immediate_just(1), immediate_just(1)) + concat() + subscribe 3168.07 ns 233.65 ns 227.75 ns 1.03 251.52 ns

Subjects

name rxcpp rpp prev rpp ratio rpp no optimization
publish_subject with 1 observer - on_next 34.77 ns 14.80 ns 14.78 ns 1.00 14.94 ns
subscribe 100 observers to publish_subject 203512.80 ns 17458.95 ns 17502.83 ns 1.00 19590.94 ns
100 on_next to 100 observers to publish_subject 27208.67 ns 16781.82 ns 16865.09 ns 1.00 16877.65 ns

Scenarios

name rxcpp rpp prev rpp ratio rpp no optimization
basic sample 1435.56 ns 13.06 ns 13.98 ns 0.93 23.01 ns
basic sample with immediate scheduler 1409.84 ns 5.28 ns 5.28 ns 1.00 16.16 ns
mix operators with disposables and without disposables 6410.61 ns 1477.85 ns 1441.76 ns 1.03 1874.33 ns
single disposable and looooooong indentity chain 25084.55 ns 1083.83 ns 1063.55 ns 1.02 4839.75 ns

Aggregating Operators

name rxcpp rpp prev rpp ratio rpp no optimization
immediate_just+reduce(10, std::plus)+subscribe 932.49 ns 0.31 ns 0.31 ns 1.01 0.31 ns

Error Handling Operators

name rxcpp rpp prev rpp ratio rpp no optimization
create(on_next(1), on_error())+on_error_resume_next(immediate_just(2)))+subscribe 2093.94 ns 1009.39 ns 1003.03 ns 1.01 1000.55 ns
create(on_error())+retry(1)+subscribe 583.10 ns 123.43 ns 109.58 ns 1.13 115.62 ns

ci-macos

General

name rxcpp rpp prev rpp ratio rpp no optimization
Subscribe empty callbacks to empty observable 390.23 ns 1.49 ns 0.47 ns 3.16 1.55 ns
Subscribe empty callbacks to empty observable via pipe operator 838.59 ns 0.51 ns 0.47 ns 1.10 0.51 ns

Sources

name rxcpp rpp prev rpp ratio rpp no optimization
from array of 1 - create + subscribe + immediate 825.88 ns 0.42 ns 0.33 ns 1.29 0.44 ns
from array of 1 - create + subscribe + current_thread 1081.61 ns 4.14 ns 3.75 ns 1.11 4.35 ns
concat_as_source of just(1 immediate) create + subscribe 2502.77 ns 187.01 ns 181.46 ns 1.03 199.80 ns
defer from array of 1 - defer + create + subscribe + immediate 1682.17 ns 0.35 ns 0.34 ns 1.03 0.56 ns
interval - interval + take(3) + subscribe + immediate 3439.97 ns 63.67 ns 57.28 ns 1.11 72.57 ns
interval - interval + take(3) + subscribe + current_thread 5084.52 ns 45.62 ns 32.84 ns 1.39 34.55 ns
from array of 1 - create + as_blocking + subscribe + new_thread 64752.41 ns 86541.67 ns 20530.50 ns 4.22 24248.76 ns
from array of 1000 - create + as_blocking + subscribe + new_thread 60892.08 ns 29381.25 ns 27860.05 ns 1.05 82702.43 ns
concat_as_source of just(1 immediate) and just(1,2 immediate)create + subscribe 3484.24 ns 199.74 ns 199.42 ns 1.00 216.78 ns

Filtering Operators

name rxcpp rpp prev rpp ratio rpp no optimization
immediate_just+take(1)+subscribe 1211.43 ns 0.35 ns 0.34 ns 1.01 0.34 ns
immediate_just+filter(true)+subscribe 880.21 ns 0.35 ns 0.35 ns 1.01 0.34 ns
immediate_just(1,2)+skip(1)+subscribe 1118.19 ns 0.34 ns 0.34 ns 1.00 0.34 ns
immediate_just(1,1,2)+distinct_until_changed()+subscribe 996.89 ns 0.35 ns 0.34 ns 1.02 0.36 ns
immediate_just(1,2)+first()+subscribe 1413.53 ns 0.48 ns 0.34 ns 1.39 0.34 ns
immediate_just(1,2)+last()+subscribe 1028.21 ns 1.28 ns 1.01 ns 1.27 1.02 ns
immediate_just+take_last(1)+subscribe 1776.34 ns 0.51 ns 0.34 ns 1.49 0.34 ns
immediate_just(1,2,3)+element_at(1)+subscribe 887.07 ns 0.34 ns 0.34 ns 1.00 0.34 ns

Schedulers

name rxcpp rpp prev rpp ratio rpp no optimization
immediate scheduler create worker + schedule 564.17 ns 0.64 ns 0.52 ns 1.21 0.63 ns
current_thread scheduler create worker + schedule 691.73 ns 8.70 ns 4.17 ns 2.08 4.44 ns
current_thread scheduler create worker + schedule + recursive schedule 745.80 ns 65.29 ns 66.02 ns 0.99 68.20 ns

Transforming Operators

name rxcpp rpp prev rpp ratio rpp no optimization
immediate_just+map(v*2)+subscribe 881.29 ns 4.95 ns 2.69 ns 1.84 2.72 ns
immediate_just+scan(10, std::plus)+subscribe 1033.68 ns 0.35 ns 0.34 ns 1.03 0.69 ns
immediate_just+flat_map(immediate_just(v*2))+subscribe 2168.25 ns 338.38 ns 210.93 ns 1.60 200.98 ns
immediate_just+buffer(2)+subscribe 1024.37 ns 16.60 ns 15.74 ns 1.05 16.69 ns
immediate_just+window(2)+subscribe + subscsribe inner 3312.78 ns 1310.46 ns 1081.37 ns 1.21 1095.75 ns

Conditional Operators

name rxcpp rpp prev rpp ratio rpp no optimization
immediate_just+take_while(false)+subscribe 875.69 ns - - 0.00 -
immediate_just+take_while(true)+subscribe 1902.37 ns 0.38 ns 0.36 ns 1.06 0.50 ns

Utility Operators

name rxcpp rpp prev rpp ratio rpp no optimization
immediate_just(1)+subscribe_on(immediate)+subscribe 2263.86 ns 1.89 ns 2.13 ns 0.89 1.97 ns

Combining Operators

name rxcpp rpp prev rpp ratio rpp no optimization
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 9365.98 ns 248.04 ns 222.36 ns 1.12 223.80 ns
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3287.39 ns 215.42 ns 218.55 ns 0.99 220.01 ns
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 226.84 ns 223.77 ns 1.01 223.67 ns
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 4056.86 ns 755.60 ns 549.89 ns 1.37 992.59 ns
immediate_just(1) + zip(immediate_just(2)) + subscribe 2221.40 ns 334.32 ns 335.10 ns 1.00 347.46 ns
immediate_just(immediate_just(1), immediate_just(1)) + concat() + subscribe 3090.38 ns 643.32 ns 346.13 ns 1.86 659.69 ns

Subjects

name rxcpp rpp prev rpp ratio rpp no optimization
publish_subject with 1 observer - on_next 67.44 ns 22.81 ns 22.83 ns 1.00 22.94 ns
subscribe 100 observers to publish_subject 229800.00 ns 23962.79 ns 18566.21 ns 1.29 18546.15 ns
100 on_next to 100 observers to publish_subject 38432.52 ns 12052.43 ns 12384.41 ns 0.97 11715.21 ns

Scenarios

name rxcpp rpp prev rpp ratio rpp no optimization
basic sample 1364.10 ns 11.25 ns 10.98 ns 1.02 29.90 ns
basic sample with immediate scheduler 1263.48 ns 5.45 ns 5.54 ns 0.98 18.01 ns
mix operators with disposables and without disposables 7451.34 ns 2253.68 ns 1451.38 ns 1.55 4084.46 ns
single disposable and looooooong indentity chain 16257.81 ns 2496.39 ns 1749.24 ns 1.43 3899.00 ns

Aggregating Operators

name rxcpp rpp prev rpp ratio rpp no optimization
immediate_just+reduce(10, std::plus)+subscribe 1019.65 ns 0.34 ns 0.34 ns 0.99 0.35 ns

Error Handling Operators

name rxcpp rpp prev rpp ratio rpp no optimization
create(on_next(1), on_error())+on_error_resume_next(immediate_just(2)))+subscribe 3904.76 ns 7758.50 ns 2889.55 ns 2.69 4428.24 ns
create(on_error())+retry(1)+subscribe 746.32 ns 266.86 ns 187.85 ns 1.42 191.56 ns

ci-ubuntu-clang

General

name rxcpp rpp prev rpp ratio rpp no optimization
Subscribe empty callbacks to empty observable 269.30 ns 1.56 ns 1.55 ns 1.00 0.64 ns
Subscribe empty callbacks to empty observable via pipe operator 269.91 ns 1.55 ns 1.55 ns 1.00 0.64 ns

Sources

name rxcpp rpp prev rpp ratio rpp no optimization
from array of 1 - create + subscribe + immediate 556.11 ns 0.31 ns 0.31 ns 1.00 0.31 ns
from array of 1 - create + subscribe + current_thread 796.61 ns 4.04 ns 4.04 ns 1.00 4.04 ns
concat_as_source of just(1 immediate) create + subscribe 2375.65 ns 130.85 ns 131.42 ns 1.00 131.03 ns
defer from array of 1 - defer + create + subscribe + immediate 778.82 ns 0.31 ns 0.31 ns 1.00 0.31 ns
interval - interval + take(3) + subscribe + immediate 2267.43 ns 58.70 ns 58.65 ns 1.00 58.68 ns
interval - interval + take(3) + subscribe + current_thread 3154.03 ns 31.10 ns 31.09 ns 1.00 31.91 ns
from array of 1 - create + as_blocking + subscribe + new_thread 34097.67 ns 32258.86 ns 32637.95 ns 0.99 33584.67 ns
from array of 1000 - create + as_blocking + subscribe + new_thread 44388.31 ns 38045.90 ns 38288.17 ns 0.99 40777.88 ns
concat_as_source of just(1 immediate) and just(1,2 immediate)create + subscribe 3665.11 ns 150.28 ns 149.68 ns 1.00 149.41 ns

Filtering Operators

name rxcpp rpp prev rpp ratio rpp no optimization
immediate_just+take(1)+subscribe 1149.57 ns 0.31 ns 0.31 ns 1.00 0.31 ns
immediate_just+filter(true)+subscribe 851.05 ns 0.31 ns 0.31 ns 1.01 0.31 ns
immediate_just(1,2)+skip(1)+subscribe 1090.05 ns 0.31 ns 0.31 ns 1.00 0.31 ns
immediate_just(1,1,2)+distinct_until_changed()+subscribe 876.21 ns 0.32 ns 0.32 ns 0.99 0.34 ns
immediate_just(1,2)+first()+subscribe 1387.36 ns 0.31 ns 0.31 ns 1.00 0.31 ns
immediate_just(1,2)+last()+subscribe 1013.59 ns 0.31 ns 0.31 ns 1.00 0.31 ns
immediate_just+take_last(1)+subscribe 1195.80 ns 0.33 ns 0.31 ns 1.06 0.31 ns
immediate_just(1,2,3)+element_at(1)+subscribe 867.44 ns 0.31 ns 0.31 ns 1.00 0.31 ns

Schedulers

name rxcpp rpp prev rpp ratio rpp no optimization
immediate scheduler create worker + schedule 280.27 ns 0.64 ns 0.64 ns 1.01 1.55 ns
current_thread scheduler create worker + schedule 390.27 ns 4.35 ns 4.35 ns 1.00 4.04 ns
current_thread scheduler create worker + schedule + recursive schedule 849.93 ns 55.15 ns 55.33 ns 1.00 54.62 ns

Transforming Operators

name rxcpp rpp prev rpp ratio rpp no optimization
immediate_just+map(v*2)+subscribe 848.66 ns 0.31 ns 0.31 ns 1.00 0.31 ns
immediate_just+scan(10, std::plus)+subscribe 981.13 ns 0.62 ns 0.62 ns 1.00 0.33 ns
immediate_just+flat_map(immediate_just(v*2))+subscribe 2247.30 ns 139.55 ns 138.78 ns 1.01 137.23 ns
immediate_just+buffer(2)+subscribe 1521.97 ns 13.97 ns 13.99 ns 1.00 14.66 ns
immediate_just+window(2)+subscribe + subscsribe inner 2760.87 ns 916.81 ns 911.39 ns 1.01 914.20 ns

Conditional Operators

name rxcpp rpp prev rpp ratio rpp no optimization
immediate_just+take_while(false)+subscribe 847.94 ns - - 0.00 -
immediate_just+take_while(true)+subscribe 855.38 ns 0.31 ns 0.31 ns 1.00 0.31 ns

Utility Operators

name rxcpp rpp prev rpp ratio rpp no optimization
immediate_just(1)+subscribe_on(immediate)+subscribe 2004.58 ns 0.31 ns 0.31 ns 1.00 0.31 ns

Combining Operators

name rxcpp rpp prev rpp ratio rpp no optimization
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 3270.31 ns 160.54 ns 162.26 ns 0.99 157.10 ns
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3737.44 ns 138.20 ns 140.20 ns 0.99 141.16 ns
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 142.92 ns 143.08 ns 1.00 139.44 ns
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 3368.99 ns 381.70 ns 380.34 ns 1.00 381.03 ns
immediate_just(1) + zip(immediate_just(2)) + subscribe 2189.72 ns 204.80 ns 201.11 ns 1.02 199.36 ns
immediate_just(immediate_just(1), immediate_just(1)) + concat() + subscribe 3276.18 ns 225.27 ns 224.52 ns 1.00 224.58 ns

Subjects

name rxcpp rpp prev rpp ratio rpp no optimization
publish_subject with 1 observer - on_next 54.64 ns 19.78 ns 19.33 ns 1.02 20.28 ns
subscribe 100 observers to publish_subject 206732.20 ns 17475.21 ns 17478.62 ns 1.00 17462.06 ns
100 on_next to 100 observers to publish_subject 37616.60 ns 20246.39 ns 20236.96 ns 1.00 20258.10 ns

Scenarios

name rxcpp rpp prev rpp ratio rpp no optimization
basic sample 1304.61 ns 11.49 ns 11.49 ns 1.00 21.43 ns
basic sample with immediate scheduler 1302.64 ns 5.90 ns 5.90 ns 1.00 6.52 ns
mix operators with disposables and without disposables 6601.10 ns 1183.11 ns 1178.52 ns 1.00 1456.67 ns
single disposable and looooooong indentity chain 28018.57 ns 1248.02 ns 1255.32 ns 0.99 4666.73 ns

Aggregating Operators

name rxcpp rpp prev rpp ratio rpp no optimization
immediate_just+reduce(10, std::plus)+subscribe 999.57 ns 0.31 ns 0.31 ns 1.00 0.31 ns

Error Handling Operators

name rxcpp rpp prev rpp ratio rpp no optimization
create(on_next(1), on_error())+on_error_resume_next(immediate_just(2)))+subscribe 2180.01 ns 1169.40 ns 1176.43 ns 0.99 1163.41 ns
create(on_error())+retry(1)+subscribe 659.07 ns 138.50 ns 138.46 ns 1.00 140.97 ns

ci-windows

General

name rxcpp rpp prev rpp ratio rpp no optimization
Subscribe empty callbacks to empty observable 556.07 ns 2.16 ns 2.16 ns 1.00 1.85 ns
Subscribe empty callbacks to empty observable via pipe operator 572.10 ns 2.16 ns 2.16 ns 1.00 1.85 ns

Sources

name rxcpp rpp prev rpp ratio rpp no optimization
from array of 1 - create + subscribe + immediate 1155.57 ns 4.93 ns 4.94 ns 1.00 5.55 ns
from array of 1 - create + subscribe + current_thread 1419.82 ns 15.75 ns 15.74 ns 1.00 15.45 ns
concat_as_source of just(1 immediate) create + subscribe 3696.46 ns 174.60 ns 174.62 ns 1.00 178.05 ns
defer from array of 1 - defer + create + subscribe + immediate 1180.65 ns 5.24 ns 5.24 ns 1.00 5.24 ns
interval - interval + take(3) + subscribe + immediate 3736.36 ns 139.81 ns 139.74 ns 1.00 142.29 ns
interval - interval + take(3) + subscribe + current_thread 3460.30 ns 60.15 ns 59.86 ns 1.00 62.80 ns
from array of 1 - create + as_blocking + subscribe + new_thread 123175.00 ns 118700.00 ns 120400.00 ns 0.99 119788.89 ns
from array of 1000 - create + as_blocking + subscribe + new_thread 132655.56 ns 135675.00 ns 136975.00 ns 0.99 137275.00 ns
concat_as_source of just(1 immediate) and just(1,2 immediate)create + subscribe 5329.67 ns 206.57 ns 201.39 ns 1.03 215.13 ns

Filtering Operators

name rxcpp rpp prev rpp ratio rpp no optimization
immediate_just+take(1)+subscribe 1818.86 ns 19.42 ns 19.42 ns 1.00 21.36 ns
immediate_just+filter(true)+subscribe 1610.58 ns 18.50 ns 18.51 ns 1.00 21.59 ns
immediate_just(1,2)+skip(1)+subscribe 2008.80 ns 17.89 ns 17.91 ns 1.00 21.60 ns
immediate_just(1,1,2)+distinct_until_changed()+subscribe 1328.95 ns 20.67 ns 20.68 ns 1.00 26.86 ns
immediate_just(1,2)+first()+subscribe 2372.16 ns 18.20 ns 18.21 ns 1.00 19.43 ns
immediate_just(1,2)+last()+subscribe 1464.98 ns 19.13 ns 19.15 ns 1.00 22.84 ns
immediate_just+take_last(1)+subscribe 2023.02 ns 64.85 ns 64.93 ns 1.00 70.17 ns
immediate_just(1,2,3)+element_at(1)+subscribe 1622.12 ns 20.97 ns 20.98 ns 1.00 21.63 ns

Schedulers

name rxcpp rpp prev rpp ratio rpp no optimization
immediate scheduler create worker + schedule 477.39 ns 4.32 ns 4.32 ns 1.00 4.32 ns
current_thread scheduler create worker + schedule 648.68 ns 11.11 ns 11.11 ns 1.00 11.11 ns
current_thread scheduler create worker + schedule + recursive schedule 1079.50 ns 103.96 ns 101.36 ns 1.03 103.12 ns

Transforming Operators

name rxcpp rpp prev rpp ratio rpp no optimization
immediate_just+map(v*2)+subscribe 1328.23 ns 18.80 ns 18.80 ns 1.00 21.63 ns
immediate_just+scan(10, std::plus)+subscribe 1422.12 ns 20.96 ns 20.96 ns 1.00 23.80 ns
immediate_just+flat_map(immediate_just(v*2))+subscribe 3837.33 ns 186.30 ns 185.11 ns 1.01 223.46 ns
immediate_just+buffer(2)+subscribe 2291.50 ns 64.26 ns 63.51 ns 1.01 72.33 ns
immediate_just+window(2)+subscribe + subscsribe inner 3974.07 ns 1216.92 ns 1192.15 ns 1.02 1226.57 ns

Conditional Operators

name rxcpp rpp prev rpp ratio rpp no optimization
immediate_just+take_while(false)+subscribe 1305.28 ns 17.57 ns 17.57 ns 1.00 19.13 ns
immediate_just+take_while(true)+subscribe 1329.92 ns 18.50 ns 18.50 ns 1.00 21.60 ns

Utility Operators

name rxcpp rpp prev rpp ratio rpp no optimization
immediate_just(1)+subscribe_on(immediate)+subscribe 3205.02 ns 11.10 ns 11.11 ns 1.00 11.11 ns

Combining Operators

name rxcpp rpp prev rpp ratio rpp no optimization
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 5054.46 ns 197.43 ns 195.27 ns 1.01 222.13 ns
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 5710.11 ns 186.78 ns 178.89 ns 1.04 204.81 ns
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 195.15 ns 194.65 ns 1.00 199.56 ns
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 6119.16 ns 444.60 ns 443.65 ns 1.00 489.05 ns
immediate_just(1) + zip(immediate_just(2)) + subscribe 3865.37 ns 538.25 ns 519.56 ns 1.04 516.04 ns
immediate_just(immediate_just(1), immediate_just(1)) + concat() + subscribe 4853.97 ns 314.42 ns 314.38 ns 1.00 325.14 ns

Subjects

name rxcpp rpp prev rpp ratio rpp no optimization
publish_subject with 1 observer - on_next 36.72 ns 29.42 ns 29.27 ns 1.01 30.01 ns
subscribe 100 observers to publish_subject 264250.00 ns 25013.33 ns 25450.00 ns 0.98 24830.23 ns
100 on_next to 100 observers to publish_subject 51881.82 ns 35939.39 ns 35922.58 ns 1.00 32997.22 ns

Scenarios

name rxcpp rpp prev rpp ratio rpp no optimization
basic sample 1853.25 ns 96.57 ns 96.80 ns 1.00 112.11 ns
basic sample with immediate scheduler 1857.89 ns 66.73 ns 68.51 ns 0.97 82.35 ns
mix operators with disposables and without disposables 9381.75 ns 1787.22 ns 1797.99 ns 0.99 2439.19 ns
single disposable and looooooong indentity chain 25641.46 ns 1655.18 ns 1630.37 ns 1.02 6267.21 ns

Aggregating Operators

name rxcpp rpp prev rpp ratio rpp no optimization
immediate_just+reduce(10, std::plus)+subscribe 1458.16 ns 19.11 ns 19.11 ns 1.00 22.83 ns

Error Handling Operators

name rxcpp rpp prev rpp ratio rpp no optimization
create(on_next(1), on_error())+on_error_resume_next(immediate_just(2)))+subscribe 1896.36 ns 357.24 ns 353.06 ns 1.01 380.86 ns
create(on_error())+retry(1)+subscribe 1721.11 ns 138.15 ns 137.92 ns 1.00 139.85 ns

@AlexInLog AlexInLog merged commit 0f94e24 into AlexInLog:v2 Feb 15, 2026
39 checks passed
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.

RPP v2 - Implementation Status

2 participants