Skip to content
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
126 lines (91 sloc) 12.3 KB

date: 2020-01-23 title: "Improved base templates, and faster!" description: "In Hugo 0.63 we have improved the base template lookup logic, and this simplification also made Hugo faster …" categories: ["Releases"]

Note: There is already a patch release with some fixes.

Hugo 0.63 is, in general, considerably faster and more memory effective (see the site-building benchmarks below comparing it to v0.62). Not that we are particularly concerned about Hugo's build speed. We leave that to others. But we would hate if it got slower, so we have a comprehensive benchmark suite. And when we needed to simplify the template handling code to solve a concurrency issue, it also became more effective. And as a bonus, we also finally got the base template lookup order that you really, really wanted!

name                              old time/op    new time/op    delta
SiteNew/Bundle_with_image-16        13.2ms ± 2%    10.7ms ± 0%  -19.13%  (p=0.029 n=4+4)
SiteNew/Bundle_with_JSON_file-16    13.1ms ± 0%    10.8ms ± 0%  -17.50%  (p=0.029 n=4+4)
SiteNew/Tags_and_categories-16      47.7ms ± 1%    43.7ms ± 2%   -8.43%  (p=0.029 n=4+4)
SiteNew/Canonify_URLs-16            52.3ms ± 6%    49.5ms ± 7%     ~     (p=0.200 n=4+4)
SiteNew/Deep_content_tree-16        77.7ms ± 0%    71.6ms ± 1%   -7.84%  (p=0.029 n=4+4)
SiteNew/Many_HTML_templates-16      44.0ms ± 2%    37.5ms ± 1%  -14.79%  (p=0.029 n=4+4)
SiteNew/Page_collections-16         58.4ms ± 1%    52.5ms ± 1%  -10.09%  (p=0.029 n=4+4)

name                              old alloc/op   new alloc/op   delta
SiteNew/Bundle_with_image-16        3.81MB ± 0%    2.22MB ± 0%  -41.57%  (p=0.029 n=4+4)
SiteNew/Bundle_with_JSON_file-16    3.60MB ± 0%    2.01MB ± 0%  -44.09%  (p=0.029 n=4+4)
SiteNew/Tags_and_categories-16      19.3MB ± 1%    14.2MB ± 0%  -26.52%  (p=0.029 n=4+4)
SiteNew/Canonify_URLs-16            70.7MB ± 0%    69.0MB ± 0%   -2.30%  (p=0.029 n=4+4)
SiteNew/Deep_content_tree-16        37.0MB ± 0%    31.2MB ± 0%  -15.78%  (p=0.029 n=4+4)
SiteNew/Many_HTML_templates-16      17.5MB ± 0%    10.6MB ± 0%  -39.68%  (p=0.029 n=4+4)
SiteNew/Page_collections-16         25.8MB ± 0%    21.2MB ± 0%  -17.80%  (p=0.029 n=4+4)

name                              old allocs/op  new allocs/op  delta
SiteNew/Bundle_with_image-16         52.3k ± 0%     26.1k ± 0%  -50.08%  (p=0.029 n=4+4)
SiteNew/Bundle_with_JSON_file-16     52.3k ± 0%     26.1k ± 0%  -50.06%  (p=0.029 n=4+4)
SiteNew/Tags_and_categories-16        337k ± 1%      272k ± 0%  -19.20%  (p=0.029 n=4+4)
SiteNew/Canonify_URLs-16              422k ± 0%      395k ± 0%   -6.33%  (p=0.029 n=4+4)
SiteNew/Deep_content_tree-16          400k ± 0%      314k ± 0%  -21.41%  (p=0.029 n=4+4)
SiteNew/Many_HTML_templates-16        247k ± 0%      143k ± 0%  -41.84%  (p=0.029 n=4+4)
SiteNew/Page_collections-16           282k ± 0%      207k ± 0%  -26.31%  (p=0.029 n=4+4)

This release represents 35 contributions by 9 contributors to the main Hugo code base. @bep leads the Hugo development with a significant amount of contributions, but also a big shoutout to @hcwong, @flother, and @RemcodM for their ongoing contributions.

And a big thanks to @digitalcraftsman and @onedrawingperday for their relentless work on keeping the themes site in pristine condition and to @davidsneighbour and @kaushalmodi for all the great work on the documentation site.

Many have also been busy writing and fixing the documentation in hugoDocs, which has received 13 contributions by 10 contributors. A special thanks to @bep, @jeffscottlevine, @davidsneighbour, and @nicfits for their work on the documentation site.

Hugo now has:


  • .Type on-page now returns an empty string if not set in the front matter or if .Section returns empty. See #6760.
  • Baseof template (e.g. baseof.html) lookup order is completely revised/expanded. See base template lookup order. We now do template resolution at execution time following the same rules as the template it applies to (e.g. _default/single.html). This is an obvious improvement and your site should work as before.
  • Shortcode params now supports params with raw string literals (strings surrounded with ``) that supports newlines.
  • Note: In a base template (e.g. baseof.html), the first template block must be a define.




  • Add base template lookup variant to docs.json cafb1d53 @bep







You can’t perform that action at this time.