3 ms·
It’s similar at a surface level, but the key difference is when the choice is made and what is being selected. #ifdef and libraries still live inside a single e
by JhonPork 9mo ago
It’s similar at a surface level, but the key difference is when the choice is made and what is being selected.
#ifdef and libraries still live inside a single execution contract — the compiler parses and reasons about everything, and constraints are mostly conventional.
In Falcon, the profile selects a different execution contract before IR exists. Non-matching code is not typechecked or lowered at all, and different rules (heap, panics, aliasing, UB) are enforced structurally.
Libraries share implementation; profiles share intent. The same source is treated as a specification from which multiple valid-by-construction artifacts are derived, rather than a single program patched with conditionals.