Version History

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

v0.8.4

v0.8.3

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.