Hugo 0.18 Released: Everything Now a Page, and Twice as Fast!

A nice Christmas present: We released Hugo 0.18 today – the very popular static website generator written in Go! Loaded with new and exiting features – and with dramatically improved performance!

Grab the binary of your choice here.

Release Notes

Today, we’re exited to release the much-anticipated Hugo 0.18!

We’re heading towards the end of the year 2016, and we can look back on three releases and a steady growing community around the project. This release includes over 220 contributions by nearly 50 contributors to the main codebase. Since the last release, Hugo has gained 1750 stars and 27 additional themes.

Hugo now has:

13750+ stars

408+ contributors

137+ themes

@bep once again took the lead of Hugo and contributed a significant amount of additions. Also a big shoutout to @digitalcraftsman for his relentless work on keeping the documentation and the themes site in pristine condition, and also a big thanks to @moorereason and @bogem for their contributions.

We wish you all a Merry Christmas and a Happy New Year.

The Hugo team

Highlights

The primary new feature in Hugo 0.18 is that every piece of content is now a Page ( #2297 ). This means that every page, including the home page, can have a content file with frontmatter. Not only is this a much simpler model to understand, it is also faster and paved the way for several important new features:

Enable proper titles for Nodes #1051

Sitemap.xml should include nodes, as well as pages #1303

Document homepage content workaround #2240

Allow home page to be easily authored in markdown #720

Minimalist website with homepage as content #330

Hugo again continues its trend of each release being faster than the last. It’s quite a challenge to consistently add significant new functionality and simultaneously dramatically improve performance. Running this benchmark with these sites (renders to memory) shows about 60% reduction in time spent and 30% reduction in memory usage compared to Hugo 0.17.

Other New Features

Every Page now has a Kind property. Since everything is a Page now, the Kind is used to differentiate different kinds of pages. Possible values are page , home , section , taxonomy , and taxonomyTerm . (Internally, we also define RSS , sitemap , robotsTXT , and 404 , but those have no practical use for end users at the moment since they are not included in any collections.)

now has a property. Since everything is a now, the is used to differentiate different kinds of pages. Possible values are , , , , and . (Internally, we also define , , , and , but those have no practical use for end users at the moment since they are not included in any collections.) Add a GitInfo object to Page if enableGitInfo is set. It then also sets Lastmod for the given Page to the author date provided by Git. #2291

object to if is set. It then also sets for the given to the author date provided by Git. #2291 Implement support for alias templates #2533

New template functions: Add imageConfig function #2677 Add sha256 function #2762 Add partialCached template function #1368

Add shortcode to display Instagram images #2690

Add noChmod option to disable perm sync #2749

option to disable perm sync #2749 Add quiet build mode #1218

Notices

.Site.Pages will now contain several kinds of pages, including regular pages, sections, taxonomies, and the home page. If you want a specific kind of page, you can filter it with where and Kind . .Site.RegularPages is a shortcut to the page collection you have been used to getting.

will now contain several kinds of pages, including regular pages, sections, taxonomies, and the home page. If you want a specific kind of page, you can filter it with and . is a shortcut to the page collection you have been used to getting. RSSlink is now deprecated. Use RSSLink instead. Note that in Hugo 0.17 both of them existed, so there is a fifty-fifty chance you will not have to do anything (if you use a theme, the chance is close to 0), and RSSlink will still work for two Hugo versions.

Fixes

Revise the base template lookup logic so it now better matches the behavior of regular templates, making it easier to override the master templates from the theme #2783

template lookup logic so it now better matches the behavior of regular templates, making it easier to override the master templates from the theme #2783 Add workaround for block template crash. Block templates are very useful, but there is a bug in Go 1.6 and 1.7 which makes the template rendering crash if you use the block template in more complex scenarios. This is fixed in the upcoming Go 1.8, but Hugo adds a temporary workaround in Hugo 0.18. #2549

template crash. Block templates are very useful, but there is a bug in Go 1.6 and 1.7 which makes the template rendering crash if you use the block template in more complex scenarios. This is fixed in the upcoming Go 1.8, but Hugo adds a temporary workaround in Hugo 0.18. #2549 All the Params configurations are now case insensitive #1129 #2590 #2615

configurations are now case insensitive #1129 #2590 #2615 Make RawContent raw again #2601

Fix archetype title and date handling #2750

Fix TOML archetype parsing in hugo new #2745

#2745 Fix page sorting when weight is zero #2673

Fix page names that contain dot #2555

Fix RSS Title regression #2645

Handle ToC before handling shortcodes #2433

Only watch relevant themes dir #2602

Hugo new content creates TOML slices with closing bracket on new line #2800

Improvements

Add page information to error logging in rendering #2570

Deprecate RSSlink in favor of RSSLink

in favor of Make benchmark command more useful #2432

Consolidate the Param methods #2590

methods #2590 Allow to set cache dir in config file

Performance improvements: Avoid repeated Viper loads of sectionPagesMenu #2728 Avoid reading from Viper for path and URL funcs #2495 Add partialCached template function. This can be a significant performance boost if you have complex partials that does not need to be rerendered for every page. #1368

