Releases: IrisShaders/glsl-transformer
v0.15.0 - Job parameters in token filters and general core transformation refactor
- 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
- 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
- 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
- Made replacement methods on
SearchTerminals
generic - Added
fromTerminal
onWrapIdentifier
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
- 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
- Renamed package
transformation
tocore
. 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
- 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
- Added
TokenFilter
and its implementing subclassesChannelFilter
,NewlineFilter
andMultiFilter
. 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
- 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 newExtendedTerminalNode
implement a new general-purpose tree node interfaceTreeMember
- 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 usesTreeMember
. - 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
whichDirective
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
- 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 aParsedASTNode
- 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.