You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
New block-based intermediate representation (BIR).
A verifier system to validate BIR objects.
Test-based disassembler for BIR.
McCLIM visualizer for BIR (contributed by @scymtym).
AST-to-BIR system for converting ASTs to BIR.
Attributes system for interesting non-type information about data.
Ctype system for interface with client type system.
Conditions system for better organization of compiler conditions.
Example system for demos.
Extensible metaevaluator for performing most optimizations on BIR (thanks @karlosz for this and more).
Changed
Some cleavir-env operations now take a client parameter for specialization.
Many (most?) AST classes have changed. See documentation for details.
CST-to-AST no longer accepts most primops, along with other more minor changes.
CST-to-AST conditions are now part of the conditions system hierarchy. Additionally, error behavior when evaluating eval-when code, macros, or compiler macros has been enhanced to signal specific encapsulation conditions.
Enhancements
Inlining has been generalized into contification.
Type inference now proceeds quickly and easily takes care of most basic, non-control-flow sensitive type check eliminations.
Performance of most operations on/transformations of IR has improved.
Removed
High-level intermediate representation (HIR). Replaced by BIR.
Graphviz-based IR visualizer. Replaced by the BIR disassembler and visualizer.
AST-to-HIR. Replaced by AST-to-BIR.
Many ASTs and IR instruction classes related to backend operations (e.g. fixnum-add). For now these are considered to be a client responsibility, but a future release will probably add some functionality back to Cleavir.
SSA conversion system; this may be restored in a later release.
IR-to-source back-conversion systems, which have never really been used.
The code walker. It's never really been a core component, and is probably better as a separate system. See, e.g., agnostic-lizard for an alternative.