Skip to content

Releases: IrisShaders/glsl-transformer

v0.21.0 - Execution planning for fixed job parameters, conditional dependencies and more tests

22 Apr 15:07
715221f
Compare
Choose a tag to compare
  • Added execution plan caching for fixed job parameters (#16). This means that the execution plan will be optimized for the "fixed" part of the job parameters and re-used when a matching set of job parameters is used for a transformation job.
  • Made all job parameter type parameters extend JobParameters
  • Added the FixedWrappedParameters, WrappedParameters and NonFixedJobParameters classes for handling parameters and caching
  • Added tests for fixed parameters
  • Added conditional dependency graph setup through the setupGraph method on Transformation which should be used to setup the dependency graph of transformations where the configuration of the dependencies depends on the fixed job parameters.
  • Added tests for RunPhase methods
  • Removed some dead code
  • Added some tests for better coverage in some places
  • Instead of Error now an AssertionError is thrown when something that should break, breaks
  • All lifecycle users can now be initialized
  • Moved classes related to tree traversal into their own package traversal
  • Added tests for the detection of cyclic dependencies

Meta

  • Moved documentation into it's own folder
  • Progress tracking now happens on the project board
  • There is also now a milestone for tracking progress towards the 1.0.0 release (which will have the latest minor version as the major version)

Full Changelog: v0.20.1...v0.21.0

v0.20.1 - Minimum tree-walks optimization in ExecutionPlanner

24 Mar 15:39
0c9ea75
Compare
Choose a tag to compare
  • Added optimal walk phase scheduling to ExecutionPlanner. This means it uses the minimum number of tree-walk operations to satisfy the dependency tree.
  • Updated javadoc on resetState because of the optimization

Full Changelog: v0.20.0...v0.20.1

v0.20.0 - Early tree walk stopping, grammar refactor and more snapshot tests

23 Mar 02:35
893b7a9
Compare
Choose a tag to compare
  • Refactored the GLSL grammar to use a simpler structure for parsing expressions. This makes the resulting parse tree have less nested nodes for expressions.
  • Added many grammar rule alternative and element labels. This should make using the generated structures easier to use and traverse.
  • Fixed node injection to work with the new grammar and also improve how injection locations are found.
  • Removed redundant visibility keywords from some interfaces
  • Added the canWalk method on TransformationPhase that will be used in the future to improve execution planning such that it produces more efficient schedules, which should have less walk-containing execution levels.
  • Added snapshot tests for the structure of the parse tree. They use a special format that's not indented but better to git-diff on. These generated snapshot files are very large but help find bugs with the grammar when changes are made to it.
  • Added a few resource files for testing
  • Added support for stopping the DynamicParseTreeWalker early based on signals from the listener. Support for this also involves the transformation phase, proxy parse tree listener and execution planner.
  • Added the PartialParseTreeListener interface that defines methods for stopping the dynamic parse tree walker early. isFinished stops iterating child nodes while isDeepEnough doesn't iterate child nodes at all.
  • Added walkFinished with which a transformation phase can signal to the execution planner that it's done with walking the parse tree in the current execution.
  • Changed ExtendedContext to use ParserRuleContext as its superclass which has less overhead

The parse tree walk early-stopping features don't have tests yet.

Meta:

  • Updated Transformation method diagrams after the rename that happened last release

Full Changelog: v0.19.0...v0.20.0

v0.19.0 - Bug fix for chaining in append and prepend Transformation methods

10 Mar 00:32
8f7a489
Compare
Choose a tag to compare
  • Renamed the Transformation method prependDependent to prependDependency and appendDependency to appendDependent in order to better reflect the effect these operations have on the chaining state (the dependent and dependency of the most recently added dependency relationship)
  • Fixed bug where chaining wouldn't work properly after prepend or append (the chaining state just wasn't being updated at all)
  • Added tests to make sure this bug doesn't happen

Mostly just a bug fix update but since it breaks the API it gets a major version bump.

