Skip to content

Latest commit

 

History

History
574 lines (345 loc) · 21.8 KB

CHANGELOG.md

File metadata and controls

574 lines (345 loc) · 21.8 KB

Changelog

All notable changes to ReqIFSharp are documented in this file.

The format is based on Keep a Changelog, and the project follows Semantic Versioning. Numbers such as #67 refer to the issue or pull request of the change.

The repository ships two NuGet packages that version independently: ReqIFSharp and ReqIFSharp.Extensions. Each release is listed under its ReqIFSharp version; the ReqIFSharp.Extensions version released with it is named below the heading, and changes that only concern ReqIFSharp.Extensions are marked as such. A release of ReqIFSharp.Extensions alone is headed by its own name and version. Dates are the dates the packages were published on NuGet.

Added

  • AttributeValueXHTML.ExtractNormalizedTextFromValue(bool keepLineBreaks = false) returns the text of an XHTML value as plain text: runs of spaces, tabs and line breaks are collapsed to one space (non-breaking spaces are kept), no space is added around inline elements, and block elements such as paragraphs and list items are separated by a space or, with keepLineBreaks, by a line feed. The text of a pre element is kept as written, and HTML named entities such as   are turned into their characters. ExtractUnformattedTextFromValue is unchanged (#92).

Changed

  • A REQ-IF root element in a namespace other than the ReqIF namespace (http://www.omg.org/spec/ReqIF/20110401/reqif.xsd) is no longer read as a ReqIF document; it is skipped and a warning is logged. Before, such an element was read when it had no prefix. A root in no namespace is still read (#87).
  • An element other than SPEC-RELATION-REF inside the SPEC-RELATIONS of a relation group is now skipped with a warning, and the references after it are read. Before, it caused an XmlException (#94).
  • An element that has the name of a ReqIF element but is in another namespace (for example <other:THE-VALUE xmlns:other="...">) is no longer read as that ReqIF element. It is skipped, with its content, and a warning is logged. Elements in the ReqIF namespace or in no namespace are read as before, in any document (#97).

Fixed

  • A document that binds the ReqIF namespace to a prefix (<reqif:REQ-IF xmlns:reqif="...">) was read as zero documents, and type, source/target and relation-group references in it were not read. Elements are now matched on their local name and namespace (#87).
  • A document without whitespace between its elements (minified XML) lost data without an error: every other header field (such as CREATION-TIME and REQ-IF-TOOL-ID) and every other enumeration value of an attribute value was skipped, and the spec relations of a relation group were not read or caused an XmlException (#94).
  • AttributeValueXHTML.TheOriginalValue was not read from THE-ORIGINAL-VALUE, so it was always null after reading, and a document that was read and written again lost the original values of its simplified XHTML attribute values (#95).
  • Attribute values did not log anything, also when an ILoggerFactory was passed to the deserializer: the AttributeValue constructors did not keep the logger factory. An enumeration attribute value no longer reports its own element and its DEFINITION and VALUES elements as not supported (#97).
  • new AttributeValueXHTML(loggerFactory) left ExternalObjects null, so QueryExternalObjects and QueryBase64PayloadsAsync of ReqIFSharp.Extensions threw for a spec element that held such a value. new AttributeValueXHTML() left its logger null, so reading into it threw (#98).

10.1.2 - 2026-10-18

ReqIFSharp.Extensions 5.2.2

Changed

  • Update Microsoft.Sbom.Targets to version 4.1.13 (#81); also for ReqIFSharp.Extensions.
  • Centralize the shared MSBuild and package settings in Directory.Build.props and Directory.Build.targets (#83).
  • Building from source requires the .NET 10 SDK (global.json) and C# 14 (#83).
  • ReqIFSharp.Extensions: update to ReqIFSharp 10.1.2.

10.1.1 - 2026-09-05

ReqIFSharp.Extensions 5.2.1

Changed

  • Update dependencies.
  • ReqIFSharp.Extensions: update to ReqIFSharp 10.1.1.

10.1.0 - 2026-06-06

ReqIFSharp.Extensions 5.2.0

Added

  • UML-like metadata decorators on the model (#27).

Changed

  • Lower the minimum required version of Microsoft.Extensions.Logging.Abstractions to 6.0.0 (#77).
  • ReqIFSharp.Extensions: update to ReqIFSharp 10.1.0.

Fixed

  • Retain the namespaces and attributes of the root element when a document is read and written again (#44).

10.0.6 - 2026-05-18

ReqIFSharp.Extensions 5.1.0

Added

  • Deterministic builds and packing in CI, so packages are reproducible (#71).

Changed

  • ReqIFSharp.Extensions: update to ReqIFSharp 10.0.6.

Fixed

  • Dispose the manifest resource stream in GetSchemaFromResource (#69).
  • ReqIFSharp.Extensions: remove the trailing space from ExternalObject.CreateUrl (#68).
  • ReqIFSharp.Extensions: honor the CancellationToken in QueryBase64PayloadsAsync (#67).
  • ReqIFSharp.Extensions: dispose the streams of ReqIFLoaderService deterministically (#66).

10.0.5 - 2026-05-14

ReqIFSharp.Extensions 5.0.5

Changed

  • Update Microsoft.Extensions.Logging.Abstractions to version 10.0.8.
  • ReqIFSharp.Extensions: update to ReqIFSharp 10.0.5.

10.0.4 - 2026-04-24

ReqIFSharp.Extensions 5.0.4

Changed

  • Update Microsoft.Extensions.Logging.Abstractions to version 10.0.7.
  • ReqIFSharp.Extensions: update to ReqIFSharp 10.0.4.

10.0.3 - 2026-02-20

ReqIFSharp.Extensions 5.0.3

Changed

  • Update Microsoft.Extensions.Logging.Abstractions to version 10.0.3.
  • ReqIFSharp.Extensions: update to ReqIFSharp 10.0.3.

10.0.2 - 2025-12-20

ReqIFSharp.Extensions 5.0.2

Changed

  • Update Microsoft.Sbom.Targets to version 4.1.5.
  • Update Microsoft.Extensions.Logging.Abstractions to version 10.0.1.
  • ReqIFSharp.Extensions: update to ReqIFSharp 10.0.2.

10.0.1 - 2025-11-30

ReqIFSharp.Extensions 5.0.1

Added

  • Include the LICENSE and NOTICE files in the NuGet package; the NOTICE file is updated.

Changed

  • Update Microsoft.Sbom.Targets to version 4.1.4.
  • Update Microsoft.Extensions.Logging.Abstractions to version 10.0.0.
  • Call token.ThrowIfCancellationRequested() directly.
  • ReqIFSharp.Extensions: update to ReqIFSharp 10.0.1.

10.0.0 - 2025-11-12

ReqIFSharp.Extensions 5.0.0

Added

  • Read SpecHierarchy.IS-TABLE-INTERNAL.

Changed

  • Breaking: all int properties are now long. The ReqIF specification defines integers as mathematically unbounded; long is the practical choice.
  • When XmlConvert throws an overflow exception while reading an XML attribute, the property is set to its default value (#60).
  • Log the line number and line position when an element is not known.
  • Update Microsoft.Sbom.Targets to version 4.1.3.
  • ReqIFSharp.Extensions: update to ReqIFSharp 10.0.0.

9.2.4 - 2025-10-18

ReqIFSharp.Extensions 4.2.3

Changed

  • Update Microsoft.Extensions.Logging.Abstractions to version 9.0.10.
  • ReqIFSharp.Extensions: update to ReqIFSharp 9.2.4.

9.2.3 - 2025-10-04

ReqIFSharp.Extensions 4.2.2

Changed

  • Update Microsoft.Extensions.Logging.Abstractions to version 9.0.9.
  • ReqIFSharp.Extensions: update to ReqIFSharp 9.2.3.

9.2.2 - 2025-09-04

No ReqIFSharp.Extensions release.

Changed

  • Update Microsoft.Sbom.Targets to version 4.1.2.

9.2.1 - 2025-08-08

ReqIFSharp.Extensions 4.2.1

Added

  • Generate an SBOM and include it in the NuGet package; also for ReqIFSharp.Extensions.
  • Include the XML documentation in the NuGet package; also for ReqIFSharp.Extensions.

Changed

  • Update Microsoft.Extensions.Logging.Abstractions to version 9.0.8.
  • Improve the documentation.
  • ReqIFSharp.Extensions: update to ReqIFSharp 9.2.1.

9.2.0 - 2025-07-16

ReqIFSharp.Extensions 4.2.0

Changed

  • Update Microsoft.Extensions.Logging.Abstractions to version 9.0.7.
  • ReqIFSharp.Extensions: update to ReqIFSharp 9.2.0.

9.1.0 - 2025-02-19

ReqIFSharp.Extensions 4.1.0

Changed

  • Update Microsoft.Extensions.Logging.Abstractions to version 9.0.2.
  • ReqIFSharp.Extensions: update to ReqIFSharp 9.1.0.

9.0.0 - 2025-01-19

ReqIFSharp.Extensions 4.0.0

Added

  • ReqIFSharp.Extensions: ReqIFLoaderService implements IDisposable.
  • ReqIFSharp.Extensions: ReqIFLoaderService constructor that takes an ILoggerFactory.

Changed

  • Breaking: async methods that return a Task are renamed to end in ...Async; also in ReqIFSharp.Extensions.
  • Improve the exceptions thrown by async methods, using nameof throughout.
  • Improve logging.
  • Update Microsoft.Extensions.Logging.Abstractions to version 9.0.1.
  • ReqIFSharp.Extensions: improve argument validation.
  • ReqIFSharp.Extensions: update to ReqIFSharp 9.0.0.

8.1.1 - 2024-10-19

ReqIFSharp.Extensions 3.1.1

Changed

  • Update Microsoft.Extensions.Logging.Abstractions to version 8.0.2.
  • ReqIFSharp.Extensions: update to ReqIFSharp 8.1.1.

8.1.0 - 2024-05-14

ReqIFSharp.Extensions 3.1.0

Changed

  • Apply SonarQube improvements.
  • ReqIFSharp.Extensions: update to ReqIFSharp 8.1.0.

Fixed

  • (De)serialization of AlternativeID (#54).
  • Serialization of the xml:lang attribute.

8.0.0 - 2024-04-27

ReqIFSharp.Extensions 3.0.0

Changed

  • Copyright holder is now Starion Group S.A.; also for ReqIFSharp.Extensions.

7.1.1 - 2024-04-13

ReqIFSharp.Extensions 2.1.1

Changed

  • Update Microsoft.Extensions.Logging.Abstractions to version 8.0.1.
  • ReqIFSharp.Extensions: update to ReqIFSharp 7.1.1.

7.1.0 - 2023-12-07

ReqIFSharp.Extensions 2.1.0

Changed

  • Update Microsoft.Extensions.Logging.Abstractions to version 8.0.0.
  • ReqIFSharp.Extensions: update to ReqIFSharp 7.1.0.

7.0.1 - 2023-07-15

ReqIFSharp.Extensions 2.0.1

Changed

  • Update Microsoft.Extensions.Logging.Abstractions to version 7.0.1.
  • ReqIFSharp.Extensions: update to ReqIFSharp 7.0.1.

7.0.0 - 2022-11-09

ReqIFSharp.Extensions 2.0.0

Changed

  • Update Microsoft.Extensions.Logging.Abstractions to version 7.0.0.
  • ReqIFSharp.Extensions: update to ReqIFSharp 7.0.0.

6.0.1 - 2022-08-04

ReqIFSharp.Extensions 1.0.1, the first stable release of ReqIFSharp.Extensions.

Added

  • SupportedFileExtensionKind on the deserializer (#47).
  • Serialize to the reqif, reqifz and zip formats (#23).

Changed

  • Breaking: IReqIFSerializer and ReqIFSerializer are made symmetrical to the IReqIFDeSerializer interface.
  • Update Microsoft.Extensions.Logging.Abstractions to version 6.0.1.
  • ReqIFSharp.Extensions: update to ReqIFSharp 6.0.1.

Fixed

  • Set the stream to position 0 before creating the XmlReader (#43).
  • ZipArchiveEntry disposed error when ReqIFSerializer.SerializeAsync writes a large .reqifz file.

Release of ReqIFSharp.Extensions only; it uses ReqIFSharp 6.0.0-RC1.

Added

  • ReqIFSharp.Extensions: SpecRelationTypeExtensions.QueryReferencingSpecRelations.
  • ReqIFSharp.Extensions: SpecificationTypeExtensions.QueryReferencingSpecifications.
  • ReqIFSharp.Extensions: SpecObjectTypeExtensions.QueryReferencingSpecObjects.
  • ReqIFSharp.Extensions: a dedicated package icon.

Changed

  • ReqIFSharp.Extensions: improve exception messages.

6.0.0-RC1 - 2022-07-22

ReqIFSharp.Extensions 1.0.0-RC2

Pre-release of the changes listed under 6.0.1, except the logging update and the ZipArchiveEntry fix.

Changed

  • ReqIFSharp.Extensions: update to ReqIFSharp 6.0.0-RC1.

5.0.3 - 2022-06-10

ReqIFSharp.Extensions 1.0.0-RC1

Added

  • ReqIFSharp.Extensions: first pre-release of the package. It provides query extension methods on the ReqIFSharp model (attribute definitions and values, datatype definitions, external objects, spec hierarchies, spec objects, specifications) and the ReqIFLoaderService.

Changed

  • Improve the XML documentation.

5.0.2 - 2022-04-07

Changed

  • Improve the code quality of ReqIF.cs as reported by SonarQube.

5.0.1 - 2022-01-20

Fixed

  • ExternalObject deserialization when the data attribute is not the first attribute of the xhtml:object element (#39).

5.0.0 - 2022-01-01

Added

  • Deserialize from a stream, also through the IReqIFDeSerializer interface (#22).
  • Async deserialization (#24).
  • ExtractUnformattedTextFromValue to extract the unformatted text from an XHTML attribute (#25).
  • Serialize to a stream (#29).
  • Async serialization (#31).
  • Logging through Microsoft.Extensions.Logging.Abstractions (#36).
  • CreateExternalObjectsAsync.

Changed

  • ExternalObject.QueryLocalData is refactored (#22).
  • ReqIFSerializer no longer uses XmlSerializer; all work is done with XmlReader and XmlWriter (#30).
  • CreateExternalObjects uses an XmlReader.
  • Breaking: the read and write (async) XML methods are internal; they are not part of the public API.

Removed

  • Breaking: validation features of IReqIFSerializer and ReqIFSerializer.
  • Breaking: the use of IXmlSerializable, including the GetSchema() method.

Fixed

  • Deserialization of AlternativeId for DatatypeDefinition, SpecHierarchy and SpecType (#33).

4.0.0 - 2021-11-10

Changed

  • Serialization of the DefaultValue property of Identifiable (#21).
  • Update the icon and license properties of the project file.

Removed

  • Breaking: the netstandard1.6 and net45 targets (#20).

3.1.0 - 2021-06-18

Added

  • ExternalObject class to access the external objects referenced in AttributeValueXHTML instances (#18).

3.0.1 - 2021-06-16

Fixed

  • Serialization of the default values of attribute definitions (#17).

3.0.0 - 2021-03-21

Changed

  • Breaking: IReqIFDeSerializer returns an IEnumerable of ReqIF to improve .reqifz support.

Fixed

  • Deserialization and serialization of TOOL-EXTENSIONS (#16).

2.0.0 - 2019-10-24

Changed

  • Breaking: 32-bit integers (int) are replaced by 64-bit integers (long) (#13).

1.4.1 - 2019-02-11

Changed

  • Serialization of the IS-SIMPLIFIED property of the AttributeValueXHTML class (#11).

1.4.0 - 2018-11-13

Added

  • Create a mock object when a referenced object is not found in the sources (#10).

Changed

  • AttributeValueXHTML uses XmlConvert instead of bool.Parse and bool.ToString().

1.3.2 - 2018-06-04

Added

  • Read the MAX-LENGTH attribute of DatatypeDefinitionString.
  • Read the ACCURACY attribute of DatatypeDefinitionReal.

Changed

  • ReadXml of DatatypeDefinitionInteger, DatatypeDefinitionReal and DatatypeDefinitionString uses the XmlReader.

Fixed

  • (De)serialization of the datatype definition classes uses XmlConvert instead of int.Parse and double.Parse.

1.3.1 - 2018-06-02

Fixed

  • ReadXml of AttributeDefinition.IsMultiValued.
  • ReadXml of DatatypeDefinitionInteger.Max and DatatypeDefinitionInteger.Min.

1.3.0 - 2018-03-27

Added

  • Support for .reqifz files.

1.2.0 - 2018-01-07

Added

  • AttributeValue.ValueObject convenience property to get and set the value of any concrete AttributeValue from the abstract type.

1.1.0 - 2017-08-02

Added

  • Support for netstandard1.6.

1.0.6 - 2017-07-31

Changed

  • Upgrade the project to the Visual Studio 2017 project file format; update the NuGet authors and icon URL.

1.0.5 - 2017-06-28

Fixed

  • Processing of the default values of attributes.

1.0.4 - 2017-06-27

Fixed

  • Reading the default value of an AttributeDefinition.

1.0.3 - 2017-06-20

Fixed

  • Handling of XHTML attributes.

1.0.2 - 2017-01-20

Fixed

  • The source and target of a specification during deserialization.

1.0.1 - 2017-01-12

Added

  • First public release under the Apache 2.0 license, after extensive testing on CDP4™.