hugo/docs/content/en/news/0.81.0-relnotes/index.md
2021-02-23 17:41:05 +01:00

22 KiB


date: 2021-02-19 title: "Hugo 0.81.0: The Smorgasbord Edition" description: "Attribute lists (e.g. CSS classes) for Markdown blocks, newlines in template actions/blocks, native Apple M1 ARM64 binary, it's faster, and more …" categories: ["Releases"] toc: true

Hugo 0.81.0 is the first release of this decade, it is the fastest to date, and it's packed with useful new features.

Newlines in Template Actions and Commands

You can now have newlines within template actions and pipelines. This means that you can now do this and similar:

{{ dict 
	"country" "Norway" 
	"population" "5 millions"
	"language" "Norwegian"
	"language_code" "nb"
	"weather" "freezing cold"
	"capitol" "Oslo"
	"largest_city" "Oslo"
	"currency"  "Norwegian krone"
	"dialing_code" "+47" 
}}

Note that the above construction will fail in Hugo versions < 0.81.0.

Attribute Lists after Markdown Blocks

Hugo already supports adding attribute lists (e.g CSS classes) after titles. We now also allow adding attribute lists after Markdown blocks, e.g. tables, lists, paragraphs etc.:

> foo
> bar
{.myclass}

See Configure Goldmark.

Performance

This release is the fastest Hugo to date, see details in the benchmarks below. This is especially true if you use the new ARM64 MacOS binary (only works on Apple M1 devices).

Site Building and Rebuilding Benchmarks: v0.80.0 => v0.81.0

name                                      old time/op    new time/op    delta
SiteNew/Edit_Bundle_with_image-16            771µs ± 6%     817µs ± 7%     ~     (p=0.200 n=4+4)
SiteNew/Edit_Bundle_with_JSON_file-16        728µs ± 2%     737µs ± 1%     ~     (p=0.343 n=4+4)
SiteNew/Edit_Tags_and_categories-16         16.6ms ± 5%    16.3ms ± 3%     ~     (p=0.686 n=4+4)
SiteNew/Edit_Canonify_URLs-16               29.4ms ± 6%    26.9ms ± 4%   -8.37%  (p=0.029 n=4+4)
SiteNew/Edit_Deep_content_tree-16           33.8ms ± 3%    31.2ms ± 3%   -7.53%  (p=0.029 n=4+4)
SiteNew/Edit_Many_HTML_templates-16         12.1ms ± 2%    11.6ms ± 1%   -3.94%  (p=0.029 n=4+4)
SiteNew/Edit_Page_collections-16            20.6ms ± 1%    19.8ms ± 0%   -3.57%  (p=0.029 n=4+4)
SiteNew/Edit_List_terms-16                  3.91ms ± 1%    3.81ms ± 2%   -2.52%  (p=0.029 n=4+4)
SiteNew/Regular_Bundle_with_image-16        6.15ms ± 2%    5.53ms ± 2%  -10.11%  (p=0.029 n=4+4)
SiteNew/Regular_Bundle_with_JSON_file-16    6.26ms ± 4%    5.76ms ± 4%   -7.98%  (p=0.029 n=4+4)
SiteNew/Regular_Tags_and_categories-16      26.2ms ± 2%    25.5ms ± 1%   -2.42%  (p=0.029 n=4+4)
SiteNew/Regular_Canonify_URLs-16            34.7ms ± 8%    33.8ms ± 9%     ~     (p=0.486 n=4+4)
SiteNew/Regular_Deep_content_tree-16        43.8ms ± 1%    43.4ms ± 6%     ~     (p=0.343 n=4+4)
SiteNew/Regular_Many_HTML_templates-16      21.5ms ± 1%    19.7ms ± 2%   -8.54%  (p=0.029 n=4+4)
SiteNew/Regular_Page_collections-16         30.7ms ± 2%    28.2ms ± 1%   -8.23%  (p=0.029 n=4+4)
SiteNew/Regular_List_terms-16               9.70ms ± 1%    8.95ms ± 0%   -7.72%  (p=0.029 n=4+4)

name                                      old alloc/op   new alloc/op   delta
SiteNew/Edit_Bundle_with_image-16            437kB ± 0%     428kB ± 0%   -2.02%  (p=0.029 n=4+4)
SiteNew/Edit_Bundle_with_JSON_file-16        216kB ± 0%     207kB ± 0%   -4.20%  (p=0.029 n=4+4)
SiteNew/Edit_Tags_and_categories-16         10.4MB ± 0%     9.7MB ± 0%   -6.08%  (p=0.029 n=4+4)
SiteNew/Edit_Canonify_URLs-16               84.4MB ± 0%    85.2MB ± 0%   +0.87%  (p=0.029 n=4+4)
SiteNew/Edit_Deep_content_tree-16           26.6MB ± 0%    25.6MB ± 0%   -3.57%  (p=0.029 n=4+4)
SiteNew/Edit_Many_HTML_templates-16         6.03MB ± 0%    5.75MB ± 0%   -4.57%  (p=0.029 n=4+4)
SiteNew/Edit_Page_collections-16            14.8MB ± 0%    14.2MB ± 0%   -4.10%  (p=0.029 n=4+4)
SiteNew/Edit_List_terms-16                  1.83MB ± 0%    1.73MB ± 0%   -5.51%  (p=0.029 n=4+4)
SiteNew/Regular_Bundle_with_image-16        1.93MB ± 0%    1.90MB ± 0%   -1.43%  (p=0.029 n=4+4)
SiteNew/Regular_Bundle_with_JSON_file-16    1.72MB ± 0%    1.69MB ± 0%   -1.72%  (p=0.029 n=4+4)
SiteNew/Regular_Tags_and_categories-16      14.3MB ± 0%    13.6MB ± 0%   -4.80%  (p=0.029 n=4+4)
SiteNew/Regular_Canonify_URLs-16            89.7MB ± 0%    90.2MB ± 0%   +0.61%  (p=0.029 n=4+4)
SiteNew/Regular_Deep_content_tree-16        30.4MB ± 0%    29.2MB ± 0%   -3.95%  (p=0.029 n=4+4)
SiteNew/Regular_Many_HTML_templates-16      9.26MB ± 0%    8.94MB ± 0%   -3.47%  (p=0.029 n=4+4)
SiteNew/Regular_Page_collections-16         18.5MB ± 0%    17.7MB ± 0%   -4.25%  (p=0.029 n=4+4)
SiteNew/Regular_List_terms-16               4.00MB ± 0%    3.85MB ± 0%   -3.55%  (p=0.029 n=4+4)

