Skip to content

Version 6.0.0

Compare
Choose a tag to compare
@teo-tsirpanis teo-tsirpanis released this 22 Feb 23:13
  • Breaking change: The functions RuntimeFarkle.ofEGTFile and RuntimeFarkle.ofBase64Stringas well as their corresponding RuntimeFarkle static methods were removed. Users are advised to migrate away from GOLD Parser.
  • Breaking change: The RuntimeFarkle.GetBuildError method was replaced by GetBuildErrors, which returns a list of build errors.
  • Breaking change: The Farkle.Grammar.Grammar.Properties member now holds a strongly-typed record of informative grammar properties. Unrecognized GOLD Parser properties such as "Author", "Description" and "Version" are discarded. Existing grammar files remain compatible.
  • Breaking change: The members of Farkle's discriminated unions can no longer be accessed in F# using a method. For example, let foo (x: Terminal) = printfn "%s" x.Name becomes let foo (Terminal(_, name)) = printfn "%s" name. For C# users, duplicate properties like Terminal.name with a lowercase "n" were removed; they are replaced by their corresponding title-cased properties.
  • Breaking change: The members of many of Farkle's discriminated unions got meaningful names. C# code using the older names might break.
  • Breaking change: Removed support for generating legacy grammar skeleton files from MSBuild using the Farkle item.
  • Breaking change: The Farkle.Common.SetOnce type became internal.
  • Farkle's types and methods support C# 8.0's Nullable Reference Types.
  • Farkle's builder supports defining operator precedence and associativity to resolve conflicts. The quick start guide was updated.
  • Farkle supports virtual terminals -terminals that are not backed by the default tokenizer's DFA but created by custom tokenizers-, allowing for scenarios like indent-based grammars. An F# sample of an indent-based grammar was published.
  • Dynamic code generation will be applied to post-processors that are frequently used, in a fashion similar to .NET's tiered compilation, regardless of whether their designtime Farkle is precompilable.
  • Build error reporting is improved. More build errors will be reported at the same time, without having to fix one to show the next.
  • Stack overflows when building extremely complex designtime Farkles were either mitigated or will throw recoverable exceptions.