Skip to content

Releases: IrisShaders/glsl-transformer

v0.15.0 - Job parameters in token filters and general core transformation refactor

31 Jan 22:44
cdcea4d
Compare
Choose a tag to compare
  • Added job parameters for all token filters by making them generic
  • Refactored all core transformations to be more extensible, especially for use with job parameters
  • Differentiated abstract and concrete version of core transformations and targets for this reason
  • Abstracted objects that have a phase collector reference, this may be used as preparation for future abstractive changes
  • Made the MultiFilter not extend an array list but instead contain one

Meta:

  • Organized the todo document more

Full Changelog: v0.14.0...v0.15.0

v0.14.0 - Merge & append transformations and other small improvements

27 Jan 02:03
04a6462
Compare
Choose a tag to compare
  • Moved TokenChannel into its own file
  • Removed DeclarationReplacement and put it in Iris instead
  • Make addConcurrentPhase usable for the first phase addition
  • Made transformation phase init only run once
  • Added merge and append functionality to transformations which allows combining transformations by copying phase entries

Full Changelog: v0.13.1...v0.14.0

v0.13.1 - Multiple external declaration injection

24 Jan 22:36
8295413
Compare
Choose a tag to compare
  • Add two methods to TransformationPhase that makes injecting multiple external declarations at the same injection point more compact

Full Changelog: v0.13.0...v0.13.1

v0.13.0 - Generic SearchTerminals methods and new fromTerminal method

23 Jan 02:52
bfe00a8
Compare
Choose a tag to compare
  • Made replacement methods on SearchTerminals generic
  • Added fromTerminal on WrapIdentifier to reduce verbosity of user code
  • null phases added to a transformation are dropped now

This is a small release because it just addresses issues I found while using glsl-transformer in converting the Triforce patcher in Iris. The release is breaking because the SearchTerminal methods changed their signature.

Full Changelog: v0.12.0...v0.13.0

v0.12.0 - Job parameters, pre-parse token filtering and core additions

19 Jan 01:54
f422770
Compare
Choose a tag to compare
  • Added job parameters system that allows passing state to transformation phases
  • All transformation-related classes are now generic to allow for a parameter type
  • SearchTerminals looks for exact matches by default now
  • Added WrapIdentifiers core transformation
  • Added pre-parse token filtering
  • Added addConcurrentPhase
  • Switched parameter order of injection location and injected item in the inject* methods
  • Internal improvements to code in many places
  • Improved how transformation phases check if they should run
  • Added final and adjusted visibility where possible
  • Removed DebugVisitor
  • Added some more tests

Meta

  • glsl-transformer has moved its repo to the IrisShaders org
  • I'm using jacoco to inspect code coverage which makes testing easier
  • Reorganized documentation, even though there is not more documentation

Full Changelog: v0.11.0...v0.12.0

v0.11.0 - ReplaceTerminals and package rename

15 Jan 02:47
2dbaf94
Compare
Choose a tag to compare
  • Renamed package transformation to core. It contains all the core transformations that are shipped with glsl-transformer. This is the part of the library that uses its own API in an integrated way to provide standard solutions to common tasks.
  • Added ReplaceTerminals and corresponding targets
  • Made the terminal node search system a little more abstract by not restricting it to identifiers (even though this is what it would be used for most of the time)
  • Made StringNode immutable

Full Changelog: v0.10.0...v0.11.0

v0.10.0 - Move token filters into their own package

08 Jan 22:42
b2cd37f
Compare
Choose a tag to compare
  • Token filters have moved into their own package

No other changes, this was just something I missed on the last one.

Full Changelog: v0.9.0...v0.10.0

v0.9.0 - Token filter system, better lexing and organizational changes

08 Jan 21:05
5dff44e
Compare
Choose a tag to compare
  • Added TokenFilter and its implementing subclasses ChannelFilter, NewlineFilter and MultiFilter. They work in the printer to omit tokens from the stream under certain defined conditions. The multi filter allows composing multiple filters into one. (They don't have tests yet, that's upcoming)
  • Fixed bugs in the lexer with parsing Windows-style newlines (\r\n)
  • Improved the organization by moving a bunch of packages around
  • Improved the transformation manager glslang-test snapshot tests a little bit

Meta:

  • Added a javadoc badge to the README
  • Added links to the javadoc for ANTLR and jabel. This means the javadoc links types to the external javadoc pages for these libraries.

Full Changelog: v0.8.0...v0.9.0

v0.8.0 - Identifier processor, Java 8 support and more tests

08 Jan 03:53
b30d9b1
Compare
Choose a tag to compare
  • Added IdentifierProcessor that searches for strings in identifiers and hands resulting matches to corresponding targets
  • Added a base handler target, a replacing target and a throw target
  • Moved a few things around in the packages
  • Added tests for a few more classes and improved other tests, especially for new functionality
  • Made ExtendedContext and the new ExtendedTerminalNode implement a new general-purpose tree node interface TreeMember
  • The generated parser uses a custom superclass now that generates the new type of terminal nodes
  • Changed the visibility of many TransformationPhase methods to be more restrictive
  • Refactored how node replacement and removal works in TransformationPhase. It's now more generally useful and uses TreeMember.
  • The dynamic parse tree walker removes placeholder nodes after finishing a child array now. This may make future walks more efficient and maybe reduces problems with pattern matching (not tested yet)
  • Re-introduced StringNode which Directive now uses as it's superclass. String node can also be used for other purposes. (It's part of the AST node family)

Meta:

  • Made glsl-transformer compatible with Java 8 by using jabel and adding a compatability utils class
  • Updated ANTLR4 to 4.9.3

Full Changelog: v0.7.0...v0.8.0

v0.7.0 - Unparsed directive injection, more Javadocs and bug fixes

02 Jan 18:43
25b192a
Compare
Choose a tag to compare
  • Added ASTNode system for parsed and unparsed abstract syntax tree features
  • Added Directive that uses an unparsed AST node to model directives such as #define
  • Moved Tensor to be a ParsedASTNode
  • Indirectly added directive injection to TransformationPhase and added a method for define injection
  • Fixed typos in Tensor
  • Fixed bugs with the printer and made it compatible with string nodes and unparsed AST nodes
  • Added parse utility methods for TransformationManger which are mostly used internally but also take care of boilerplate code in case an API user wants to parse something without transforming and printing it
  • Improved snapshot tests with a custom annotation that provides test cases
  • Added Javadocs to all public and protected members

Full Changelog: v0.6.0...v0.7.0

The next release will probably focus on additional tests for AST and string nodes as well as tests for tree manipulation inside local root nodes.