Meta:

  • Added graph diagrams for the Transformation methods. Hopefully these make the various operations easier to understand. The name changes made in this release haven't been incorporated into these diagrams yet though. I hope to create more in-depth documentation at some point once the API stabilizes and matures more and when I have the time and patience to write it.
  • Updated README example code

Full Changelog: v0.18.0...v0.19.0

v0.18.0 - Dependency Graph-based Phase Execution

05 Mar 03:16
eb9d90e
Compare
Choose a tag to compare
  • Added dependency graph-based phase execution. This means instead of putting phases into levels, they can now be added as nodes in a dependency graph and the ExecutionPlanner will compute a plan made up of as few as possible execution levels so that all dependencies are satisfied and all phases are executed.
  • Abstracted some functionality, mainly init and state reset, of phases and transformations into LifecycleUser
  • Changed Transformation to track the dependencies of lifecycle users enclosed in nodes
  • Renamed PhaseCollector to ExecutionPlanner and changed how transformations are added to it
  • Introduced the internal data structure Node that transformations use to track dependencies between lifecycle users
  • Transformations and phases can be part of other transformations. In fact, the execution planner simply contains a root transformation to which all other transformations and phases are added.
  • Added lots of tests for Transformation and ExecutionPlanner
  • Updated WrapIdentifier and subclasses to use the new APIs
  • Added a utility method for generating simple instances to RunPhase

Full Changelog: v0.17.2...v0.18.0

v0.17.2 - RunPhase utility fix

25 Feb 09:25
f54f9de
Compare
Choose a tag to compare
Pre-release
  • Made the new RunPhase methods introduced in the last release actually static

Full Changelog: v0.17.1...v0.17.2

v0.17.1 - RunPhase utilities and Transformation default index

25 Feb 00:09
34337c6
Compare
Choose a tag to compare
  • Added utility methods to RunPhase for creating it with a single injection
  • Added DEFAULT_INDEX to Transformation
  • Added resetNextPhaseIndex to Transformation that resets the next phase index. This makes compactly constructing transformations with complex schedules a little easier.

Full Changelog: v0.17.0...v0.17.1

v0.17.0 - More flexibility in SearchTerminals and many bugfixes

08 Feb 01:47
73e457c
Compare
Choose a tag to compare
  • Made SearchTerminals dynamic meaning it can be used in contexts where the targets aren't known at transformation init-time.
  • SearchTerminals will now test all terminal tokens if the invalid token type is set as the token type to test
  • Moved most of the specific search terminals stuff to SearchTerminalsImpl
  • Added constructor that only takes a terminal token type to SearchTerminalsImpl
  • Added SearchTerminalsDynamic for using it dynamically with caching
  • Made all custom node types implement MoveCheckable which fixes a bug with DynamicParseTreeWalker getting into an infinite loop while searching for a replaced node
  • Fixed another bug with DynamicParseTreeWalker that resulted in an NPE if a child array was null
  • Improved MoveCheckable to also check deeply nested replacements
  • Introduced the concept of child transformations which allows transformations indirectly added to a phase collector through Transformation#append or Transformation#merge to also receive job parameters
  • Simplified EmptyTerminalNode since all nodes may receive a previous node now
  • Added tests for the fixed bugs (hopefully making sure they won't regress)

Full Changelog: v0.16.1...v0.17.0

v0.16.1 - Job parameters in transformations

06 Feb 15:21
cbbb71f
Compare
Choose a tag to compare
  • Transformation has access to job parameters now

Full Changelog: v0.16.0...v0.16.1

v0.16.0 - WrapIdentifier changes and a new WrapThrowTarget

05 Feb 03:22
0fe07a7
Compare
Choose a tag to compare
  • Changed WrapIdentifier to be more general
  • Added WrapIdentifierDynamic and WrapIdentifierExternalDeclaration for specific implementations but removed WrapIdentifierImpl
  • Added WrapThrowTarget and its concrete implementation

Full Changelog: v0.15.1...v0.16.0