Releases: IrisShaders/glsl-transformer
Releases · IrisShaders/glsl-transformer
v1.0.0-pre12 - Grouped Transformation and ASTTransformer Abstraction
- Refactor
ASTTransformer
to be abstract and introduceASTParser
- Added grouped transformation for transforming sources in batches for cross-source data usage
- Added more types of AST transformers that can transform in different ways:
EnumASTTransformer
andTriASTTransformer
- Changed things on the CST transformer and the base classes
- Added more transform tests
Meta:
- Update gradle to 7.5.1
- Remove vscode settings jdk list
Full Changelog: v1.0.0-pre11...v1.0.0-pre12
v1.0.0-pre11 - Parse Tree Caching and Cleanup
- Removed the clone method from the AST node since that approach wasn't going to work
- Added parse tree caching with
CachingParser
which the AST transformer uses - Cleanup of the AST builder methods and added javadoc to them
- Removed unused parsing methods
- Added LRU Cache that is used for the caching parser but this class can also be used externally
- Cleanup and refactor the performance tests, added a performance test that ensures caching is fast
Full Changelog: v1.0.0-pre10.3...v1.0.0-pre11
v1.0.0-pre10.3 - Improved ASTNode Member Handling, Activity Return Values and Various Fixes
v1.0.0-pre10.3 - Improved ASTNode Member Handling, Activity Return Values and Various Fixes
Pre-release
Pre-release
- Initial addition of a
clone
method toASTNode
. All other nodes have not been implemented yet. (This will be expanded in a future release and improve the performance of expression replacement methods) - Change
ASTNode
to always update the self replacer when setting a parent since the self replacer may change even if the parent stays the same (in-parent move) - Refine the condition for discarding an
updateParents
call to also check that the parent is already set since sometimes detached nodes are updated even if the identity of the node being set doesn't change - Added tests that confirm this behavior has changed
- Added boolean return values indicating if anything happened to all the
Root
methods that manipulate the tree - Added
replaceReferenceExpressionsReport
that also does this since the base version of this method would be slower if the activity indication is given - Fixed
getOne
inNodeIndex
andIdentifierIndex
to return null if there is no element instead of throwing - Added a test that wraps a function in another function call and then re-inserts it into the tree
- Added a reprint test for long numbers
Full Changelog: v1.0.0-pre10.2...v1.0.0-pre10.3
v1.0.0-pre10.2 - Simplify Job Parameters
- Removed the
equals(JobParameters)
method inJobParameters
to make it easier to implement this class
Full Changelog: v1.0.0-pre10.1...v1.0.0-pre10.2
v1.0.0-pre10.1 - Fix Missing Method for Setting a Parse Token Filter
- After the previous release there was no way to set the parse token filter, that is now fixed.
Full Changelog: v1.0.0-pre10...v1.0.0-pre10.1
v1.0.0-pre10 - Safer Identifier and LiteralExpression Nodes, Cleanup and Tests
Pre-release
- Added content validation to
Identifier
- Added state validation to
LiteralExpression
along with methods for manipulating its values safely - Added
getReferenceExpressions
andgetAncestors
toIdentifierIndex
- Made identifier renaming more efficient by simply moving the set of identifiers for a given name in the identifier index instead of renaming each instance separately
- Removed
getInternalParser
and refactored some CST transformer methods to use parser methods like there are for the AST transformer - Fixed whitespace for printing a sequence of selection (if) statements
- Added a test that demonstrates and tests the AST transformer's ability to do a complex transformation involving the removal of uniform declarations with certain names
- Renamed some things in tests
Full Changelog: v1.0.0-pre9...v1.0.0-pre10
v1.0.0-pre9 - Partial Version-Dependent Lexing and Grammar fixes
- Added
VersionedGLSLLexer
which is the new base class of the Lexer. Using this base class, version-dependent lexing can be performed. By default the most recent version is assumed and no tokens are not recognized. - Made the GLSL lexer not recognize some tokens if they were only introduced in later versions. This doesn't apply to all tokens and doesn't take the ES profile into account. This fixes issues where variables or parameters named using future keywords could not be correctly parsed.
- Changed
VersionStatement
to use an enum for the GL version that also contains additional information. - Changed the order of some parser rules
- Renamed "boolean" lexer tokens to "logical" lexer tokens
- Fixed versions in test cases so that the new version parser can work with it
- Added tests for parsing and matching difficult cases that were fixed in this version
Meta:
- Added a new test logger
- Cleaned up
build.gradle
Full Changelog: v1.0.0-pre8.1...v1.0.0-pre9
v1.0.0-pre8.1 - AutoHintedMatcher fix
- Fixed AutoHintedMatcher not using node wildcards
Full Changelog: v1.0.0-pre8...v1.0.0-pre8.1
v1.0.0-pre8 - Expanded Node Processing and Match Hinting
- Added
HintedMatcher
andAutoHintedMatcher
that automatically giveRoot
information about where to find the pattern - Added more matcher tests
- Moved query classes into
match
andindex
packages depending on their role - Renamed processing methods in
Root
and added some to use hinted matchers
Full Changelog: v1.0.0-pre7...v1.0.0-pre8
v1.0.0-pre7 - General Refactoring, Better Grouping Expressions and Documentation
Pre-release
- Refactor
ExpressionType
to include structural, precedence and associativity information and removed it from the subclasses - Refactor
StatementType
to include structural information and removed it for the subclasses - Moved
TypeKind
inside theBuiltinType
enum in which it is exclusively used - Changed the AST printer to avoid printing unnecessary grouping expressions, added tests
- Changed the AST builder to omit unnecessary grouping expressions
- The AST printer now inserts grouping expressions if the AST's semantics are lost during printing without a grouping expression, added tests
- Improved construction of the
NodeIndex
and made the construction of the bucket sets configurable - Renamed
Root#registerChild
toregisterNode
(same for unregister) - Removed unused and unnecessary
Matcher
methodsmatchesWide
etc - Added
SuperclassNodeIndex
that also indexes the superclasses of nodes so that queries forExpression
are possible (at the expensive of more work and memory usage) - Added test for
NodeIndex
andSuperclassNodeIndex
- Refactored transform assertions in tests
- Added javadoc to many relevant classes
- Removed the bad
replaceAllExpressions
method fromRoot
Full Changelog: v1.0.0-pre6.1...v1.0.0-pre7