⚠️ Breaking Changes Ahead ⚠️
- LLVMSwift now enforces deployment target constraints. In the future, we will continue to update this constraint in line with the LLVM homebrew package.
- The
PassPipeliner
is now provided as an alternative to FunctionPassManager
, which may crash if used in many common situations. Please migrate accordingly.
- The
FunctionPassManager
is now deprecated
- Documentation for core components continues to improve
- An analog to LLVM’s infamous target
Triple
API has been added. APIs that previously dealt with Strings have been updated accordingly
- The bindings to ObjectFile were not correct and were not nearly feature-rich enough. The API has been completely overhauled
- The
IRInstruction
protocol has been added to unify instruction values around a common protocol.
- Metadata can now be attached to instructions
- The debug location accessor now supports being reset to
nil
without crashing
- DIFile now exposes file metadata, and file metadata now exposes its source text, directory, and name
- The Metadata Builder facility (
MDBuilder
) has been ported from LLVM
- Additional bit-manipulation primitives for setting and clearing bits and getting leading and trailing 1’s counts have been added to
APInt
- The labels on
FunctionType
's initializer have been removed
- The internalize pass has been added
- All SROA passes no longer differentiate between their parameters. They are now deprecated - SROA is available under with the unified
scalarReplacementOfAggregates
pass