Release Notes
Development
Commits
v1.3.0 - January 1st, 2014
- #690 - Added support for subexpressions (@machty)
- #696 - Fix for reserved keyword "default" (@nateirwin)
- #692 - add line numbers to nodes when parsing (@fivetanley)
- #695 - Pull options out from param setup to allow easier extension (@blakeembrey)
- #694 - Make the environment reusable (@blakeembrey)
- #636 - Print line and column of errors (@sgronblo)
- Use literal for data lookup - c1a93d3
- Add stack handling sanity checks - cd885bf
- Fix stack id "leak" on replaceStack - ddfe457
- Fix incorrect stack pop when replacing literals - f4d337d
Commits
v1.2.1 - December 26th, 2013
- #684 - Allow any number of trailing characters for valid JavaScript variable (@blakeembrey)
- #686 - Falsy AMD module names in version 1.2.0 (@kpdecker)
Commits
v1.2.0 - December 23rd, 2013
- #675 - Cannot compile empty template for partial (@erwinw)
- #677 - Triple brace statements fail under IE (@hamzaCM)
- #655 - Loading Handlebars using bower (@niki4810)
- #657 - Fixes issue where cli compiles non handlebars templates (@chrishoage)
- #681 - Adds in-browser testing and Saucelabs CI (@kpdecker)
- #661 - Add @first and @index to #each object iteration (@cgp)
- #650 - Handlebars is MIT-licensed (@thomasboyt)
- #641 - Document ember testing process (@kpdecker)
- #662 - handlebars-source 1.1.2 is missing from RubyGems.
- #656 - Expose COMPILER_REVISION checks as a hook (@machty)
- #668 - Consider publishing handlebars-runtime as a separate module on npm (@dlmanning)
- #679 - Unable to override invokePartial (@mattbrailsford)
- #646 - Fix "\{{" immediately following "{{" (@dmarcotte)
- Allow extend to work with non-prototyped objects - eb53f2e
- Add JavascriptCompiler public API tests - 1a751b2
- Add AST test coverage for more complex paths - ddea5be
- Fix handling of boolean escape in MustacheNode - b4968bb
Compatibility notes:
@index
and @first
are now supported for each
iteration on objects
Handlebars.VM.checkRevision
and Handlebars.JavaScriptCompiler.prototype.compilerInfo
now available to modify the version checking behavior.
- Browserify users may link to the runtime library via
require('handlebars/runtime')
Commits
v1.1.2 - November 5th, 2013
- #645 - 1.1.1 fails under IE8 (@kpdecker)
#644 - Using precompiled templates (AMD mode) with handlebars.runtime 1.1.1 (@fddima)
Add simple binary utility tests - 96a45a4
Fix empty string compilation - eea708a
Commits
v1.1.1 - November 4th, 2013
Commits
v1.1.0 - November 3rd, 2013
- #628 - Convert code to ES6 modules (@kpdecker)
- #336 - Add whitespace control syntax (@kpdecker)
- #535 - Fix for probable JIT error under Safari (@sorentwo)
- #483 - Add first and last @ vars to each helper (@denniskuczynski)
- #557 -
\\{{foo}}
escaping only works in some situations (@dmarcotte)
- #552 - Added BOM removal flag. (@blessenm)
#543 - publish passing master builds to s3 (@fivetanley)
#608 - Add includeZero
flag to if
conditional
#498 - Handlebars.compile
fails on empty string although a single blank works fine
#599 - lambda helpers only receive options if used with arguments
#592 - Optimize array and subprogram performance
#571 - uglify upgrade breaks compatibility with older versions of node
#587 - Partial inside partial breaks?
Compatibility notes:
- The project now includes separate artifacts for AMD, CommonJS, and global objects.
- AMD: Users may load the bundled
handlebars.amd.js
or handlebars.runtime.amd.js
files or load individual modules directly. AMD users should also note that the handlebars object is exposed via the default
field on the imported object. This gist provides some discussion of possible compatibility shims.
- CommonJS/Node: Node loading occurs as normal via
require
- Globals: The
handlebars.js
and handlebars.runtime.js
files should behave in the same manner as the v1.0.12 / 1.0.0 release.
- Build artifacts have been removed from the repository. npm, components/handlebars.js, cdnjs, or the builds page should now be used as the source of built artifacts.
- Context-stored helpers are now always passed the
options
hash. Previously no-argument helpers did not have this argument.
Commits
v1.0.12 / 1.0.0 - May 31 2013
- #515 - Add node require extensions support (@jjclark1982)
- #517 - Fix amd precompiler output with directories (@blessenm)
- #433 - Add support for unicode ids
- #469 - Add support for
?
in ids
- #534 - Protect from object prototype modifications
- #519 - Fix partials with . name (@jamesgorrie)
- #519 - Allow ID or strings in partial names
- #437 - Require matching brace counts in escaped expressions
- Merge passed partials and helpers with global namespace values
- Add support for complex ids in @data references
- Docs updates
Compatibility notes:
- The parser is now stricter on
{{{
, requiring that the end token be }}}
. Templates that do not
follow this convention should add the additional brace value.
- Code that relies on global the namespace being muted when custom helpers or partials are passed will need to explicitly pass an
undefined
value for any helpers that should not be available.
- The compiler version has changed. Precompiled templates with 1.0.12 or higher must use the 1.0.0 or higher runtime.
Commits
v1.0.11 / 1.0.0-rc4 - May 13 2013
Commits
v1.0.10 - Node - Feb 27 2013
- #428 - Fix incorrect rendering of nested programs
- Fix exception message (@tricknotes)
- Added negative number literal support
- Concert library to single IIFE
- Add handlebars-source gemspec (@machty)
Commits
v1.0.9 - Node - Feb 15 2013
- Added
Handlebars.create
API in node module for sandboxed instances (@tommydudebreaux)
Commits
1.0.0-rc3 - Browser - Feb 14 2013
- Prevent use of
this
or ..
in illogical place (@leshill)
- Allow AST passing for
parse
/compile
/precompile
(@machty)
- Optimize generated output by inlining statements where possible
- Check compiler version when evaluating templates
- Package browser dist in npm package
Commits
Prior Versions
When upgrading from the Handlebars 0.9 series, be aware that the
signature for passing custom helpers or partials to templates has
changed.
Instead of:
template(context, helpers, partials, [data])
Use:
template(context, {helpers: helpers, partials: partials, data: data})