Skip to content

@sethkinast sethkinast released this Jun 9, 2015 · 25 commits to master since this release

Notable Changes


Dust filter functions previously took one argument, the string to filter. They now accept a second argument, which is the current context.


Dust helpers can now return primitives.

Helpers act like references or sections depending on if they have a body. When they have no body, they act like a reference and look in params.filters for filters to use. When they have a body, they act like a section. You can return thenables and streams normally.

{@return value="" filters="|s" /} 
{@return value=""}{.} World{/return}
Assets 2

@sethkinast sethkinast released this Apr 30, 2015 · 50 commits to master since this release

Notable Changes


In previous versions, setting dust.config.cache to false would blow away the entire cache on every render. Now, setting it to false just prevents new templates from being added and cached templates from being used. Setting it back to true means that previously-cached templates will be ready to use.


We have added a callback(null, compiledTemplate) signature to dust.onLoad.

Calling the onLoad callback with a compiled template function will use this template to satisfy the load request. The template is not automatically registered under any name when passed to the callback, so the onLoad function should handle registration as it needs.

You can still call the callback with uncompiled template source and Dust will compile and store it, while respecting your dust.config.cache setting.


dust.makeBase is now aliased to dust.context.


Dust 2.7.0 broke backwards compatibility with older Dust compilers. This regression has been fixed so templates compiled with older versions of Dust will continue to work with Dust 2.7.1; you can use an older compiler if needed.

Assets 2

@sethkinast sethkinast released this Apr 17, 2015 · 72 commits to master since this release

Supported Runtimes

With this release we are dropping official support for:

  • Internet Explorer 7
  • Node.js 0.8

No explicit changes have been made to break Dust in these environments, but we will no longer run tests and may break them going forward.

Notable Changes

More flexible rendering

You can pass Dust body functions directly to dust.render and, instead of the template name.

require(['lib/dust-core', 'views/index'], function(dust, index) {
  dust.render(index, context, function(err, out) { ... });

This means that you can also compile templates without having to name them-- just pass the compiled function directly to dust.render. You can decide if a function is eligible to be passed as a renderable by calling dust.isTemplateFn().

CommonJS templates

Dust can now compile templates into CommonJS modules. Set dust.config.cjs to true, or use the --cjs flag with dustc.

var dust = require('dustjs-linkedin'),
    index = require('views/index.js')(dust);

index.template; // contains the compiled template
index({ name: "Dust" }, function(err, out) { ... }); // use index to render or stream

Streams in context

You can include a ReadableStream directly in your Dust context and Dust will iterate over it like an array.

var resultStream = db.query("SELECT * FROM people").stream();

dust.renderSource("{#people}{firstName} {lastName}{/people}", { people: resultStream })

As long as you stream the results instead of rendering, Dust will flush data from the Stream as it is output.


You can disable caching of templates (useful for development) by setting dust.config.cache = false. If caching is disabled, you must write a dust.onLoad function to tell Dust how to load partials, since it wouldn't be possible to load them in advance and cache them.


The exposed compiler options such as dust.optimizers are deprecated. They are now exposed under, e.g. dust.compiler.optimizers. In Dust 2.8.0 the old options will be removed.

dust.load, an undocumented but public function, has been made private. Consider using dust.onLoad to define special behavior to load a template.

Templates compiled with earlier Dust versions should be recompiled before using 2.7.0.

Assets 2

@sethkinast sethkinast released this Mar 26, 2015 · 114 commits to master since this release

Notable Changes

Assets 2

@sethkinast sethkinast released this Mar 20, 2015 · 146 commits to master since this release

This release fixes two small issues:

  • Compiling templates with empty blocks such as {<foo}{/foo} leaked compiler data into the template.
  • Negative numbers can be passed as parameters, e.g. {#foo a=-1 b=-2.3 /}
Assets 2