Skip to content

v0.1.5

Compare
Choose a tag to compare
@reuterbal reuterbal released this 10 Oct 13:02
· 1337 commits to main since this release
ede5135

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 of loki-transform.py has been retired and fully integrated into the convert 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 the loki-transform.py script, and the loki_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

Full Changelog: v0.1.4...v0.1.5