Skip to content

2.2.0

Latest

Choose a tag to compare

@rexm rexm released this 26 Jun 15:12
68ce889

Handlebars.Net 2.2.0

⚠️ Behavior & compatibility changes — please read before upgrading

  • Dropped end-of-life target frameworks. Removed netstandard1.3, net451, and net6. The package now targets netstandard2.0, netstandard2.1, and net8.0. Modern consumers (.NET Framework 4.6.1+, .NET Core 2.0+, .NET 5/8+) are unaffected via netstandard2.0; only consumers on the removed legacy frameworks need to stay on 2.1.x.
  • Single quote (') is now HTML-encoded by default (#546), matching Handlebars.js behavior. This is invisible when rendering HTML, but changes raw output bytes — review any exact-string or snapshot assertions on rendered output.

Bug fixes

  • Case-sensitive resolution of same-spelling path variables, resolved independently in PathBinder (#434)
  • Case-sensitive key lookup for IDictionary/Hashtable (#521) and DictionaryMemberAccessor (#466)
  • @partial-block now usable inside #if and as a block partial (#519)
  • #if with includeZero=true now supported; includeZero honored in built-in conditional blocks (#285)
  • Parent context traversal inside custom block helpers within #each (#539)
  • Safe-string flag preserved when helper output crosses a subexpression boundary (#543)
  • WriteSafeString encoding consistent regardless of helper registration order (#559)
  • Preserve backslashes in template literal text (#462) and double backslashes in static text (#349)
  • Preserve partial indentation (#614)
  • Handle escaped double-quotes in delimited string literal arguments (#584)
  • Allow Unicode letters as first character in identifiers (#416); strip invisible Unicode chars (BOM, etc.) from identifiers (#605)
  • Clearer error when a partial is registered on the wrong Handlebars instance (#545)
  • Removed byref/in delegate parameters incompatible with Mono/Xamarin (#458)
  • Prevent unbounded DictionarySlim growth when replacing existing keys (#541)
  • Normalize CRLF to LF in StaticConverter for platform-independent output

Maintenance

  • CI moved to windows-latest; bumped deprecated GitHub Actions and SDK versions; pinned third-party actions to commit SHAs
  • Resolved SonarCloud security/quality findings; dev environment updated to .NET 10
  • Added render-time/compile-scaling benchmark suite and Handlebars.js regression coverage