Merge changes from my fork back to main Repo#352
Merge changes from my fork back to main Repo#352oformaniuk wants to merge 64 commits intoHandlebars-Net:masterfrom
Conversation
Feature/pipelines
Added support for helpers with return statement Refactored expression tree creation to improve readability and maintainability
Handlebars-Net/issues/294 - Handlebars-Net/issues/264 - Handlebars-Net/issues/151 - Handlebars-Net/issues/301 Handlebars-Net/issues/344 Handlebars-Net/issues/338 Handlebars-Net/issues/336 Handlebars-Net/issues/308 (for Newtonsoft.Json) Handlebars-Net/issues/307 Handlebars-Net/issues/243 Handlebars-Net/issues/194 Handlebars-Net/issues/122
- Use `ObjectPool` from NuGet - Repack of IL to prevent additional dependencies - Path segment proper caching - Add test coverage
Extreme refactoring/enhancements (aka v2.0)
Fix `value` variable leaking from `BindingContext`
Fix code coverage
- do not use ILRepack as it's not working with Unix - use proper settings
Fix code coverage
- fix CompileFast extension for Unix - fix closure extraction for ValueTypes - obsolete code cleanup
Fix CompileFast for Unix
Create view with writer output
Improve perf
|
Can we get more eyes on this? @zjklee your performance enhancements alone warrant a strong consideration for merging this. We are actively using the fork on some high traffic sites and have seen massive improvements to compile time and allocations (and the related reduction in heap size and GCs). I'm talking orders of magnitude improvements. I cannot personally speak to any of the other functionality changes as we're not actively using them, but the compile and runtime improvements are great. My only issue is that I'm forced to pull a separate nuget repository to run it, which has a separate token, so I cannot just update in-place; I'm forced to drop this repos package, add the package from the fork, update references, etc... Then once this gets merged, if it does, I need to undo all of that. |
|
@rexm any chance you'll have time to take a look? |
What's inside (inspired by /issues/294):
- 2-10x compilation time improvement
- 2-10x execution time improvement
- up to 20x less memory consumption during compilation and execution
Due to the nature and amount of changes I'm not able to extract them to a separate PRs one for each issue at this point.
I'd continue to support my fork (and back-port changes here) until the PR is merged.