A secure, non-evaling end user template engine with aesthetic markup.

Critical or Security advisories for 4.0.0

This version doesn't have any advisory. Want to report one?

Changelog for 4.0.0

/ not yet released / branch "master"


  • Render an opaque internal error by default for non-Liquid::Error (#835) [Dylan Thacker-Smith]
  • Ruby 2.0 support dropped (#832) [Dylan Thacker-Smith]
  • Add to_number Drop method to allow custom drops to work with number filters (#731)
  • Add strictvariables and strictfilters options to detect undefined references (#691)
  • Improve loop performance (#681) [Florian Weingarten]
  • Rename Drop method before_method to liquid_method_missing (#661) [Thierry Joyal]
  • Add urldecode filter to invert urlencode (#645) [Larry Archer]
  • Add global_filter to apply a filter to all output (#610) [Loren Hale]
  • Add compact filter (#600) [Carson Reinke]
  • Rename deprecated "haskey?" and "hasinterrupt?" methods (#593) [Florian Weingarten]
  • Include template name with line numbers in render errors (574) [Dylan Thacker-Smith]
  • Add sort_natural filter (#554) [Martin Hanzel]
  • Add forloop.parentloop as a reference to the parent loop (#520) [Justin Li]
  • Block parsing moved to BlockBody class (#458) [Dylan Thacker-Smith]
  • Add concat filter to concatenate arrays (#429) [Diogo Beato]
  • Ruby 1.9 support dropped (#491) [Justin Li]
  • Liquid::Template.filesystem's readtemplate_file method is no longer passed the context. (#441) [James Reid-Smith]
  • Remove support for liquid_methods
  • Liquid::Template.register_filter raises when the module overrides registered public methods as private or protected (#705) [Gaurav Chande]


  • Fix map filter when value is a Proc (#672) [Guillaume Malette]
  • Fix truncate filter when value is not a string (#672) [Guillaume Malette]
  • Fix behaviour of escape filter when input is nil (#665) [Tanel Jakobsoo]
  • Fix sort filter behaviour with empty array input (#652) [Marcel Cary]
  • Fix test failure under certain timezones (#631) [Dylan Thacker-Smith]
  • Fix bug in uniq filter (#595) [Florian Weingarten]
  • Fix bug when "blank" and "empty" are used as variable names (#592) [Florian Weingarten]
  • Fix condition parse order in strict mode (#569) [Justin Li]
  • Fix naming of the "context variable" when dynamically including a template (#559) [Justin Li]
  • Gracefully accept empty strings in the date filter (#555) [Loren Hale]
  • Fix capturing into variables with a hyphen in the name (#505) [Florian Weingarten]
  • Fix case sensitivity regression in date standard filter (#499) [Kelley Reynolds]
  • Disallow filters with no variable in strict mode (#475) [Justin Li]
  • Disallow variable names in the strict parser that are not valid in the lax parser (#463) [Justin Li]
  • Fix BlockBody#warnings taking exponential time to compute (#486) [Justin Li]

Dependencies for 4.0.0

Name Requirement Status
This version doesn't have runtime dependencies.

My projects using liquid

Name Locked version Requirement
You should be logged in to see which of your projects use liquid.