Skip to content

docs(runtime): clarify optional pointer passthrough - #129

Merged
DerekCorniello merged 1 commit into
mainfrom
audit/runtime-residual-ffi
Aug 31, 2026
Merged

docs(runtime): clarify optional pointer passthrough#129
DerekCorniello merged 1 commit into
mainfrom
audit/runtime-residual-ffi

Conversation

@DerekCorniello

@DerekCorniello DerekCorniello commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Summary

  • document that mux_optional_into_value is a deliberate, non-dereferencing ABI identity helper
  • remove an inaccurate Clippy suppression
  • cover null passthrough in the extern API regression test

This preserves the existing ABI, null behavior, and ownership semantics. The helper never reads or releases its argument.

Validation: cargo fmt, cargo clippy --all-targets --all-features -- -D warnings, cargo test --all-features.

@DerekCorniello
DerekCorniello enabled auto-merge (squash) August 31, 2026 05:22
@github-actions

github-actions Bot commented Aug 31, 2026

Copy link
Copy Markdown

Valgrind Memory Checks - PASSED

%%{init: {'themeVariables': {'pie1': '#2da44e', 'pie2': '#cf222e'}}}%%
pie showData
    title Test binaries under Valgrind (28 total)
    "Clean" : 28
    "Leaking" : 0
Loading
Full valgrind output (last 300 lines)

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

>>> valgrind /home/runner/_work/mux-runtime/mux-runtime/target/debug/deps/json_convert_unit-744e9c3cbbe79d95

running 6 tests
test json_from_and_to_map_extern ... ok
test json_parse_extern ... ok
test json_stringify_extern ... ok
test json_to_value_roundtrip ... ok
test value_to_json_error_cases ... ok
test value_to_json_scalars_and_collections ... ok

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

>>> valgrind /home/runner/_work/mux-runtime/mux-runtime/target/debug/deps/std_unit-ccb0f20fcdb2b2e5

running 7 tests
test container_alloc_and_free ... ok
test int_and_bool_value_roundtrip ... ok
test range_into_list_value ... ok
test value_add_numbers_and_strings ... ok
test value_equality ... ok
test value_get_list_from_value ... ok
test value_to_string_scalar ... ok

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

>>> valgrind /home/runner/_work/mux-runtime/mux-runtime/target/debug/deps/sql_drivers_unit-3e80c926d006f347

running 5 tests
test mysql_driver ... ok
test postgres_column_types ... ok
test postgres_connect_failure ... ok
test postgres_driver ... ok
test unsupported_scheme_is_error ... ok

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

>>> valgrind /home/runner/_work/mux-runtime/mux-runtime/target/debug/deps/random_unit-6031d65574403023

running 6 tests
test bool_callable ... ok
test float_within_unit_interval ... ok
test int_within_range ... ok
test range_bounds ... ok
test range_covers_whole_span ... ok
test range_handles_i64_domain_boundaries ... ok

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

>>> valgrind /home/runner/_work/mux-runtime/mux-runtime/target/debug/deps/option_result_unit-c6435e33c3cb7071

running 4 tests
test optional_core ... ok
test optional_extern_roundtrip ... ok
test result_core ... ok
test result_extern_roundtrip ... ok

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

>>> valgrind /home/runner/_work/mux-runtime/mux-runtime/target/debug/deps/assert_unit-37f6662c40d4d87d

running 4 tests
test boolean_asserts_pass ... ok
test eq_ne_asserts_pass ... ok
test optional_asserts_pass ... ok
test result_asserts_pass ... ok

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

>>> valgrind /home/runner/_work/mux-runtime/mux-runtime/target/debug/deps/collections_unit-72f8a531f726cafb

running 5 tests
test list_display_contains_elements ... ok
test list_push_pop_length ... ok
test list_slice_bounds ... ok
test map_insert_get_remove_contains ... ok
test set_add_remove_contains ... ok

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

>>> valgrind /home/runner/_work/mux-runtime/mux-runtime/target/debug/deps/sql_unit-81ae63e26d0d3313

running 10 tests
test bad_uri_is_error ... ok
test connect_execute_query_lifecycle ... ok
test failed_commit_keeps_transaction_connection ... ok
test failed_rollback_keeps_transaction_connection ... ok
test null_value_accessors_error ... ok
test query_params_and_errors ... ok
test sql_value_bytes_and_type_errors ... ok
test sql_value_constructors_and_accessors ... ok
test sqlite_rejects_multiple_statements_explicitly ... ok
test transaction_commit_and_rollback ... ok

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

>>> valgrind /home/runner/_work/mux-runtime/mux-runtime/target/debug/deps/panic_unit-c5dee69f3381e006

running 8 tests
test assert_failure_panics ... ok
test cstr_with_location_panics ... ok
test cstr_without_location_omits_locator ... ok
test index_oob_panics ... ok
test key_not_found_panics ... ok
test registry_codes_are_unique_and_stable ... ok
test typed_cstr_uses_registry_code ... ok
test unknown_ffi_code_is_internal ... ok

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

