Skip to content

Releases: Eliah-Lakhin/lady-deirdre

Release 2.1.0

03 Sep 22:54
13dccee
Compare
Choose a tag to compare

Semantic Analysis Framework

  • #22: Introduced the new Slot object. This object is similar to Attr, except that its value is edited directly by the API user, and it does not have an associated computable function. This allows users to inject external metadata into the semantic model.
  • #22: Implemented the common semantic feature. This feature enables the user to specify Analyzer-wide semantic graph nodes (attributes and slots) that are shared across all compilation units. These enhancements address the lack of global state within the Analyzer's semantic analysis framework and introduce a conventional method to organize cross-document relationships.

Lexer

  • #16: Introduced new $xid_start and $xid_continue Lexer Regex classes.
  • #16: Added support for classes with combined Unicode properties: ${alpha | num}.
  • #16: Adjusted the $alpha class in accordance with UCD specifications.
  • #16: Introduced the lexis::Char and lexis::CharProperties types in the main crate, enabling users to test characters for Unicode properties.
  • #20: Added a new Token operator i("abc") that expands to case-insensitive matching.
  • Fixed an edge-case bug in the Document (MutableUnit). The Mutable Document's lexer sometimes misinterpreted trailing token bounds when the user rewrote the end of the text.
  • Fixed a minor bug in the #[constructor] attribute of the Token macro.

Syntax Parser

  • #19: Fixed a minor bug in the conflict resolutions of the Node macro's root rule.

Breaking Changes

  • #22: The analysis::Feature and analysis::AbstractFeature traits have received new members.

License Agreement Update

The Lady Deirdre's General License Agreement has been updated primarily for the purpose of clarity.

  • The "Derivative Works" section has been renamed to "Contributions". The updated section specifically aims to avoid misinterpretation between copyright transfer and the granting of an exclusive license to the derivative work created by the contributor.
  • The "Commercial-Limited License" has been renamed to the "Basic Commercial License", and the "Unrestricted Commercial License" has been renamed to the "Full Commercial License".
  • The updated Agreement provides a more precise definition of the Product developed with Lady Deirdre and the use cases of the Work. Specifically, the new "Permitted Uses and Clarifications" section introduces specific scenarios for using the Work in Products, including compiled executables and products distributed in source code form.
  • The updated text requires the acquisition of the Full Commercial License when the Basic Commercial License's commercial limit is exceeded, regardless of whether the licensee has been formally notified.

Release 2.0.1

02 Jul 12:27
cc36876
Compare
Choose a tag to compare
  • Fixed bugs in the Token macro code generation when grammar rules include explicit Unicode characters.
  • Breaking Change. The analysis::Grammar trait has been marked as unstable (non-exhaustive) to allow adding new trait members in future minor versions, particularly for the implementation of issue #15.

Release 2.0.0

19 Jun 11:16
c5739b0
Compare
Choose a tag to compare

Notable Updates:

  1. Semantic Analysis Framework

    • On-demand arbitrary incremental computations over syntax trees.
    • Attribute grammars with custom inference functions.
    • Document-wide indices.
    • Multi-threaded concurrent analysis.
  2. Lexis and Syntax Parsing Enhancements

    • Custom recursive-descent parsers with unlimited lookahead and left recursion.
    • Trivia rules for comments and whitespaces.
    • Error-recovery customizations.
    • Negative expressions in the syntax parser: ^[$A | $B | ...].
    • Unicode classes in regexes: $upper, $num, etc.
    • Grammar debugging features, including a step-by-step parser debugger.
    • Significant performance improvements in Lexis and Syntax parsing.
  3. Document Inspection Improvements

    • Tree traversal from nodes to children and from nodes to parents.
    • Depth-first tree traversal.
    • Syntax-independent (generic) tree queries: node_ref.get_child(doc, "child").
    • Node sibling queries directly from NodeRef.
    • Document line index maintenance, allowing line content queries by line number.
    • Removal of Clusters API for simplicity.
    • Various debugging features added: functions to display syntax trees and code content.
  4. Source Code Formatting.

    • Framework for implementing source code formatter programs.
    • Printing source code with annotated snippets and syntax highlighting to the terminal.
  5. User Guide and Showcase Examples.

    • Comprehensive user guide and showcase examples provided.

The full history of changes is available in the "develop" branch:

https://github.com/Eliah-Lakhin/lady-deirdre/commits/develop/?before=1f71eafe70ef3913999985c352131b0739552155+35

License Agreement Updated:

The new agreement introduces a flat model for the commercial use of Lady Deirdre,
replacing the previous royalty-based model. To develop a commercial product without
revenue restrictions, you should acquire an Unrestricted Commercial License.

This license allows perpetual use of Lady Deirdre in commercial products.
To continue receiving future upgrades and updates, license renewal is required.

The rest of the terms remain largely similar to the previous version but clarify
some legal nuances more accurately.

Release 1.0.5

12 May 17:02
09b85e4
Compare
Choose a tag to compare
  • Token macro code generation simplified. This change removes scanner's inner code optimizations to resolve known bugs with negative Lexical rules in some edge cases, but reduces performance to 5-10% on various benchmark tests.
  • Fixed conflicts resolutions procedure of the capturing expressions in the Node macro.
  • Send+Sync traits implemented for Document. The Document was implemented as a Send+Sync from the beginning, but the trait markers were missed by mistake.

Release 1.0.4

16 Apr 08:09
a50e006
Compare
Choose a tag to compare
  • Node macro bugs fixed:

    • Rule's leftmost tokens calculation issues in some edge cases.
    • Skip expressions injection into the repetition expressions was incorrect in some edge cases.
    • Separator expression in the A*{Sep} repetition was ignored during the inline expressions resolution.
  • Node debugging operator debug(expr) output format improved.

  • General fixes in Node and Token macro NFA construction:

    • NFA to DFA transformation minimization was sub optimal.
    • Optional and Repetition FSA operators bugs fixed.

Release 1.0.3

16 Feb 10:27
295649a
Compare
Choose a tag to compare
  • Token with constructors bug fixed.
  • Token peek bug fixed.

Release 1.0.2

04 Feb 03:36
151aff6
Compare
Choose a tag to compare
  • Derive Macro compile time performance significantly improved.
  • Minor bug in NFA to DFA construction fixed.
  • Token default precedence value fixed.
  • No-std build target fixed.
  • Miri issue in array shifting fixed.

Release 1.0.1

21 Nov 11:35
e30afd5
Compare
Choose a tag to compare
  • Missing #[skip(...)] attribute on the Node derive macro bug fixed.
  • No-std reexports fix.

Release 1.0.0

11 Nov 12:25
70ed01a
Compare
Choose a tag to compare

Initial Release.