Skip to content

Releases: ossuminc/riddl

0.14.1 Story Improvements, Statistics Page, Test Fixes

14 Sep 05:38
91a1247
Compare
Choose a tag to compare

What's Changed

Full Changelog: 0.14.0...0.14.1

0.14.0 Bug Fixes

09 Sep 23:36
26b6756
Compare
Choose a tag to compare
0.14.0 Bug Fixes Pre-release
Pre-release

What's Changed

Full Changelog: 0.13.0...0.14.0

0.13.3 - Fix Common Options Parsing Bug

09 Sep 04:23
420c245
Compare
Choose a tag to compare
Pre-release

What's Changed

Full Changelog: 0.13.1...0.13.3

0.13.1 - sbt-riddl plugin viability

09 Sep 01:38
3e37000
Compare
Choose a tag to compare
Pre-release

What's Changed

Full Changelog: 0.13.0...0.13.1

0.13.0 - Bug Fixes

08 Sep 16:13
4195dea
Compare
Choose a tag to compare
0.13.0 - Bug Fixes Pre-release
Pre-release

This is a bug-fix release. 0.12.0 was a very comprehensive change and yielded a few less-than-desirable outcomes. Those are addressed in this release

What's Changed

Full Changelog: 0.12.0...0.13.0

0.12.0 - Command Improvements

06 Sep 00:16
d193ff7
Compare
Choose a tag to compare
Pre-release

