Project
compiler
Describe the feature
Problem
Debug symbols are currently embedded into the compiled Simplicity program at compile time. This is problematic because debug symbols alter the compiled output — the resulting base64 encoding and CMR differ from a program compiled without them.
While LWK is the main example here, any code that references Simplicity::Program directly or through WASM will be affected.
LWK currently compiles SimplicityHL sources with debug symbols and uses the resulting program as the canonical address for users to send funds to. This creates a dangerous forward-compatibility hazard:
- If LWK is later fixed to compile without debug symbols (or with a different debug-symbol format), all existing
.simf sources will recompile to a different base64 and CMR.
- Funds sent to the old address would reference a program that can no longer be reproduced from the source, potentially making those coins unrecoverable.
Proposed Solution
- Deprecate debug-symbol embedding in the compiled Simplicity output.
- Introduce a separate source map file (e.g.
.simf.map or .map) generated alongside the compiled program, analogous to how JavaScript source maps work.
- The compiled program itself remains deterministic and debug-symbol-free, preserving a stable CMR/base64 regardless of tooling changes.
- Debuggers and developer tools consume the external source map; production/wallet tooling is unaffected.
Impact
- LWK must be updated to compile without embedded debug symbols before generating addresses.
- Existing
.simf files compiled with debug symbols will produce a different CMR once the fix is applied — this is a breaking change for any addresses already generated via LWK.
Project
compiler
Describe the feature
Problem
Debug symbols are currently embedded into the compiled Simplicity program at compile time. This is problematic because debug symbols alter the compiled output — the resulting base64 encoding and CMR differ from a program compiled without them.
While LWK is the main example here, any code that references
Simplicity::Programdirectly or throughWASMwill be affected.LWK currently compiles SimplicityHL sources with debug symbols and uses the resulting program as the canonical address for users to send funds to. This creates a dangerous forward-compatibility hazard:
.simfsources will recompile to a different base64 and CMR.Proposed Solution
.simf.mapor.map) generated alongside the compiled program, analogous to how JavaScript source maps work.Impact
.simffiles compiled with debug symbols will produce a different CMR once the fix is applied — this is a breaking change for any addresses already generated via LWK.