>>> valgrind /home/runner/_work/mux-runtime/mux-runtime/target/debug/deps/io_extra_unit-2de85aca4accf959

running 3 tests
test open_missing_and_null ... ok
test open_read_close_file ... ok
test value_from_string_and_prints ... ok

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

>>> valgrind /home/runner/_work/mux-runtime/mux-runtime/target/debug/deps/csv_unit-294854b6ea7c9cbb

running 9 tests
test a_ragged_row_is_rejected_by_the_parser ... ok
test a_repeated_header_is_rejected ... ok
test parse_null_is_error ... ok
test parse_plain_csv ... ok
test parse_with_headers ... ok
test rows_as_maps_pairs_headers_with_cells ... ok
test rows_as_maps_rejects_other_shapes ... ok
test to_string_rejects_non_map ... ok
test to_string_roundtrip ... ok

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

>>> valgrind /home/runner/_work/mux-runtime/mux-runtime/target/debug/deps/object_unit-b7c1d9f53005c8d6

running 12 tests
test a_hash_without_an_equality_falls_back_to_identity ... ok
test a_registered_hash_keeps_unequal_instances_apart ... ok
test compare_does_not_cross_types ... ok
test content_keying_without_a_copy_callback_falls_back_to_identity ... ok
test copy_without_callback_returns_null ... ok
test equality_without_a_hash_still_hashes_consistently ... ok
test invalid_inputs ... ok
test objects_are_map_keys_by_contents ... ok
test objects_without_registration_stay_identities ... ok
test ordering_agrees_with_equality_for_a_fully_declared_class ... ok
test register_alloc_access_copy_free ... ok
test registered_compare_and_hash_make_objects_structural ... ok

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

>>> valgrind /home/runner/_work/mux-runtime/mux-runtime/target/debug/deps/net_unit-aaa281833f509980

running 12 tests
test a_copied_listener_names_the_same_socket ... ok
test close_is_not_reference_counted ... ok
test http_client_against_local_server ... ok
test http_null_inputs_error ... ok
test http_read_request_body_without_content_length_errors ... ok
test http_request_errors ... ok
test http_request_response_loopback ... ok
test http_response_validation_and_udp_extras ... ok
test invalid_addresses_error ... ok
test invalid_read_size_errors ... ok
test tcp_roundtrip ... ok
test udp_roundtrip ... ok

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

>>> valgrind /home/runner/_work/mux-runtime/mux-runtime/target/debug/deps/sync_unit-d248b15b90c159db

running 8 tests
test condvar_signal_broadcast ... ok
test mismatched_handle_types_are_rejected ... ok
test mutex_lock_unlock ... ok
test null_handles_error ... ok
test rwlock_read_and_write ... ok
test sleep_is_noop_for_nonpositive ... ok
test spawn_and_detach ... ok
test spawn_and_join ... ok

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

>>> valgrind /home/runner/_work/mux-runtime/mux-runtime/target/debug/deps/collection_cow_unit-89fff1bc7cd75ca2

running 10 tests
test list_mutation_on_shared_value_is_in_place ... ok
test list_pop_back_and_front_return_ends ... ok
test list_pop_on_empty_returns_none ... ok
test list_push_back_builds_in_order_when_uniquely_owned ... ok
test list_push_front_prepends ... ok
test list_set_value_overwrites_and_extends ... ok
test map_put_and_remove_uniquely_owned ... ok
test map_put_on_shared_value_is_in_place ... ok
test set_add_and_remove_uniquely_owned ... ok
test set_add_on_shared_value_is_in_place ... ok

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

>>> valgrind /home/runner/_work/mux-runtime/mux-runtime/target/debug/deps/closure_unit-e4c965f19a16148f

running 7 tests
test capture_free_release_frees_closure ... ok
test cell_release_frees_its_value_on_the_last_holder ... ok
test cell_survives_until_every_holder_releases ... ok
test release_drops_one_reference_per_capture ... ok
test retain_and_release_are_null_safe ... ok
test retain_delays_free_until_last_release ... ok
test shared_closure_frees_capture_only_on_last_release ... ok

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

>>> valgrind /home/runner/_work/mux-runtime/mux-runtime/target/debug/deps/value_unit-ed42345afd0599cc

running 15 tests
test empty_collection_display ... ok
test map_and_set_hash_does_not_depend_on_insertion_order ... ok
test map_set_hash_and_order ... ok
test object_value_display_debug_and_compare ... ok
test optional_and_result_hash ... ok
test tuple_hash_and_compare ... ok
test type_tags_for_all_variants ... ok
test value_display_composites ... ok
test value_display_scalars ... ok
test value_equality_and_ordering ... ok
test value_equality_same_variant_data ... ok
test value_from_string ... ok
test value_hash_consistent ... ok
test value_ordering_across_many_variants ... ok
test value_type_tags ... ok

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

>>> valgrind /home/runner/_work/mux-runtime/mux-runtime/target/debug/deps/extern_extras_unit-a883216b3951bd45

running 4 tests
test float_extern_remainder ... ok
test int_extern_remainder ... ok
test optional_extern_remainder ... ok
test result_extern_remainder ... ok

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

