Repository navigation
feat!: rename the compiler binary to slang and bump to 0.2.0 - #791
Merged
Merged
Conversation
Coverage Summary
|
Contributor
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Release consumers still request legacy solx-* assets, breaking installation verification and benchmarks after 0.2 is published.
Review effort: Balanced
Findings: 2
Open (2)
What changed in this PR
Renames the compiler binary to slang, updates its public interfaces and documentation, and advances the workspace to version 0.2.0.
Changes:
- Renames the executable, release assets, environment variables, metadata, and profiling labels.
- Updates tests, CI workflows, documentation, and LIT fixtures for
slang. - Preserves legacy
solxdetection for 0.1.x compilers.
| File | Description |
|---|---|
Cargo.toml |
Bumps the workspace to 0.2.0. |
Cargo.lock |
Records renamed package and versions. |
CLAUDE.md |
Updates compiler naming and commands. |
README.md |
Rebrands usage and architecture. |
.cargo/config.toml |
Points tester alias to slang. |
.github/actions/build-rust/action.yml |
Packages slang release binaries. |
.github/actions/rust-unit-tests/action.yml |
Removes legacy binary override. |
.github/workflows/compile-benchmark.yaml |
Uses slang PR and main binaries. |
.github/workflows/integration-tests.yaml |
Runs integration tests with slang. |
.github/workflows/release.yaml |
Publishes slang-* assets. |
docs/README.md |
Rebrands the documentation project. |
docs/book.toml |
Renames the documentation title. |
docs/src/developer-guide/00-development-container.md |
Updates development terminology. |
docs/src/developer-guide/01-testing.md |
Updates test commands and paths. |
docs/src/developer-guide/02-debugging.md |
Updates debugging commands and variables. |
docs/src/developer-guide/03-llvm-options.md |
Updates LLVM examples. |
docs/src/developer-guide/04-sanitizers.md |
Updates sanitizer documentation. |
docs/src/internals/01-architecture.md |
Describes the renamed compiler architecture. |
docs/src/internals/03-yul-builtins.md |
Updates compiler references. |
docs/src/internals/04-binary-layout.md |
Updates compiler references. |
docs/src/user-guide/01-installation.md |
Documents source installation. |
docs/src/user-guide/02-command-line-interface.in/README.md |
Updates executable documentation tests. |
docs/src/user-guide/02-command-line-interface.md |
Updates CLI examples and output. |
docs/src/user-guide/03-standard-json.md |
Updates protocol terminology. |
docs/src/user-guide/04-limitations.md |
Updates compiler terminology. |
solx/Cargo.toml |
Renames the package and binary. |
solx/src/slang.rs |
Adds the renamed executable entry point. |
solx/tests/cli/benchmarks.rs |
Checks renamed profiling stages. |
solx/tests/cli/docs_examples.rs |
Registers the slang binary. |
solx/tests/cli/output_dir.rs |
Tests the renamed output variable. |
solx/tests/cli/solidity_version.rs |
Updates the warning expectation. |
solx-codegen-evm/src/optimizer/settings/mod.rs |
Renames optimizer variables. |
solx-core/src/arguments.rs |
Reads SLANG_OUTPUT_DIR. |
solx-core/src/compiler.rs |
Renames profiling stages. |
solx-core/src/const.rs |
Sets the executable name to slang. |
solx-core/src/project/contract/metadata.rs |
Renames the metadata version field. |
solx-dev/foundry-tests.toml |
Points configurations to slang. |
solx-dev/hardhat-tests.toml |
Points configurations to slang. |
solx-mlir/src/context/mod.rs |
Renames MLIR profiling stages. |
solx-slang/src/slang/mod.rs |
Removes legacy branding from messages. |
solx-slang/src/source_unit.rs |
Renames frontend profiling stages. |
solx-standard-json/src/lib.rs |
Renames the debug variable. |
solx-tester/src/compilers/llvm_ir/mod.rs |
Uses the renamed output variable. |
solx-tester/src/compilers/solidity/mod.rs |
Uses the renamed output variable. |
solx-tester/src/solx_tester/main.rs |
Defaults to the slang executable. |
solx-tester/src/toolchain.rs |
Detects new and legacy version output. |
solx-utils/src/error.rs |
Removes legacy branding from errors. |
tests/benchmark/README.md |
Updates benchmark instructions. |
solx-mlir/tests/lit/abi_coding.sol |
Invokes slang. |
solx-mlir/tests/lit/addmod.sol |
Invokes slang. |
solx-mlir/tests/lit/address_cast.sol |
Invokes slang. |
solx-mlir/tests/lit/address_code.sol |
Invokes slang. |
solx-mlir/tests/lit/aggregate_default_init.sol |
Invokes slang. |
solx-mlir/tests/lit/arithmetic.sol |
Invokes slang. |
solx-mlir/tests/lit/array_slice.sol |
Invokes slang. |
solx-mlir/tests/lit/array_string_ops.sol |
Invokes slang. |
solx-mlir/tests/lit/assembly.sol |
Invokes slang. |
solx-mlir/tests/lit/assembly_control_flow.sol |
Invokes slang. |
solx-mlir/tests/lit/assembly_declarations.sol |
Invokes slang. |
solx-mlir/tests/lit/assembly_evaluation_order.sol |
Invokes slang. |
solx-mlir/tests/lit/assembly_external_references.sol |
Invokes slang. |
solx-mlir/tests/lit/assembly_function_scopes.sol |
Invokes slang. |
solx-mlir/tests/lit/assembly_library.sol |
Invokes slang. |
solx-mlir/tests/lit/assembly_library_address.sol |
Invokes slang. |
solx-mlir/tests/lit/assembly_literals.sol |
Invokes slang. |
solx-mlir/tests/lit/assert.sol |
Invokes slang. |
solx-mlir/tests/lit/assignment_namespace_state_var.sol |
Invokes slang. |
solx-mlir/tests/lit/bare_calls.sol |
Invokes slang. |
solx-mlir/tests/lit/bitwise.sol |
Invokes slang. |
solx-mlir/tests/lit/blobhash.sol |
Invokes slang. |
solx-mlir/tests/lit/blockhash.sol |
Invokes slang. |
solx-mlir/tests/lit/bytes32.sol |
Invokes slang. |
solx-mlir/tests/lit/comparison.sol |
Invokes slang. |
solx-mlir/tests/lit/compound_assignment.sol |
Invokes slang. |
solx-mlir/tests/lit/compound_assignment_bytes_element.sol |
Invokes slang. |
solx-mlir/tests/lit/concat.sol |
Invokes slang. |
solx-mlir/tests/lit/conditional.sol |
Invokes slang. |
solx-mlir/tests/lit/constant_expressions.sol |
Invokes slang. |
solx-mlir/tests/lit/constant_fold_declared_type.sol |
Invokes slang. |
solx-mlir/tests/lit/constants.sol |
Invokes slang. |
solx-mlir/tests/lit/constructor_body.sol |
Invokes slang. |
solx-mlir/tests/lit/control_flow.sol |
Invokes slang. |
solx-mlir/tests/lit/debug_location.sol |
Invokes slang. |
solx-mlir/tests/lit/debug_location_arithmetic.sol |
Invokes slang. |
solx-mlir/tests/lit/debug_location_assembly.sol |
Invokes slang. |
solx-mlir/tests/lit/debug_location_builtins.sol |
Invokes slang. |
solx-mlir/tests/lit/debug_location_calls.sol |
Invokes slang. |
solx-mlir/tests/lit/debug_location_control_flow.sol |
Invokes slang. |
solx-mlir/tests/lit/debug_location_imports.sol |
Invokes slang. |
solx-mlir/tests/lit/debug_location_index_access.sol |
Invokes slang. |
solx-mlir/tests/lit/debug_location_keyword_functions.sol |
Invokes slang. |
solx-mlir/tests/lit/debug_location_members.sol |
Invokes slang. |
solx-mlir/tests/lit/debug_location_modifiers.sol |
Invokes slang. |
solx-mlir/tests/lit/debug_location_strings.sol |
Invokes slang. |
solx-mlir/tests/lit/delete.sol |
Invokes slang. |
solx-mlir/tests/lit/delete_function_pointer.sol |
Invokes slang. |
solx-mlir/tests/lit/dynamic_array.sol |
Invokes slang. |
solx-mlir/tests/lit/ecrecover.sol |
Invokes slang. |
solx-mlir/tests/lit/enum_storage_key_field.sol |
Invokes slang. |
solx-mlir/tests/lit/enum_variant.sol |
Invokes slang. |
solx-mlir/tests/lit/error_event_selector.sol |
Invokes slang. |
solx-mlir/tests/lit/events.sol |
Invokes slang. |
solx-mlir/tests/lit/evm_context.sol |
Invokes slang. |
solx-mlir/tests/lit/external_call.sol |
Invokes slang. |
solx-mlir/tests/lit/external_function_pointer.sol |
Invokes slang. |
solx-mlir/tests/lit/external_getter.sol |
Invokes slang. |
solx-mlir/tests/lit/fallback_receive.sol |
Invokes slang. |
solx-mlir/tests/lit/fixed_array.sol |
Invokes slang. |
solx-mlir/tests/lit/fixed_point_state_var.sol |
Invokes slang. |
solx-mlir/tests/lit/for_step.sol |
Invokes slang. |
solx-mlir/tests/lit/free_function_operator_reached.sol |
Invokes slang. |
solx-mlir/tests/lit/free_function_pointer.sol |
Invokes slang. |
solx-mlir/tests/lit/free_function_shadowing.sol |
Invokes slang. |
solx-mlir/tests/lit/free_function_using_for.sol |
Invokes slang. |
solx-mlir/tests/lit/function_calls.sol |
Invokes slang. |
solx-mlir/tests/lit/function_overloads.sol |
Invokes slang. |
solx-mlir/tests/lit/gasleft.sol |
Invokes slang. |
solx-mlir/tests/lit/getter.sol |
Invokes slang. |
solx-mlir/tests/lit/getter_constant_file_level_ident.sol |
Invokes slang. |
solx-mlir/tests/lit/getter_constant_member.sol |
Invokes slang. |
solx-mlir/tests/lit/getter_function_pointer.sol |
Invokes slang. |
solx-mlir/tests/lit/getter_keyed.sol |
Invokes slang. |
solx-mlir/tests/lit/getter_struct.sol |
Invokes slang. |
solx-mlir/tests/lit/hex_literal.sol |
Invokes slang. |
solx-mlir/tests/lit/immutable.sol |
Invokes slang. |
solx-mlir/tests/lit/immutable_initializer.sol |
Invokes slang. |
solx-mlir/tests/lit/increment_decrement.sol |
Invokes slang. |
solx-mlir/tests/lit/index_access.sol |
Invokes slang. |
solx-mlir/tests/lit/inheritance_constructor.sol |
Invokes slang. |
solx-mlir/tests/lit/inheritance_fallback.sol |
Invokes slang. |
solx-mlir/tests/lit/inheritance_getter.sol |
Invokes slang. |
solx-mlir/tests/lit/inheritance_state.sol |
Invokes slang. |
solx-mlir/tests/lit/inheritance_super.sol |
Invokes slang. |
solx-mlir/tests/lit/inheritance_synthesized.sol |
Invokes slang. |
solx-mlir/tests/lit/inheritance_virtual.sol |
Invokes slang. |
solx-mlir/tests/lit/int_types.sol |
Invokes slang. |
solx-mlir/tests/lit/internal_function_pointer.sol |
Invokes slang. |
solx-mlir/tests/lit/keccak256.sol |
Invokes slang. |
solx-mlir/tests/lit/length.sol |
Invokes slang. |
solx-mlir/tests/lit/library_abi.sol |
Invokes slang. |
solx-mlir/tests/lit/library_attached.sol |
Invokes slang. |
solx-mlir/tests/lit/library_call.sol |
Invokes slang. |
solx-mlir/tests/lit/library_call_options.sol |
Invokes slang. |
solx-mlir/tests/lit/library_discarded.sol |
Invokes slang. |
solx-mlir/tests/lit/library_internal.sol |
Invokes slang. |
solx-mlir/tests/lit/library_module_alias.sol |
Invokes slang. |
solx-mlir/tests/lit/library_object.sol |
Invokes slang. |
solx-mlir/tests/lit/library_reachable.sol |
Invokes slang. |
solx-mlir/tests/lit/library_selector.sol |
Invokes slang. |
solx-mlir/tests/lit/library_value.sol |
Invokes slang. |
solx-mlir/tests/lit/literal_string_to_byte.sol |
Invokes slang. |
solx-mlir/tests/lit/literal_types.sol |
Invokes slang. |
solx-mlir/tests/lit/local_variables.sol |
Invokes slang. |
solx-mlir/tests/lit/logical.sol |
Invokes slang. |
solx-mlir/tests/lit/memory_guard.sol |
Invokes slang. |
solx-mlir/tests/lit/modifier.sol |
Invokes slang. |
solx-mlir/tests/lit/modifier_inheritance.sol |
Invokes slang. |
solx-mlir/tests/lit/modifier_recursion.sol |
Invokes slang. |
solx-mlir/tests/lit/module.sol |
Invokes slang. |
solx-mlir/tests/lit/module_members.sol |
Invokes slang. |
solx-mlir/tests/lit/msg_data.sol |
Invokes slang. |
solx-mlir/tests/lit/msg_sig.sol |
Invokes slang. |
solx-mlir/tests/lit/mulmod.sol |
Invokes slang. |
solx-mlir/tests/lit/multi_result_call.sol |
Invokes slang. |
solx-mlir/tests/lit/multi_return.sol |
Invokes slang. |
solx-mlir/tests/lit/mutability.sol |
Invokes slang. |
solx-mlir/tests/lit/named_types.sol |
Invokes slang. |
solx-mlir/tests/lit/names_discarded.sol |
Invokes slang. |
solx-mlir/tests/lit/namespace_function_pointer.sol |
Invokes slang. |
solx-mlir/tests/lit/new_contract.sol |
Invokes slang. |
solx-mlir/tests/lit/new_discarded.sol |
Invokes slang. |
solx-mlir/tests/lit/new_dynamic.sol |
Invokes slang. |
solx-mlir/tests/lit/reference_assignment.sol |
Invokes slang. |
solx-mlir/tests/lit/require.sol |
Invokes slang. |
solx-mlir/tests/lit/require_runtime_message.sol |
Invokes slang. |
solx-mlir/tests/lit/return_variables.sol |
Invokes slang. |
solx-mlir/tests/lit/revert.sol |
Invokes slang. |
solx-mlir/tests/lit/ripemd160.sol |
Invokes slang. |
solx-mlir/tests/lit/scoping.sol |
Invokes slang. |
solx-mlir/tests/lit/selfdestruct.sol |
Invokes slang. |
solx-mlir/tests/lit/sha256.sol |
Invokes slang. |
solx-mlir/tests/lit/state_var_initializer.sol |
Invokes slang. |
solx-mlir/tests/lit/state_variable_selector.sol |
Invokes slang. |
solx-mlir/tests/lit/state_variables.sol |
Invokes slang. |
solx-mlir/tests/lit/storage_layout_at.sol |
Invokes slang. |
solx-mlir/tests/lit/storage_packing.sol |
Invokes slang. |
solx-mlir/tests/lit/storage_transient.sol |
Invokes slang. |
solx-mlir/tests/lit/string.sol |
Invokes slang. |
solx-mlir/tests/lit/struct_constructor.sol |
Invokes slang. |
solx-mlir/tests/lit/struct_field.sol |
Invokes slang. |
solx-mlir/tests/lit/symbol_visibility.sol |
Invokes slang. |
solx-mlir/tests/lit/try_catch.sol |
Invokes slang. |
solx-mlir/tests/lit/try_catch_new.sol |
Invokes slang. |
solx-mlir/tests/lit/try_function_pointer.sol |
Invokes slang. |
solx-mlir/tests/lit/tuple_assignment.sol |
Invokes slang. |
solx-mlir/tests/lit/tuple_assignment_blank.sol |
Invokes slang. |
solx-mlir/tests/lit/tuple_assignment_nested.sol |
Invokes slang. |
solx-mlir/tests/lit/tuple_destructuring.sol |
Invokes slang. |
solx-mlir/tests/lit/type_casts.sol |
Invokes slang. |
solx-mlir/tests/lit/type_meta.sol |
Invokes slang. |
solx-mlir/tests/lit/user_defined_operator.sol |
Invokes slang. |
solx-mlir/tests/lit/user_defined_value_type.sol |
Invokes slang. |
solx-mlir/tests/lit/value_transfer.sol |
Invokes slang. |
solx-mlir/tests/lit/evaluation_order/assignment.sol |
Invokes slang. |
solx-mlir/tests/lit/evaluation_order/binary.sol |
Invokes slang. |
solx-mlir/tests/lit/evaluation_order/external_call.sol |
Invokes slang. |
solx-mlir/tests/lit/evaluation_order/left_first.sol |
Invokes slang. |
solx-mlir/tests/lit/evaluation_order/named_arguments.sol |
Invokes slang. |
solx-mlir/tests/lit/evaluation_order/nested_assignment.sol |
Invokes slang. |
solx-mlir/tests/lit/evaluation_order/nested_binary.sol |
Invokes slang. |
solx-mlir/tests/lit/evaluation_order/nested_call.sol |
Invokes slang. |
solx-mlir/tests/lit/evaluation_order/nested_index.sol |
Invokes slang. |
solx-mlir/tests/lit/evaluation_order/nested_logical.sol |
Invokes slang. |
solx-mlir/tests/lit/evaluation_order/nested_ternary.sol |
Invokes slang. |
solx-mlir/tests/lit/qualifier/library_external.sol |
Invokes slang. |
solx-mlir/tests/lit/qualifier/module.sol |
Invokes slang. |
solx-mlir/tests/lit/qualifier/type_name.sol |
Invokes slang. |
💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
nebasuke
marked this pull request as ready for review
October 4, 2026 15:07
nebasuke
force-pushed
the
slang-binary-rename
branch
from
October 4, 2026 18:24
40f2ffb to
61715ff
Compare
hedgar2017
requested changes
Oct 4, 2026
nebasuke
force-pushed
the
slang-binary-rename
branch
from
October 5, 2026 08:31
61715ff to
c4232f3
Compare
hedgar2017
approved these changes
Oct 5, 2026
hedgar2017
left a comment
Contributor
There was a problem hiding this comment.
Thanks! Any uncaught discrepancy can follow up.
The compiler on this line ships as slang, so the binary, its version line and the compiler identifier in the CBOR trailer and metadata now say slang instead of solx. 0.2.0 keeps the first slang version apart from the solx 0.1.x releases built from main-solc. The SOLX_* environment variables and the --benchmarks labels become SLANG_* and slang_*; nothing has been released under the old names. The tester accepts both version prefixes, so it can still run the solx 0.1.x releases.
The compiler on this line is Slang and its binary is slang. The parser and binder repository is the Slang front-end and the codegen crates are slang-solx, so the pages that describe the pipeline name the parts apart. Slang has no release yet, so the installation page sends readers to the source build; the script and releases page still serve solx 0.1.x.
The guide's frontend rules use Slang for the parser and binder, so the lines about this repository's compiler name it by its binary or as the compiler.
After the rename the --benchmarks stages read Slang_* for the front end and slang_* for the compiler, telling them apart by case alone, and the EVM version warning said Slang could not target versions the Slang front end handles fine. The compiler's stages are Compiler_* and its messages say "the compiler". The compiler's metadata section is already keyed slang, so its version field is plain version rather than slang.slang_version.
The CLI tests find the binary through assert_cmd's cargo_bin!, which reads CARGO_BIN_EXE_slang at compile time, and cargo sets that itself. Nothing reads the upper-case name, so exporting it for target builds and unsetting it in build-rust did nothing. A cross-target CLI test built and run with CARGO_BIN_EXE_SLANG=/nonexistent/slang still passes and has cargo's target/<triple>/debug/slang path baked in.
The tester still runs the solx 0.1.x releases, which read only SOLX_OUTPUT_DIR, so --debug runs against them wrote no IR after the rename. Both variables are set; each compiler ignores the other.
nebasuke
force-pushed
the
slang-binary-rename
branch
from
October 5, 2026 12:44
c4232f3 to
e2fa712
Compare
nebasuke
added a commit
that referenced
this pull request
Oct 8, 2026
#791 renamed the compiler binary to `slang`, so the build step's `cp target/release/solx` fails every shard. The candidate leg, its outcome (`slang-fail`) and its result key now say slang; solx is only the 0.1.8 baseline, where the old names read as the wrong compiler. Results recorded before this commit no longer render with report.py.
nebasuke
added a commit
that referenced
this pull request
Oct 9, 2026
#791 renamed the compiler binary to `slang`, so the build step's `cp target/release/solx` fails every shard. The candidate leg, its outcome (`slang-fail`) and its result key now say slang; solx is only the 0.1.8 baseline, where the old names read as the wrong compiler. Results recorded before this commit no longer render with report.py.
nebasuke
added a commit
that referenced
this pull request
Oct 14, 2026
#791 renamed the compiler binary to `slang`, so the build step's `cp target/release/solx` fails every shard. The candidate leg, its outcome (`slang-fail`) and its result key now say slang; solx is only the 0.1.8 baseline, where the old names read as the wrong compiler. Results recorded before this commit no longer render with report.py.
nebasuke
added a commit
that referenced
this pull request
Oct 21, 2026
#791 renamed the compiler binary to `slang`, so the build step's `cp target/release/solx` fails every shard. The candidate leg, its outcome (`slang-fail`) and its result key now say slang; solx is only the 0.1.8 baseline, where the old names read as the wrong compiler. Results recorded before this commit no longer render with report.py.
hedgar2017
pushed a commit
that referenced
this pull request
Oct 22, 2026
#791 renamed the compiler binary to `slang`, so the build step's `cp target/release/solx` fails every shard. The candidate leg, its outcome (`slang-fail`) and its result key now say slang; solx is only the 0.1.8 baseline, where the old names read as the wrong compiler. Results recorded before this commit no longer render with report.py.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Rename solx -> slang where reasonable. Note that integration tests and compile benchmark are broken for the PR until after merge, due to it trying to build main with the new name.
Claude summary
Renames the compiler to Slang: the binary is
slang, it identifies itself as slang in--version, the bytecode metadata and its messages, and its version starts at 0.2.0.SLANG_OUTPUT_DIR,SLANG_OPTIMIZATION,SLANG_OPTIMIZATION_SIZE_FALLBACKandSLANG_STANDARD_JSON_DEBUG.slang-<platform>.