v0.1.5
Next to a large number of small bug fixes and improvements, this release introduces a number of API and behaviour changes, that have the potential to break existing workflows using Loki:
What's changed
- Expression nodes no longer have a
source
property (#118) - The monolithic SCC wrapper transformation has been replaced by individual, composable transformation steps (#124)
- Statement function injection is now happening on-the-fly in the parse tree translation to Loki-IR (#132)
- API under
ExpressionMapper
has been changed, making behaviour static class properties (#138) - The
ecphys
entry point ofloki-transform.py
has been retired and fully integrated into theconvert
command (#142) Transformation
no longer recurses by default into contained scopes (#136)- The CMake integration has been refactored, consolidating on a single CMake function
loki_transform
to call theloki-transform.py
script, and theloki_transform_target
function to automatically update a target's source files and copy compilation attributes for transformed files.loki_transform_target
is retained for compatibility but marked as deprecated and will be removed in the future (#166)
What's new
- A transformation that allows inlining contained member
subroutines
(#130) - The hoisting mechanism in the SCC transformations has been replaced by a recursive hoisting transformation (#156)
- SCC transformations can now also be applied to loops in the driver routine (#150)
- A graphical visualization of the Loki IR using Graphviz via the
pretty_visualize
utility function (#146)
The full list of changes
- Hotfix: Upload documentation to Sites for main branch by @reuterbal in #127
- Remove
ExprMetadataMixin
by @awnawab in #118 - Remove SCC wrapper transformation by @mlange05 in #124
- Skip tests if graphviz is not installed or functional by @rolfhm in #129
- SCC: Better logging and warning for "bad" code constructs by @mlange05 in #125
- Linter debug rule fixes by @awnawab in #126
- Make derived argument flattening optional in loki_transform convert by @mlange05 in #139
- Statement function parsing on-the-fly by @mlange05 in #132
- Fix type update behaviour in expression clones by @mlange05 in #138
- Expression mappers: Remove recurse_to_parent option and recurse by default by @reuterbal in #140
- Fix for enrich calls bug by @awnawab in #141
- Remove "ecphys" entry point from Loki_transform.py by @mlange05 in #142
- Single declarations for hoisted variables in recursive hoist transformation (fixes #143) by @reuterbal in #144
- Disable default recursion for Transformation.apply by @reuterbal in #136
- fix for argument shape regarding module imports by @MichaelSt98 in #148
- Provide a graphical representation of the IR using graphviz by @joscao in #146
- Add
DEVICEPTR
annotations to data region in driver loop by @awnawab in #145 - Fix cudafor import in driver for SCC CUF by @reuterbal in #157
- Make
DataflowAnalysisAttacher/Detacher
true in-place transform by @awnawab in #158 - Member inlining utility transform by @mlange05 in #130
- Bugfix: Memory error in Statement functions test by @reuterbal in #159
- Minor fix, k is undeclared by @rommelDB in #160
- Loki-SCC: Adapt to use recursive hoisting transformation by @mlange05 in #156
- CMake refactoring for loki_transform by @reuterbal in #166
- Loki_transform: Re-instate argument shape derivation in
convert
by @mlange05 in #149 - Extend SCC transformation to loops in driver by @MichaelSt98 in #150
- Save attribute (fix #164) by @reuterbal in #165
- bugfix : symbols from the inlined member's dummies were hoisted in the calling routine by @JoeffreyLegaux in #162
- Call remove call and remove hook transformations on contained subroutines by @rolfhm in #163
- Update version number to 0.1.5 by @reuterbal in #168
New Contributors
- @joscao made their first contribution in #146
- @rommelDB made their first contribution in #160
- @JoeffreyLegaux made their first contribution in #162
Full Changelog: v0.1.4...v0.1.5