Skip to content

Fix the broken binary install; resolve the runtime from a prebuilt library - #317

Merged
DerekCorniello merged 19 commits into
mainfrom
fix/bundled-runtime-lib-resolution
Jul 29, 2026
Merged

Fix the broken binary install; resolve the runtime from a prebuilt library#317
DerekCorniello merged 19 commits into
mainfrom
fix/bundled-runtime-lib-resolution

Conversation

@DerekCorniello

@DerekCorniello DerekCorniello commented Jul 29, 2026

Copy link
Copy Markdown
Collaborator

Closes #316. Fixes a release that could not compile hello world.

The bug

The published v0.6.0 tarball, installed exactly as scripts/install.sh lays it out, could not compile print("hello"):

$ mux run hello.mux
Could not locate mux-runtime source in cargo registry.

resolve_runtime_lib_dir consulted a prebuilt library only when a program's required features equalled the full set exactly. That set is derived from a program's imports, so any program not importing the entire std fell through to a source build - and a binary install ships no runtime source. The bundled libmux_runtime.a was sitting in ../lib the whole time.

Every developer machine masked it three ways: a sibling ../mux-runtime, a cargo registry copy, and MUX_RUNTIME_LIB in a gitignored .cargo/config.toml.

The fix, and why it went further

A prebuilt library carries the full feature set, so it satisfies any subset. But measuring the feature trimming showed it buys nothing: static linking already discards archive members nothing references. Hello world is 16K against the trimmed runtime and 16K against the full one, which contains SQLite, Postgres, MySQL and an HTTP stack. Programs that do use those link them either way (sqlite 47K, http 27K).

So the whole apparatus came out: the runtime build cache and its staleness fingerprints, the cargo-registry and git-checkout source lookups, per-program feature sets, and the five-level resolution order whose upper entries silently shadowed the lower ones. Net ~590 lines out of main.rs.

Resolution is now three rules, all prebuilt: MUX_RUNTIME_LIB, the library beside the binary, the one in target/.

