0.8.0
Pre-release
Pre-release
Language Changes:
- Add a "new" operator for creating new things, currently just new UUIDs:
new Id(entity <path.id>)
- Change the syntax for path identifiers to include the ^ symbol as an operator to "go up one container" in the definition hierarchy
- A story's
implementedBy
is now a DomainRef, not just a PathIdentifier - Messages no longer have a "sender" field automatically added to them
- Entity Handlers can optionally have a "for state " expression to indicate how to handle messages in a specific state
- Contexts now support projection definitions as a simple aggregate
- Consequently, added support for projection references too
- Context handlers now optionally have a "for projection " expression to indicate how to process a project's messages
- Added an "append" action to support appending a value on to a collection of values
- Fix precedence of operators so arbitrary ones come last
- Recognize known operators "pow" and "now"
- Support arbitrary operators like today()
- Type validation is now implemented for expressions and actions
- Alternations are no longer containers of type
- Invariants can now be undermined (???)
- Don't allow empty Plant definitions (must use ???)
AST changes:
- Moved the
isContainer
method from RiddlValue to RiddlNode - Alternation is now a container of TypeExpression so it can be descended
- "Implicit" is now a concept of any Definition equating to having an empty name. Currently only used by Examples
- Added Projection class to AST for use in later work but needed for validation type expression in current work
New Features:
- Add a subclass to Folidng State, PathResolutionState, to implement path resolution as described above.
- Implemented field and TypeRef traversal for path resolution
- Descriptions are not a missing item if the definition it is attached to is completely empty, say with ???
( Added a new experimental Kalix translator
Improvements
- Added a new test case for running staged riddlc on arbitrary conf file
- Add a lookupParentage method to Symboltable
- Add a resolvePathFromSymTab method to Validation
- Use new resolvepathFromSymTab method in checkPathRef
- Make getPathIdType handle full path identifiers
Refactoring:
- Generalize ValidationMessage into its own module, Messages, for use by any Folding pass
- Add a subclass to Folding State, MessagesState for handling message generation
Bug Fixes
- Fixed path resolution yet again to handle nested paths and includes
- Fixed a bug with errors being reported for each popped include scope
- Fixed a bug in inlet/outlet entity references
- Path resolution works much better
- Make sure hierarchy is right for OnClauses
- Avoid checking for assignment compatibility in certain cases where
it isn't possible
Miscellaneous:
- Fix a variety of test cases impacted by all of the foregoing
- Improved error messages in validation
- Removed duplicate path resolution che
- Improved build workflows. Uses latest hugo now
- Added a releasing guide to document the process
- Update the releasing guide
- Add an IJ test case run file for testing arbitrary riddl source
- Update the releasing guide
- Add an IJ test case run file for testing arbitrary riddl source
Pull Requests Incorporated
- Add syntax for creating entity Ids: by @reid-spencer in #127
- Implement Better Path Resolution In Validation by @reid-spencer in #129
- Use shell syntax in workflow, update identifier documentation by @reid-spencer in #130
- Fix space at end of line. by @reid-spencer in #131
- Fix path resolution & workflow by @reid-spencer in #132
- Use the latest hugo version by @reid-spencer in #133
- Kalix Translator by @reid-spencer in #128
- Doc fixes by @reid-spencer in #134
- Support improving.app language design by @reid-spencer in #135
Full Changelog: 0.7.1...0.8.0