Version History

This page contains notable changes that affect the API with more details than provided by the changelogs.

v0.8.2

v0.8.1

v0.8.0

Version v0.8.0 updates SysML support including changes from:

Most notable changes:

  • Removed implicit SubjectMemberships and ObjectiveMemberships from requirements and cases.

  • Feature.is_constant replaces Feature.is_read_only.

  • Added Feature.is_variable.

  • Added ConstructorExpressions which replace InvocationExpressions that invoke non-Step, non-Behavior types. While the syntax is similar with former needing a new keyword prefix, parse trees are different:

    attribute x = Type(2);
    
    Namespace [0, 0] - [1, 0]
      children: OwningMembership [0, 0] - [0, 22]
        target: AttributeUsage [0, 0] - [0, 22]
          attribute [0, 0] - [0, 9]
          declared_name: NAME [0, 10] - [0, 11]
          value: FeatureValue [0, 12] - [0, 21]
            = [0, 12] - [0, 13]
            target: InvocationExpression [0, 14] - [0, 21]
              children: Membership [0, 14] - [0, 18]
                target: TypeReference [0, 14] - [0, 18]
                  parts: NAME [0, 14] - [0, 18]
              ( [0, 18] - [0, 19]
              children: ParameterMembership [0, 19] - [0, 20]
                target: Feature [0, 19] - [0, 20]
                  value: FeatureValue [0, 19] - [0, 20]
                    target: LiteralInteger [0, 19] - [0, 20]
                      literal: DECIMAL_VALUE [0, 19] - [0, 20]
              ) [0, 20] - [0, 21]
          ; [0, 21] - [0, 22]
    
    attribute x = new Type(2);
    
    Namespace [0, 0] - [1, 0]
      children: OwningMembership [0, 0] - [0, 26]
        target: AttributeUsage [0, 0] - [0, 26]
          attribute [0, 0] - [0, 9]
          declaredName: NAME [0, 10] - [0, 11]
          value: FeatureValue [0, 12] - [0, 25]
            = [0, 12] - [0, 13]
            target: ConstructorExpression [0, 14] - [0, 25]
              new [0, 14] - [0, 17]
              children: Membership [0, 18] - [0, 22]
                target: TypeReference [0, 18] - [0, 22]
                  parts: NAME [0, 18] - [0, 22]
              children: ReturnParameterMembership [0, 22] - [0, 25]
                target: Feature [0, 22] - [0, 25]
                  ( [0, 22] - [0, 23]
                  children: ParameterMembership [0, 23] - [0, 24]
                    target: Feature [0, 23] - [0, 24]
                      value: FeatureValue [0, 23] - [0, 24]
                        target: LiteralInteger [0, 23] - [0, 24]
                          literal: DECIMAL_VALUE [0, 23] - [0, 24]
                  ) [0, 24] - [0, 25]
          ; [0, 25] - [0, 26]
    

    Note that the type constructed by ConstructorExpression is now a member in Namespace.children, and arguments are parsed into a return Feature.

  • Renamed some classes, and related snaked_cased attribute names:

    • ItemFeature renamed to PayloadFeature, item_feature to payload_feature.

    • ItemFlow renamed to Flow, item_flow to flow.

    • FlowConnectionUsage and FlowConnectionDefinition renamed to FlowUsage and FlowDefinition respectively, flow_connection to flow.

  • Removed Featuring and LifeClass types - these were not representable in textual syntax anyway, but FeatureMembership and TypeFeaturing lost inherited members from Featuring.

  • MetadataAccessExpression.set_referenced_element was fixed in the specification to be referenced through Membership, available through MetadataAccessExpression.referenced_element.

  • Added Element.path, and extended deterministic element ID generation to user models. However, also note:

    • Element.path does not yet work for elements without qualified_name due to performance concerns. This should be fixed in a future release.

    • User element ID generation may be changed in a future version if we can improve performance.

  • Added previously missed standard attributes:

Other non-model changes include:

  • Increased default PrinterConfig.line_width to 100 from 80 to match rustfmt and produce fewer line breaks, this works better with modern monitors.

  • Improved deserialization to defer unresolved references without @uri instead of emitting an error. Unresolved owned elements still emit errors.

v0.7.2

v0.6.4

  • Added print_references option to print references with sexp

v0.6.3

v0.6.0

Initial public release.