name                                      old allocs/op  new allocs/op  delta
SiteNew/Edit_Bundle_with_image-16            3.99k ± 0%     4.07k ± 0%   +1.80%  (p=0.029 n=4+4)
SiteNew/Edit_Bundle_with_JSON_file-16        3.99k ± 0%     4.06k ± 0%   +1.81%  (p=0.029 n=4+4)
SiteNew/Edit_Tags_and_categories-16           241k ± 0%      245k ± 0%   +1.67%  (p=0.029 n=4+4)
SiteNew/Edit_Canonify_URLs-16                 364k ± 0%      321k ± 0%  -11.78%  (p=0.029 n=4+4)
SiteNew/Edit_Deep_content_tree-16             264k ± 0%      268k ± 0%   +1.53%  (p=0.029 n=4+4)
SiteNew/Edit_Many_HTML_templates-16          90.3k ± 0%     91.0k ± 0%   +0.83%  (p=0.029 n=4+4)
SiteNew/Edit_Page_collections-16              153k ± 0%      156k ± 0%   +1.46%  (p=0.029 n=4+4)
SiteNew/Edit_List_terms-16                   30.4k ± 0%     30.9k ± 0%   +1.54%  (p=0.029 n=4+4)
SiteNew/Regular_Bundle_with_image-16         23.3k ± 0%     23.1k ± 0%   -0.57%  (p=0.029 n=4+4)
SiteNew/Regular_Bundle_with_JSON_file-16     23.3k ± 0%     23.1k ± 0%   -0.59%  (p=0.029 n=4+4)
SiteNew/Regular_Tags_and_categories-16        284k ± 0%      288k ± 0%   +1.58%  (p=0.029 n=4+4)
SiteNew/Regular_Canonify_URLs-16              387k ± 0%      343k ± 0%  -11.41%  (p=0.029 n=4+4)
SiteNew/Regular_Deep_content_tree-16          307k ± 0%      309k ± 0%   +0.52%  (p=0.029 n=4+4)
SiteNew/Regular_Many_HTML_templates-16        129k ± 0%      129k ± 0%   +0.35%  (p=0.029 n=4+4)
SiteNew/Regular_Page_collections-16           199k ± 0%      200k ± 0%   +0.55%  (p=0.029 n=4+4)
SiteNew/Regular_List_terms-16                53.5k ± 0%     53.4k ± 0%   -0.18%  (p=0.029 n=4+4)

Native Arm Binary for Apple M1

We finally provide native Hugo binary for Apple M1 devices. Download the file named hugo_0.81.0_macOS-ARM64.tar.gz.

JavaScript Building

  • Add inject config option allowing you to automatically replace a global variable with an import from another file relative to assets. 32b86076 @bep #8164
  • Add shims config option to swap out a component with another. A common use case is to load dependencies like React from a CDN (with shims) when in production, but running with the full bundled node_modules dependency during development e19a046c @bep #8165
  • Add external source map support to js.Build and Babel 2c8b5d91 @richtera #8132
  • Fix nilpointer in js.Build error handling a1fe552f @bep #8162

Also see js.Build Options.

Hugo Modules

There are several Hugo Modules-related improvements in this release:

Minify - Keep Comments

Keep comments when running hugo --minify with a new setting in config.toml.

[minify.tdewolff.html]
keepComments = true

The default value for this setting is false.

Statistics

This release represents 59 contributions by 14 contributors to the main Hugo code base.@bep leads the Hugo development with a significant amount of contributions, but also a big shoutout to @moorereason and @benmezger for their ongoing contributions. And a big thanks to @digitalcraftsman for his relentless work on keeping the themes site in pristine condition and to @davidsneighbour, @coliff 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 20 contributions by 13 contributors. A special thanks to @bep, @gagarine, @fridde, and @NicoHood for their work on the documentation site.

Hugo now has:

Notes

  • We have updated to Beta 6 of the Dart Sass Protocol which is not backwards compatible, so if you use Dart Sass you need to also update that binary.
  • hugo gen autocomplete now default to stdout; you can change this by setting --completionfile. As an added bonus we now also support auto completion for zsh, fish and powershell.

Changelog