Bump Handlebars.Net from 2.4.1 to 2.4.3 - #485
Merged
github-actions[bot] merged 1 commit intoAug 10, 2026
Merged
Conversation
--- updated-dependencies: - dependency-name: Handlebars.Net dependency-version: 2.4.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
dependabot
Bot
deleted the
dependabot/nuget/service/src/InstructorIQ.Core/Handlebars.Net-2.4.3
branch
August 10, 2026 07:07
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Updated Handlebars.Net from 2.4.1 to 2.4.3.
Release notes
Sourced from Handlebars.Net's releases.
2.4.3
A performance-focused release: rendering is up to 36% faster with up to 56% fewer allocations, and template compilation is up to 88% faster. No API or behavior changes — all improvements are behavior-preserving and were validated against the full test suite (1912 tests) and A/B benchmark runs at every step. (#667, #668)
Performance
Rendering — up to 36% faster, up to 56% fewer allocations (#667)
What changed:
ObservableList<T>.Countacquires aReaderWriterLockSlimper call, and every simple{{name}}paid it once per render — loops paid hundreds of lock acquisitions per render. The descriptors now subscribe once to the append-only resolver list and keep a flag; resolvers registered after compile still take effect.ReusableStringWriter. Outputs over 4096 chars discarded the pooled writer every render, re-growing a freshStringBuilder(16)chunk by chunk — most of RenderToString's allocations.ChainSegment. Dotted member access re-resolved the instance'sObjectDescriptorthrough the ambient context + type-keyed lookup on every segment per render; each segment now holds an immutable(factory, version, type) → descriptorentry, self-invalidated via a version stamp when descriptor providers are registered.ConditionalWeakTableprobe inSafeStringsuntil a safe-marked string is ever produced.ThrowOnUnresolvedBindingExpressiononly on the unresolved branch of path resolution.Convert.ToBooleandispatch, an O(1)ICollection.Countemptiness fast path, and enumerator disposal inAny().Compilation — up to 88% faster (#668)
Template compile time turned out to be dominated by the JIT compiling each template's dynamic method at
CreateDelegate, inline-expanding the[AggressiveInlining]write/encoder machinery into every mustache call site of every template. The compiler now emits thinNoInliningstatic entry points that are JIT-compiled once per process. Render performance was verified unchanged by A/B guardrail benchmarks (the one variant that cost ~4% at render time was rejected and kept inline).Compatibility notes
ChainSegmentdescriptor cache allocates a small entry (~48 B) when a segment observes a new instance type; heterogeneous collections rendered through dotted access can re-allocate per type flip, while the common homogeneous case allocates once per segment ever.Contributors
@rexm
Full Changelog: Handlebars-Net/Handlebars.Net@2.4.2...2.4.3
2.4.2
Compatibility notes
net10.0target. CI was already building and testing against the .NET 10 SDK, and the test/benchmark projects already targetednet10.0, but theHandlebarslibrary itself only shippednetstandard2.0,netstandard2.1, andnet8.0— so .NET 10 apps silently fell back to thenet8.0binary. The package now ships a first-classnet10.0build alongside the existing targets. (#666, fixes #659)Contributors
@rexm
Full Changelog: Handlebars-Net/Handlebars.Net@2.4.1...2.4.2
Commits viewable in compare view.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)