Other changes

  • [patch.crates-io] -> a real git dependency (closes [Chore] - Drop the mux-runtime [patch.crates-io] git patch and pin a published version before release #316). Cargo.lock is byte-identical - the patch already resolved to a git source. MUX_RUNTIME_VERSION now carries the locked commit (0.5.0+g4e2dc14, shown by mux version) so a bug report identifies its runtime.
  • Installers run mux doctor. The compiler shells out to clang to link every program, but install.sh only checked for curl and tar, so a clean install failed at first compile with nothing pointing at the cause.
  • Two new CI jobs. packaged_artifact runs the compiler from the bin/lib layout no other job covers - it fails against the released v0.6.0 binary and passes here. installer_scripts parses both installers, which nothing did.
  • cargo build -p mux-runtime everywhere programs are compiled. Cargo emits a dependency's rlib and never its staticlib, so removing the source-build path left a hole the Docker suite caught.

Verification

Full suite green (169 tests, 11 binaries). clippy -D warnings and fmt clean. leak-check.sh reports all programs clean. Docker integration suite passes including the four live service tests. Packaged install compiles and runs hello world, std.math, std.sql and std.net.http.

Not run: /code-review (user-triggered only) and CI itself - packaged_artifact and installer_scripts are new, and rust_checks, valgrind, benchmarks and rc_leak_check all changed, so expect a fixup pass on first run.

Depends on the rationale in muxlang/mux-context#32.


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

A prebuilt runtime library carries the full feature set, so it satisfies
any subset of it. resolve_runtime_lib_dir consulted a prebuilt library
only when the requested features equalled the full set exactly, but that
set is derived from a program's imports - so any program not importing
the entire std fell through to a source build and failed with "Could not
locate mux-runtime source in cargo registry".

That is every program on a binary install. The release tarball and
scripts/install.sh ship bin/mux and lib/libmux_runtime.* with no runtime
source, so a stock v0.6.0 install could not compile hello world. Local
checkouts never saw it: a sibling ../mux-runtime, a cargo registry copy,
and .cargo/config.toml's MUX_RUNTIME_LIB each mask the failure.

A strict subset still prefers an exact-feature build when runtime source
is available, so development builds keep unused std dependencies out of
linked programs. The prebuilt library is the fallback, not the default,
and a feature outside the full set still requires a source build.

Add a packaged_artifact CI job covering the layout no other job does: it
stages bin/ and lib/, moves the runtime checkout aside so the baked-in
sibling path cannot mask the failure, and compiles with an empty
CARGO_HOME.
The compiler shells out to a matching clang to link every program, but
install.sh only checked for curl and tar. A user could complete the
documented `curl | sh` install and then hit a linker error on their first
program, with nothing in the install output pointing at the cause.

Run `mux doctor` at the end of both installers. In user mode it checks
clang and the runtime and already prints the per-platform install command
for whatever is missing, so the gap surfaces while the user is still
looking at the installer. A failing check is reported, not fatal: the
install itself succeeded.

install.ps1 needs one guard for this. Under `$ErrorActionPreference =
"Stop"`, PowerShell 7.4+ turns a nonzero native exit code into a
terminating error, which would abort the script instead of printing the
guidance, so the doctor call opts out of that behavior and restores it
afterwards.
Replace the `[patch.crates-io]` stopgap with a real git dependency on
muxlang/mux-runtime `main`. A patch only applies to the workspace that
declares it, so it was never going to survive publication; the compiler
and the runtime are ABI-coupled and change together, so resolving from
source is the honest expression of that. Cargo.lock still pins the exact
commit, and it is byte-identical to what the patch already produced -
`--locked` builds, CI and release tags included, resolve as before.

Stamp the locked commit into MUX_RUNTIME_VERSION as semver build
metadata (`0.5.0+g4e2dc14`, shown by `mux version`). A git-sourced
runtime keeps one version across every commit, and MUX_RUNTIME_VERSION
keys the runtime build cache - which reuses a library built from an
immutable source without any freshness check. Without the commit in the
key, two different runtimes share a cache entry and a program can link a
stale one. ADR 0003 called this out; this implements it.

Teach find_runtime_source about cargo's git checkouts, laid out as
CARGO_HOME/git/checkouts/<repo>-<hash>/<short commit>, since the registry
unpack a crates.io dependency produced no longer exists. Rename
RuntimeSource::Registry to Immutable, which now covers both, and reword
the failure message that named the registry specifically.

Drop MUX_RUNTIME_SRC from release.yml: it pointed at a directory that
workflow never creates, so it only produced a spurious warning and
masked the real resolution path.
Cargo.lock pins one mux-runtime commit, which is what makes `--locked`
builds reproducible - but it also means main stops tracking the runtime
as soon as the runtime merges anything. This advances the pin on a
schedule and opens a PR, so main keeps meaning "the most recent changes"
without loosening the lock, and without pushing to a default branch.

The job runs the test suite itself before opening the PR. A pull request
created with GITHUB_TOKEN does not trigger other workflows, so the PR
would otherwise arrive untested. When the suite fails the PR is opened as
a draft naming the commit that broke it, which is the whole point: a
runtime change that breaks the compiler surfaces against that change
instead of on the next unrelated branch.
CONTRIBUTING.md never mentioned mux-runtime at all - the git dependency
made it invisible, so nothing told a contributor that a separate repo was
involved, that they do not need to clone it, or what to do when a change
needs both sides. Add a section covering all three, plus the resolution
order, because the top entries silently shadow the bottom ones: a stale
sibling checkout or a leftover MUX_RUNTIME_LIB in .cargo/config.toml wins
over the commit Cargo.lock names, and the mismatch surfaces as a
confusing link error rather than as anything pointing at the cause.

Fix two stale claims in AGENTS.md. Cargo builds the runtime as a
dependency, not as a workspace member - the root Cargo.toml explicitly
excludes it. And the project structure listed mux-runtime/src/ and
mux-website/docs/ as directories in this tree; both are separate repos.
"No Rust or LLVM required" was misleading for the prebuilt install: the
compiler invokes clang to link every program it builds, so clang matching
the linked LLVM major is required to run anything. Say so, and point at
the `mux doctor` check the installers now run automatically.

Mark the crates.io option frozen and drop its version badge, which would
otherwise keep advertising 0.6.0 as the current way to install.
Missed two occurrences in the previous commit. Clap rejects --version;
the real --help has no version flag. Also correct the runtime line, which
still described independent versioning rather than the pinned git dep.
Nothing ran install.sh or install.ps1, so a syntax error in either would
ship silently and surface only when a user piped it into their shell -
which matters more now that both scripts gained logic.

Parse and analyze install.ps1 with pwsh, which is preinstalled on the
Linux runner, and parse install.sh with shellcheck. Both verified against
the current scripts: install.ps1 parses and is analyzer-clean at Error
severity, and install.sh is shellcheck-clean at warning severity. Info
severity only reports SC2016 on the awk program, where the single quotes
are deliberate.

Two details worth keeping. PSScriptAnalyzer is imported explicitly with
-ErrorAction Stop: without it, a module that fails to load leaves the
findings variable null and the step passes green having analyzed nothing,
which is exactly what happened while testing this. And it is pinned to
1.22.0, because newer releases require pwsh 7.4.6+ while runner images
can still be on 7.4.2.
It solved a problem already covered three ways. mux-runtime's CI builds
mux-compiler main against the runtime source, and this repo's build.yml
tests against runtime main on every PR, so an FFI break surfaces from
both directions without the pin moving (ADR 0003). A coupled change moves
the pin itself via `cargo update -p mux-runtime`, and a release settles it
deliberately. A lock that trails runtime main between those moments costs
nothing - that is what a lock is for.

What remained was a daily CI run, PR noise, and a token question, for
freshness nothing was waiting on. Reword the CONTRIBUTING section that
pointed at it.
The CI leak job set MUX_RUNTIME_FEATURES and relied on the compiler to
build a matching runtime from source. That made it the only thing
depending on compiler-side feature builds, which is machinery worth
removing: static linking already discards unreferenced archive members,
so a feature-trimmed runtime produces a byte-identical binary to the full
one.

Build the leak runtime with an explicit cargo invocation in the runtime
checkout and force it with MUX_RUNTIME_LIB, exactly as
scripts/leak-check.sh already does locally. rc-leak-check sits outside
`full` on purpose, so it stays the one runtime the compiler cannot
produce on its own - which is why forcing it is the right mechanism
rather than an accident.

Drop the now-redundant MUX_RUNTIME_FEATURES export from leak-check.sh:
MUX_RUNTIME_LIB is consulted first and returns immediately, so the
features never affected resolution there. Reword the header comment,
which explained the footgun in terms of a stale workspace-member build
rather than the real reason.
The compiler built a feature-trimmed runtime on the user's machine so a
program linked only the std features it imported. Measured, that buys
nothing: static linking already discards archive members nothing
references. Hello world is 16K against the trimmed runtime and 16K
against the full one, which contains SQLite, Postgres, MySQL and an HTTP
stack. Programs that do use those features link them either way
(sqlite 47K, http 27K) and run identically.

So the trimming was paying a large complexity bill for a saving that does
not exist. Gone with it: the runtime build cache and its staleness
fingerprints, the cargo-registry and git-checkout source lookups, the
per-program feature sets, and a five-level resolution order whose upper
entries silently shadowed the lower ones. That order is what let a
release ship that could not compile hello world - every developer machine
had a sibling checkout masking it.

Runtime resolution is now three rules, all prebuilt: MUX_RUNTIME_LIB,
then the library beside the binary, then the one cargo built into
target/. MUX_RUNTIME_LIB stays first so scripts/leak-check.sh can force
the rc-leak-check runtime, which sits outside `full` and is the one build
the compiler cannot produce.

CI drops the same apparatus. rust_checks, valgrind and benchmarks no
longer check out mux-runtime or clear a cache that no longer exists: with
a git dependency the locked commit is what a release ships, so linking
anything else tests a configuration that never ships. FFI breaks against
runtime `main` are still caught by mux-runtime's own CI, which builds
this repo's `main` against its source.

Net 637 lines out of main.rs. The vestigial feature tracking left in
semantics/ now feeds nothing and should follow separately.
CONTRIBUTING described a five-level order that no longer exists, and
AGENTS explained the rc-leak-check footgun in terms of a feature-built
runtime being shadowed by a plain one - a mechanism that is also gone.

Both now describe what the compiler actually does: three prebuilt
sources, no source builds, always the full feature set. The rc-leak-check
note is restated in the terms that survive - the feature sits outside
`full`, so forcing the archive via MUX_RUNTIME_LIB is the only way to run
the assertion at all.
With the compiler always linking the full runtime, nothing consumes the
set of features a program requires. The analyzer still computed it: every
std import inserted its module's features into a HashSet that was merged
across submodule analyzers and then read by no one.

Delete the chain end to end - the field and its initializers, the
per-import tracking, the wildcard and namespace insertion loops, and the
`runtime_features` column on StdModuleDef, which reduces the registry to
what it is now for: which std modules exist and how each is implemented.
`import_all_std_wildcard` loses its registry parameter along with it.

Behavior is unchanged: full suite green, and std.math, std.sql and
std.net.http still resolve and run from a packaged install, which is what
the registry change could plausibly have broken.
The compiler no longer reads MUX_RUNTIME_SRC, so setting it in the
compose file and the Dockerfile pointed the container at a path that no
longer means anything - and, with the mux-runtime checkout gone from the
job, at a path that no longer exists.

The container needs none of it. CARGO_TARGET_DIR puts the runtime cargo
builds as a dependency in /workspace/.docker-target, and the spawned mux
binary sits in debug/ beside the uplifted libmux_runtime.a, which the
second resolution rule finds. rc_leak_check is now the only job that
checks out mux-runtime, because it genuinely needs source to build an
archive with a feature outside `full`.

Also fix a leak-check.sh comment still naming MUX_RUNTIME_FEATURES for
the CI job; that variable is now MUX_RUNTIME_LEAK_FEATURES.
Removing the source-build path left a hole: cargo emits only a
dependency's rlib, never its staticlib, so `cargo build -p mux-lang`
alone produces no libmux_runtime.a and every compiled program fails to
link with undefined references to core runtime symbols. Verified directly
in a clean target directory - `-p mux-lang` leaves the archive absent,
`-p mux-runtime -p mux-lang` produces it and hello world runs.

Every local check I ran had missed this because a gitignored
.cargo/config.toml sets MUX_RUNTIME_LIB, which is the first thing runtime
resolution consults. That is the exact footgun CONTRIBUTING now warns
about, and it hid a broken build from every check that was supposed to
catch it. The Docker integration suite is what caught it, because it runs
in an environment nothing else reproduces.

Build both packages in run-checks.sh and valgrind-checks.sh - which
covers the integration container and CI's Rust job, since both run
run-checks.sh - and add an explicit step to the benchmarks job.

The service suite needed its own fix: it compiles through `cargo run`
with CARGO_TARGET_DIR=target/service-integration, so the compiler it
builds looks for the archive in that directory rather than the main one.
It now builds the runtime there once, guarded by a OnceLock. Those tests
no-op unless MUX_RUN_SERVICE_TESTS=1, so their earlier "4 passed" was
four tests doing nothing; they now genuinely compile and run against the
live services.

Correct the runtime-not-found message too: it said to run `cargo build`,
which does not produce the archive. It now names `cargo build -p
mux-runtime` and says why.
The integration image has no COPY or ADD - it installs a toolchain, and
the repo arrives at runtime as a volume mount - so its build context is
never read. Without a .dockerignore, docker still uploads one, and that
is the entire working tree: target/ alone reaches tens of gigabytes here,
plus the .docker-cache directories. A local run was still streaming
context past 2.2GB when I stopped it.

Ignoring everything is safe precisely because nothing in the context is
consumed, and it takes the upload to a few kilobytes. Pre-existing, not
introduced by the runtime work, but it slows every integration run in CI.
Review of the branch turned up three stale claims, all written before the
source-build path came out.

build.rs justified the commit stamp by the runtime build cache keying off
it, and justified the seven-character length by cargo's git checkout
directory names. Both mechanisms are gone. The stamp's purpose now is
that `mux version` identifies which runtime a binary was built against.

The worse one: CONTRIBUTING and AGENTS both described the third
resolution rule as "the library cargo built into target/", with no
mention that a plain `cargo build` does not produce it. That is precisely
the trap that shipped a compiler unable to link anything, so the docs as
written led straight back into it. Both now name `cargo build -p
mux-runtime` and say why, and point at the link error as the symptom.
Quality pass over the branch, from the reuse and altitude angles.

runtime_lib_from_build_config re-implemented the static-then-dynamic
decision that find_runtime_lib_in_dir owns, despite runtime_static_lib_path
documenting itself as the single source of the library filenames. It also
disagreed with it: build.rs records `.so` as the dynamic path on macOS
while runtime_dynamic_lib_path correctly uses `.dylib`, so the fallback
was dead there. It now asks about the recorded directory instead, which
puts the platform names back in one place.

runtime_lib_near_executable repeated `find_runtime_lib_in_dir(d).and_then(
|p| p.parent())` in two nested blocks, plus an `exists()` guard that
find_runtime_lib_in_dir already performs. The containing directory is the
one passed in, so dir_holding_runtime_lib says that directly and the
search becomes a find_map over three candidate directories.

That left MUX_RUNTIME_DYNAMIC and MUX_RUNTIME_DIR unread, so build.rs no
longer emits them and detect_runtime_library returns the single path its
caller uses. It still probes both libraries internally, because either
one identifies the profile directory.
Comment thread .github/workflows/build.yml Outdated
@greptile-apps

greptile-apps Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

Fixes packaged compiler installations by resolving only prebuilt runtime libraries.

  • Simplifies runtime discovery to use MUX_RUNTIME_LIB, bundled install libraries, or Cargo target artifacts.
  • Pins GitHub Actions to immutable commit SHAs and adds installer and packaged-artifact checks.
  • Builds the runtime static library explicitly in CI, Docker, leak-check, and Valgrind paths.
  • Records the locked runtime commit in version output and updates installer and contributor guidance.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains.

Important Files Changed

Filename Overview
.github/workflows/build.yml Pins the previously mutable action references and adds packaged-install, installer, runtime-build, and leak-check coverage.
mux-compiler/src/main.rs Replaces source builds and feature-specific runtime caching with prebuilt-library resolution.
mux-compiler/build.rs Records the locked runtime commit in version metadata and simplifies generated runtime-library configuration.
mux-compiler/Cargo.toml Makes mux-runtime an explicit Git dependency whose exact revision remains pinned by Cargo.lock.
scripts/install.sh Updates the Unix installer for the packaged runtime layout and adds post-install diagnostics.
scripts/install.ps1 Updates the Windows installer for the packaged runtime layout and adds post-install diagnostics.

Reviews (2): Last reviewed commit: "Address PR review: lock the leak-runtime..." | Re-trigger Greptile

@github-actions

Copy link
Copy Markdown

Valgrind Memory Checks - PASSED

pie showData
    title Leg A: compiled programs under Valgrind (113 total)
    "Clean" : 113
    "Leaking" : 0
Loading
Full valgrind output (last 300 lines)
�[1m�[92m   Compiling�[0m futures-channel v0.3.32
�[1m�[92m   Compiling�[0m webpki-roots v1.0.7
�[1m�[92m   Compiling�[0m async-trait v0.1.89
�[1m�[92m   Compiling�[0m derive_utils v0.15.1
�[1m�[92m   Compiling�[0m btoi v0.5.0
�[1m�[92m   Compiling�[0m phf_shared v0.11.3
�[1m�[92m   Compiling�[0m whoami v2.1.2
�[1m�[92m   Compiling�[0m colorchoice v1.0.5
�[1m�[92m   Compiling�[0m httparse v1.10.1
�[1m�[92m   Compiling�[0m uuid v1.23.1
�[1m�[92m   Compiling�[0m anstyle v1.0.14
�[1m�[92m   Compiling�[0m saturating v0.1.0
�[1m�[92m   Compiling�[0m is_terminal_polyfill v1.70.2
�[1m�[92m   Compiling�[0m mysql v28.0.0
�[1m�[92m   Compiling�[0m anstyle-query v1.1.5
�[1m�[92m   Compiling�[0m paste v1.0.15
�[1m�[92m   Compiling�[0m subtle v2.6.1
�[1m�[92m   Compiling�[0m anstream v1.0.0
�[1m�[92m   Compiling�[0m tokio-postgres v0.7.18
�[1m�[92m   Compiling�[0m io-enum v1.2.1
�[1m�[92m   Compiling�[0m phf_generator v0.11.3
�[1m�[92m   Compiling�[0m webpki-roots v0.26.11
�[1m�[92m   Compiling�[0m hashlink v0.9.1
�[1m�[92m   Compiling�[0m crossbeam-queue v0.3.12
�[1m�[92m   Compiling�[0m pem v3.0.6
�[1m�[92m   Compiling�[0m csv-core v0.1.13
�[1m�[92m   Compiling�[0m twox-hash v2.1.2
�[1m�[92m   Compiling�[0m ryu v1.0.23
�[1m�[92m   Compiling�[0m bufstream v0.1.4
�[1m�[92m   Compiling�[0m clap_lex v1.1.0
�[1m�[92m   Compiling�[0m fallible-iterator v0.3.0
�[1m�[92m   Compiling�[0m lru v0.16.4
�[1m�[92m   Compiling�[0m iana-time-zone v0.1.65
�[1m�[92m   Compiling�[0m inkwell v0.9.0
�[1m�[92m   Compiling�[0m fallible-streaming-iterator v0.1.9
�[1m�[92m   Compiling�[0m chrono v0.4.44
�[1m�[92m   Compiling�[0m rusqlite v0.31.0
�[1m�[92m   Compiling�[0m ureq v2.12.1
�[1m�[92m   Compiling�[0m clap_builder v4.6.0
�[1m�[92m   Compiling�[0m csv v1.4.0
�[1m�[92m   Compiling�[0m postgres v0.19.13
�[1m�[92m   Compiling�[0m mux-lang v0.6.0 (/home/runner/work/mux-compiler/mux-compiler/mux-compiler)
�[1m�[92m   Compiling�[0m phf_macros v0.11.3
�[1m�[92m   Compiling�[0m clap_derive v4.6.1
�[1m�[92m   Compiling�[0m inkwell_internals v0.14.0
�[1m�[92m   Compiling�[0m ordered-float v4.6.0
�[1m�[92m   Compiling�[0m clap v4.6.1
�[1m�[92m   Compiling�[0m phf v0.11.3
�[1m�[92m   Compiling�[0m unicode-width v0.1.14
�[1m�[92m   Compiling�[0m mux-runtime v0.5.0 (https://github.com/muxlang/mux-runtime?branch=main#4e2dc14b)
�[1m�[92m    Finished�[0m `dev` profile [unoptimized + debuginfo] target(s) in 50.10s

=== Leg A: compiled programs under Valgrind ===
  PASS  arithmetic.mux
  PASS  builtin_collection_methods.mux
  PASS  class_field_defaults.mux
  PASS  class_method_params.mux
  PASS  closure_captured_increment.mux
  PASS  collections.mux
  PASS  constmath.mux
  PASS  control_flow.mux
  PASS  counter.mux
  PASS  csv_test.mux
  PASS  empty_map_literal.mux
  PASS  enum_c_style.mux
  PASS  enum_collection_keys.mux
  PASS  enum_collection_payloads.mux
  PASS  enum_copy_deep_clone.mux
  PASS  enum_discard_release.mux
  PASS  enum_field_deep_clone.mux
  PASS  enum_in_collections.mux
  PASS  enum_mixed_types.mux
  PASS  enum_named_fields.mux
  PASS  enum_nested_heterogeneous.mux
  PASS  enum_nested_mutual.mux
  PASS  enum_nested_payload.mux
  PASS  enum_nested_recursive.mux
  PASS  enum_nested_recursive_rc.mux
  PASS  enum_reassign_rebind.mux
  PASS  enum_recursive_class_field.mux
  PASS  enum_return_by_value.mux
  PASS  enum_ternary_deep_clone.mux
  PASS  enums_classes.mux
  PASS  env_get.mux
  PASS  field_compound_assignment.mux
  PASS  field_default_expressions.mux
  PASS  forward_ref.mux
  PASS  functions.mux
  PASS  generic_classes.mux
  PASS  generic_methods.mux
  PASS  generic_params.mux
  PASS  generic_static_import_context_lib.mux
  PASS  generic_static_import_context_main.mux
  PASS  generics.mux
  PASS  global_scope.mux
  PASS  if_expression_branches.mux
  PASS  issue231_enum_for_match.mux
  PASS  issue232_trailing_comma.mux
  PASS  issue233_match_side_effects.mux
  PASS  issue234_match_trailing_stmt.mux
  PASS  json_nan_inf_test.mux
  PASS  json_test.mux
  PASS  list_negative_index.mux
  PASS  logger.mux
  PASS  logical_operators.mux
  PASS  match_binding_shadow.mux
  PASS  match_switch.mux
  PASS  modglobal_a.mux
  PASS  modglobal_b.mux
  PASS  modglobal_c.mux
  PASS  modglobal_d.mux
  PASS  modglobal_e.mux
  PASS  nested_generics.mux
  PASS  nested_typed_collections.mux
  PASS  optionals_results.mux
  PASS  recursivemod.mux
  PASS  references.mux
  PASS  string_length.mux
  PASS  test_all_comparisons.mux
  PASS  test_assert.mux
  PASS  test_bintree_full.mux
  PASS  test_closures.mux
  PASS  test_collection_concat.mux
  PASS  test_datetime.mux
  PASS  test_imports.mux
  PASS  test_in_operator.mux
  PASS  test_main_self_call_nested.mux
  PASS  test_main_self_call_top_level.mux
  PASS  test_math.mux
  PASS  test_module_aliased_constant_teardown.mux
  PASS  test_module_class_globals.mux
  PASS  test_module_constants.mux
  PASS  test_module_global_scoping.mux
  PASS  test_module_nonmain_imports.mux
  PASS  test_module_renamed_constant.mux
  PASS  test_module_transitive_import.mux
  PASS  test_module_wildcard_constants.mux
  PASS  test_nested_field.mux
  PASS  test_nested_functions.mux
  PASS  test_optional_is_some.mux
  PASS  test_recursive_module.mux
  PASS  test_result_is_ok_err.mux
  PASS  test_result_type_unification.mux
  PASS  test_std_dsa.mux
  PASS  test_std_http.mux
  PASS  test_std_http_server.mux
  PASS  test_std_import_duplicate_flat_then_specific.mux
  PASS  test_std_import_duplicate_repeated_wildcard.mux
  PASS  test_std_import_duplicate_root_and_module_wildcard.mux
  PASS  test_std_imports.mux
  PASS  test_std_io.mux
  PASS  test_std_math.mux
  PASS  test_std_random.mux
  PASS  test_std_sql_sqlite.mux
  PASS  test_std_sync.mux
  PASS  test_std_tcp.mux
  PASS  test_std_udp.mux
  PASS  test_to_char.mux
  PASS  test_to_list.mux
  PASS  test_traits.mux
  PASS  tuple_test.mux
  PASS  utils.mux
  PASS  value_semantics_copy_vs_ref.mux
  PASS  variables.mux
  PASS  void_lambda_test.mux
  PASS  where_clauses.mux

=== Leg A summary ===
  OK           arithmetic.mux
  OK           builtin_collection_methods.mux
  OK           class_field_defaults.mux
  OK           class_method_params.mux
  OK           closure_captured_increment.mux
  OK           collections.mux
  OK           constmath.mux
  OK           control_flow.mux
  OK           counter.mux
  OK           csv_test.mux
  OK           empty_map_literal.mux
  OK           enum_c_style.mux
  OK           enum_collection_keys.mux
  OK           enum_collection_payloads.mux
  OK           enum_copy_deep_clone.mux
  OK           enum_discard_release.mux
  OK           enum_field_deep_clone.mux
  OK           enum_in_collections.mux
  OK           enum_mixed_types.mux
  OK           enum_named_fields.mux
  OK           enum_nested_heterogeneous.mux
  OK           enum_nested_mutual.mux
  OK           enum_nested_payload.mux
  OK           enum_nested_recursive.mux
  OK           enum_nested_recursive_rc.mux
  OK           enum_reassign_rebind.mux
  OK           enum_recursive_class_field.mux
  OK           enum_return_by_value.mux
  OK           enum_ternary_deep_clone.mux
  OK           enums_classes.mux
  OK           env_get.mux
  OK           field_compound_assignment.mux
  OK           field_default_expressions.mux
  OK           forward_ref.mux
  OK           functions.mux
  OK           generic_classes.mux
  OK           generic_methods.mux
  OK           generic_params.mux
  OK           generic_static_import_context_lib.mux
  OK           generic_static_import_context_main.mux
  OK           generics.mux
  OK           global_scope.mux
  OK           if_expression_branches.mux
  OK           issue231_enum_for_match.mux
  OK           issue232_trailing_comma.mux
  OK           issue233_match_side_effects.mux
  OK           issue234_match_trailing_stmt.mux
  OK           json_nan_inf_test.mux
  OK           json_test.mux
  OK           list_negative_index.mux
  OK           logger.mux
  OK           logical_operators.mux
  OK           match_binding_shadow.mux
  OK           match_switch.mux
  OK           modglobal_a.mux
  OK           modglobal_b.mux
  OK           modglobal_c.mux
  OK           modglobal_d.mux
  OK           modglobal_e.mux
  OK           nested_generics.mux
  OK           nested_typed_collections.mux
  OK           optionals_results.mux
  OK           recursivemod.mux
  OK           references.mux
  OK           string_length.mux
  OK           test_all_comparisons.mux
  OK           test_assert.mux
  OK           test_bintree_full.mux
  OK           test_closures.mux
  OK           test_collection_concat.mux
  OK           test_datetime.mux
  OK           test_imports.mux
  OK           test_in_operator.mux
  OK           test_main_self_call_nested.mux
  OK           test_main_self_call_top_level.mux
  OK           test_math.mux
  OK           test_module_aliased_constant_teardown.mux
  OK           test_module_class_globals.mux
  OK           test_module_constants.mux
  OK           test_module_global_scoping.mux
  OK           test_module_nonmain_imports.mux
  OK           test_module_renamed_constant.mux
  OK           test_module_transitive_import.mux
  OK           test_module_wildcard_constants.mux
  OK           test_nested_field.mux
  OK           test_nested_functions.mux
  OK           test_optional_is_some.mux
  OK           test_recursive_module.mux
  OK           test_result_is_ok_err.mux
  OK           test_result_type_unification.mux
  OK           test_std_dsa.mux
  OK           test_std_http.mux
  OK           test_std_http_server.mux
  OK           test_std_import_duplicate_flat_then_specific.mux
  OK           test_std_import_duplicate_repeated_wildcard.mux
  OK           test_std_import_duplicate_root_and_module_wildcard.mux
  OK           test_std_imports.mux
  OK           test_std_io.mux
  OK           test_std_math.mux
  OK           test_std_random.mux
  OK           test_std_sql_sqlite.mux
  OK           test_std_sync.mux
  OK           test_std_tcp.mux
  OK           test_std_udp.mux
  OK           test_to_char.mux
  OK           test_to_list.mux
  OK           test_traits.mux
  OK           tuple_test.mux
  OK           utils.mux
  OK           value_semantics_copy_vs_ref.mux
  OK           variables.mux
  OK           void_lambda_test.mux
  OK           where_clauses.mux
  113 program(s), 0 failure(s)

=== Leg B: compiler under Valgrind (report-only) ===

>>> valgrind mux build test_scripts/arithmetic.mux
  clean: test_scripts/arithmetic.mux

>>> valgrind mux build test_scripts/collections.mux
  clean: test_scripts/collections.mux

>>> valgrind mux build test_scripts/test_std_dsa.mux
  clean: test_scripts/test_std_dsa.mux

=== Leg C: module-global still-reachable regression ===
  probe.mux   still reachable: 1024 bytes
  control.mux still reachable: 1024 bytes
  PASS: module globals add no still-reachable bytes over baseline.

Valgrind checks complete.

Benchmarks (report-only) - report-only

Informational only - shared runners are too noisy to gate on; full data is in the run artifacts.

xychart-beta
    title "Compile phases (median)"
    x-axis ["lex", "parse", "semantics", "codegen"]
    y-axis "microseconds"
    bar [10.65, 26.19, 80.22, 347.1]
Loading
xychart-beta
    title "Pipeline + execution (median)"
    x-axis ["pipeline", "execution"]
    y-axis "milliseconds"
    bar [0.521, 53.01]
Loading
Phase Median Samples
lex 10.7 us 113
parse 26.2 us 113
semantics 80.2 us 113
codegen 347 us 113
pipeline 521 us 113
execution 53 ms 5
Full benchmark output (last 300 lines)
  1 (5.00%) high severe
Benchmarking pipeline/test_module_renamed_constant
Benchmarking pipeline/test_module_renamed_constant: Warming up for 300.00 ms
Benchmarking pipeline/test_module_renamed_constant: Collecting 20 samples in estimated 1.0530 s (3360 iterations)
Benchmarking pipeline/test_module_renamed_constant: Analyzing
pipeline/test_module_renamed_constant
                        time:   [312.58 µs 313.31 µs 314.04 µs]
Found 1 outliers among 20 measurements (5.00%)
  1 (5.00%) high severe
Benchmarking pipeline/test_module_transitive_import
Benchmarking pipeline/test_module_transitive_import: Warming up for 300.00 ms
Benchmarking pipeline/test_module_transitive_import: Collecting 20 samples in estimated 1.0405 s (1260 iterations)
Benchmarking pipeline/test_module_transitive_import: Analyzing
pipeline/test_module_transitive_import
                        time:   [782.05 µs 782.85 µs 783.52 µs]
Found 2 outliers among 20 measurements (10.00%)
  1 (5.00%) low mild
  1 (5.00%) high severe
Benchmarking pipeline/test_module_wildcard_constants
Benchmarking pipeline/test_module_wildcard_constants: Warming up for 300.00 ms
Benchmarking pipeline/test_module_wildcard_constants: Collecting 20 samples in estimated 1.0266 s (2940 iterations)
Benchmarking pipeline/test_module_wildcard_constants: Analyzing
pipeline/test_module_wildcard_constants
                        time:   [347.05 µs 348.60 µs 351.78 µs]
Found 3 outliers among 20 measurements (15.00%)
  1 (5.00%) low mild
  1 (5.00%) high mild
  1 (5.00%) high severe
Benchmarking pipeline/test_nested_field
Benchmarking pipeline/test_nested_field: Warming up for 300.00 ms
Benchmarking pipeline/test_nested_field: Collecting 20 samples in estimated 1.0279 s (2520 iterations)
Benchmarking pipeline/test_nested_field: Analyzing
pipeline/test_nested_field
                        time:   [406.71 µs 407.31 µs 407.99 µs]
Found 2 outliers among 20 measurements (10.00%)
  2 (10.00%) high severe
Benchmarking pipeline/test_nested_functions
Benchmarking pipeline/test_nested_functions: Warming up for 300.00 ms
Benchmarking pipeline/test_nested_functions: Collecting 20 samples in estimated 1.0822 s (2730 iterations)
Benchmarking pipeline/test_nested_functions: Analyzing
pipeline/test_nested_functions
                        time:   [396.00 µs 396.98 µs 397.93 µs]
Found 1 outliers among 20 measurements (5.00%)
  1 (5.00%) high severe
Benchmarking pipeline/test_optional_is_some
Benchmarking pipeline/test_optional_is_some: Warming up for 300.00 ms
Benchmarking pipeline/test_optional_is_some: Collecting 20 samples in estimated 1.0602 s (2310 iterations)
Benchmarking pipeline/test_optional_is_some: Analyzing
pipeline/test_optional_is_some
                        time:   [457.75 µs 459.05 µs 461.11 µs]
Found 2 outliers among 20 measurements (10.00%)
  2 (10.00%) high severe
Benchmarking pipeline/test_recursive_module
Benchmarking pipeline/test_recursive_module: Warming up for 300.00 ms
Benchmarking pipeline/test_recursive_module: Collecting 20 samples in estimated 1.0136 s (2100 iterations)
Benchmarking pipeline/test_recursive_module: Analyzing
pipeline/test_recursive_module
                        time:   [481.64 µs 482.11 µs 482.80 µs]
Found 3 outliers among 20 measurements (15.00%)
  2 (10.00%) high mild
  1 (5.00%) high severe
Benchmarking pipeline/test_result_is_ok_err
Benchmarking pipeline/test_result_is_ok_err: Warming up for 300.00 ms
Benchmarking pipeline/test_result_is_ok_err: Collecting 20 samples in estimated 1.0069 s (2100 iterations)
Benchmarking pipeline/test_result_is_ok_err: Analyzing
pipeline/test_result_is_ok_err
                        time:   [479.81 µs 481.63 µs 484.47 µs]
Found 3 outliers among 20 measurements (15.00%)
  1 (5.00%) high mild
  2 (10.00%) high severe
Benchmarking pipeline/test_result_type_unification
Benchmarking pipeline/test_result_type_unification: Warming up for 300.00 ms
Benchmarking pipeline/test_result_type_unification: Collecting 20 samples in estimated 1.1536 s (1470 iterations)
Benchmarking pipeline/test_result_type_unification: Analyzing
pipeline/test_result_type_unification
                        time:   [782.38 µs 783.07 µs 783.71 µs]
Found 1 outliers among 20 measurements (5.00%)
  1 (5.00%) high severe
Benchmarking pipeline/test_std_dsa
Benchmarking pipeline/test_std_dsa: Warming up for 300.00 ms
Benchmarking pipeline/test_std_dsa: Collecting 20 samples in estimated 1.3427 s (60 iterations)
Benchmarking pipeline/test_std_dsa: Analyzing
pipeline/test_std_dsa   time:   [22.302 ms 22.323 ms 22.343 ms]
Benchmarking pipeline/test_std_http
Benchmarking pipeline/test_std_http: Warming up for 300.00 ms
Benchmarking pipeline/test_std_http: Collecting 20 samples in estimated 1.1178 s (1050 iterations)
Benchmarking pipeline/test_std_http: Analyzing
pipeline/test_std_http  time:   [1.0617 ms 1.0626 ms 1.0637 ms]
Found 3 outliers among 20 measurements (15.00%)
  2 (10.00%) high mild
  1 (5.00%) high severe
Benchmarking pipeline/test_std_http_server
Benchmarking pipeline/test_std_http_server: Warming up for 300.00 ms
Benchmarking pipeline/test_std_http_server: Collecting 20 samples in estimated 1.2970 s (840 iterations)
Benchmarking pipeline/test_std_http_server: Analyzing
pipeline/test_std_http_server
                        time:   [1.5422 ms 1.5446 ms 1.5473 ms]
Found 3 outliers among 20 measurements (15.00%)
  2 (10.00%) high mild
  1 (5.00%) high severe
Benchmarking pipeline/test_std_import_duplicate_flat_then_specific
Benchmarking pipeline/test_std_import_duplicate_flat_then_specific: Warming up for 300.00 ms
Benchmarking pipeline/test_std_import_duplicate_flat_then_specific: Collecting 20 samples in estimated 1.0496 s (3780 iterations)
Benchmarking pipeline/test_std_import_duplicate_flat_then_specific: Analyzing
pipeline/test_std_import_duplicate_flat_then_specific
                        time:   [277.64 µs 277.98 µs 278.47 µs]
Found 2 outliers among 20 measurements (10.00%)
  1 (5.00%) high mild
  1 (5.00%) high severe
Benchmarking pipeline/test_std_import_duplicate_repeated_wildcard
Benchmarking pipeline/test_std_import_duplicate_repeated_wildcard: Warming up for 300.00 ms
Benchmarking pipeline/test_std_import_duplicate_repeated_wildcard: Collecting 20 samples in estimated 1.0074 s (4620 iterations)
Benchmarking pipeline/test_std_import_duplicate_repeated_wildcard: Analyzing
pipeline/test_std_import_duplicate_repeated_wildcard
                        time:   [217.32 µs 217.63 µs 217.98 µs]
Found 1 outliers among 20 measurements (5.00%)
  1 (5.00%) high severe
Benchmarking pipeline/test_std_import_duplicate_root_and_module_wildcard
Benchmarking pipeline/test_std_import_duplicate_root_and_module_wildcard: Warming up for 300.00 ms
Benchmarking pipeline/test_std_import_duplicate_root_and_module_wildcard: Collecting 20 samples in estimated 1.0994 s (1680 iterations)
Benchmarking pipeline/test_std_import_duplicate_root_and_module_wildcard: Analyzing
pipeline/test_std_import_duplicate_root_and_module_wildcard
                        time:   [653.10 µs 653.71 µs 654.34 µs]
Found 1 outliers among 20 measurements (5.00%)
  1 (5.00%) high mild
Benchmarking pipeline/test_std_imports
Benchmarking pipeline/test_std_imports: Warming up for 300.00 ms
Benchmarking pipeline/test_std_imports: Collecting 20 samples in estimated 1.1208 s (1680 iterations)
Benchmarking pipeline/test_std_imports: Analyzing
pipeline/test_std_imports
                        time:   [662.70 µs 663.44 µs 664.38 µs]
Found 1 outliers among 20 measurements (5.00%)
  1 (5.00%) high severe
Benchmarking pipeline/test_std_io
Benchmarking pipeline/test_std_io: Warming up for 300.00 ms
Benchmarking pipeline/test_std_io: Collecting 20 samples in estimated 1.0201 s (2100 iterations)
Benchmarking pipeline/test_std_io: Analyzing
pipeline/test_std_io    time:   [484.49 µs 485.19 µs 485.92 µs]
Found 3 outliers among 20 measurements (15.00%)
  2 (10.00%) high mild
  1 (5.00%) high severe
Benchmarking pipeline/test_std_math
Benchmarking pipeline/test_std_math: Warming up for 300.00 ms
Benchmarking pipeline/test_std_math: Collecting 20 samples in estimated 1.0064 s (2520 iterations)
Benchmarking pipeline/test_std_math: Analyzing
pipeline/test_std_math  time:   [400.91 µs 409.85 µs 423.33 µs]
Found 3 outliers among 20 measurements (15.00%)
  1 (5.00%) high mild
  2 (10.00%) high severe
Benchmarking pipeline/test_std_random
Benchmarking pipeline/test_std_random: Warming up for 300.00 ms
Benchmarking pipeline/test_std_random: Collecting 20 samples in estimated 1.0531 s (1890 iterations)
Benchmarking pipeline/test_std_random: Analyzing
pipeline/test_std_random
                        time:   [555.90 µs 559.46 µs 565.59 µs]
Found 2 outliers among 20 measurements (10.00%)
  2 (10.00%) high severe
Benchmarking pipeline/test_std_sql_sqlite
Benchmarking pipeline/test_std_sql_sqlite: Warming up for 300.00 ms
Benchmarking pipeline/test_std_sql_sqlite: Collecting 20 samples in estimated 1.3535 s (630 iterations)
Benchmarking pipeline/test_std_sql_sqlite: Analyzing
pipeline/test_std_sql_sqlite
                        time:   [2.1430 ms 2.1448 ms 2.1467 ms]
Found 1 outliers among 20 measurements (5.00%)
  1 (5.00%) high mild
Benchmarking pipeline/test_std_sync
Benchmarking pipeline/test_std_sync: Warming up for 300.00 ms
Benchmarking pipeline/test_std_sync: Collecting 20 samples in estimated 1.0398 s (1050 iterations)
Benchmarking pipeline/test_std_sync: Analyzing
pipeline/test_std_sync  time:   [986.14 µs 987.61 µs 989.32 µs]
Found 2 outliers among 20 measurements (10.00%)
  1 (5.00%) high mild
  1 (5.00%) high severe
Benchmarking pipeline/test_std_tcp
Benchmarking pipeline/test_std_tcp: Warming up for 300.00 ms
Benchmarking pipeline/test_std_tcp: Collecting 20 samples in estimated 1.0267 s (3150 iterations)
Benchmarking pipeline/test_std_tcp: Analyzing
pipeline/test_std_tcp   time:   [326.07 µs 326.54 µs 326.85 µs]
Found 2 outliers among 20 measurements (10.00%)
  2 (10.00%) high mild
Benchmarking pipeline/test_std_udp
Benchmarking pipeline/test_std_udp: Warming up for 300.00 ms
Benchmarking pipeline/test_std_udp: Collecting 20 samples in estimated 1.0886 s (1470 iterations)
Benchmarking pipeline/test_std_udp: Analyzing
pipeline/test_std_udp   time:   [737.82 µs 738.46 µs 739.14 µs]
Found 3 outliers among 20 measurements (15.00%)
  1 (5.00%) high mild
  2 (10.00%) high severe
Benchmarking pipeline/test_to_char
Benchmarking pipeline/test_to_char: Warming up for 300.00 ms
Benchmarking pipeline/test_to_char: Collecting 20 samples in estimated 1.0644 s (2100 iterations)
Benchmarking pipeline/test_to_char: Analyzing
pipeline/test_to_char   time:   [506.01 µs 506.39 µs 506.82 µs]
Found 3 outliers among 20 measurements (15.00%)
  1 (5.00%) low mild
  1 (5.00%) high mild
  1 (5.00%) high severe
Benchmarking pipeline/test_to_list
Benchmarking pipeline/test_to_list: Warming up for 300.00 ms
Benchmarking pipeline/test_to_list: Collecting 20 samples in estimated 1.0137 s (3570 iterations)
Benchmarking pipeline/test_to_list: Analyzing
pipeline/test_to_list   time:   [283.25 µs 283.70 µs 284.22 µs]
Found 3 outliers among 20 measurements (15.00%)
  2 (10.00%) high mild
  1 (5.00%) high severe
Benchmarking pipeline/test_traits
Benchmarking pipeline/test_traits: Warming up for 300.00 ms
Benchmarking pipeline/test_traits: Collecting 20 samples in estimated 1.0543 s (1890 iterations)
Benchmarking pipeline/test_traits: Analyzing
pipeline/test_traits    time:   [556.75 µs 557.33 µs 558.03 µs]
Found 1 outliers among 20 measurements (5.00%)
  1 (5.00%) high severe
Benchmarking pipeline/tuple_test
Benchmarking pipeline/tuple_test: Warming up for 300.00 ms
Benchmarking pipeline/tuple_test: Collecting 20 samples in estimated 1.2667 s (630 iterations)
Benchmarking pipeline/tuple_test: Analyzing
pipeline/tuple_test     time:   [2.0094 ms 2.0116 ms 2.0134 ms]
Found 1 outliers among 20 measurements (5.00%)
  1 (5.00%) high mild
Benchmarking pipeline/utils
Benchmarking pipeline/utils: Warming up for 300.00 ms
Benchmarking pipeline/utils: Collecting 20 samples in estimated 1.0101 s (5040 iterations)
Benchmarking pipeline/utils: Analyzing
pipeline/utils          time:   [200.23 µs 200.75 µs 201.17 µs]
Found 2 outliers among 20 measurements (10.00%)
  1 (5.00%) high mild
  1 (5.00%) high severe
Benchmarking pipeline/value_semantics_copy_vs_ref
Benchmarking pipeline/value_semantics_copy_vs_ref: Warming up for 300.00 ms
Benchmarking pipeline/value_semantics_copy_vs_ref: Collecting 20 samples in estimated 1.0150 s (1890 iterations)
Benchmarking pipeline/value_semantics_copy_vs_ref: Analyzing
pipeline/value_semantics_copy_vs_ref
                        time:   [538.59 µs 549.86 µs 564.06 µs]
Found 4 outliers among 20 measurements (20.00%)
  1 (5.00%) high mild
  3 (15.00%) high severe
Benchmarking pipeline/variables
Benchmarking pipeline/variables: Warming up for 300.00 ms
Benchmarking pipeline/variables: Collecting 20 samples in estimated 1.0501 s (3360 iterations)
Benchmarking pipeline/variables: Analyzing
pipeline/variables      time:   [311.10 µs 311.41 µs 311.75 µs]
Found 2 outliers among 20 measurements (10.00%)
  1 (5.00%) high mild
  1 (5.00%) high severe
Benchmarking pipeline/void_lambda_test
Benchmarking pipeline/void_lambda_test: Warming up for 300.00 ms
Benchmarking pipeline/void_lambda_test: Collecting 20 samples in estimated 1.0361 s (4200 iterations)
Benchmarking pipeline/void_lambda_test: Analyzing
pipeline/void_lambda_test
                        time:   [246.72 µs 246.89 µs 247.14 µs]
Found 5 outliers among 20 measurements (25.00%)
  2 (10.00%) low mild
  1 (5.00%) high mild
  2 (10.00%) high severe
Benchmarking pipeline/where_clauses
Benchmarking pipeline/where_clauses: Warming up for 300.00 ms
Benchmarking pipeline/where_clauses: Collecting 20 samples in estimated 1.1595 s (1260 iterations)
Benchmarking pipeline/where_clauses: Analyzing
pipeline/where_clauses  time:   [918.87 µs 919.41 µs 920.09 µs]
Found 4 outliers among 20 measurements (20.00%)
  1 (5.00%) low mild
  2 (10.00%) high mild
  1 (5.00%) high severe

�[1m�[92m     Running�[0m benches/execution.rs (target/release/deps/execution-5585e336235457dc)
Gnuplot not found, using plotters backend
Benchmarking execution/list_churn
Benchmarking execution/list_churn: Warming up for 200.00 ms
Benchmarking execution/list_churn: Collecting 10 samples in estimated 2.1011 s (935 iterations)
Benchmarking execution/list_churn: Analyzing
execution/list_churn    time:   [2.2492 ms 2.2733 ms 2.3471 ms]
Found 1 outliers among 10 measurements (10.00%)
  1 (10.00%) high severe
Benchmarking execution/map_churn
Benchmarking execution/map_churn: Warming up for 200.00 ms
Benchmarking execution/map_churn: Collecting 10 samples in estimated 2.1772 s (440 iterations)
Benchmarking execution/map_churn: Analyzing
execution/map_churn     time:   [4.8145 ms 4.8292 ms 4.8388 ms]
Benchmarking execution/recursion
Benchmarking execution/recursion: Warming up for 200.00 ms
Benchmarking execution/recursion: Collecting 10 samples in estimated 3.7781 s (20 iterations)
Benchmarking execution/recursion: Analyzing
execution/recursion     time:   [188.90 ms 189.48 ms 190.24 ms]
Found 1 outliers among 10 measurements (10.00%)
  1 (10.00%) high severe
Benchmarking execution/set_churn
Benchmarking execution/set_churn: Warming up for 200.00 ms

Warning: Unable to complete 10 samples in 2.0s. You may wish to increase target time to 5.9s.
Benchmarking execution/set_churn: Collecting 10 samples in estimated 5.8678 s (10 iterations)
Benchmarking execution/set_churn: Analyzing
execution/set_churn     time:   [585.74 ms 588.51 ms 591.13 ms]
Benchmarking execution/string_build
Benchmarking execution/string_build: Warming up for 200.00 ms

Warning: Unable to complete 10 samples in 2.0s. You may wish to increase target time to 2.9s or enable flat sampling.
Benchmarking execution/string_build: Collecting 10 samples in estimated 2.9143 s (55 iterations)
Benchmarking execution/string_build: Analyzing
execution/string_build  time:   [52.932 ms 53.000 ms 53.111 ms]

Commit 3ef7ce0ada05db9556b5dd12eb04be0878ad674d - full run

…e new helpers

Three items from the first CI round on #317.

Sonar githubactions:S8549 (the only new issue, and what dropped the
security rating to C): the rc-leak-check runtime was built without
`--locked`. That step runs in a clean checkout of mux-runtime with its
committed lock, so resolving fresh would build something the repo never
pinned. Added `--locked`.

Greptile flagged the new jobs for using the movable `actions/checkout@v4`
while the release workflow pins a SHA. Its premise is right but its
framing was not: every checkout in build.yml used `@v4`, so pinning only
the two new jobs would have left two SHAs among nine tags. Pinned all 19
first-party action references in the file to the commits `v4` currently
resolves to, keeping the tag in a trailing comment for readability.

Coverage on new code was 77.4% against an 80% gate. I removed eight tests
with the source-build path and added none back, so this covers the
helpers that replaced them: dir_holding_runtime_lib returning the
directory it was asked about rather than the found file's parent, and the
release install layout - the bin/ plus ../lib/ shape whose library was
present but unreachable in v0.6.0.
@sonarqubecloud

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown

Valgrind Memory Checks - PASSED

pie showData
    title Leg A: compiled programs under Valgrind (113 total)
    "Clean" : 113
    "Leaking" : 0
Loading
Full valgrind output (last 300 lines)
�[1m�[92m   Compiling�[0m futures-channel v0.3.32
�[1m�[92m   Compiling�[0m webpki-roots v1.0.7
�[1m�[92m   Compiling�[0m async-trait v0.1.89
�[1m�[92m   Compiling�[0m derive_utils v0.15.1
�[1m�[92m   Compiling�[0m btoi v0.5.0
�[1m�[92m   Compiling�[0m phf_shared v0.11.3
�[1m�[92m   Compiling�[0m whoami v2.1.2
�[1m�[92m   Compiling�[0m mysql v28.0.0
�[1m�[92m   Compiling�[0m httparse v1.10.1
�[1m�[92m   Compiling�[0m colorchoice v1.0.5
�[1m�[92m   Compiling�[0m uuid v1.23.1
�[1m�[92m   Compiling�[0m subtle v2.6.1
�[1m�[92m   Compiling�[0m anstyle-query v1.1.5
�[1m�[92m   Compiling�[0m is_terminal_polyfill v1.70.2
�[1m�[92m   Compiling�[0m anstyle v1.0.14
�[1m�[92m   Compiling�[0m saturating v0.1.0
�[1m�[92m   Compiling�[0m paste v1.0.15
�[1m�[92m   Compiling�[0m anstream v1.0.0
�[1m�[92m   Compiling�[0m tokio-postgres v0.7.18
�[1m�[92m   Compiling�[0m io-enum v1.2.1
�[1m�[92m   Compiling�[0m phf_generator v0.11.3
�[1m�[92m   Compiling�[0m webpki-roots v0.26.11
�[1m�[92m   Compiling�[0m hashlink v0.9.1
�[1m�[92m   Compiling�[0m crossbeam-queue v0.3.12
�[1m�[92m   Compiling�[0m pem v3.0.6
�[1m�[92m   Compiling�[0m csv-core v0.1.13
�[1m�[92m   Compiling�[0m lru v0.16.4
�[1m�[92m   Compiling�[0m fallible-iterator v0.3.0
�[1m�[92m   Compiling�[0m inkwell v0.9.0
�[1m�[92m   Compiling�[0m ryu v1.0.23
�[1m�[92m   Compiling�[0m bufstream v0.1.4
�[1m�[92m   Compiling�[0m twox-hash v2.1.2
�[1m�[92m   Compiling�[0m clap_lex v1.1.0
�[1m�[92m   Compiling�[0m fallible-streaming-iterator v0.1.9
�[1m�[92m   Compiling�[0m iana-time-zone v0.1.65
�[1m�[92m   Compiling�[0m rusqlite v0.31.0
�[1m�[92m   Compiling�[0m chrono v0.4.44
�[1m�[92m   Compiling�[0m ureq v2.12.1
�[1m�[92m   Compiling�[0m clap_builder v4.6.0
�[1m�[92m   Compiling�[0m csv v1.4.0
�[1m�[92m   Compiling�[0m postgres v0.19.13
�[1m�[92m   Compiling�[0m mux-lang v0.6.0 (/home/runner/work/mux-compiler/mux-compiler/mux-compiler)
�[1m�[92m   Compiling�[0m phf_macros v0.11.3
�[1m�[92m   Compiling�[0m clap_derive v4.6.1
�[1m�[92m   Compiling�[0m inkwell_internals v0.14.0
�[1m�[92m   Compiling�[0m ordered-float v4.6.0
�[1m�[92m   Compiling�[0m phf v0.11.3
�[1m�[92m   Compiling�[0m unicode-width v0.1.14
�[1m�[92m   Compiling�[0m clap v4.6.1
�[1m�[92m   Compiling�[0m mux-runtime v0.5.0 (https://github.com/muxlang/mux-runtime?branch=main#4e2dc14b)
�[1m�[92m    Finished�[0m `dev` profile [unoptimized + debuginfo] target(s) in 48.84s

=== Leg A: compiled programs under Valgrind ===
  PASS  arithmetic.mux
  PASS  builtin_collection_methods.mux
  PASS  class_field_defaults.mux
  PASS  class_method_params.mux
  PASS  closure_captured_increment.mux
  PASS  collections.mux
  PASS  constmath.mux
  PASS  control_flow.mux
  PASS  counter.mux
  PASS  csv_test.mux
  PASS  empty_map_literal.mux
  PASS  enum_c_style.mux
  PASS  enum_collection_keys.mux
  PASS  enum_collection_payloads.mux
  PASS  enum_copy_deep_clone.mux
  PASS  enum_discard_release.mux
  PASS  enum_field_deep_clone.mux
  PASS  enum_in_collections.mux
  PASS  enum_mixed_types.mux
  PASS  enum_named_fields.mux
  PASS  enum_nested_heterogeneous.mux
  PASS  enum_nested_mutual.mux
  PASS  enum_nested_payload.mux
  PASS  enum_nested_recursive.mux
  PASS  enum_nested_recursive_rc.mux
  PASS  enum_reassign_rebind.mux
  PASS  enum_recursive_class_field.mux
  PASS  enum_return_by_value.mux
  PASS  enum_ternary_deep_clone.mux
  PASS  enums_classes.mux
  PASS  env_get.mux
  PASS  field_compound_assignment.mux
  PASS  field_default_expressions.mux
  PASS  forward_ref.mux
  PASS  functions.mux
  PASS  generic_classes.mux
  PASS  generic_methods.mux
  PASS  generic_params.mux
  PASS  generic_static_import_context_lib.mux
  PASS  generic_static_import_context_main.mux
  PASS  generics.mux
  PASS  global_scope.mux
  PASS  if_expression_branches.mux
  PASS  issue231_enum_for_match.mux
  PASS  issue232_trailing_comma.mux
  PASS  issue233_match_side_effects.mux
  PASS  issue234_match_trailing_stmt.mux
  PASS  json_nan_inf_test.mux
  PASS  json_test.mux
  PASS  list_negative_index.mux
  PASS  logger.mux
  PASS  logical_operators.mux
  PASS  match_binding_shadow.mux
  PASS  match_switch.mux
  PASS  modglobal_a.mux
  PASS  modglobal_b.mux
  PASS  modglobal_c.mux
  PASS  modglobal_d.mux
  PASS  modglobal_e.mux
  PASS  nested_generics.mux
  PASS  nested_typed_collections.mux
  PASS  optionals_results.mux
  PASS  recursivemod.mux
  PASS  references.mux
  PASS  string_length.mux
  PASS  test_all_comparisons.mux
  PASS  test_assert.mux
  PASS  test_bintree_full.mux
  PASS  test_closures.mux
  PASS  test_collection_concat.mux
  PASS  test_datetime.mux
  PASS  test_imports.mux
  PASS  test_in_operator.mux
  PASS  test_main_self_call_nested.mux
  PASS  test_main_self_call_top_level.mux
  PASS  test_math.mux
  PASS  test_module_aliased_constant_teardown.mux
  PASS  test_module_class_globals.mux
  PASS  test_module_constants.mux
  PASS  test_module_global_scoping.mux
  PASS  test_module_nonmain_imports.mux
  PASS  test_module_renamed_constant.mux
  PASS  test_module_transitive_import.mux
  PASS  test_module_wildcard_constants.mux
  PASS  test_nested_field.mux
  PASS  test_nested_functions.mux
  PASS  test_optional_is_some.mux
  PASS  test_recursive_module.mux
  PASS  test_result_is_ok_err.mux
  PASS  test_result_type_unification.mux
  PASS  test_std_dsa.mux
  PASS  test_std_http.mux
  PASS  test_std_http_server.mux
  PASS  test_std_import_duplicate_flat_then_specific.mux
  PASS  test_std_import_duplicate_repeated_wildcard.mux
  PASS  test_std_import_duplicate_root_and_module_wildcard.mux
  PASS  test_std_imports.mux
  PASS  test_std_io.mux
  PASS  test_std_math.mux
  PASS  test_std_random.mux
  PASS  test_std_sql_sqlite.mux
  PASS  test_std_sync.mux
  PASS  test_std_tcp.mux
  PASS  test_std_udp.mux
  PASS  test_to_char.mux
  PASS  test_to_list.mux
  PASS  test_traits.mux
  PASS  tuple_test.mux
  PASS  utils.mux
  PASS  value_semantics_copy_vs_ref.mux
  PASS  variables.mux
  PASS  void_lambda_test.mux
  PASS  where_clauses.mux

=== Leg A summary ===
  OK           arithmetic.mux
  OK           builtin_collection_methods.mux
  OK           class_field_defaults.mux
  OK           class_method_params.mux
  OK           closure_captured_increment.mux
  OK           collections.mux
  OK           constmath.mux
  OK           control_flow.mux
  OK           counter.mux
  OK           csv_test.mux
  OK           empty_map_literal.mux
  OK           enum_c_style.mux
  OK           enum_collection_keys.mux
  OK           enum_collection_payloads.mux
  OK           enum_copy_deep_clone.mux
  OK           enum_discard_release.mux
  OK           enum_field_deep_clone.mux
  OK           enum_in_collections.mux
  OK           enum_mixed_types.mux
  OK           enum_named_fields.mux
  OK           enum_nested_heterogeneous.mux
  OK           enum_nested_mutual.mux
  OK           enum_nested_payload.mux
  OK           enum_nested_recursive.mux
  OK           enum_nested_recursive_rc.mux
  OK           enum_reassign_rebind.mux
  OK           enum_recursive_class_field.mux
  OK           enum_return_by_value.mux
  OK           enum_ternary_deep_clone.mux
  OK           enums_classes.mux
  OK           env_get.mux
  OK           field_compound_assignment.mux
  OK           field_default_expressions.mux
  OK           forward_ref.mux
  OK           functions.mux
  OK           generic_classes.mux
  OK           generic_methods.mux
  OK           generic_params.mux
  OK           generic_static_import_context_lib.mux
  OK           generic_static_import_context_main.mux
  OK           generics.mux
  OK           global_scope.mux
  OK           if_expression_branches.mux
  OK           issue231_enum_for_match.mux
  OK           issue232_trailing_comma.mux
  OK           issue233_match_side_effects.mux
  OK           issue234_match_trailing_stmt.mux
  OK           json_nan_inf_test.mux
  OK           json_test.mux
  OK           list_negative_index.mux
  OK           logger.mux
  OK           logical_operators.mux
  OK           match_binding_shadow.mux
  OK           match_switch.mux
  OK           modglobal_a.mux
  OK           modglobal_b.mux
  OK           modglobal_c.mux
  OK           modglobal_d.mux
  OK           modglobal_e.mux
  OK           nested_generics.mux
  OK           nested_typed_collections.mux
  OK           optionals_results.mux
  OK           recursivemod.mux
  OK           references.mux
  OK           string_length.mux
  OK           test_all_comparisons.mux
  OK           test_assert.mux
  OK           test_bintree_full.mux
  OK           test_closures.mux
  OK           test_collection_concat.mux
  OK           test_datetime.mux
  OK           test_imports.mux
  OK           test_in_operator.mux
  OK           test_main_self_call_nested.mux
  OK           test_main_self_call_top_level.mux
  OK           test_math.mux
  OK           test_module_aliased_constant_teardown.mux
  OK           test_module_class_globals.mux
  OK           test_module_constants.mux
  OK           test_module_global_scoping.mux
  OK           test_module_nonmain_imports.mux
  OK           test_module_renamed_constant.mux
  OK           test_module_transitive_import.mux
  OK           test_module_wildcard_constants.mux
  OK           test_nested_field.mux
  OK           test_nested_functions.mux
  OK           test_optional_is_some.mux
  OK           test_recursive_module.mux
  OK           test_result_is_ok_err.mux
  OK           test_result_type_unification.mux
  OK           test_std_dsa.mux
  OK           test_std_http.mux
  OK           test_std_http_server.mux
  OK           test_std_import_duplicate_flat_then_specific.mux
  OK           test_std_import_duplicate_repeated_wildcard.mux
  OK           test_std_import_duplicate_root_and_module_wildcard.mux
  OK           test_std_imports.mux
  OK           test_std_io.mux
  OK           test_std_math.mux
  OK           test_std_random.mux
  OK           test_std_sql_sqlite.mux
  OK           test_std_sync.mux
  OK           test_std_tcp.mux
  OK           test_std_udp.mux
  OK           test_to_char.mux
  OK           test_to_list.mux
  OK           test_traits.mux
  OK           tuple_test.mux
  OK           utils.mux
  OK           value_semantics_copy_vs_ref.mux
  OK           variables.mux
  OK           void_lambda_test.mux
  OK           where_clauses.mux
  113 program(s), 0 failure(s)

=== Leg B: compiler under Valgrind (report-only) ===

>>> valgrind mux build test_scripts/arithmetic.mux
  clean: test_scripts/arithmetic.mux

>>> valgrind mux build test_scripts/collections.mux
  clean: test_scripts/collections.mux

>>> valgrind mux build test_scripts/test_std_dsa.mux
  clean: test_scripts/test_std_dsa.mux

=== Leg C: module-global still-reachable regression ===
  probe.mux   still reachable: 1024 bytes
  control.mux still reachable: 1024 bytes
  PASS: module globals add no still-reachable bytes over baseline.

Valgrind checks complete.

Benchmarks (report-only) - report-only

Informational only - shared runners are too noisy to gate on; full data is in the run artifacts.

xychart-beta
    title "Compile phases (median)"
    x-axis ["lex", "parse", "semantics", "codegen"]
    y-axis "microseconds"
    bar [13.67, 30.66, 101.7, 447]
Loading
xychart-beta
    title "Pipeline + execution (median)"
    x-axis ["pipeline", "execution"]
    y-axis "milliseconds"
    bar [0.6637, 68.13]
Loading
Phase Median Samples
lex 13.7 us 113
parse 30.7 us 113
semantics 102 us 113
codegen 447 us 113
pipeline 664 us 113
execution 68.1 ms 5
Full benchmark output (last 300 lines)
                        time:   [1.2113 ms 1.2120 ms 1.2130 ms]
Found 3 outliers among 20 measurements (15.00%)
  1 (5.00%) high mild
  2 (10.00%) high severe
Benchmarking pipeline/test_module_renamed_constant
Benchmarking pipeline/test_module_renamed_constant: Warming up for 300.00 ms
Benchmarking pipeline/test_module_renamed_constant: Collecting 20 samples in estimated 1.0122 s (2520 iterations)
Benchmarking pipeline/test_module_renamed_constant: Analyzing
pipeline/test_module_renamed_constant
                        time:   [401.22 µs 401.68 µs 402.12 µs]
Found 1 outliers among 20 measurements (5.00%)
  1 (5.00%) high mild
Benchmarking pipeline/test_module_transitive_import
Benchmarking pipeline/test_module_transitive_import: Warming up for 300.00 ms
Benchmarking pipeline/test_module_transitive_import: Collecting 20 samples in estimated 1.0635 s (1050 iterations)
Benchmarking pipeline/test_module_transitive_import: Analyzing
pipeline/test_module_transitive_import
                        time:   [1.0113 ms 1.0123 ms 1.0137 ms]
Found 3 outliers among 20 measurements (15.00%)
  1 (5.00%) low mild
  1 (5.00%) high mild
  1 (5.00%) high severe
Benchmarking pipeline/test_module_wildcard_constants
Benchmarking pipeline/test_module_wildcard_constants: Warming up for 300.00 ms
Benchmarking pipeline/test_module_wildcard_constants: Collecting 20 samples in estimated 1.0281 s (2310 iterations)
Benchmarking pipeline/test_module_wildcard_constants: Analyzing
pipeline/test_module_wildcard_constants
                        time:   [443.93 µs 444.42 µs 444.85 µs]
Found 1 outliers among 20 measurements (5.00%)
  1 (5.00%) high severe
Benchmarking pipeline/test_nested_field
Benchmarking pipeline/test_nested_field: Warming up for 300.00 ms
Benchmarking pipeline/test_nested_field: Collecting 20 samples in estimated 1.0928 s (2100 iterations)
Benchmarking pipeline/test_nested_field: Analyzing
pipeline/test_nested_field
                        time:   [520.39 µs 521.17 µs 521.96 µs]
Found 3 outliers among 20 measurements (15.00%)
  2 (10.00%) high mild
  1 (5.00%) high severe
Benchmarking pipeline/test_nested_functions
Benchmarking pipeline/test_nested_functions: Warming up for 300.00 ms
Benchmarking pipeline/test_nested_functions: Collecting 20 samples in estimated 1.0722 s (2100 iterations)
Benchmarking pipeline/test_nested_functions: Analyzing
pipeline/test_nested_functions
                        time:   [509.41 µs 510.38 µs 511.49 µs]
Benchmarking pipeline/test_optional_is_some
Benchmarking pipeline/test_optional_is_some: Warming up for 300.00 ms
Benchmarking pipeline/test_optional_is_some: Collecting 20 samples in estimated 1.1137 s (1890 iterations)
Benchmarking pipeline/test_optional_is_some: Analyzing
pipeline/test_optional_is_some
                        time:   [586.29 µs 586.80 µs 587.37 µs]
Found 1 outliers among 20 measurements (5.00%)
  1 (5.00%) high severe
Benchmarking pipeline/test_recursive_module
Benchmarking pipeline/test_recursive_module: Warming up for 300.00 ms
Benchmarking pipeline/test_recursive_module: Collecting 20 samples in estimated 1.0373 s (1680 iterations)
Benchmarking pipeline/test_recursive_module: Analyzing
pipeline/test_recursive_module
                        time:   [615.39 µs 616.22 µs 617.33 µs]
Found 3 outliers among 20 measurements (15.00%)
  2 (10.00%) high mild
  1 (5.00%) high severe
Benchmarking pipeline/test_result_is_ok_err
Benchmarking pipeline/test_result_is_ok_err: Warming up for 300.00 ms
Benchmarking pipeline/test_result_is_ok_err: Collecting 20 samples in estimated 1.0542 s (1680 iterations)
Benchmarking pipeline/test_result_is_ok_err: Analyzing
pipeline/test_result_is_ok_err
                        time:   [614.05 µs 614.77 µs 615.73 µs]
Found 1 outliers among 20 measurements (5.00%)
  1 (5.00%) high severe
Benchmarking pipeline/test_result_type_unification
Benchmarking pipeline/test_result_type_unification: Warming up for 300.00 ms
Benchmarking pipeline/test_result_type_unification: Collecting 20 samples in estimated 1.0596 s (1050 iterations)
Benchmarking pipeline/test_result_type_unification: Analyzing
pipeline/test_result_type_unification
                        time:   [1.0065 ms 1.0093 ms 1.0146 ms]
Found 4 outliers among 20 measurements (20.00%)
  1 (5.00%) low mild
  3 (15.00%) high severe
Benchmarking pipeline/test_std_dsa
Benchmarking pipeline/test_std_dsa: Warming up for 300.00 ms
Benchmarking pipeline/test_std_dsa: Collecting 20 samples in estimated 1.1522 s (40 iterations)
Benchmarking pipeline/test_std_dsa: Analyzing
pipeline/test_std_dsa   time:   [28.702 ms 28.757 ms 28.809 ms]
Found 1 outliers among 20 measurements (5.00%)
  1 (5.00%) low mild
Benchmarking pipeline/test_std_http
Benchmarking pipeline/test_std_http: Warming up for 300.00 ms
Benchmarking pipeline/test_std_http: Collecting 20 samples in estimated 1.1509 s (840 iterations)
Benchmarking pipeline/test_std_http: Analyzing
pipeline/test_std_http  time:   [1.3648 ms 1.3677 ms 1.3720 ms]
Found 2 outliers among 20 measurements (10.00%)
  1 (5.00%) high mild
  1 (5.00%) high severe
Benchmarking pipeline/test_std_http_server
Benchmarking pipeline/test_std_http_server: Warming up for 300.00 ms
Benchmarking pipeline/test_std_http_server: Collecting 20 samples in estimated 1.2540 s (630 iterations)
Benchmarking pipeline/test_std_http_server: Analyzing
pipeline/test_std_http_server
                        time:   [1.9854 ms 1.9885 ms 1.9913 ms]
Found 1 outliers among 20 measurements (5.00%)
  1 (5.00%) high severe
Benchmarking pipeline/test_std_import_duplicate_flat_then_specific
Benchmarking pipeline/test_std_import_duplicate_flat_then_specific: Warming up for 300.00 ms
Benchmarking pipeline/test_std_import_duplicate_flat_then_specific: Collecting 20 samples in estimated 1.0499 s (2940 iterations)
Benchmarking pipeline/test_std_import_duplicate_flat_then_specific: Analyzing
pipeline/test_std_import_duplicate_flat_then_specific
                        time:   [354.84 µs 355.20 µs 355.64 µs]
Found 2 outliers among 20 measurements (10.00%)
  2 (10.00%) high severe
Benchmarking pipeline/test_std_import_duplicate_repeated_wildcard
Benchmarking pipeline/test_std_import_duplicate_repeated_wildcard: Warming up for 300.00 ms
Benchmarking pipeline/test_std_import_duplicate_repeated_wildcard: Collecting 20 samples in estimated 1.0004 s (3570 iterations)
Benchmarking pipeline/test_std_import_duplicate_repeated_wildcard: Analyzing
pipeline/test_std_import_duplicate_repeated_wildcard
                        time:   [279.52 µs 280.73 µs 282.34 µs]
Found 2 outliers among 20 measurements (10.00%)
  1 (5.00%) high mild
  1 (5.00%) high severe
Benchmarking pipeline/test_std_import_duplicate_root_and_module_wildcard
Benchmarking pipeline/test_std_import_duplicate_root_and_module_wildcard: Warming up for 300.00 ms
Benchmarking pipeline/test_std_import_duplicate_root_and_module_wildcard: Collecting 20 samples in estimated 1.0649 s (1260 iterations)
Benchmarking pipeline/test_std_import_duplicate_root_and_module_wildcard: Analyzing
pipeline/test_std_import_duplicate_root_and_module_wildcard
                        time:   [841.57 µs 842.05 µs 842.53 µs]
Found 1 outliers among 20 measurements (5.00%)
  1 (5.00%) high severe
Benchmarking pipeline/test_std_imports
Benchmarking pipeline/test_std_imports: Warming up for 300.00 ms
Benchmarking pipeline/test_std_imports: Collecting 20 samples in estimated 1.0808 s (1260 iterations)
Benchmarking pipeline/test_std_imports: Analyzing
pipeline/test_std_imports
                        time:   [855.28 µs 855.96 µs 856.94 µs]
Found 2 outliers among 20 measurements (10.00%)
  1 (5.00%) low mild
  1 (5.00%) high severe
Benchmarking pipeline/test_std_io
Benchmarking pipeline/test_std_io: Warming up for 300.00 ms
Benchmarking pipeline/test_std_io: Collecting 20 samples in estimated 1.0501 s (1680 iterations)
Benchmarking pipeline/test_std_io: Analyzing
pipeline/test_std_io    time:   [624.13 µs 624.95 µs 625.66 µs]
Found 1 outliers among 20 measurements (5.00%)
  1 (5.00%) high severe
Benchmarking pipeline/test_std_math
Benchmarking pipeline/test_std_math: Warming up for 300.00 ms
Benchmarking pipeline/test_std_math: Collecting 20 samples in estimated 1.0888 s (2100 iterations)
Benchmarking pipeline/test_std_math: Analyzing
pipeline/test_std_math  time:   [517.41 µs 518.05 µs 518.93 µs]
Found 2 outliers among 20 measurements (10.00%)
  1 (5.00%) high mild
  1 (5.00%) high severe
Benchmarking pipeline/test_std_random
Benchmarking pipeline/test_std_random: Warming up for 300.00 ms
Benchmarking pipeline/test_std_random: Collecting 20 samples in estimated 1.0463 s (1470 iterations)
Benchmarking pipeline/test_std_random: Analyzing
pipeline/test_std_random
                        time:   [708.87 µs 709.85 µs 710.78 µs]
Found 2 outliers among 20 measurements (10.00%)
  1 (5.00%) high mild
  1 (5.00%) high severe
Benchmarking pipeline/test_std_sql_sqlite
Benchmarking pipeline/test_std_sql_sqlite: Warming up for 300.00 ms
Benchmarking pipeline/test_std_sql_sqlite: Collecting 20 samples in estimated 1.1602 s (420 iterations)
Benchmarking pipeline/test_std_sql_sqlite: Analyzing
pipeline/test_std_sql_sqlite
                        time:   [2.7526 ms 2.7550 ms 2.7577 ms]
Found 2 outliers among 20 measurements (10.00%)
  1 (5.00%) low mild
  1 (5.00%) high severe
Benchmarking pipeline/test_std_sync
Benchmarking pipeline/test_std_sync: Warming up for 300.00 ms
Benchmarking pipeline/test_std_sync: Collecting 20 samples in estimated 1.0711 s (840 iterations)
Benchmarking pipeline/test_std_sync: Analyzing
pipeline/test_std_sync  time:   [1.2706 ms 1.2720 ms 1.2736 ms]
Found 2 outliers among 20 measurements (10.00%)
  1 (5.00%) high mild
  1 (5.00%) high severe
Benchmarking pipeline/test_std_tcp
Benchmarking pipeline/test_std_tcp: Warming up for 300.00 ms
Benchmarking pipeline/test_std_tcp: Collecting 20 samples in estimated 1.0642 s (2520 iterations)
Benchmarking pipeline/test_std_tcp: Analyzing
pipeline/test_std_tcp   time:   [422.83 µs 423.40 µs 424.03 µs]
Found 2 outliers among 20 measurements (10.00%)
  2 (10.00%) high severe
Benchmarking pipeline/test_std_udp
Benchmarking pipeline/test_std_udp: Warming up for 300.00 ms
Benchmarking pipeline/test_std_udp: Collecting 20 samples in estimated 1.1993 s (1260 iterations)
Benchmarking pipeline/test_std_udp: Analyzing
pipeline/test_std_udp   time:   [949.15 µs 950.32 µs 951.57 µs]
Found 2 outliers among 20 measurements (10.00%)
  1 (5.00%) low mild
  1 (5.00%) high severe
Benchmarking pipeline/test_to_char
Benchmarking pipeline/test_to_char: Warming up for 300.00 ms
Benchmarking pipeline/test_to_char: Collecting 20 samples in estimated 1.1033 s (1680 iterations)
Benchmarking pipeline/test_to_char: Analyzing
pipeline/test_to_char   time:   [653.63 µs 654.61 µs 655.46 µs]
Found 1 outliers among 20 measurements (5.00%)
  1 (5.00%) high severe
Benchmarking pipeline/test_to_list
Benchmarking pipeline/test_to_list: Warming up for 300.00 ms
Benchmarking pipeline/test_to_list: Collecting 20 samples in estimated 1.0029 s (2730 iterations)
Benchmarking pipeline/test_to_list: Analyzing
pipeline/test_to_list   time:   [366.38 µs 366.96 µs 367.62 µs]
Found 2 outliers among 20 measurements (10.00%)
  1 (5.00%) low mild
  1 (5.00%) high severe
Benchmarking pipeline/test_traits
Benchmarking pipeline/test_traits: Warming up for 300.00 ms
Benchmarking pipeline/test_traits: Collecting 20 samples in estimated 1.0536 s (1470 iterations)
Benchmarking pipeline/test_traits: Analyzing
pipeline/test_traits    time:   [716.84 µs 717.39 µs 718.02 µs]
Found 1 outliers among 20 measurements (5.00%)
  1 (5.00%) high severe
Benchmarking pipeline/tuple_test
Benchmarking pipeline/tuple_test: Warming up for 300.00 ms
Benchmarking pipeline/tuple_test: Collecting 20 samples in estimated 1.0860 s (420 iterations)
Benchmarking pipeline/tuple_test: Analyzing
pipeline/tuple_test     time:   [2.5768 ms 2.5828 ms 2.5910 ms]
Found 1 outliers among 20 measurements (5.00%)
  1 (5.00%) high mild
Benchmarking pipeline/utils
Benchmarking pipeline/utils: Warming up for 300.00 ms
Benchmarking pipeline/utils: Collecting 20 samples in estimated 1.0181 s (3990 iterations)
Benchmarking pipeline/utils: Analyzing
pipeline/utils          time:   [255.36 µs 256.05 µs 256.73 µs]
Found 1 outliers among 20 measurements (5.00%)
  1 (5.00%) high severe
Benchmarking pipeline/value_semantics_copy_vs_ref
Benchmarking pipeline/value_semantics_copy_vs_ref: Warming up for 300.00 ms
Benchmarking pipeline/value_semantics_copy_vs_ref: Collecting 20 samples in estimated 1.0222 s (1470 iterations)
Benchmarking pipeline/value_semantics_copy_vs_ref: Analyzing
pipeline/value_semantics_copy_vs_ref
                        time:   [690.63 µs 691.27 µs 692.30 µs]
Found 3 outliers among 20 measurements (15.00%)
  2 (10.00%) high mild
  1 (5.00%) high severe
Benchmarking pipeline/variables
Benchmarking pipeline/variables: Warming up for 300.00 ms
Benchmarking pipeline/variables: Collecting 20 samples in estimated 1.0125 s (2520 iterations)
Benchmarking pipeline/variables: Analyzing
pipeline/variables      time:   [401.23 µs 401.60 µs 402.01 µs]
Found 2 outliers among 20 measurements (10.00%)
  1 (5.00%) high mild
  1 (5.00%) high severe
Benchmarking pipeline/void_lambda_test
Benchmarking pipeline/void_lambda_test: Warming up for 300.00 ms
Benchmarking pipeline/void_lambda_test: Collecting 20 samples in estimated 1.0028 s (3150 iterations)
Benchmarking pipeline/void_lambda_test: Analyzing
pipeline/void_lambda_test
                        time:   [317.07 µs 318.49 µs 320.23 µs]
Found 3 outliers among 20 measurements (15.00%)
  1 (5.00%) high mild
  2 (10.00%) high severe
Benchmarking pipeline/where_clauses
Benchmarking pipeline/where_clauses: Warming up for 300.00 ms
Benchmarking pipeline/where_clauses: Collecting 20 samples in estimated 1.2451 s (1050 iterations)
Benchmarking pipeline/where_clauses: Analyzing
pipeline/where_clauses  time:   [1.1824 ms 1.1833 ms 1.1842 ms]
Found 1 outliers among 20 measurements (5.00%)
  1 (5.00%) high severe

�[1m�[92m     Running�[0m benches/execution.rs (target/release/deps/execution-5585e336235457dc)
Gnuplot not found, using plotters backend
Benchmarking execution/list_churn
Benchmarking execution/list_churn: Warming up for 200.00 ms
Benchmarking execution/list_churn: Collecting 10 samples in estimated 2.1346 s (770 iterations)
Benchmarking execution/list_churn: Analyzing
execution/list_churn    time:   [2.7326 ms 2.7502 ms 2.7631 ms]
Benchmarking execution/map_churn
Benchmarking execution/map_churn: Warming up for 200.00 ms
Benchmarking execution/map_churn: Collecting 10 samples in estimated 2.0128 s (330 iterations)
Benchmarking execution/map_churn: Analyzing
execution/map_churn     time:   [6.0647 ms 6.0850 ms 6.0977 ms]
Benchmarking execution/recursion
Benchmarking execution/recursion: Warming up for 200.00 ms

Warning: Unable to complete 10 samples in 2.0s. You may wish to increase target time to 2.4s.
Benchmarking execution/recursion: Collecting 10 samples in estimated 2.4097 s (10 iterations)
Benchmarking execution/recursion: Analyzing
execution/recursion     time:   [240.73 ms 241.79 ms 242.83 ms]
Found 1 outliers among 10 measurements (10.00%)
  1 (10.00%) low mild
Benchmarking execution/set_churn
Benchmarking execution/set_churn: Warming up for 200.00 ms

Warning: Unable to complete 10 samples in 2.0s. You may wish to increase target time to 7.8s.
Benchmarking execution/set_churn: Collecting 10 samples in estimated 7.8245 s (10 iterations)
Benchmarking execution/set_churn: Analyzing
execution/set_churn     time:   [761.13 ms 763.11 ms 765.19 ms]
Found 1 outliers among 10 measurements (10.00%)
  1 (10.00%) high mild
Benchmarking execution/string_build
Benchmarking execution/string_build: Warming up for 200.00 ms

Warning: Unable to complete 10 samples in 2.0s. You may wish to increase target time to 3.7s or enable flat sampling.
Benchmarking execution/string_build: Collecting 10 samples in estimated 3.7484 s (55 iterations)
Benchmarking execution/string_build: Analyzing
execution/string_build  time:   [68.027 ms 68.072 ms 68.152 ms]

Commit fba20c200642eb718f5dacb34c3835f335ec9480 - full run

@DerekCorniello
DerekCorniello merged commit 594ede3 into main Jul 29, 2026
12 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.

[Chore] - Drop the mux-runtime [patch.crates-io] git patch and pin a published version before release

1 participant