RIDDL has gotten quite the overhaul over the long weekend. This was mostly working on commands, with some long-overdue refactoring:

  • All commands are now pluggable. Creating a new command is as simple as depending on the riddl-commands library, subclassing
    CommandPlugin, and filling in 3 methods (options, config from file, run)
  • The info command output is a little better now.
  • The new about command shows just the “blurb” from the top of the help command output and a link to the documentation (https://riddl.tech/)
  • The new dump command pretty prints the AST from a successful parse/validate of an input .riddl file
  • Things are a bit faster due to using some functional programming to defer message I/O until the end of the run.
  • The options have been rearranged: the common options (--verbose, --suppress-warnings, etc.) must now come first, before the command name; then the command name; then that command's specific options.
  • The --input-file ( or -i) option has been dropped. All commands now take the file name as the first positional argument like “from” did previously. So it is now parse path/to/file instead of parse -i path/to/file
  • The --verbose (or -v) options now prints many things, including the content of loaded config files.
  • The --quiet option now eliminates most of the output including all error and warning messages

Command Output From 0.12.0

reid@Reids-Mac % riddlc version
0.12.0
reid@Reids-Mac % riddlc info
[info] About riddlc:
[info]            name: riddlc
[info]         version: 0.12.0
[info]   documentation: https://riddl.tech
[info]       copyright: © 2019-2022 Ossum Inc.
[info]        built at: 2022-09-05 20:12:05.850-0400
[info]        licenses: Apache License, Version 2.0
[info]    organization: Reactific Software LLC
[info]   scala version: 2.13.8
[info]     sbt version: 1.7.1
reid@Reids-Mac % riddlc about
RIDDL Compiler © 2019-2022 Ossum Inc. All rights reserved."
Version: 0.12.0

This program parses, validates and translates RIDDL sources to other kinds
of documents. RIDDL is a language for system specification based on Domain
Drive Design, Reactive Architecture, and distributed system principles.


Extensive Documentation here: https://riddl.tech
reid@Reids-Mac % riddlc help
RIDDL Compiler © 2019-2022 Ossum Inc. All rights reserved."
Version: 0.12.0

This program parses, validates and translates RIDDL sources to other kinds
of documents. RIDDL is a language for system specification based on Domain
Drive Design, Reactive Architecture, and distributed system principles.


Usage: riddlc [options]

  -t | --show-times
        Show compilation phase execution times 
  -d | --dry-run
        go through the motions but don't write any changes
  -v | --verbose
        Provide verbose output detailing riddlc's actions
  -D | --debug
        Enable debug output. Only useful for riddlc developers
  -q | --quiet
        Do not print out any output, just do the requested command
  -w | --suppress-warnings
        Suppress all warning messages so only errors are shown
  -m | --suppress-missing-warnings
        Show warnings about things that are missing
  -s | --suppress-style-warnings
        Show warnings about questionable input style. 
  -P <value> | --plugins-dir <value>
        Load riddlc command extension plugins from this directory.

Usage:  [about|dump|from|help|hugo|info|parse|repeat|validate|version] <args>...

Command: about
  Print out information about RIDDL

Command: dump input-file
    input-file

Command: from config-file [target-command]
  Loads a configuration file and executes the command in it
    config-file
          A HOCON configuration file with riddlc options in it.
    target-command
          The name of the command to select from the configuration file

Command: help
  Print out how to use this program

Command: hugo [options] input-file
  Parse and validate the input-file and then translate it into the input
  needed for hugo to translate it to a functioning web site.
    input-file
          required riddl input file to read
    -o <value> | --output-dir <value>
          required output directory for the generated output
    -p <value> | --project-name <value>
          optional project name to associate with the generated output
    -e <value> | --erase-output <value>
          Erase entire output directory before putting out files
    -b <value> | --base-url <value>
          Optional base URL for root of generated http URLs
    -t <value> | --themes <value>
          Add theme name/url pairs to use alternative Hugo themes
    -s <value> | --source-url <value>
          URL to the input file's Git Repository
    -h <value> | --edit-path <value>
          Path to add to source-url to allow editing
    -m <value> | --site-logo-path <value>
          Path, in 'static' directory to placement and use
          of the site logo.
    -n <value> | --site-logo-url <value>
          URL from which to copy the site logo.

Command: info
  Print out build information about this program

Command: parse input-file
    input-file

Command: repeat [options] config-file target-command [refresh-rate] [max-cycles]
  This command supports the edit-build-check cycle. It doesn't end
  until <max-cycles> has completed or EOF is reached on standard
  input. During that time, the selected subcommands are repeated.
    config-file
          The path to the configuration file that should be repeated
    target-command
          The name of the command to select from the configuration file
    refresh-rate
          Specifies the rate at which the <git-clone-dir> is checked
  for updates so the process to regenerate the hugo site is
  started
    max-cycles
          Limit the number of check cycles that will be repeated.
    -n | --interactive
          This option causes the repeat command to read from the standard
          input and when it reaches EOF (Ctrl-D is entered) then it cancels
          the loop to exit.

Command: validate input-file
    input-file

Command: version
  Print the version of riddlc and exits
reid@Reids-Mac % 

List Of Pull Requests

New Contributors

Full Changelog

0.10.0...0.12.0

0.11.0

05 Sep 13:48
ff72127
Compare
Choose a tag to compare
0.11.0 Pre-release
Pre-release

Language Changes

  • None

New Features

New Contributors

Full Changelog

0.10.0...0.11.0

Simplified Refactored AST, Better Doc Generation

30 Aug 21:39
1398e59
Compare
Choose a tag to compare

Language Changes

  • 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 (???)
  • Alternations now only take AliasedTypeExpression, which means you can't make alternations of arbitrary things, just referenced named types

AST Refactor

  • Extract the AST abstract types to ast/Abstract.scala
  • Extract value-expression types to ast/Expressions.scala
  • Extract type-expression types to ast/TypeExpressions.scala
  • Change Definition to be a Contents[Definition]
  • Change Validation to use a simpler one-function-per-AST-type kind of validation strategy
  • Make sure all tests still work, regardless
  • Allow AuthorInfo in Context, Entity, Story, Plant

Functional Improvements

  • Add a lookupParentage method to Symboltable
  • Add a resolvePathFromSymTab method to Validation
  • Use new resolvepathFromSymTab method in checkPathRef
  • Make getPathIdType handle full path identifiers
  • Implement Author Based TODO list
  • Added a new "debug" common option to debug diagrams and other things

Hugo Translator Improvements

  • Improve layout and handling of types
  • Improve documentation of types with source links corrected
  • Add configuration for specifying a logo source URL
  • Make the layout of container/leaf pages consistent
  • Add a full index to the root node in docs
  • Show source links in the glossary
  • Clean up the document link syntax
  • Emit terms in their definitions too
  • Implement ERD diagrams for States
  • Better organization of types in Context, Domain, Entity, Function
  • Emit Briefly, Definition Path, Source Link as a table
  • Add C4 Diagrams to Contexts

Documentation Improvements

  • Upgrade to hugo-geekdoc 0.34.2 theme
  • Add a concepts section
  • Add a context/handler page and other doc changes.
  • Better documentation for types and handlers
  • Improve the main index look/feel
  • Many clarifications added

Bug Fixes

  • 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
  • Add a test case to ensure we get the right messages when entities are overloaded and referenced.
  • Fix author-based Hugo doc translation, generate index automatically
  • Fix geekdocFilePath settings in each file to make edit URL work
  • Add some AST utilities (WithAuthors, WithOptions)
  • Resolve full paths in Folding.State too
  • Return empty stack when a definition is not found when resolving a relative path
  • fix actions that didn't format well
  • Fix test failures
  • Relative paths in config files
  • Fix test cases for modern output
  • Projections and context handlers are now validated and processed
  • The "hasAuthors" method only returns true if the authors is nonEmpty
  • Fix authorsOfInclude to work correctly
  • Make Enumerations to format correctly
  • Allow "debug" in common section config
  • AliasedTypeExpression needs to format too

Improved Testing

  • Move DokN test case to testkit, out of examples
  • Fix path identifiers in test case riddl source
  • Clean up test case output
  • Make a test case pass if its environment is not found (e.g. in github workflow)
  • Tone down warnings in ReactiveBBQ and other test cases

Miscellaneous

  • Update the releasing guide
  • Add an IJ test case run file for testing arbitrary riddl sources

Pull Requests

Full Changelog

0.8.0...0.10.0

0.8.0

21 Aug 18:58
Compare
Choose a tag to compare
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

Full Changelog: 0.7.1...0.8.0

0.7.1

15 Aug 00:04
741bcbf
Compare
Choose a tag to compare
0.7.1 Pre-release
Pre-release

Language Changes

Allow multiple authors:

  • Domains can now have multiple named author definitions, and they don't have to come first in the domain.

New Features

Remove external dependencies (hugo & tar) from hugo subcommand:

  • Implemented a new Tar utility with commons-compress to unpack tar.gz files
  • Used utils/Tar.untar to unpack the hugo-geekdoc.tar.gz file.
  • Always construct hugo sites manually without forking a hugo new site command
  • Remove the -H option as hugo path is no longer needed

Improve Hugo Site Generation:

  • Added options to specify the site, title, and description
  • Removed the siteLogo option since it can just be put in the static directory instead of loaded from a URL
  • Made riddlc read the previously unsupported "withXXX" options
  • Always create the hugo output dir if it doesn't exist
  • Handle the siteLogoPath option properly

Bugs Fixed

  • Fix a bug with resource loading from system class loader

Refactoring & Cleanup

  • Move copyURLToDir to a utils function
  • Simplify the function that generates the config.toml from a template

Documentation Changes

Update README:

  • Add missing path element in Getting Started section of README
  • Add instructions for using sbt-riddl plugin

Related Pull Requests