>>> valgrind /home/runner/_work/mux-runtime/mux-runtime/target/debug/deps/strings_extern_unit-9d6e59e5a923cfeb

running 16 tests
test bool_extern ... ok
test boxing_roundtrips ... ok
test char_conversions ... ok
test string_comparison ... ok
test string_containment ... ok
test string_equality ... ok
test string_from_owned_cstr_frees_input ... ok
test string_from_value_roundtrip ... ok
test string_parsing ... ok
test string_positions_are_characters ... ok
test string_scalar_ops ... ok
test string_slice_bounds ... ok
test string_split ... ok
test string_to_bool_is_deliberately_narrow ... ok
test string_to_list_yields_characters ... ok
test string_transforms_and_predicates ... ok

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

>>> valgrind /home/runner/_work/mux-runtime/mux-runtime/target/debug/deps/json_unit-6a1e364faf93028c

running 12 tests
test accessors_report_the_kind_they_found ... ok
test accessors_return_decoded_values ... ok
test field_lookup_separates_absent_from_null ... ok
test integers_and_reals_stay_distinct ... ok
test number_accessors_convert_deliberately ... ok
test numbers_survive_a_roundtrip ... ok
test parse_handles_escapes ... ok
test parse_primitives ... ok
test parse_rejects_malformed ... ok
test parse_strings_arrays_objects ... ok
test pretty_indent ... ok
test stringify_roundtrip ... ok

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

>>> valgrind /home/runner/_work/mux-runtime/mux-runtime/target/debug/deps/containers_extern_unit-51b88d178ae6f525

running 8 tests
test list_box_layer ... ok
test list_box_pop_front_and_empty ... ok
test list_value_layer ... ok
test map_box_layer ... ok
test map_value_layer ... ok
test set_box_layer ... ok
test set_value_layer ... ok
test tuple_ops ... ok

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

A/B Benchmark Report - report-only

Output (last 300 lines)
benchmark                     baseline (ns)     new (ns)   change   abs (ns)  verdict
-------------------------------------------------------------------------------------
json/parse_medium                   2261.92      2429.18    +7.4%     167.26  ok
json/parse_small                     667.29       672.89    +0.8%       5.60  ok
json/stringify                      4727.78      4750.64    +0.5%      22.86  ok
list/build_free                     7565.08      6965.37    -7.9%     599.71  ok
list/concat                         5548.89      6724.95   +21.2%    1176.06  ok (confirmation run did not reproduce)
list/contains                        233.78       233.73    -0.0%       0.05  ok
list/get                              24.96        24.03    -3.7%       0.93  ok
list/to_string                      9363.92      9676.96    +3.3%     313.04  ok
map/build_free                     23637.91     23168.37    -2.0%     469.54  ok
map/contains                          10.87        10.94    +0.6%       0.06  ok
map/get                               37.96        38.99    +2.7%       1.03  ok
primitive/float_mul                    0.88         0.88    -0.0%       0.00  ok
primitive/int_add                      0.71         0.71    -0.1%       0.00  ok
primitive/int_pow                      2.82         2.82    -0.1%       0.00  ok
primitive/int_to_string               35.87        35.78    -0.3%       0.09  ok
refcount/alloc_free                   12.70        12.47    -1.8%       0.22  ok
refcount/clone                         8.83         8.84    +0.2%       0.01  ok
refcount/inc_dec                       8.84         8.83    -0.1%       0.01  ok
set/build_free                     16097.07     17004.58    +5.6%     907.51  ok
set/contains                          10.83        10.72    -1.1%       0.12  ok
set/union                          11300.74     11623.59    +2.9%     322.86  ok
string/alloc_free                     30.65        32.15    +4.9%       1.50  ok
string/concat                         78.16        76.26    -2.4%       1.90  ok
string/equal                           4.26         4.38    +2.7%       0.11  ok
string/length                         23.37        23.60    +1.0%       0.23  ok
wrappers/optional_is_some              0.77         0.81    +5.0%       0.04  ok
wrappers/optional_some                21.17        22.77    +7.6%       1.60  ok
wrappers/result_is_ok                  0.72         0.73    +2.4%       0.02  ok
wrappers/result_ok                    21.42        21.84    +2.0%       0.42  ok
wrappers/tuple_new                    59.57        56.28    -5.5%       3.30  ok

Commit 581c61c684aacb17bdff604bae31a7b6e94d333e - full run

@DerekCorniello
DerekCorniello force-pushed the audit/runtime-residual-ffi branch from f45e4e6 to 581c61c Compare August 31, 2026 10:55
@DerekCorniello
DerekCorniello force-pushed the audit/runtime-residual-ffi branch from 581c61c to e39467c Compare August 31, 2026 12:31
@sonarqubecloud

Copy link
Copy Markdown

@DerekCorniello
DerekCorniello merged commit 326543d into main Aug 31, 2026
14 checks passed
@DerekCorniello
DerekCorniello deleted the audit/runtime-residual-ffi branch August 31, 2026 12:35
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