Merge commit 'e48ffb763572814a3788780bb9653dfa2daeae22'
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 20 Jan 2021 11:48:39 +0000 (12:48 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 20 Jan 2021 11:48:39 +0000 (12:48 +0100)
28 files changed:
1  2 
docs/content/en/content-management/related.md
docs/content/en/functions/path.Split.md
docs/content/en/functions/substr.md
docs/content/en/getting-started/configuration.md
docs/content/en/hugo-pipes/babel.md
docs/content/en/hugo-pipes/js.md
docs/content/en/hugo-pipes/scss-sass.md
docs/content/en/news/0.78.0-relnotes/index.md
docs/content/en/news/0.79.0-relnotes/featured.png
docs/content/en/news/0.79.0-relnotes/index.md
docs/content/en/news/0.79.1-relnotes/index.md
docs/content/en/news/0.80.0-relnotes/featured.png
docs/content/en/news/0.80.0-relnotes/index.md
docs/content/en/news/hugo-macos-intel-vs-arm/featured.png
docs/content/en/news/hugo-macos-intel-vs-arm/index.html
docs/content/en/showcase/godot-tutorials/bio.md
docs/content/en/showcase/godot-tutorials/featured.png
docs/content/en/showcase/godot-tutorials/index.md
docs/content/en/templates/taxonomy-templates.md
docs/content/en/tools/editors.md
docs/content/en/variables/page.md
docs/netlify.toml
docs/resources/_gen/images/news/0.79.0-relnotes/featured_hud3f5563b9eabb2fd9dcbcee84e72fe2d_75235_480x0_resize_catmullrom_2.png
docs/resources/_gen/images/news/0.79.0-relnotes/featured_hud3f5563b9eabb2fd9dcbcee84e72fe2d_75235_640x0_resize_catmullrom_2.png
docs/resources/_gen/images/news/0.80.0-relnotes/featured_hu79434c84cc6c2c78f7828eb64a40630a_162027_480x0_resize_catmullrom_2.png
docs/resources/_gen/images/news/0.80.0-relnotes/featured_hu79434c84cc6c2c78f7828eb64a40630a_162027_640x0_resize_catmullrom_2.png
docs/resources/_gen/images/news/hugo-macos-intel-vs-arm/featured_hu3f81ebb7eadaa5c67f592034ca4c1896_299333_480x0_resize_catmullrom_2.png
docs/resources/_gen/images/news/hugo-macos-intel-vs-arm/featured_hu3f81ebb7eadaa5c67f592034ca4c1896_299333_640x0_resize_catmullrom_2.png

index ce0cafa0912a95d9980eb1c9a315598b9aea6337,0000000000000000000000000000000000000000..ec3c3dd6f4a044eb13de5b47a7192edb855ebe6b
mode 100644,000000..100644
--- /dev/null
@@@ -1,135 -1,0 +1,137 @@@
 +---
 +title: Related Content
 +description: List related content in "See Also" sections.
 +date: 2017-09-05
 +categories: [content management]
 +keywords: [content]
 +menu:
 +  docs:
 +    parent: "content-management"
 +    weight: 40
 +weight: 30
 +draft: false
 +aliases: [/content/related/,/related/]
 +toc: true
 +---
 +
 +
 +Hugo uses a set of factors to identify a page's related content based on Front Matter parameters. This can be tuned to the desired set of indices and parameters or left to Hugo's default [Related Content configuration](#configure-related-content).
 +
 +## List Related Content
 +
 +
 +To list up to 5 related pages (which share the same _date_ or _keyword_ parameters) is as simple as including something similar to this partial in your single page template:
 +
 +{{< code file="layouts/partials/related.html" >}}
 +{{ $related := .Site.RegularPages.Related . | first 5 }}
 +{{ with $related }}
 +<h3>See Also</h3>
 +<ul>
 +      {{ range . }}
 +      <li><a href="{{ .RelPermalink }}">{{ .Title }}</a></li>
 +      {{ end }}
 +</ul>
 +{{ end }}
 +{{< /code >}}
 +
 +### Methods
 +
 +Here is the list of "Related" methods available on a page collection such `.RegularPages`.
 +
 +#### .Related PAGE
 +Returns a collection of pages related the given one.
 +
 +```
 +{{ $related := .Site.RegularPages.Related . }}
 +```
 +
 +#### .RelatedIndices PAGE INDICE1 [INDICE2 ...]
 +Returns a collection of pages related to a given one restricted to a list of indices.
 +
 +```
 +{{ $related := .Site.RegularPages.RelatedIndices . "tags" "date" }}
 +```
 +
 +#### .RelatedTo KEYVALS [KEYVALS2 ...]
 +Returns a collection of pages related together by a set of indices and their match.
 +
 +In order to build those set and pass them as argument, one must use the `keyVals` function where the first argument would be the `indice` and the consecutive ones its potential `matches`.
 +
 +```
 +{{ $related := .Site.RegularPages.RelatedTo ( keyVals "tags" "hugo" "rocks")  ( keyVals "date" .Date ) }}
 +```
 +
 +{{% note %}}
 +Read [this blog article](https://regisphilibert.com/blog/2018/04/hugo-optmized-relashionships-with-related-content/) for a great explanation of more advanced usage of this feature.
 +{{% /note %}}
 +
 +## Configure Related Content
 +Hugo provides a sensible default configuration of Related Content, but you can fine-tune this in your configuration, on the global or language level if needed.
 +
 +### Default configuration
 +
 +Without any `related` configuration set on the project, Hugo's Related Content methods will use the following.
 +
 +{{< code-toggle file="config" >}}
 +related:
 +  threshold: 80
 +  includeNewer: false
 +  toLower: false
 +  indices:
 +  - name: keywords
 +    weight: 100
 +  - name: date
 +    weight: 10
 +{{< /code-toggle >}}
 +
++Note that if you have configured `tags` as a taxonomy, `tags` will also be added to the default configuration abve with the weight of `80`.
++
 +Custom configuration should be set using the same syntax.
 +
 +{{% note %}}
 +If you add a `related` config section, you need to add a complete configuration. It is not possible to just set, say, `includeNewer` and use the rest  from the Hugo defaults.
 +{{% /note %}}
 +
 +### Top Level Config Options
 +
 +threshold
 +:  A value between 0-100. Lower value will give more, but maybe not so relevant, matches.
 +
 +includeNewer
 +:  Set to true to include **pages newer than the current page** in the related content listing. This will mean that the output for older posts may change as new related content gets added.
 +
 +toLower
 +: Set to true to lower case keywords in both the indexes and the queries. This may give more accurate results at a slight performance penalty. Note that this can also be set per index.
 +
 +### Config Options per Index
 +
 +name
 +:  The index name. This value maps directly to a page param. Hugo supports string values (`author` in the example) and lists (`tags`, `keywords` etc.) and time and date objects.
 +
 +weight
 +: An integer weight that indicates _how important_ this parameter is relative to the other parameters.  It can be 0, which has the effect of turning this index off, or even negative. Test with different values to see what fits your content best.
 +
 +pattern
 +: This is currently only relevant for dates. When listing related content, we may want to list content that is also close in time. Setting "2006" (default value for date indexes) as the pattern for a date index will add weight to pages published in the same year. For busier blogs, "200601" (year and month) may be a better default.
 +
 +toLower
 +: See above.
 +
 +## Performance Considerations
 +
 +**Fast is Hugo's middle name** and we would not have released this feature had it not been blistering fast.
 +
 +This feature has been in the back log and requested by many for a long time. The development got this recent kick start from this Twitter thread:
 +
 +{{< tweet 898398437527363585 >}}
 +
 +Scott S. Lowe removed the "Related Content" section built using the `intersect` template function on tags, and the build time dropped from 30 seconds to less than 2 seconds on his 1700 content page sized blog.
 +
 +He should now be able to add an improved version of that "Related Content" section without giving up the fast live-reloads. But it's worth noting that:
 +
 +* If you don't use any of the `Related` methods, you will not use the Relate Content feature, and performance will be the same as before.
 +* Calling `.RegularPages.Related` etc. will create one inverted index, also sometimes named posting list, that will be reused for any lookups in that same page collection. Doing that in addition to, as an example, calling `.Pages.Related` will work as expected, but will create one additional inverted index. This should still be very fast, but worth having in mind, especially for bigger sites.
 +
 +{{% note %}}
 +We currently do not index **Page content**. We thought we would release something that will make most people happy before we start solving [Sherlock's last case](https://github.com/joearms/sherlock).
 +{{% /note %}}
index d6bc15ce9923971fb451b612c63de0cef63f36bc,0000000000000000000000000000000000000000..2d6aff6bb3671478a897e9b143aab5bfb9f07093
mode 100644,000000..100644
--- /dev/null
@@@ -1,31 -1,0 +1,31 @@@
- {{ path.Split "a/news.html" }} → "a/", "news.html"
- {{ path.Split "news.html" }} → "", "news.html"
- {{ path.Split "a/b/c" }} → "a/b/", "c"
 +---
 +title: path.Split
 +description: Split path immediately following the final slash.
 +godocref:
 +date: 2018-11-28
 +publishdate: 2018-11-28
 +lastmod: 2018-11-28
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +keywords: [path, split]
 +signature: ["path.Split PATH"]
 +workson: []
 +hugoversion: "0.39"
 +relatedfuncs: [path.Split]
 +deprecated: false
 +---
 +
 +`path.Split` splits `PATH` immediately following the final slash, separating it into a directory and a base component.
 +
 +The returned values have the property that `PATH` = `DIR`+`BASE`.
 +If there is no slash in `PATH`, it returns an empty directory and the base is set to `PATH`.
 +
 +**Note:** On Windows, `PATH` is converted to slash (`/`) separators.
 +
 +```
++{{ $dirFile := path.Split "a/news.html" }} → $dirDile.Dir → "a/", $dirFile.File → "news.html"
++{{ $dirFile := path.Split "news.html" }} → $dirDile.Dir → "", $dirDile.File → "news.html"
++{{ $dirFile := path.Split "a/b/c" }} → $dirDile.Dir → "a/b/", $dirDile.File →  "c"
 +```
index feb25aa1b1a39ef96e5bdd5906b01a875093f279,0000000000000000000000000000000000000000..c02141ab230d3f2535062dfd89d51c5e8510b80c
mode 100644,000000..100644
--- /dev/null
@@@ -1,31 -1,0 +1,46 @@@
- {{substr "BatMan" 0 -3}} → "Bat"
- {{substr "BatMan" 3 3}} → "Man"
 +---
 +title: substr
 +# linktitle:
 +description: Extracts parts of a string from a specified character's position and returns the specified number of characters.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +keywords: [strings]
 +aliases: []
 +signature: ["substr STRING START [LENGTH]"]
 +workson: []
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +---
 +
 +It normally takes two parameters: `start` and `length`. It can also take one parameter: `start`, i.e. `length` is omitted, in which case the substring starting from start until the end of the string will be returned.
 +
 +To extract characters from the end of the string, use a negative start number.
 +
 +In addition, borrowing from the extended behavior described at https://php.net substr, if `length` is given and is negative, that number of characters will be omitted from the end of string.
 +
 +```
++{{ substr "abcdef" 0 }} → "abcdef"
++{{ substr "abcdef" 1 }} → "bcdef"
++
++{{ substr "abcdef" 0 1 }} → "a"
++{{ substr "abcdef" 1 1 }} → "b"
++
++{{ substr "abcdef" 0 -1 }} → "abcde"
++{{ substr "abcdef" 1 -1 }} → "bcde"
++
++{{ substr "abcdef" -1 }} → "f"
++{{ substr "abcdef" -2 }} → "ef"
++
++{{ substr "abcdef" -1 1 }} → "f"
++{{ substr "abcdef" -2 1 }} → "e"
++
++{{ substr "abcdef" -3 -1 }} → "de"
++{{ substr "abcdef" -3 -2 }} → "d"
 +```
index fbfa676bf38dedd362a34e4eb08e18dc9093f91c,0000000000000000000000000000000000000000..97763c002da6c64f23b0066a29ca28fbe209b33e
mode 100644,000000..100644
--- /dev/null
@@@ -1,586 -1,0 +1,586 @@@
- : Turn off writing a `jsconfig.js` into your `/assets` folder with mapping of imports from running [js.Build](https://gohugo.io/hugo-pipes/js). This file is intended to help with intellisense/navigation inside code editors such as [VS Code](https://code.visualstudio.com/). Note that if you do not use `js.Build`, no file will be written.
 +---
 +title: Configure Hugo
 +linktitle: Configuration
 +description: How to configure your Hugo site.
 +date: 2013-07-01
 +publishdate: 2017-01-02
 +lastmod: 2017-03-05
 +categories: [getting started,fundamentals]
 +keywords: [configuration,toml,yaml,json]
 +menu:
 +  docs:
 +    parent: "getting-started"
 +    weight: 60
 +weight: 60
 +sections_weight: 60
 +draft: false
 +aliases: [/overview/source-directory/,/overview/configuration/]
 +toc: true
 +---
 +
 +
 +## Configuration File
 +
 +Hugo uses the `config.toml`, `config.yaml`, or `config.json` (if found in the
 +site root) as the default site config file.
 +
 +The user can choose to override that default with one or more site config files
 +using the command line `--config` switch.
 +
 +Examples:
 +
 +```
 +hugo --config debugconfig.toml
 +hugo --config a.toml,b.toml,c.toml
 +```
 +
 +{{% note %}}
 +Multiple site config files can be specified as a comma-separated string to the `--config` switch.
 +{{% /note %}}
 +
 +{{< todo >}}TODO: distinct config.toml and others (the root object files){{< /todo >}}
 +
 +## Configuration Directory
 +
 +In addition to using a single site config file, one can use the `configDir` directory (default to `config/`) to maintain easier organization and environment specific settings.
 +
 +- Each file represents a configuration root object, such as `params.toml` for `[Params]`, `menu(s).toml` for `[Menu]`, `languages.toml` for `[Languages]` etc...
 +- Each file's content must be top-level, for example:
 +  
 +  In `config.toml` is:
 +  ```toml
 +  [Params]
 +    foo = "bar"
 +  ```
 +  In `params.toml` is:
 +  ```
 +  foo = "bar"
 +  ```
 +- Each directory holds a group of files containing settings unique to an environment.
 +- Files can be localized to become language specific.
 +
 +
 +```
 +├── config
 +│   ├── _default
 +│   │   ├── config.toml
 +│   │   ├── languages.toml
 +│   │   ├── menus.en.toml
 +│   │   ├── menus.zh.toml
 +│   │   └── params.toml
 +│   ├── production
 +│   │   ├── config.toml
 +│   │   └── params.toml
 +│   └── staging
 +│       ├── config.toml
 +│       └── params.toml
 +```
 +
 +Considering the structure above, when running `hugo --environment staging`, Hugo will use every settings from `config/_default` and merge `staging`'s on top of those.
 +{{% note %}}
 +Default environments are __development__ with `hugo server` and __production__ with `hugo`.
 +{{%/ note %}}
 +## All Configuration Settings
 +
 +The following is the full list of Hugo-defined variables with their default
 +value in parentheses. Users may choose to override those values in their site
 +config file(s).
 +
 +archetypeDir ("archetypes")
 +: The directory where Hugo finds archetype files (content templates). {{% module-mounts-note %}}
 +
 +assetDir ("assets")
 +: The directory where Hugo finds asset files used in [Hugo Pipes](/hugo-pipes/). {{% module-mounts-note %}}
 +
 +baseURL
 +: Hostname (and path) to the root, e.g. https://bep.is/
 +
 +blackfriday
 +: See [Configure Blackfriday](/getting-started/configuration-markup#blackfriday)
 +
 +build
 +: See [Configure Build](#configure-build)
 +
 +buildDrafts (false)
 +: Include drafts when building.
 +
 +buildExpired  (false)
 +: Include content already expired.
 +
 +buildFuture (false)
 +: Include content with publishdate in the future.
 +
 +caches
 +: See [Configure File Caches](#configure-file-caches)
 +
 +canonifyURLs (false)
 +: Enable to turn relative URLs into absolute.
 +
 +contentDir ("content")
 +: The directory from where Hugo reads content files. {{% module-mounts-note %}}
 +
 +dataDir ("data")
 +: The directory from where Hugo reads data files. {{% module-mounts-note %}}
 +
 +defaultContentLanguage ("en")
 +: Content without language indicator will default to this language.
 +
 +defaultContentLanguageInSubdir (false)
 +: Render the default content language in subdir, e.g. `content/en/`. The site root `/` will then redirect to `/en/`.
 +
 +disableAliases (false)
 +: Will disable generation of alias redirects. Note that even if `disableAliases` is set, the aliases themselves are preserved on the page. The motivation with this is to be able to generate 301 redirects in an `.htaccess`, a Netlify `_redirects` file or similar using a custom output format.
 +
 +disableHugoGeneratorInject (false)
 +: Hugo will, by default, inject a generator meta tag in the HTML head on the _home page only_. You can turn it off, but we would really appreciate if you don't, as this is a good way to watch Hugo's popularity on the rise.
 +
 +disableKinds ([])
 +: Enable disabling of all pages of the specified *Kinds*. Allowed values in this list: `"page"`, `"home"`, `"section"`, `"taxonomy"`, `"term"`, `"RSS"`, `"sitemap"`, `"robotsTXT"`, `"404"`.
 +
 +disableLiveReload (false)
 +: Disable automatic live reloading of browser window.
 +
 +disablePathToLower (false)
 +: Do not convert the url/path to lowercase.
 +
 +enableEmoji (false)
 +: Enable Emoji emoticons support for page content; see the [Emoji Cheat Sheet](https://www.webpagefx.com/tools/emoji-cheat-sheet/).
 +
 +enableGitInfo (false)
 +: Enable `.GitInfo` object for each page (if the Hugo site is versioned by Git). This will then update the `Lastmod` parameter for each page using the last git commit date for that content file.
 +
 +enableInlineShortcodes (false)
 +: Enable inline shortcode support. See [Inline Shortcodes](/templates/shortcode-templates/#inline-shortcodes).
 +
 +enableMissingTranslationPlaceholders (false)
 +: Show a placeholder instead of the default value or an empty string if a translation is missing.
 +
 +enableRobotsTXT (false)
 +: Enable generation of `robots.txt` file.
 +
 +frontmatter
 +
 +: See [Front matter Configuration](#configure-front-matter).
 +
 +footnoteAnchorPrefix ("")
 +: Prefix for footnote anchors.
 +
 +footnoteReturnLinkContents ("")
 +: Text to display for footnote return links.
 +
 +googleAnalytics ("")
 +: Google Analytics tracking ID.
 +
 +hasCJKLanguage (false)
 +: If true, auto-detect Chinese/Japanese/Korean Languages in the content. This will make `.Summary` and `.WordCount` behave correctly for CJK languages.
 +
 +imaging
 +: See [Image Processing Config](/content-management/image-processing/#image-processing-config).
 +
 +languages
 +: See [Configure Languages](/content-management/multilingual/#configure-languages).
 +
 +languageCode ("")
 +: The site's language code. It is used in the default [RSS template](/templates/rss/#configure-rss) and can be useful for [multi-lingual sites](/content-management/multilingual/#configure-multilingual-multihost).
 +
 +languageName ("")
 +: The site's language name.
 +
 +disableLanguages
 +: See [Disable a Language](/content-management/multilingual/#disable-a-language)
 +
 +layoutDir ("layouts")
 +: The directory from where Hugo reads layouts (templates).
 +
 +log (false)
 +: Enable logging.
 +
 +logFile ("")
 +: Log File path (if set, logging enabled automatically).
 +
 +markup
 +: See [Configure Markup](/getting-started/configuration-markup).{{< new-in "0.60.0" >}}
 +
 +menu
 +: See [Add Non-content Entries to a Menu](/content-management/menus/#add-non-content-entries-to-a-menu).
 +
 +minify
 +: See [Configure Minify](#configure-minify)
 +
 +module
 +: Module config see [Module Config](/hugo-modules/configuration/).{{< new-in "0.56.0" >}}
 +
 +newContentEditor ("")
 +: The editor to use when creating new content.
 +
 +noChmod (false)
 +: Don't sync permission mode of files.
 +
 +noTimes (false)
 +: Don't sync modification time of files.
 +
 +paginate (10)
 +: Default number of elements per page in [pagination](/templates/pagination/).
 +
 +paginatePath ("page")
 +: The path element used during pagination (https://example.com/page/2).
 +
 +permalinks
 +: See [Content Management](/content-management/urls/#permalinks).
 +
 +pluralizeListTitles (true)
 +: Pluralize titles in lists.
 +
 +publishDir ("public")
 +: The directory to where Hugo will write the final static site (the HTML files etc.).
 +
 +related
 +: See [Related Content](/content-management/related/#configure-related-content).{{< new-in "0.27" >}}
 +
 +relativeURLs (false)
 +: Enable this to make all relative URLs relative to content root. Note that this does not affect absolute URLs.
 +
 +refLinksErrorLevel ("ERROR")
 +: When using `ref` or `relref` to resolve page links and a link cannot resolved, it will be logged with this logg level. Valid values are `ERROR` (default) or `WARNING`. Any `ERROR` will fail the build (`exit -1`).
 +
 +refLinksNotFoundURL
 +: URL to be used as a placeholder when a page reference cannot be found in `ref` or `relref`. Is used as-is.
 +
 +rssLimit (unlimited)
 +: Maximum number of items in the RSS feed.
 +
 +sectionPagesMenu ("")
 +: See ["Section Menu for Lazy Bloggers"](/templates/menu-templates/#section-menu-for-lazy-bloggers).
 +
 +sitemap
 +: Default [sitemap configuration](/templates/sitemap-template/#configure-sitemap-xml).
 +
 +staticDir ("static")
 +: A directory or a list of directories from where Hugo reads [static files][static-files]. {{% module-mounts-note %}}
 +
 +summaryLength (70)
 +: The length of text in words to show in a [`.Summary`](/content-management/summaries/#hugo-defined-automatic-summary-splitting).
 +
 +taxonomies
 +: See [Configure Taxonomies](/content-management/taxonomies#configure-taxonomies).
 +
 +theme ("")
 +: Theme to use (located by default in `/themes/THEMENAME/`).
 +
 +themesDir ("themes")
 +: The directory where Hugo reads the themes from.
 +
 +timeout (10000)
 +: Timeout for generating page contents, in milliseconds (defaults to 10&nbsp;seconds). *Note:* this is used to bail out of recursive content generation, if your pages are slow to generate (e.g., because they require large image processing or depend on remote contents) you might need to raise this limit.
 +
 +title ("")
 +: Site title.
 +
 +titleCaseStyle ("AP")
 +: See [Configure Title Case](#configure-title-case)
 +
 +uglyURLs (false)
 +: When enabled, creates URL of the form `/filename.html` instead of `/filename/`.
 +
 +verbose (false)
 +: Enable verbose output.
 +
 +verboseLog (false)
 +: Enable verbose logging.
 +
 +watch (false)
 +: Watch filesystem for changes and recreate as needed.
 +
 +{{% note %}}
 +If you are developing your site on a \*nix machine, here is a handy shortcut for finding a configuration option from the command line:
 +```
 +cd ~/sites/yourhugosite
 +hugo config | grep emoji
 +```
 +
 +which shows output like
 +
 +```
 +enableemoji: true
 +```
 +{{% /note %}}
 +
 +## Configure Build
 +
 +{{< new-in "0.66.0" >}}
 +
 +The `build` configuration section contains global build-related configuration options.
 +
 +{{< code-toggle file="config">}}
 +[build]
 +useResourceCacheWhen="fallback"
 +writeStats = false
 +noJSConfigInAssets = false
 +{{< /code-toggle >}}
 +
 +
 +useResourceCacheWhen
 +: When to use the cached resources in `/resources/_gen` for PostCSS and ToCSS. Valid values are `never`, `always` and `fallback`. The last value means that the cache will be tried if PostCSS/extended version is not available.
 +
 +writeStats {{< new-in "0.69.0" >}}
 +: When enabled, a file named `hugo_stats.json` will be written to your project root with some aggregated data about the build, e.g. list of HTML entities published to be used to do [CSS pruning](/hugo-pipes/postprocess/#css-purging-with-postcss). If you're only using this for the production build, you should consider placing it below [config/production](/getting-started/configuration/#configuration-directory). It's also worth mentioning that, due to the nature of the partial server builds, new HTML entities will be added when you add or change them while the server is running, but the old values will not be removed until you restart the server or run a regular `hugo` build.
 +
 +noJSConfigInAssets {{< new-in "0.78.0" >}}
++: Turn off writing a `jsconfig.json` into your `/assets` folder with mapping of imports from running [js.Build](https://gohugo.io/hugo-pipes/js). This file is intended to help with intellisense/navigation inside code editors such as [VS Code](https://code.visualstudio.com/). Note that if you do not use `js.Build`, no file will be written.
 +
 +## Configure Server
 +
 +{{< new-in "0.67.0" >}}
 +
 +This is only relevant when running `hugo server`, and it allows to set HTTP headers during development, which allows you to test out your Content Security Policy and similar. The configuration format matches [Netlify's](https://docs.netlify.com/routing/headers/#syntax-for-the-netlify-configuration-file) with slighly more powerful [Glob matching](https://github.com/gobwas/glob):
 +
 +
 +{{< code-toggle file="config">}}
 +[server]
 +[[server.headers]]
 +for = "/**.html"
 +
 +[server.headers.values]
 +X-Frame-Options = "DENY"
 +X-XSS-Protection = "1; mode=block"
 +X-Content-Type-Options = "nosniff"
 +Referrer-Policy = "strict-origin-when-cross-origin"
 +Content-Security-Policy = "script-src localhost:1313"
 +{{< /code-toggle >}}
 +
 +Since this is is "development only", it may make sense to put it below the `development` environment:
 +
 +
 +{{< code-toggle file="config/development/server">}}
 +[[headers]]
 +for = "/**.html"
 +
 +[headers.values]
 +X-Frame-Options = "DENY"
 +X-XSS-Protection = "1; mode=block"
 +X-Content-Type-Options = "nosniff"
 +Referrer-Policy = "strict-origin-when-cross-origin"
 +Content-Security-Policy = "script-src localhost:1313"
 +{{< /code-toggle >}}
 +
 +
 +{{< new-in "0.72.0" >}}
 +
 +You can also specify simple redirects rules for the server. The syntax is again similar to Netlify's. 
 +
 +Note that a `status` code of 200 will trigger a [URL rewrite](https://docs.netlify.com/routing/redirects/rewrites-proxies/), which is what you want in SPA situations, e.g:
 +
 +{{< code-toggle file="config/development/server">}}
 +[[redirects]]
 +from = "/myspa/**"
 +to = "/myspa/"
 +status = 200
 +force = false
 +{{< /code-toggle >}}
 +
 +{{< new-in "0.76.0" >}} Setting `force=true` will make a redirect even if there is existing content in the path. Note that before Hugo 0.76  `force` was the default behaviour, but this is inline with how Netlify does it.
 +
 +## Configure Title Case
 +
 +Set `titleCaseStyle` to specify the title style used by the [title](/functions/title/) template function and the automatic section titles in Hugo. It defaults to [AP Stylebook](https://www.apstylebook.com/) for title casing, but you can also set it to `Chicago` or `Go` (every word starts with a capital letter).
 +
 +## Configuration Environment Variables
 +
 +HUGO_NUMWORKERMULTIPLIER
 +: Can be set to increase or reduce the number of workers used in parallel processing in Hugo. If not set, the number of logical CPUs will be used.
 +
 +## Configuration Lookup Order
 +
 +Similar to the template [lookup order][], Hugo has a default set of rules for searching for a configuration file in the root of your website's source directory as a default behavior:
 +
 +1. `./config.toml`
 +2. `./config.yaml`
 +3. `./config.json`
 +
 +In your `config` file, you can direct Hugo as to how you want your website rendered, control your website's menus, and arbitrarily define site-wide parameters specific to your project.
 +
 +
 +## Example Configuration
 +
 +The following is a typical example of a configuration file. The values nested under `params:` will populate the [`.Site.Params`][] variable for use in [templates][]:
 +
 +{{< code-toggle file="config">}}
 +baseURL: "https://yoursite.example.com/"
 +title: "My Hugo Site"
 +footnoteReturnLinkContents: "↩"
 +permalinks:
 +  posts: /:year/:month/:title/
 +params:
 +  Subtitle: "Hugo is Absurdly Fast!"
 +  AuthorName: "Jon Doe"
 +  GitHubUser: "spf13"
 +  ListOfFoo:
 +    - "foo1"
 +    - "foo2"
 +  SidebarRecentLimit: 5
 +{{< /code-toggle >}}
 +
 +## Configure with Environment Variables
 +
 +In addition to the 3 config options already mentioned, configuration key-values can be defined through operating system environment variables.
 +
 +For example, the following command will effectively set a website's title on Unix-like systems:
 +
 +```
 +$ env HUGO_TITLE="Some Title" hugo
 +```
 +
 +This is really useful if you use a service such as Netlify to deploy your site. Look at the Hugo docs [Netlify configuration file](https://github.com/gohugoio/hugoDocs/blob/master/netlify.toml) for an example.
 +
 +{{% note "Setting Environment Variables" %}}
 +Names must be prefixed with `HUGO_` and the configuration key must be set in uppercase when setting operating system environment variables.
 +
 +To set config params, prefix the name with `HUGO_PARAMS_`
 +{{% /note %}}
 +
 +{{< new-in "0.79.0" >}} If you are using snake_cased variable names, the above will not work, so since Hugo 0.79.0 Hugo determines the delimiter to use by the first character after `HUGO`. This allows you to define environment variables on the form `HUGOxPARAMSxAPI_KEY=abcdefgh`, using any [allowed](https://stackoverflow.com/questions/2821043/allowed-characters-in-linux-environment-variable-names#:~:text=So%20names%20may%20contain%20any,not%20begin%20with%20a%20digit.) delimiter.
 +
 +{{< todo >}}
 +Test and document setting params via JSON env var.
 +{{< /todo >}}
 +
 +## Ignore Content Files When Rendering
 +
 +The following statement inside `./config.toml` will cause Hugo to ignore content files ending with `.foo` and `.boo` when rendering:
 +
 +```
 +ignoreFiles = [ "\\.foo$", "\\.boo$" ]
 +```
 +
 +The above is a list of regular expressions. Note that the backslash (`\`) character is escaped in this example to keep TOML happy.
 +
 +## Configure Front Matter
 +
 +### Configure Dates
 +
 +Dates are important in Hugo, and you can configure how Hugo assigns dates to your content pages. You do this by adding a `frontmatter` section to your `config.toml`.
 +
 +
 +The default configuration is:
 +
 +```toml
 +[frontmatter]
 +date = ["date", "publishDate", "lastmod"]
 +lastmod = [":git", "lastmod", "date", "publishDate"]
 +publishDate = ["publishDate", "date"]
 +expiryDate = ["expiryDate"]
 +```
 +
 +If you, as an example, have a non-standard date parameter in some of your content, you can override the setting for `date`:
 +
 + ```toml
 +[frontmatter]
 +date = ["myDate", ":default"]
 +```
 +
 +The `:default` is a shortcut to the default settings. The above will set `.Date` to the date value in `myDate` if present, if not we will look in `date`,`publishDate`, `lastmod` and pick the first valid date.
 +
 +In the list to the right, values starting with ":" are date handlers with a special meaning (see below). The others are just names of date parameters (case insensitive) in your front matter configuration.  Also note that Hugo have some built-in aliases to the above: `lastmod` => `modified`, `publishDate` => `pubdate`, `published` and `expiryDate` => `unpublishdate`. With that, as an example, using `pubDate` as a date in front matter, will, by default, be assigned to `.PublishDate`.
 +
 +The special date handlers are:
 +
 +
 +`:fileModTime`
 +: Fetches the date from the content file's last modification timestamp.
 +
 +An example:
 +
 + ```toml
 +[frontmatter]
 +lastmod = ["lastmod", ":fileModTime", ":default"]
 +```
 +
 +
 +The above will try first to extract the value for `.Lastmod` starting with the `lastmod` front matter parameter, then the content file's modification timestamp. The last, `:default` should not be needed here, but Hugo will finally look for a valid date in `:git`, `date` and then `publishDate`.
 +
 +
 +`:filename`
 +: Fetches the date from the content file's filename. For example, `2018-02-22-mypage.md` will extract the date `2018-02-22`. Also, if `slug` is not set, `mypage` will be used as the value for `.Slug`.
 +
 +An example:
 +
 +```toml
 +[frontmatter]
 +date  = [":filename", ":default"]
 +```
 +
 +The above will try first to extract the value for `.Date` from the filename, then it will look in front matter parameters `date`, `publishDate` and lastly `lastmod`.
 +
 +
 +`:git`
 +: This is the Git author date for the last revision of this content file. This will only be set if `--enableGitInfo` is set or `enableGitInfo = true` is set in site config.
 +
 +## Configure Additional Output Formats
 +
 +Hugo v0.20 introduced the ability to render your content to multiple output formats (e.g., to JSON, AMP html, or CSV). See [Output Formats][] for information on how to add these values to your Hugo project's configuration file.
 +
 +## Configure Minify
 +
 +{{< new-in "0.68.0" >}}
 +
 +Default configuration:
 +
 +{{< code-toggle config="minify" />}}
 +
 +## Configure File Caches
 +
 +Since Hugo 0.52 you can configure more than just the `cacheDir`. This is the default configuration:
 +
 +{{< code-toggle >}}
 +[caches]
 +[caches.getjson]
 +dir = ":cacheDir/:project"
 +maxAge = -1
 +[caches.getcsv]
 +dir = ":cacheDir/:project"
 +maxAge = -1
 +[caches.images]
 +dir = ":resourceDir/_gen"
 +maxAge = -1
 +[caches.assets]
 +dir = ":resourceDir/_gen"
 +maxAge = -1
 +[caches.modules]
 +dir = ":cacheDir/modules"
 +maxAge = -1
 +{{< /code-toggle >}}
 +
 +You can override any of these cache settings in your own `config.toml`.
 +
 +### The keywords explained
 +
 +`:cacheDir`
 +: This is the value of the `cacheDir` config option if set (can also be set via OS env variable `HUGO_CACHEDIR`). It will fall back to `/opt/build/cache/hugo_cache/` on Netlify, or a `hugo_cache` directory below the OS temp dir for the others. This means that if you run your builds on Netlify, all caches configured with `:cacheDir` will be saved and restored on the next build. For other CI vendors, please read their documentation. For an CircleCI example, see [this configuration](https://github.com/bep/hugo-sass-test/blob/6c3960a8f4b90e8938228688bc49bdcdd6b2d99e/.circleci/config.yml).
 +
 +`:project`
 +: The base directory name of the current Hugo project. This means that, in its default setting, every project will have separated file caches, which means that when you do `hugo --gc` you will not touch files related to other Hugo projects running on the same PC.
 +
 +`:resourceDir`
 +: This is the value of the `resourceDir` config option.
 +
 +maxAge
 +: This is the duration before a cache entry will be evicted, -1 means forever and 0 effectively turns that particular cache off. Uses Go's `time.Duration`, so valid values are `"10s"` (10 seconds), `"10m"` (10 minutes) and `"10h"` (10 hours).
 +
 +dir
 +: The absolute path to where the files for this cache will be stored. Allowed starting placeholders are `:cacheDir` and `:resourceDir` (see above).
 +
 +## Configuration Format Specs
 +
 +* [TOML Spec][toml]
 +* [YAML Spec][yaml]
 +* [JSON Spec][json]
 +
 +[`.Site.Params`]: /variables/site/
 +[directory structure]: /getting-started/directory-structure
 +[json]: https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf "Specification for JSON, JavaScript Object Notation"
 +[lookup order]: /templates/lookup-order/
 +[Output Formats]: /templates/output-formats/
 +[templates]: /templates/
 +[toml]: https://github.com/toml-lang/toml
 +[yaml]: https://yaml.org/spec/
 +[static-files]: /content-management/static-files/
index 9688626d9337e56bfae0864d944ca28e8d4e7e04,0000000000000000000000000000000000000000..76a1d441d2c39299bf1ac5dd1d56f313c6842618
mode 100755,000000..100755
--- /dev/null
@@@ -1,79 -1,0 +1,79 @@@
- In Hugo `v0.75` we improved the way we resolve JS configuration and dependencies. One of them is that we now adds the main project's `node_modules` to `NODE_PATH` when running Babel and similar tools. There are some known [issues](https://github.com/babel/babel/issues/5618) with Babel in this area, so if you have a `babel.config.js` living in a Hugo Module (and not in the project itself), we recommend using `require` to load the presets/plugins, e.g.:
 +---
 +title: Babel
 +description: Hugo Pipes can process JS files with Babel.
 +date: 2019-03-21
 +publishdate: 2019-03-21
 +lastmod: 2019-03-21
 +categories: [asset management]
 +keywords: []
 +menu:
 +  docs:
 +    parent: "pipes"
 +    weight: 48
 +weight: 48
 +sections_weight: 48
 +draft: false
 +---
 +
 +Any JavaScript resource file can be transpiled to another JavaScript version using `resources.Babel` which takes for argument the resource object and an optional dict of options listed below. Babel uses the [babel cli](https://babeljs.io/docs/en/babel-cli).
 +
 +
 +{{% note %}}
 +Hugo Pipe's Babel requires the `@babel/cli` and `@babel/core` JavaScript packages to be installed in the project or globally (`npm install -g @babel/cli @babel/core`) along with any Babel plugin(s) or preset(s) used (e.g., `npm install @babel/preset-env --save-dev`).
 +
 +If you are using the Hugo Snap package, Babel and plugin(s) need to be installed locally within your Hugo site directory, e.g., `npm install @babel/cli @babel/core --save-dev` without the `-g` flag.
 +{{% /note %}}
 +
 +
 +### Config
 +
 +{{< new-in "v0.75.0" >}}
 +
++In Hugo `v0.75` we improved the way we resolve JS configuration and dependencies. One of them is that we now add the main project's `node_modules` to `NODE_PATH` when running Babel and similar tools. There are some known [issues](https://github.com/babel/babel/issues/5618) with Babel in this area, so if you have a `babel.config.js` living in a Hugo Module (and not in the project itself), we recommend using `require` to load the presets/plugins, e.g.:
 +
 +
 +```js
 +module.exports = {
 +        presets: [
 +                [
 +                        require('@babel/preset-env'),
 +                        {
 +                                useBuiltIns: 'entry',
 +                                corejs: 3
 +                        }
 +                ]
 +        ]
 +};
 +```
 +
 +
 +
 +### Options
 +
 +config [string]
 +: Path to the Babel configuration file. Hugo will, by default, look for a `babel.config.js` in your project. More information on these configuration files can be found here: [babel configuration](https://babeljs.io/docs/en/configuration).
 +
 +minified [bool]
 +: Save as much bytes as possible when printing
 +
 +noComments [bool]
 +: Write comments to generated output (true by default)
 +
 +compact [bool]
 +: Do not include superfluous whitespace characters and line terminators. Defaults to `auto` if not set.
 +
 +verbose [bool]
 +: Log everything
 +
 +### Examples
 +
 +```go-html-template
 +{{- $transpiled := resources.Get "scripts/main.js" | babel  -}}
 +```
 +
 +Or with options:
 +
 +```go-html-template
 +{{ $opts := dict "noComments" true }}
 +{{- $transpiled := resources.Get "scripts/main.js" | babel $opts -}}
 +```
index fd86972640b47beea91d7139a1f2f2e69004fe55,0000000000000000000000000000000000000000..a34454a93f80a77a289a2817e13983020962934d
mode 100644,000000..100644
--- /dev/null
@@@ -1,173 -1,0 +1,173 @@@
- Hugo will, by default, generate a `assets/jsconfig.js` file that maps the imports. This is useful for navigation/intellisense help inside code editors, but if you don't need/want it, you can [turn it off](/getting-started/configuration/#configure-build).
 +---
 +title: JavaScript Building
 +description: Hugo Pipes can process JavaScript files with [ESBuild](https://github.com/evanw/esbuild).
 +date: 2020-07-20
 +publishdate: 2020-07-20
 +lastmod: 2020-07-20
 +categories: [asset management]
 +keywords: []
 +menu:
 +  docs:
 +    parent: "pipes"
 +    weight: 45
 +weight: 45
 +sections_weight: 45
 +draft: false
 +---
 +
 +Any JavaScript resource file can be transpiled and "tree shaken" using `js.Build` which takes for argument either a string for the filepath or a dict of options listed below.
 +
 +### Options
 +
 +targetPath [string]
 +: If not set, the source path will be used as the base target path. 
 +Note that the target path's extension may change if the target MIME type is different, e.g. when the source is TypeScript.
 +
 +params [map or slice] {{< new-in "0.78.0" >}}
 +: Params that can be imported as JSON in your JS files, e.g.:
 +
 +```go-html-template
 +{{ $js := resources.Get "js/main.js" | js.Build (dict "params" (dict "api" "https://example.org/api")) }}
 +```
 +And then in your JS file: 
 +
 +```js
 +import * as params from '@params';
 +``` 
 +
 +Note that this is meant for small data sets, e.g. config settings. For larger data, please put/mount the files into `/assets` and import them directly.
 +
 +minify [bool]
 +: Let `js.Build` handle the minification.
 +
 +avoidTDZ {{< new-in "0.78.0" >}}
 +: There is/was a bug in WebKit with severe performance issue with the tracking of TDZ checks in JavaScriptCore. Enabling this flag removes the TDZ and `const` assignment checks and may improve performance of larger JS codebases until the WebKit fix is in widespread use. See https://bugs.webkit.org/show_bug.cgi?id=199866
 +
 +target [string]
 +: The language target.
 +  One of: `es5`, `es2015`, `es2016`, `es2017`, `es2018`, `es2019`, `es2020` or `esnext`.
 +  Default is `esnext`.
 +
 +externals [slice]
 +: External dependencies. If a dependency should not be included in the bundle (Ex. library loaded from a CDN.), it should be listed here.
 +
 +```go-html-template
 +{{ $externals := slice "react" "react-dom" }}
 +```
 +
 +> Marking a package as external doesn't imply that the library can be loaded from a CDN. It simply tells Hugo not to expand/include the package in the JS file.
 +
 +defines [map]
 +: Allow to define a set of string replacement to be performed when building. Should be a map where each key is to be replaced by its value.
 +
 +```go-html-template
 +{{ $defines := dict "process.env.NODE_ENV" `"development"` }}
 +```
 +
 +format [string] {{< new-in "0.74.3" >}}
 +: The output format.
 +  One of: `iife`, `cjs`, `esm`.
 +  Default is `iife`, a self-executing function, suitable for inclusion as a <script> tag.
 +
 +sourceMap
 +: Whether to generate source maps. Enum, currently only `inline` (we will improve that).
 +
 +### Import JS code from /assets
 +
 +{{< new-in "0.78.0" >}}
 +
 +Since Hugo `v0.78.0` `js.Build` has full support for the virtual union file system in [Hugo Modules](/hugo-modules/). You can see some simple examples in this [test project](https://github.com/gohugoio/hugoTestProjectJSModImports), but in short this means that you can do this:
 +
 +```js
 +import { hello } from 'my/module';
 +```
 +
 +And it will resolve to the top-most `index.{js,ts,tsx,jsx}` inside `assets/my/module` in the layered file system.
 +
 +```js
 +import { hello3 } from 'my/module/hello3';
 +```
 +
 +Wil resolve to `hello3.{js,ts,tsx,jsx}` inside `assets/my/module`.
 +
 +Any imports starting with `.` is resolved relative to the current file:
 +
 +```js
 +import { hello4 } from './lib';
 +```
 +
 +For other files (e.g. `JSON`, `CSS`) you need to use the relative path including any extension, e.g:
 +
 +```js
 +import * as data from 'my/module/data.json';
 +```
 +
 +Any imports in a file outside `/assets` or that does not resolve to a component inside `/assets` will be resolved by [ESBuild](https://esbuild.github.io/) with the **project directory** as the resolve directory (used as the starting point when looking for `node_modules` etc.). Also see [hugo mod npm pack](/commands/hugo_mod_npm_pack/).  If you have any imported NPM dependencies in your project, you need to make sure to run `npm install` before you run `hugo`.
 +
 +Also note the new `params` option that can be passed from template to your JS files, e.g.:
 +
 +```go-html-template
 +{{ $js := resources.Get "js/main.js" | js.Build (dict "params" (dict "api" "https://example.org/api")) }}
 +```
 +And then in your JS file: 
 +
 +```js
 +import * as params from '@params';
 +```
 +
- It's a very common practice to load external libraries using CDN rather than importing all packages in a single JS file, making it bulky. To do the same with Hugo, you'll need to shim the libraries as follows. In this example, `algoliasearch` and `instantsearch.js` will be shimmed.
++Hugo will, by default, generate a `assets/jsconfig.json` file that maps the imports. This is useful for navigation/intellisense help inside code editors, but if you don't need/want it, you can [turn it off](/getting-started/configuration/#configure-build).
 +
 +
 +
 +### Include Dependencies In package.json / node_modules
 +
 +Any imports in a file outside `/assets` or that does not resolve to a component inside `/assets` will be resolved by [ESBuild](https://esbuild.github.io/) with the **project directory** as the resolve directory (used as the starting point when looking for `node_modules` etc.). Also see [hugo mod npm pack](/commands/hugo_mod_npm_pack/).  If you have any imported NPM dependencies in your project, you need to make sure to run `npm install` before you run `hugo`.
 +
 +{{< new-in "0.78.1" >}} From Hugo `0.78.1` the start directory for resolving NPM packages (aka. packages that live inside a `node_modules` folder) is always the main project folder.
 +
 +**Note:** If you're developing a theme/component that is supposed to be imported and depends on dependencies inside `package.json`, we recommend reading about [hugo mod npm pack](/commands/hugo_mod_npm_pack/), a tool to consolidate all the NPM dependencies in a project.
 +
 +
 +### Examples
 +
 +```go-html-template
 +{{ $built := resources.Get "js/index.js" | js.Build "main.js" }}
 +```
 +
 +Or with options:
 +
 +```go-html-template
 +{{ $externals := slice "react" "react-dom" }}
 +{{ $defines := dict "process.env.NODE_ENV" `"development"` }}
 +
 +{{ $opts := dict "targetPath" "main.js" "externals" $externals "defines" $defines }}
 +{{ $built := resources.Get "scripts/main.js" | js.Build $opts }}
 +<script type="text/javascript" src="{{ $built.RelPermalink }}" defer></script>
 +```
 +
 +#### Shimming a JS library 
 +
- Firstly, add the following to your project's `package.json`:
++It's a common practice to load external libraries using a content delivery network (CDN) rather than importing all packages in a single JS file. To load scripts from a CDN with Hugo, you'll need to shim the libraries as follows. In this example, `react` and `react-dom` will be shimmed.
 +
-     "algoliasearch/lite": "./public/js/shims/algoliasearch.js",
-     "instantsearch.js/es/lib/main": "./public/js/shims/instantsearch.js"
++First, add React and ReactDOM [CDN script tags](https://reactjs.org/docs/add-react-to-a-website.html#tip-minify-javascript-for-production) in your HTML template files. Then create `assets/js/shims/react.js` and `assets/js/shims/react-dom.js` with the following contents:
++```js
++// In assets/js/shims/react.js
++module.exports = window.React;
++
++// In assets/js/shims/react-dom.js
++module.exports = window.ReactDOM;
++```
++
++Finally, add the following to your project's `package.json`:
 +```json
 +{
 +  "browser": {
- What this does is it tells Hugo to look for the listed packages somewhere else. Here we're telling Hugo to look for `algoliasearch/lite` and `instantsearch.js/es/lib/main` in the project's `public/js/shims` folder.
++    "react": "./assets/js/shims/react.js",
++    "react-dom": "./assets/js/shims/react-dom.js"
 +  }
 +}
 +```
 +
- Now we'll need to create the shim JS files which export the global JS variables `module.exports = window.something`. You can create a separate shim JS file in your `assets` directory, and redirect the import paths there if you wish, but a much cleaner way is to create these files on the go, by having the following before your JS is built.
- ```go-html-template
- {{ $a := "module.exports = window.algoliasearch" | resources.FromString "js/shims/algoliasearch.js" }}
- {{ $i := "module.exports = window.instantsearch" | resources.FromString "js/shims/instantsearch.js" }}
- {{/* Call RelPermalink unnecessarily to generate JS files */}}
- {{ $placebo := slice $a.RelPermalink $i.RelPermalink }}
- ```
++This tells Hugo's `js.Build` command to look for `react` and `react-dom` in the project's `assets/js/shims` folder. Note that the `browser` field in your `package.json` file will cause React and ReactDOM to be excluded from your JavaScript bundle. Therefore, **it is unnecessary to add them to the `js.Build` command's `externals` argument.**
 +
 +That's it! You should now have a browser-friendly JS which can use external JS libraries.
index 5f51e24c97dca99a082f112d81b03c9b96d231f9,0000000000000000000000000000000000000000..bdedbd961d6c3415f7fc0f27d9495ba0f30f7cab
mode 100755,000000..100755
--- /dev/null
@@@ -1,54 -1,0 +1,54 @@@
- : The `transpiler` to use, valid values are `libsass` (default) and `dartsass`. Note that the Embedded Dart Sass project is still in beta (beta 5 at the time of writing). The release is scheduled for Q1 2021. We will try to improve the installation process by then, but if you want to use Hugo with Dart Sass you need to download a release binary from [Embedded Dart Sass](https://github.com/sass/dart-sass-embedded/releases) and make sure it's in your PC's `$PATH` (or `%PATH%` on Windows).
 +---
 +title: SASS / SCSS
 +description: Hugo Pipes allows the processing of SASS and SCSS files.
 +date: 2018-07-14
 +publishdate: 2018-07-14
 +lastmod: 2018-07-14
 +categories: [asset management]
 +keywords: []
 +menu:
 +  docs:
 +    parent: "pipes"
 +    weight: 30
 +weight: 02
 +sections_weight: 02
 +draft: false
 +---
 +
 +
 +Any SASS or SCSS file can be transformed into a CSS file using `resources.ToCSS` which takes two arguments, the resource object and a map of options listed below.
 +
 +```go-html-template
 +{{ $sass := resources.Get "sass/main.scss" }}
 +{{ $style := $sass | resources.ToCSS }}
 +```
 +
 +### Options
 +
 +transpiler [string] {{< new-in "0.80.0" >}}
 +
++: The `transpiler` to use, valid values are `libsass` (default) and `dartsass`. Note that the Embedded Dart Sass project is still in beta (beta 5 at the time of writing). The release is scheduled for Q1 2021. We will try to improve the installation process by then, but if you want to use Hugo with Dart Sass you need to download a release binary from [Embedded Dart Sass](https://github.com/sass/dart-sass-embedded/releases) (beta 5) and make sure it's in your PC's `$PATH` (or `%PATH%` on Windows).
 +
 +targetPath [string]
 +: If not set, the resource's target path will be the asset file original path with its extension replaced by `.css`.
 +
 +outputStyle [string]
 +: Default is `nested` (LibSass) and `expanded` (Dart Sass). Other available output styles for LibSass are `expanded`, `compact` and `compressed`. Dart Sass only supports `expanded` and `compressed`.
 +
 +precision [int]
 +: Precision of floating point math. **Note:** This option is not supported by Dart Sass.
 +
 +enableSourceMap [bool]
 +: When enabled, a source map will be generated.
 +
 +includePaths [string slice]
 +: Additional SCSS/SASS include paths. Paths must be relative to the project directory.
 +
 +```go-html-template
 +{{ $options := (dict "targetPath" "style.css" "outputStyle" "compressed" "enableSourceMap" true "includePaths" (slice "node_modules/myscss")) }}
 +{{ $style := resources.Get "sass/main.scss" | resources.ToCSS $options }}
 +```
 +
 +{{% note %}}
 +Setting `outputStyle` to `compressed` will handle SASS/SCSS files minification better than the more generic [`resources.Minify`]({{< ref "minification">}}).
 +{{% /note %}}
index fcc20c06602e7beb8040036953b56e41f54b7f9d,0000000000000000000000000000000000000000..25b0fd4d832bf07f1223601aa24af91747ebc920
mode 100644,000000..100644
--- /dev/null
@@@ -1,50 -1,0 +1,50 @@@
- * Hugo now writes a `jsconfig.js` file inside `/assets` (you can turn it off) with import mappings to help editors such as VS Code with intellisense/navigation, which is especially useful when there is no common root and the source lives inside some temporary directory.
 +
 +---
 +date: 2020-11-03
 +title: "Hugo 0.78.0: Full Hugo Modules Support in js.Build"
 +description: "Resolve JavaScript imports top-down in the layered filesystem, pass parameters from template to JS, new JS intellisense helper, improved JS build errors."
 +categories: ["Releases"]
 +---
 +
 +This release finally brings full [Hugo Modules](https://gohugo.io/hugo-modules/) support to [js.Build](https://gohugo.io/hugo-pipes/js/), curtsy of he new plugin API in the really, really fast [ESBuild](https://github.com/evanw/esbuild) by [@evanw](https://github.com/evanw).
 +
 +Some notes on the improvements in this release:
 +
 +* Now `js.Build` fully supports the virtual union filesystem in [Hugo Modules](https://gohugo.io/hugo-modules/). Any import inside your JavaScript components will resolve starting from the top component mount inside `/assets` with a fallback to the traditional "JS way" (`node_modules` etc.)
 +* You can now pass configuration data from the templates to your scripts via a new `params` option.
++* Hugo now writes a `jsconfig.json` file inside `/assets` (you can turn it off) with import mappings to help editors such as VS Code with intellisense/navigation, which is especially useful when there is no common root and the source lives inside some temporary directory.
 +* We have also improved the build errors you get from `js.Build`. In server mode you will get a preview of the failing lines and in the console you will get a link to the location.
 +
 +Read more about this in [the documentation](https://gohugo.io/hugo-pipes/js/), but a short usage example would look like:
 +
 +In the template:
 +
 +```go-html-template
 +{{ $js := resources.Get "js/main.js" | js.Build (dict "params" (dict "api" "https://example.org/api" ) }}
 +```
 +
 +And then in a JavaScript component:
 +
 +```js
 +import * as params from '@params';
 +
 +// Will resolve to one of `hello.{js,ts,tsx,jsx}` inside `assets/my/module`.
 +import { hello } from 'my/module/hello';
 +
 +var api = params.api;
 +
 +hello();
 +
 +```
 +
 +## Changes
 +
 +* Add avoidTDZ option [3b2fe3cd](https://github.com/gohugoio/hugo/commit/3b2fe3cd33b74166c3debec9826826f2b5a54fd9) [@bep](https://github.com/bep) [#7865](https://github.com/gohugoio/hugo/issues/7865)
 +* Make js.Build fully support modules [85e4dd73](https://github.com/gohugoio/hugo/commit/85e4dd7370eae97ae367e596aa6a10ba42fd4b7c) [@bep](https://github.com/bep) [#7816](https://github.com/gohugoio/hugo/issues/7816)[#7777](https://github.com/gohugoio/hugo/issues/7777)[#7916](https://github.com/gohugoio/hugo/issues/7916)
 +* Generate tsconfig files [3089fc0b](https://github.com/gohugoio/hugo/commit/3089fc0ba171be14670b19439bc2eab6b077b6c3) [@richtera](https://github.com/richtera) [#7777](https://github.com/gohugoio/hugo/issues/7777)
 +
 +
 +
 +
 +
 +
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f1b7686da763f73c88d41c114e63faf2da072ca4
new file mode 100644 (file)
Binary files differ
index a8debd9a2c88356bf8354ac2c9c393c48a2b7ddc,0000000000000000000000000000000000000000..23ed1ef2efb8044081c523d399fbc0e975e4129e
mode 100644,000000..100644
--- /dev/null
@@@ -1,71 -1,0 +1,71 @@@
- title: "0.79.0"
- description: "0.79.0"
 +
 +---
 +date: 2020-11-27
-       Hugo `0.79.0` is a small, but useful release. You can now set custom `.Params` in your [menu](https://gohugo.io/content-management/menus/) configuration, and you can now also override deeply nested snake_cased configuration variables with [OS environment variables](https://gohugo.io/getting-started/configuration/#configure-with-environment-variables). Other than that we have refreshed all the core upstream dependencies. A special thanks to [@alecthomas](https://github.com/alecthomas) (some new [Chroma lexers](https://github.com/alecthomas/chroma/releases/tag/v0.8.2) and fixes) and [@evanw](https://github.com/evanw) ([ESBuild](https://github.com/evanw/esbuild)).
++title: "Hugo 0.79.0: Black Friday Edition"
++description: "Hugo 0.79.0 brings .Params to menus, snake_case support for OS environment config, and a refresh of upstream dependencies (Chroma, ESBuild etc.)."
 +categories: ["Releases"]
 +---
 +
++Hugo `0.79.0` is a small, but useful release. You can now set custom `.Params` in your [menu](https://gohugo.io/content-management/menus/) configuration, and you can now also override deeply nested snake_cased configuration variables with [OS environment variables](https://gohugo.io/getting-started/configuration/#configure-with-environment-variables). Other than that we have refreshed all the core upstream dependencies. A special thanks to [@alecthomas](https://github.com/alecthomas) (some new [Chroma lexers](https://github.com/alecthomas/chroma/releases/tag/v0.8.2) and fixes) and [@evanw](https://github.com/evanw) ([ESBuild](https://github.com/evanw/esbuild)).
 +
 +This release represents **33 contributions by 8 contributors** to the main Hugo code base. [@bep](https://github.com/bep) leads the Hugo development with a significant amount of contributions, but also a big shoutout [@AdamKorcz](https://github.com/AdamKorcz), and [@davidejones](https://github.com/davidejones) for their ongoing contributions. And a big thanks to [@digitalcraftsman](https://github.com/digitalcraftsman) for his relentless work on keeping the themes site in pristine condition and to [@davidsneighbour](https://github.com/davidsneighbour), [@coliff](https://github.com/coliff) and [@kaushalmodi](https://github.com/kaushalmodi) for all the great work on the documentation site.
 +
 +Many have also been busy writing and fixing the documentation in [hugoDocs](https://github.com/gohugoio/hugoDocs), 
 +which has received **13 contributions by 11 contributors**. A special thanks to [@Valac01](https://github.com/Valac01), [@bep](https://github.com/bep), [@mhansen](https://github.com/mhansen), and [@chanjarster](https://github.com/chanjarster) for their work on the documentation site.
 +
 +Hugo now has:
 +
 +* 48392+ [stars](https://github.com/gohugoio/hugo/stargazers)
 +* 437+ [contributors](https://github.com/gohugoio/hugo/graphs/contributors)
 +* 361+ [themes](http://themes.gohugo.io/)
 +
 +## Enhancements
 +
 +### Templates
 +
 +* Add more layout lookup tests [34061706](https://github.com/gohugoio/hugo/commit/34061706e6a9631d92ae3d01e0458eee7bc251cc) [@moorereason](https://github.com/moorereason) [#7964](https://github.com/gohugoio/hugo/issues/7964)
 +
 +### Other
 +
 +* bump gopkg.in/yaml.v2 from 2.3.0 to 2.4.0 [17e0bbe8](https://github.com/gohugoio/hugo/commit/17e0bbe821b508cea936bcfd5c1c181bdb8ad70d) [@dependabot[bot]](https://github.com/apps/dependabot) 
 +* Allow setting the delimiter used for setting config via OS env, e.g. HUGO_ [7e223b3b](https://github.com/gohugoio/hugo/commit/7e223b3baaef68d6e6f99e28f162362c81deffba) [@bep](https://github.com/bep) [#7829](https://github.com/gohugoio/hugo/issues/7829)
 +* Update to github.com/evanw/esbuild 0.8.11 to 0.8.14 [8a6e7060](https://github.com/gohugoio/hugo/commit/8a6e70605350255920100c5c085bb9ea6576d972) [@bep](https://github.com/bep) [#7986](https://github.com/gohugoio/hugo/issues/7986)
 +* bump github.com/google/go-cmp from 0.5.2 to 0.5.3 [6f7633df](https://github.com/gohugoio/hugo/commit/6f7633df7d2c06e32eac628f9c7809dfee75eeed) [@dependabot[bot]](https://github.com/apps/dependabot) 
 +* Remove unneeded meta tag from blog example [a546059a](https://github.com/gohugoio/hugo/commit/a546059a9c0b4541f6c9e292f2bb065c1b6115d9) [@coliff](https://github.com/coliff) 
 +* bump github.com/getkin/kin-openapi from 0.30.0 to 0.31.0 [b5d906e3](https://github.com/gohugoio/hugo/commit/b5d906e31e716328e2c0fbbdbfe6fc5b2ff98886) [@dependabot[bot]](https://github.com/apps/dependabot) 
 +* Regen docshelper [fd70bdaf](https://github.com/gohugoio/hugo/commit/fd70bdafe7dc5d18c9a2f22c49acc3a8de376e8e) [@bep](https://github.com/bep) 
 +* Add menu params [8f5c9a74](https://github.com/gohugoio/hugo/commit/8f5c9a747fcebb02bb99f5de272046411eb15370) [@davidejones](https://github.com/davidejones) [#7951](https://github.com/gohugoio/hugo/issues/7951)
 +* Preserve url set in frontmatter without sanitizing [e4fcb672](https://github.com/gohugoio/hugo/commit/e4fcb672ed8bae21fd9780292b54fea3040dd877) [@satotake](https://github.com/satotake) [#6007](https://github.com/gohugoio/hugo/issues/6007)
 +* Add file deleted by accident [18c13adc](https://github.com/gohugoio/hugo/commit/18c13adcd46bdff963311fdba9eaa9b5a299106e) [@bep](https://github.com/bep) [#7972](https://github.com/gohugoio/hugo/issues/7972)
 +* Regenerate docshelper" [20a35374](https://github.com/gohugoio/hugo/commit/20a35374a3c90adb32a90a5f671afb15165210be) [@bep](https://github.com/bep) [#7972](https://github.com/gohugoio/hugo/issues/7972)
 +* Regenerate docshelper [caf16c20](https://github.com/gohugoio/hugo/commit/caf16c20853947138883f6460682e19733895f52) [@bep](https://github.com/bep) 
 +* Update to Chroma v0.8.2 [b298c06e](https://github.com/gohugoio/hugo/commit/b298c06e0551e3eba10b39ae5668b7a6a36a08a7) [@bep](https://github.com/bep) [#7970](https://github.com/gohugoio/hugo/issues/7970)
 +* bump github.com/evanw/esbuild from 0.8.8 to 0.8.11 [55e290af](https://github.com/gohugoio/hugo/commit/55e290af41ad1c92af13679d4a84d64985d41456) [@dependabot[bot]](https://github.com/apps/dependabot) 
 +* bump github.com/getkin/kin-openapi from 0.26.0 to 0.30.0 [506a190a](https://github.com/gohugoio/hugo/commit/506a190a82cc5564012a1228b4179637b64e58eb) [@dependabot[bot]](https://github.com/apps/dependabot) 
 +* bump github.com/evanw/esbuild from 0.8.6 to 0.8.8 [fc81de64](https://github.com/gohugoio/hugo/commit/fc81de643934e84bb1e1392f6200559ee0ada9b6) [@dependabot[bot]](https://github.com/apps/dependabot) 
 +* Let ESBuild handle all imports from node_modules [78f227b6](https://github.com/gohugoio/hugo/commit/78f227b664d86c30fbb25f7a953b7ef8f2dacf13) [@bep](https://github.com/bep) [#7948](https://github.com/gohugoio/hugo/issues/7948)
 +* bump github.com/evanw/esbuild from 0.8.5 to 0.8.6 [5e03f644](https://github.com/gohugoio/hugo/commit/5e03f644a4507f51bdbcdb42b65ce4e99095374f) [@dependabot[bot]](https://github.com/apps/dependabot) 
 +* bump github.com/evanw/esbuild from 0.8.4 to 0.8.5 [a92ef20f](https://github.com/gohugoio/hugo/commit/a92ef20ff6e43ba05844539b60782e8190712cdc) [@dependabot[bot]](https://github.com/apps/dependabot) 
 +* bump github.com/getkin/kin-openapi from 0.22.1 to 0.26.0 [0d54a844](https://github.com/gohugoio/hugo/commit/0d54a844061e808dd5b4ff4874b2e4bd9df4d556) [@dependabot[bot]](https://github.com/apps/dependabot) 
 +* Update GH docs to say "main" as default branch [943f3c93](https://github.com/gohugoio/hugo/commit/943f3c932f5f67ab52bf8e0636e57751dc9b1891) [@maco](https://github.com/maco) 
 +* Updated year in header [4f20bf29](https://github.com/gohugoio/hugo/commit/4f20bf29eb246a2e65508175fdd5f25b44e98370) [@AdamKorcz](https://github.com/AdamKorcz) 
 +* Added first fuzzer [4c613d5d](https://github.com/gohugoio/hugo/commit/4c613d5d5d60b80a262e968ae8a4525eba8619a2) [@AdamKorcz](https://github.com/AdamKorcz) 
 +* bump github.com/frankban/quicktest from 1.11.1 to 1.11.2 [82a182e5](https://github.com/gohugoio/hugo/commit/82a182e52c4165b4f51d0cc8ef0f21df5d628c69) [@dependabot[bot]](https://github.com/apps/dependabot) 
 +* bump golang.org/x/text from 0.3.3 to 0.3.4 [dfc662b2](https://github.com/gohugoio/hugo/commit/dfc662b2086430dde96c18ccb6b92bba4f1be428) [@dependabot[bot]](https://github.com/apps/dependabot) 
 +* bump github.com/evanw/esbuild from 0.8.3 to 0.8.4 [2f0917cc](https://github.com/gohugoio/hugo/commit/2f0917cc014557e201a9348664736d608a7fa131) [@dependabot[bot]](https://github.com/apps/dependabot) 
 +* Disable NPM test on Travis on Windows [3437174c](https://github.com/gohugoio/hugo/commit/3437174c3a7b96925b82b351ac87530b4fa796a5) [@bep](https://github.com/bep) 
 +* Install nodejs on Windows [f66302ca](https://github.com/gohugoio/hugo/commit/f66302ca0579171ffd1730eb8f33dd05af3d9a00) [@bep](https://github.com/bep) 
 +* Remove external source map option [944150ba](https://github.com/gohugoio/hugo/commit/944150bafbbb5c3e807ba3688174e70764dbdc64) [@bep](https://github.com/bep) [#7932](https://github.com/gohugoio/hugo/issues/7932)
 +
 +## Fixes
 +
 +### Other
 +
 +* Fix memory usage in writeStats [d162bbd7](https://github.com/gohugoio/hugo/commit/d162bbd7990b6a523bdadcd10bf60fcb43ecf270) [@bep](https://github.com/bep) [#7945](https://github.com/gohugoio/hugo/issues/7945)
 +* Fix server rebuild issue with partials referenced from render hooks [e442cf30](https://github.com/gohugoio/hugo/commit/e442cf30a215e33b49ce588a9098147282bd883f) [@bep](https://github.com/bep) [#7990](https://github.com/gohugoio/hugo/issues/7990)
 +* Misc fixes [bf2837a3](https://github.com/gohugoio/hugo/commit/bf2837a314eaf70135791984a423b0b09f58741d) [@bep](https://github.com/bep) [#7924](https://github.com/gohugoio/hugo/issues/7924)[#7923](https://github.com/gohugoio/hugo/issues/7923)
 +
 +
 +
 +
 +
index 76b431223de76e912e43dc7fe5fb53116413a7ce,0000000000000000000000000000000000000000..2a3f32765d0f6cfbd2596eb09d7a008f2c0def90
mode 100644,000000..100644
--- /dev/null
@@@ -1,19 -1,0 +1,22 @@@
- title: "Hugo 0.79.1: A couple of Bug Fixes"
- description: "This version fixes a couple of bugs introduced in 0.79.0."
 +
 +---
 +date: 2020-12-19
-       
++title: "Hugo 0.79.1: One Security Patch for Hugo on Windows"
++description: "Disallow running of e.g. Pandoc in the current directory."
 +categories: ["Releases"]
 +images:
 +- images/blog/hugo-bug-poster.png
 +
 +---
 +
- This is a bug-fix release with one important fix.
++Hugo depends on Go's `os/exec` for certain features, e.g. for rendering of Pandoc documents if these binaries are found in the system `%PATH%` on Windows. However, if a malicious file with the same name (`exe` or `bat`) was found in the current working directory at the time of running `hugo`, the malicious command would be invoked instead of the system one.
 +
- * Improve LookPath [4a8267d6](https://github.com/gohugoio/hugo/commit/4a8267d64a40564aced0695bca05249da17b0eab) [@bep](https://github.com/bep) 
++Windows users who ran `hugo` inside untrusted Hugo sites were affected.
 +
++The origin of this issue comes from Go, see https://github.com/golang/go/issues/38736
 +
++We have fixed this in Hugo by [using](https://github.com/gohugoio/hugo/commit/4a8267d64a40564aced0695bca05249da17b0eab) a patched version of `exec.LookPath` from https://github.com/cli/safeexec (thanks to [@mislav](https://github.com/mislav) for the implementation).
++
++Thanks to [@Ry0taK](https://github.com/Ry0taK) for the bug report.
 +
 +
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..09308b04c4a4d539bf1e7fc6509f7e25d1104f33
new file mode 100644 (file)
Binary files differ
index 48183ff4760988aa61df0e7092d6df58df79c84e,0000000000000000000000000000000000000000..1c390b6858db43a552db50174af29518d17430c8
mode 100644,000000..100644
--- /dev/null
@@@ -1,79 -1,0 +1,79 @@@
- title: "0.80.0"
- description: "0.80.0"
 +
 +---
 +date: 2020-12-31
-       The last Hugo release of the year brings a new [images.Overlay](https://gohugo.io/functions/images/#overlay) filter to overlay an image on top of another, e.g. for watermarking, and [Dart Sass](https://gohugo.io/hugo-pipes/scss-sass/#options) support.
++title: "Hugo 0.80: Last Release of 2020!"
++description: "This release brings Dart Sass support, a new image overlay function, and more."
 +categories: ["Releases"]
 +---
 +
++The last Hugo release of the year brings a new [images.Overlay](https://gohugo.io/functions/images/#overlay) filter to overlay an image on top of another, e.g. for watermarking, and [Dart Sass](https://gohugo.io/hugo-pipes/scss-sass/#options) support.
 +
 +This release represents **29 contributions by 12 contributors** to the main Hugo code base. [@bep](https://github.com/bep) leads the Hugo development with a significant amount of contributions, but also a big shoutout to [@moorereason](https://github.com/moorereason), and [@davidsneighbour](https://github.com/davidsneighbour) for their ongoing contributions.
 +And a big thanks to [@digitalcraftsman](https://github.com/digitalcraftsman) for his relentless work on keeping the themes site in pristine condition and to [@davidsneighbour](https://github.com/davidsneighbour), [@coliff](https://github.com/coliff) and [@kaushalmodi](https://github.com/kaushalmodi) for all the great work on the documentation site.
 +
 +Many have also been busy writing and fixing the documentation in [hugoDocs](https://github.com/gohugoio/hugoDocs), 
 +which has received **22 contributions by 6 contributors**. A special thanks to [@bep](https://github.com/bep), [@D4D3VD4V3](https://github.com/D4D3VD4V3), [@chrischute](https://github.com/chrischute), and [@azenk](https://github.com/azenk) for their work on the documentation site.
 +
 +
 +Hugo now has:
 +
 +* 49096+ [stars](https://github.com/gohugoio/hugo/stargazers)
 +* 436+ [contributors](https://github.com/gohugoio/hugo/graphs/contributors)
 +* 369+ [themes](http://themes.gohugo.io/)
 +
 +## Notes
 +
 +* Resource.ResourceType now always returns MIME's main type [81975f84](https://github.com/gohugoio/hugo/commit/81975f847dc19c21c2321207645807771db97fab) [@bep](https://github.com/bep) [#8052](https://github.com/gohugoio/hugo/issues/8052)
 +
 +## Enhancements
 +
 +### Templates
 +
 +* Regenerate templates [a2d146ec](https://github.com/gohugoio/hugo/commit/a2d146ec32a26ccca9ffa68d3c840ec5b08cca96) [@bep](https://github.com/bep) 
 +* tpl/internal/go_templates: Revert formatting [718e09ed](https://github.com/gohugoio/hugo/commit/718e09ed4bc538f4fccc4337f99e9eb86aea31f3) [@bep](https://github.com/bep) 
 +* Add title parameter to YouTube shortcode [4fc918e0](https://github.com/gohugoio/hugo/commit/4fc918e02cfc7f260d6312248ff9d33e95b27943) [@azenk](https://github.com/azenk) 
 +
 +### Output
 +
 +* Add missing OutputStyle option [428b0b32](https://github.com/gohugoio/hugo/commit/428b0b32947ec16f8585b8c33548d72fd4fb025d) [@bep](https://github.com/bep) 
 +
 +### Other
 +
 +* Allow Dart Sass transformations to be cached on disk [ffbf5e45](https://github.com/gohugoio/hugo/commit/ffbf5e45fa0617a37950b34deab63736b1c6b1d3) [@bep](https://github.com/bep) 
 +* Dart Sass only supports `expanded` and `compressed` [48994ea7](https://github.com/gohugoio/hugo/commit/48994ea766f08332f57c0f8e74843b6c8617c3d1) [@bep](https://github.com/bep) 
 +* Update emoji import paths and version [1f7e9f73](https://github.com/gohugoio/hugo/commit/1f7e9f733397b891cefc725ffc94ba901e70425a) [@moorereason](https://github.com/moorereason) 
 +* Add Dart Sass support [cea15740](https://github.com/gohugoio/hugo/commit/cea157402365f34a69882110a4208999728007a6) [@bep](https://github.com/bep) [#7380](https://github.com/gohugoio/hugo/issues/7380)[#8102](https://github.com/gohugoio/hugo/issues/8102)
 +* GroupByParamDate now supports datetimes [f9f77978](https://github.com/gohugoio/hugo/commit/f9f779786edcefc4449a14cfc04dd93379f71373) [@zerok](https://github.com/zerok) 
 +* Skip para test when not on CI [a9718f44](https://github.com/gohugoio/hugo/commit/a9718f44cd6c938448fc697f0ec720ebed7d863a) [@bep](https://github.com/bep) [#6963](https://github.com/gohugoio/hugo/issues/6963)
 +* Update SECURITY.md [f802bb23](https://github.com/gohugoio/hugo/commit/f802bb236a60dcc6c64d53edac634891272e0c07) [@bep](https://github.com/bep) 
 +* Improve LookPath [10ae7c32](https://github.com/gohugoio/hugo/commit/10ae7c3210cd1add14d3750aa9512a87df0e1146) [@bep](https://github.com/bep) 
 +* create a SECURITY.md [ae2d1bd5](https://github.com/gohugoio/hugo/commit/ae2d1bd52df0099190ef9195666d0788708b0385) [@davidsneighbour](https://github.com/davidsneighbour) [#8074](https://github.com/gohugoio/hugo/issues/8074)
 +* Show more detail on failed time test [8103188b](https://github.com/gohugoio/hugo/commit/8103188b9b9e8eeb3bcb53c8b64e2b83397e82ae) [@moorereason](https://github.com/moorereason) [#6963](https://github.com/gohugoio/hugo/issues/6963)
 +* Add images.Overlay filter [3ba147e7](https://github.com/gohugoio/hugo/commit/3ba147e702a5ae0af6e8b3b0296d256c3246a546) [@bep](https://github.com/bep) [#8057](https://github.com/gohugoio/hugo/issues/8057)[#4595](https://github.com/gohugoio/hugo/issues/4595)[#6731](https://github.com/gohugoio/hugo/issues/6731)
 +* Bump github.com/spf13/cobra from 0.15.0 to 0.20.0 [c84ad8db](https://github.com/gohugoio/hugo/commit/c84ad8db821c10225c0e603c6ec920c67b6ce36f) [@anthonyfok](https://github.com/anthonyfok) 
 +* configure proper link to discourse.gohugo.io (#8020) [4e0acb89](https://github.com/gohugoio/hugo/commit/4e0acb89b793d8895dc53eb8887be27430c3ab31) [@davidsneighbour](https://github.com/davidsneighbour) 
 +* Format code with gofumpt [d90e37e0](https://github.com/gohugoio/hugo/commit/d90e37e0c6e812f9913bf256c9c81aa05b7a08aa) [@bep](https://github.com/bep) 
 +* bump github.com/evanw/esbuild from 0.8.15 to 0.8.17 [32471b57](https://github.com/gohugoio/hugo/commit/32471b57bde51c55a15dbf1db75d6e5f7232c347) [@dependabot[bot]](https://github.com/apps/dependabot) 
 +* Use --baseURL path for live-reload URL [0ad378b0](https://github.com/gohugoio/hugo/commit/0ad378b09cea90a2a70d7ff06af668abe22475a1) [@sth](https://github.com/sth) [#6595](https://github.com/gohugoio/hugo/issues/6595)
 +* bump github.com/getkin/kin-openapi from 0.31.0 to 0.32.0 [907d9e92](https://github.com/gohugoio/hugo/commit/907d9e92682ed56a57a2206ae9bd9a985b3e1870) [@dependabot[bot]](https://github.com/apps/dependabot) 
 +
 +## Fixes
 +
 +### Templates
 +
 +* Fix series detection in opengraph [d2d493ab](https://github.com/gohugoio/hugo/commit/d2d493ab5d6a054001a8448ea0de2949dac4b30e) [@Humberd](https://github.com/Humberd) 
 +* Fix substr when length parameter is zero [5862fd2a](https://github.com/gohugoio/hugo/commit/5862fd2a60b5d16f2437bd8c8b7bac700de5f047) [@moorereason](https://github.com/moorereason) [#7993](https://github.com/gohugoio/hugo/issues/7993)
 +* Refactor and fix substr logic [64789fb5](https://github.com/gohugoio/hugo/commit/64789fb5dcf8326f14f13d69a2576ae3aa2bbbaa) [@moorereason](https://github.com/moorereason) [#7993](https://github.com/gohugoio/hugo/issues/7993)
 +
 +### Other
 +
 +* Fix Resource.ResourceType so it always returns MIME's main type [81975f84](https://github.com/gohugoio/hugo/commit/81975f847dc19c21c2321207645807771db97fab) [@bep](https://github.com/bep) [#8052](https://github.com/gohugoio/hugo/issues/8052)
 +* hugolib/paths: Fix typo [ce96895d](https://github.com/gohugoio/hugo/commit/ce96895debb67df20ae24fb5f0f04b98a30cc6cc) [@mayocream](https://github.com/mayocream) 
 +* Fix minor typos [04b89857](https://github.com/gohugoio/hugo/commit/04b89857e104ac7dcbf9fc65d8d4f1a1178123e6) [@phil-davis](https://github.com/phil-davis) 
 +* Fix BenchmarkMergeByLanguage [21fa1e86](https://github.com/gohugoio/hugo/commit/21fa1e86f2aa929fb0983a0cc3dc4e271ea1cc54) [@bep](https://github.com/bep) [#7914](https://github.com/gohugoio/hugo/issues/7914)
 +* Fix RelURL and AbsURL when path starts with language [aebfe156](https://github.com/gohugoio/hugo/commit/aebfe156fb2f27057e61b2e50c7576e6b06dab58) [@ivan-meridianbanc-com](https://github.com/ivan-meridianbanc-com) 
 +
 +
 +
 +
 +
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..30e73ad4e36142312c8680e9a6c712eb31ec756e
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9bc83df5d9c9439f549a276b5f5e58704abcc9e2
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,9139 @@@
++---
++title: "Hugo on Apple M1"
++date: 2020-12-10
++description: "The new Mac Mini M1 base model is blazing fast! We have run the Hugo benchmarks comparing it to a MacBook four times more expensive."
++---
++
++<p><i>By <a href="https://github.com/bep/">bep</a></i></p>
++
++<p>
++  The table below shows all of Hugo's benchmarks run on both a MacBook with Intel CPU and a Mac Mini M1 with an ARM CPU.
++</p>
++<p>Some notes:
++
++  <ul>
++    <li>The Intel Mac is a 2019 16 inch MacBook with 2,3 GHz 8-Core Intel Core i9 with 32 GB ram.</li>
++    <li>The ARM Mac is a new Mac Mini M1 base model with 8 GB of ram</li>
++    <li>The benchmarks are run with <code>go test -test.run=NONE -bench="Benchmark" -test.benchmem=true -cpu=8 -count=4 ./...</code>. Since the M1 does not have a concept of Turbo Boost, I kept that on when running the Intel benchmarks.</li>
++    <li>The right column is the Mac Mini, negative (black) numbers are good, positive numbers (red) are not so good.</li>
++    <li>Go is compiled from the latest source: <code>go version devel +5627a4dc30 Wed Dec 9 16:57:37 2020 +0000 darwin/arm64</code></li>
++  </ul>
++</p>
++
++<p>
++  This test isn't exactly comparing apples with apples (pun intended); this is a 4K USD computer compared to a 1K computer, but that makes the performance of the Mac Mini even more impressive.
++</p>
++
++<p>
++  There are some areas where the Intel still outshines the ARM, and that is most likely areas with highly optimized assembly code, and this will certainly improve. More benchmarks can be found <a href="https://roland.zone/m1-go-benchmarks/">here</a>.
++</p>
++
++<p>
++ You probably want to watch <a href="https://github.com/golang/go/issues/42756">issue</a> to track when we can get a Go release with MacOS M1 support. A couple of months?
++</p>
++
++<p>
++  Also, this <a href="https://docs.google.com/document/d/1iWUstb66v66tTVxQWNMZ1BehgNzEmykzqDCUp5l8ip8/edit">work document</a> is a great resource for getting a native Go development environment up and running on the M1.
++</p>
++
++<h2>Benchstat Output</h2>
++
++<style>
++  td {
++    padding: 10px;
++  }
++
++  th,
++  td {
++    border: none;
++  }
++</style>
++<table class="benchstat oldnew" style="border-collapse: collapse; width: 100%">
++  <tr class="configs">
++    <th style="text-align: left;"></th>
++    <th>
++      hugo-intel.txt
++    </th>
++    <th>
++      hugo-m1.txt
++    </th>
++  </tr>
++  <tbody>
++    <tr>
++      <th style="text-align: left;"></th>
++      <th colspan="2" class="metric" style="">
++        time/op
++      </th>
++      <th style="">
++        delta
++      </th>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/common/hreflect
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        IsTruthFul-8
++      </td>
++      <td>
++        15.0ns ± 3%
++      </td>
++      <td>
++        12.6ns ± 3%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −16.31%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/common/maps
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        ScratchGet-8
++      </td>
++      <td>
++        15.1ns ± 1%
++      </td>
++      <td>
++        13.8ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −8.74%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/helpers
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        StripHTML-8
++      </td>
++      <td>
++        2.02µs ± 0%
++      </td>
++      <td>
++        1.61µs ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −20.15%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        TestTruncateWordsToWholeSentence-8
++      </td>
++      <td>
++        50.1ns ± 2%
++      </td>
++      <td>
++        45.1ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −9.98%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        TestTruncateWordsToWholeSentenceOld-8
++      </td>
++      <td>
++        4.23µs ± 2%
++      </td>
++      <td>
++        3.15µs ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −25.53%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        TotalWords-8
++      </td>
++      <td>
++        6.38µs ± 2%
++      </td>
++      <td>
++        5.90µs ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −7.63%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        EmojiKyokomiFprint-8
++      </td>
++      <td>
++        30.9µs ± 5%
++      </td>
++      <td>
++        25.1µs ± 3%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −18.83%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        EmojiKyokomiSprint-8
++      </td>
++      <td>
++        29.9µs ± 1%
++      </td>
++      <td>
++        24.3µs ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −18.49%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        HugoEmoji-8
++      </td>
++      <td>
++        1.56µs ±10%
++      </td>
++      <td>
++        4.27µs ± 3%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;174.22%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        ReaderContains-8
++      </td>
++      <td>
++        4.01µs ± 1%
++      </td>
++      <td>
++        4.23µs ± 2%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;5.48%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        MD5FromFileFast/full=false-8
++      </td>
++      <td>
++        2.36µs ± 1%
++      </td>
++      <td>
++        1.75µs ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −25.92%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        MD5FromFileFast/full=true-8
++      </td>
++      <td>
++        32.7µs ± 2%
++      </td>
++      <td>
++        36.3µs ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;10.85%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        UniqueStrings/Safe-8
++      </td>
++      <td>
++        418ns ± 3%
++      </td>
++      <td>
++        312ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −25.42%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        UniqueStrings/Reuse_slice-8
++      </td>
++      <td>
++        352ns ± 2%
++      </td>
++      <td>
++        271ns ± 2%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −23.25%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        UniqueStrings/Reuse_slice_sorted-8
++      </td>
++      <td>
++        203ns ± 1%
++      </td>
++      <td>
++        157ns ± 2%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −22.82%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/hugofs
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        Walk-8
++      </td>
++      <td>
++        271µs ± 1%
++      </td>
++      <td>
++        210µs ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −22.70%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/hugofs/glob
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        GetGlob-8
++      </td>
++      <td>
++        15.0ns ± 2%
++      </td>
++      <td>
++        13.8ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −8.12%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/hugolib
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        Cascade/langs-1-8
++      </td>
++      <td>
++        7.24ms ± 1%
++      </td>
++      <td>
++        5.06ms ± 2%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −30.06%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        Cascade/langs-3-8
++      </td>
++      <td>
++        9.20ms ± 0%
++      </td>
++      <td>
++        6.56ms ± 1%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −28.75%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        Cascade/langs-5-8
++      </td>
++      <td>
++        11.2ms ± 1%
++      </td>
++      <td>
++        8.0ms ± 1%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −28.64%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        Cascade/langs-7-8
++      </td>
++      <td>
++        13.4ms ± 1%
++      </td>
++      <td>
++        9.6ms ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −28.18%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        Cascade/langs-9-8
++      </td>
++      <td>
++        15.8ms ± 1%
++      </td>
++      <td>
++        11.2ms ± 1%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −29.20%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        ContentMap/CreateMissingNodes-8
++      </td>
++      <td>
++        54.3µs ± 3%
++      </td>
++      <td>
++        49.9µs ± 5%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −8.03%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        GetPage-8
++      </td>
++      <td>
++        210ns ± 2%
++      </td>
++      <td>
++        207ns ± 1%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −1.46%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        GetPageRegular/From_root-8
++      </td>
++      <td>
++        1.64µs ± 1%
++      </td>
++      <td>
++        0.88µs ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −46.14%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        GetPageRegular/Page_relative-8
++      </td>
++      <td>
++        1.96µs ± 0%
++      </td>
++      <td>
++        1.15µs ± 1%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −41.52%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        MergeByLanguage-8
++      </td>
++      <td>
++        644ns ±15%
++      </td>
++      <td>
++        599ns ±12%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (p=0.486 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/.Next-pages-300-8
++      </td>
++      <td>
++        34.0ns ± 1%
++      </td>
++      <td>
++        31.3ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −7.81%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/.Next-pages-5000-8
++      </td>
++      <td>
++        65.5ns ± 2%
++      </td>
++      <td>
++        38.3ns ± 1%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −41.42%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/.Prev-pages-300-8
++      </td>
++      <td>
++        34.0ns ± 1%
++      </td>
++      <td>
++        31.6ns ± 1%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −7.00%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/.Prev-pages-5000-8
++      </td>
++      <td>
++        65.8ns ± 2%
++      </td>
++      <td>
++        37.9ns ± 1%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −42.37%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/Pages.Next-pages-300-8
++      </td>
++      <td>
++        911ns ±17%
++      </td>
++      <td>
++        621ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −31.82%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/Pages.Next-pages-5000-8
++      </td>
++      <td>
++        1.94µs ± 9%
++      </td>
++      <td>
++        1.67µs ±11%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (p=0.057 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/Pages.Prev-pages-300-8
++      </td>
++      <td>
++        854ns ±32%
++      </td>
++      <td>
++        631ns ± 3%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −26.16%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/Pages.Prev-pages-5000-8
++      </td>
++      <td>
++        1.98µs ± 4%
++      </td>
++      <td>
++        1.66µs ± 5%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −16.34%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/Pages.Shuffled.Next-pages-300-8
++      </td>
++      <td>
++        914ns ±19%
++      </td>
++      <td>
++        623ns ± 1%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −31.83%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/Pages.Shuffled.Next-pages-5000-8
++      </td>
++      <td>
++        13.6µs ± 1%
++      </td>
++      <td>
++        11.3µs ± 4%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −17.04%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/Pages.Shuffled.Prev-pages-300-8
++      </td>
++      <td>
++        952ns ±21%
++      </td>
++      <td>
++        627ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −34.12%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/Pages.Shuffled.Prev-pages-5000-8
++      </td>
++      <td>
++        13.1µs ± 1%
++      </td>
++      <td>
++        11.2µs ± 1%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −14.35%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/Pages.ByTitle.Next-pages-300-8
++      </td>
++      <td>
++        752ns ± 2%
++      </td>
++      <td>
++        630ns ± 4%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −16.24%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/Pages.ByTitle.Next-pages-5000-8
++      </td>
++      <td>
++        13.5µs ± 3%
++      </td>
++      <td>
++        11.1µs ± 4%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −17.84%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        ResourceChainPostProcess-8
++      </td>
++      <td>
++        40.1ms ± 1%
++      </td>
++      <td>
++        35.6ms ± 1%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −11.23%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        ReplaceShortcodeTokens-8
++      </td>
++      <td>
++        2.30µs ±34%
++      </td>
++      <td>
++        7.02µs ± 3%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;205.66%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Edit_Bundle_with_image-8
++      </td>
++      <td>
++        754µs ± 0%
++      </td>
++      <td>
++        446µs ± 7%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −40.85%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Edit_Bundle_with_JSON_file-8
++      </td>
++      <td>
++        728µs ± 0%
++      </td>
++      <td>
++        437µs ± 1%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −39.95%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Edit_Tags_and_categories-8
++      </td>
++      <td>
++        15.5ms ± 2%
++      </td>
++      <td>
++        12.9ms ± 6%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −16.46%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Edit_Canonify_URLs-8
++      </td>
++      <td>
++        27.1ms ± 2%
++      </td>
++      <td>
++        25.9ms ± 2%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −4.69%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Edit_Deep_content_tree-8
++      </td>
++      <td>
++        32.2ms ± 5%
++      </td>
++      <td>
++        25.7ms ± 3%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −20.16%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Edit_Many_HTML_templates-8
++      </td>
++      <td>
++        11.3ms ± 2%
++      </td>
++      <td>
++        8.5ms ± 2%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −24.98%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Edit_Page_collections-8
++      </td>
++      <td>
++        19.7ms ± 2%
++      </td>
++      <td>
++        14.5ms ± 3%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −26.11%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Edit_List_terms-8
++      </td>
++      <td>
++        3.77ms ± 2%
++      </td>
++      <td>
++        2.55ms ± 1%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −32.41%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Regular_Bundle_with_image-8
++      </td>
++      <td>
++        5.54ms ± 0%
++      </td>
++      <td>
++        3.98ms ± 1%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −28.09%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Regular_Bundle_with_JSON_file-8
++      </td>
++      <td>
++        5.71ms ± 1%
++      </td>
++      <td>
++        4.03ms ± 1%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −29.43%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Regular_Tags_and_categories-8
++      </td>
++      <td>
++        24.6ms ± 2%
++      </td>
++      <td>
++        19.0ms ± 2%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −22.47%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Regular_Canonify_URLs-8
++      </td>
++      <td>
++        32.6ms ± 1%
++      </td>
++      <td>
++        29.9ms ± 1%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −8.17%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Regular_Deep_content_tree-8
++      </td>
++      <td>
++        41.3ms ± 1%
++      </td>
++      <td>
++        31.6ms ± 2%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −23.60%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Regular_Many_HTML_templates-8
++      </td>
++      <td>
++        19.9ms ± 1%
++      </td>
++      <td>
++        14.4ms ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −27.53%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Regular_Page_collections-8
++      </td>
++      <td>
++        28.8ms ± 0%
++      </td>
++      <td>
++        21.2ms ± 1%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −26.29%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Regular_List_terms-8
++      </td>
++      <td>
++        9.02ms ± 1%
++      </td>
++      <td>
++        6.55ms ± 2%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −27.39%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/identity
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        IdentityManager/Add-8
++      </td>
++      <td>
++        702ns ±10%
++      </td>
++      <td>
++        404ns ± 3%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −42.42%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        IdentityManager/Search-8
++      </td>
++      <td>
++        2.14µs ± 2%
++      </td>
++      <td>
++        1.15µs ± 1%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −46.07%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/langs/i18n
++      </th>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/all-present-8
++      </td>
++      <td>
++        254ns ± 1%
++      </td>
++      <td>
++        315ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;23.86%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/present-in-default-8
++      </td>
++      <td>
++        650ns ± 2%
++      </td>
++      <td>
++        604ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −6.97%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/present-in-current-8
++      </td>
++      <td>
++        252ns ± 1%
++      </td>
++      <td>
++        309ns ± 2%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;22.83%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/missing-8
++      </td>
++      <td>
++        614ns ± 0%
++      </td>
++      <td>
++        574ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −6.48%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/file-missing-8
++      </td>
++      <td>
++        1.43µs ± 3%
++      </td>
++      <td>
++        1.19µs ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −16.26%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/context-provided-8
++      </td>
++      <td>
++        732ns ± 1%
++      </td>
++      <td>
++        648ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −11.46%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/readingTime-one-8
++      </td>
++      <td>
++        480ns ± 1%
++      </td>
++      <td>
++        462ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −3.61%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/readingTime-many-8
++      </td>
++      <td>
++        972ns ± 0%
++      </td>
++      <td>
++        823ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −15.28%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/same-id-and-translation-8
++      </td>
++      <td>
++        248ns ± 1%
++      </td>
++      <td>
++        312ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;26.12%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/same-id-and-translation-default-8
++      </td>
++      <td>
++        648ns ± 2%
++      </td>
++      <td>
++        602ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −6.96%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/unknown-language-code-8
++      </td>
++      <td>
++        1.48µs ± 1%
++      </td>
++      <td>
++        1.22µs ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −17.61%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/known-language-missing-plural-8
++      </td>
++      <td>
++        985ns ± 3%
++      </td>
++      <td>
++        858ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −12.99%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/dotted-bare-key-8
++      </td>
++      <td>
++        238ns ± 2%
++      </td>
++      <td>
++        314ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;32.13%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/lang-with-hyphen-8
++      </td>
++      <td>
++        574ns ± 2%
++      </td>
++      <td>
++        569ns ± 1%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (p=0.229 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/markup/goldmark
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        SanitizeAnchorName-8
++      </td>
++      <td>
++        395ns ± 1%
++      </td>
++      <td>
++        334ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −15.39%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        SanitizeAnchorNameAsciiOnly-8
++      </td>
++      <td>
++        866ns ± 5%
++      </td>
++      <td>
++        660ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −23.82%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        SanitizeAnchorNameBlackfriday-8
++      </td>
++      <td>
++        528ns ± 1%
++      </td>
++      <td>
++        439ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −17.00%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        SanitizeAnchorNameString-8
++      </td>
++      <td>
++        438ns ± 2%
++      </td>
++      <td>
++        362ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −17.39%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/metrics
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        HowSimilar-8
++      </td>
++      <td>
++        1.92µs ± 0%
++      </td>
++      <td>
++        1.50µs ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −21.55%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/output
++      </th>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        Layout-8
++      </td>
++      <td>
++        78.7ns ± 1%
++      </td>
++      <td>
++        96.0ns ± 8%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;22.06%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        LayoutUncached-8
++      </td>
++      <td>
++        6.93µs ± 0%
++      </td>
++      <td>
++        5.69µs ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −17.83%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/parser/metadecoders
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        StringifyMapKeysStringsOnlyInterfaceMaps-8
++      </td>
++      <td>
++        790ns ±10%
++      </td>
++      <td>
++        598ns ± 8%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −24.31%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        StringifyMapKeysStringsOnlyStringMaps-8
++      </td>
++      <td>
++        158ns ± 1%
++      </td>
++      <td>
++        149ns ± 2%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −5.80%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        StringifyMapKeysIntegers-8
++      </td>
++      <td>
++        1.10µs ± 1%
++      </td>
++      <td>
++        0.83µs ± 3%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −23.95%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/parser/pageparser
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        ShortcodeLexer-8
++      </td>
++      <td>
++        86.5µs ± 2%
++      </td>
++      <td>
++        58.0µs ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −32.92%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        Parse-8
++      </td>
++      <td>
++        10.6µs ± 1%
++      </td>
++      <td>
++        7.9µs ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −25.50%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        ParseWithEmoji-8
++      </td>
++      <td>
++        12.9µs ± 2%
++      </td>
++      <td>
++        10.1µs ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −21.55%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/publisher
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        ClassCollectorWriter-8
++      </td>
++      <td>
++        18.2µs ± 0%
++      </td>
++      <td>
++        13.6µs ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −25.52%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/related
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        RelatedNewIndex/singles-8
++      </td>
++      <td>
++        48.2µs ± 1%
++      </td>
++      <td>
++        40.8µs ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −15.24%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        RelatedNewIndex/all-8
++      </td>
++      <td>
++        47.8µs ± 1%
++      </td>
++      <td>
++        39.5µs ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −17.21%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        RelatedMatchesIn-8
++      </td>
++      <td>
++        83.3µs ±12%
++      </td>
++      <td>
++        78.0µs ±11%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (p=0.343 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/resources
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        ImageExif/Cold_cache-8
++      </td>
++      <td>
++        192µs ± 6%
++      </td>
++      <td>
++        166µs ± 3%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −13.75%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        ImageExif/Cold_cache,_10-8
++      </td>
++      <td>
++        209µs ± 2%
++      </td>
++      <td>
++        173µs ± 1%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −17.10%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        ImageExif/Warm_cache-8
++      </td>
++      <td>
++        37.5µs ± 1%
++      </td>
++      <td>
++        441.3µs ±16%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;1077.34%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        ResizeParallel-8
++      </td>
++      <td>
++        1.27µs ± 1%
++      </td>
++      <td>
++        1.64µs ± 1%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;29.40%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        ResourcesMatch-8
++      </td>
++      <td>
++        524ns ± 6%
++      </td>
++      <td>
++        638ns ± 7%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;21.73%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        ResourcesMatchA100-8
++      </td>
++      <td>
++        136ns ±12%
++      </td>
++      <td>
++        120ns ± 3%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −11.25%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        AssignMetadata-8
++      </td>
++      <td>
++        15.4µs ± 1%
++      </td>
++      <td>
++        11.6µs ± 1%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −24.64%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/resources/images/exif
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        DecodeExif-8
++      </td>
++      <td>
++        99.5µs ± 1%
++      </td>
++      <td>
++        71.2µs ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −28.43%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/resources/page
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        PageCache-8
++      </td>
++      <td>
++        137ns ± 1%
++      </td>
++      <td>
++        131ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −4.23%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/Shuffled-100-8
++      </td>
++      <td>
++        142ns ± 1%
++      </td>
++      <td>
++        144ns ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (p=0.314 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/Shuffled-500-8
++      </td>
++      <td>
++        613ns ± 5%
++      </td>
++      <td>
++        595ns ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (p=1.000 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/Shuffled-1000-8
++      </td>
++      <td>
++        1.60µs ± 4%
++      </td>
++      <td>
++        1.42µs ± 5%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −11.24%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/Shuffled-5000-8
++      </td>
++      <td>
++        6.28µs ± 2%
++      </td>
++      <td>
++        5.97µs ± 1%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −4.89%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByWeight-100-8
++      </td>
++      <td>
++        146ns ± 1%
++      </td>
++      <td>
++        143ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −1.63%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByWeight-500-8
++      </td>
++      <td>
++        615ns ± 4%
++      </td>
++      <td>
++        595ns ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (p=0.314 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByWeight-1000-8
++      </td>
++      <td>
++        801ns ± 1%
++      </td>
++      <td>
++        657ns ± 3%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −17.94%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByWeight-5000-8
++      </td>
++      <td>
++        899ns ± 1%
++      </td>
++      <td>
++        753ns ± 6%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −16.27%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByWeight.Reverse-100-8
++      </td>
++      <td>
++        144ns ± 1%
++      </td>
++      <td>
++        144ns ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (p=0.514 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByWeight.Reverse-500-8
++      </td>
++      <td>
++        603ns ± 2%
++      </td>
++      <td>
++        595ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −1.32%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByWeight.Reverse-1000-8
++      </td>
++      <td>
++        901ns ± 4%
++      </td>
++      <td>
++        758ns ± 7%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −15.85%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByWeight.Reverse-5000-8
++      </td>
++      <td>
++        994ns ± 5%
++      </td>
++      <td>
++        855ns ± 5%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −13.97%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByDate-100-8
++      </td>
++      <td>
++        141ns ± 1%
++      </td>
++      <td>
++        144ns ± 1%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;2.06%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByDate-500-8
++      </td>
++      <td>
++        594ns ± 2%
++      </td>
++      <td>
++        595ns ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (p=0.257 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByDate-1000-8
++      </td>
++      <td>
++        454ns ±13%
++      </td>
++      <td>
++        393ns ± 7%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (p=0.057 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByDate-5000-8
++      </td>
++      <td>
++        530ns ±10%
++      </td>
++      <td>
++        461ns ± 6%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (p=0.057 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByPublishDate-100-8
++      </td>
++      <td>
++        140ns ± 1%
++      </td>
++      <td>
++        144ns ± 1%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;2.51%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByPublishDate-500-8
++      </td>
++      <td>
++        583ns ± 0%
++      </td>
++      <td>
++        596ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;2.14%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByPublishDate-1000-8
++      </td>
++      <td>
++        441ns ± 6%
++      </td>
++      <td>
++        443ns ± 8%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (p=0.686 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByPublishDate-5000-8
++      </td>
++      <td>
++        535ns ± 4%
++      </td>
++      <td>
++        532ns ± 7%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (p=0.686 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByTitle-100-8
++      </td>
++      <td>
++        141ns ± 2%
++      </td>
++      <td>
++        143ns ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (p=0.229 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByTitle-500-8
++      </td>
++      <td>
++        586ns ± 0%
++      </td>
++      <td>
++        595ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;1.70%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByTitle-1000-8
++      </td>
++      <td>
++        1.00µs ± 9%
++      </td>
++      <td>
++        0.84µs ± 3%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −16.22%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByTitle-5000-8
++      </td>
++      <td>
++        1.22µs ±11%
++      </td>
++      <td>
++        0.99µs ± 7%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −18.47%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByTitle_Linear-100-8
++      </td>
++      <td>
++        142ns ± 2%
++      </td>
++      <td>
++        144ns ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (p=0.286 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByTitle_Linear-500-8
++      </td>
++      <td>
++        587ns ± 1%
++      </td>
++      <td>
++        596ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;1.49%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByTitle_Linear-1000-8
++      </td>
++      <td>
++        1.15µs ± 2%
++      </td>
++      <td>
++        1.16µs ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (p=0.286 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByTitle_Linear-5000-8
++      </td>
++      <td>
++        5.63µs ± 1%
++      </td>
++      <td>
++        5.67µs ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (p=0.343 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        SortByWeightAndReverse-8
++      </td>
++      <td>
++        3.99µs ± 4%
++      </td>
++      <td>
++        3.61µs ± 4%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −9.63%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        PermalinkExpand-8
++      </td>
++      <td>
++        970ns ± 9%
++      </td>
++      <td>
++        709ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −26.86%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/resources/resource_transformers/postcss
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        ImportResolver-8
++      </td>
++      <td>
++        46.1µs ± 2%
++      </td>
++      <td>
++        28.1µs ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −38.96%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/tpl/internal/go_templates/htmltemplate
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        CSSEscaper-8
++      </td>
++      <td>
++        666ns ± 2%
++      </td>
++      <td>
++        552ns ± 1%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −17.11%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        CSSEscaperNoSpecials-8
++      </td>
++      <td>
++        166ns ± 1%
++      </td>
++      <td>
++        138ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −16.47%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        DecodeCSS-8
++      </td>
++      <td>
++        355ns ± 1%
++      </td>
++      <td>
++        351ns ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (p=0.057 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        DecodeCSSNoSpecials-8
++      </td>
++      <td>
++        4.83ns ± 2%
++      </td>
++      <td>
++        4.06ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −15.84%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        CSSValueFilter-8
++      </td>
++      <td>
++        116ns ± 1%
++      </td>
++      <td>
++        105ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −9.37%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        CSSValueFilterOk-8
++      </td>
++      <td>
++        128ns ± 3%
++      </td>
++      <td>
++        115ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −10.08%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        EscapedExecute-8
++      </td>
++      <td>
++        1.80µs ± 1%
++      </td>
++      <td>
++        1.35µs ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −25.07%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        HTMLNospaceEscaper-8
++      </td>
++      <td>
++        768ns ± 2%
++      </td>
++      <td>
++        628ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −18.25%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        HTMLNospaceEscaperNoSpecials-8
++      </td>
++      <td>
++        221ns ± 1%
++      </td>
++      <td>
++        159ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −28.16%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        StripTags-8
++      </td>
++      <td>
++        611ns ± 2%
++      </td>
++      <td>
++        500ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −18.07%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        StripTagsNoSpecials-8
++      </td>
++      <td>
++        71.3ns ± 0%
++      </td>
++      <td>
++        55.0ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −22.90%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        JSValEscaperWithNum-8
++      </td>
++      <td>
++        355ns ± 2%
++      </td>
++      <td>
++        274ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −22.83%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        JSValEscaperWithStr-8
++      </td>
++      <td>
++        1.29µs ± 1%
++      </td>
++      <td>
++        0.99µs ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −23.43%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        JSValEscaperWithStrNoSpecials-8
++      </td>
++      <td>
++        412ns ± 1%
++      </td>
++      <td>
++        317ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −23.08%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        JSValEscaperWithObj-8
++      </td>
++      <td>
++        1.49µs ± 1%
++      </td>
++      <td>
++        1.14µs ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −23.15%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        JSValEscaperWithObjNoSpecials-8
++      </td>
++      <td>
++        566ns ± 1%
++      </td>
++      <td>
++        441ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −22.15%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        JSStrEscaperNoSpecials-8
++      </td>
++      <td>
++        182ns ± 2%
++      </td>
++      <td>
++        143ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −21.16%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        JSStrEscaper-8
++      </td>
++      <td>
++        681ns ± 1%
++      </td>
++      <td>
++        557ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −18.18%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        JSRegexpEscaperNoSpecials-8
++      </td>
++      <td>
++        176ns ± 1%
++      </td>
++      <td>
++        152ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −13.74%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        JSRegexpEscaper-8
++      </td>
++      <td>
++        694ns ± 2%
++      </td>
++      <td>
++        561ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −19.20%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        TemplateSpecialTags-8
++      </td>
++      <td>
++        120µs ± 1%
++      </td>
++      <td>
++        92µs ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −23.07%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        URLEscaper-8
++      </td>
++      <td>
++        1.50µs ± 1%
++      </td>
++      <td>
++        1.06µs ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −29.35%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        URLEscaperNoSpecials-8
++      </td>
++      <td>
++        140ns ± 1%
++      </td>
++      <td>
++        121ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −13.45%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        URLNormalizer-8
++      </td>
++      <td>
++        1.10µs ± 1%
++      </td>
++      <td>
++        0.78µs ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −28.45%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        URLNormalizerNoSpecials-8
++      </td>
++      <td>
++        160ns ± 1%
++      </td>
++      <td>
++        136ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −15.00%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        SrcsetFilter-8
++      </td>
++      <td>
++        497ns ± 2%
++      </td>
++      <td>
++        343ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −30.87%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        SrcsetFilterNoSpecials-8
++      </td>
++      <td>
++        273ns ± 1%
++      </td>
++      <td>
++        217ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −20.71%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/tpl/internal/go_templates/texttemplate/parse
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        ParseLarge-8
++      </td>
++      <td>
++        18.6ms ± 0%
++      </td>
++      <td>
++        14.6ms ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −21.41%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        VariableString-8
++      </td>
++      <td>
++        98.2ns ± 1%
++      </td>
++      <td>
++        79.9ns ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −18.72%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        ListString-8
++      </td>
++      <td>
++        2.77µs ± 1%
++      </td>
++      <td>
++        2.26µs ± 1%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −18.34%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/tpl/tplimpl
++      </th>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        Partial-8
++      </td>
++      <td>
++        1.01µs ± 2%
++      </td>
++      <td>
++        1.73µs ± 1%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;70.50%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        PartialCached-8
++      </td>
++      <td>
++        61.0ns ± 3%
++      </td>
++      <td>
++        100.3ns ± 2%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;64.49%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/tpl/transform
++      </th>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        UnmarshalString-8
++      </td>
++      <td>
++        1.14µs ± 1%
++      </td>
++      <td>
++        1.29µs ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;13.17%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        UnmarshalResource-8
++      </td>
++      <td>
++        138ns ± 0%
++      </td>
++      <td>
++        108ns ± 1%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −22.17%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/transform/urlreplacers
++      </th>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        AbsURL-8
++      </td>
++      <td>
++        4.50µs ± 1%
++      </td>
++      <td>
++        4.81µs ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;6.85%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        AbsURLSrcset-8
++      </td>
++      <td>
++        3.49µs ± 2%
++      </td>
++      <td>
++        3.21µs ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −7.97%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        XMLAbsURLSrcset-8
++      </td>
++      <td>
++        3.41µs ± 1%
++      </td>
++      <td>
++        3.23µs ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −5.27%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        XMLAbsURL-8
++      </td>
++      <td>
++        1.85µs ± 0%
++      </td>
++      <td>
++        1.85µs ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (p=0.343 n=4&#43;4)
++      </td>
++    </tr>
++    <tr>
++      <td style="text-align: right;padding: 0em 1em;">
++        &nbsp;
++      </td>
++    </tr>
++  </tbody>
++  <tbody>
++    <tr>
++      <th style="text-align: left;"></th>
++      <th colspan="2" class="metric" style="">
++        alloc/op
++      </th>
++      <th style="">
++        delta
++      </th>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/common/hreflect
++      </th>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        IsTruthFul-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/common/maps
++      </th>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        ScratchGet-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/helpers
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        StripHTML-8
++      </td>
++      <td>
++        736B ± 0%
++      </td>
++      <td>
++        728B ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −1.09%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        TestTruncateWordsToWholeSentence-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        TestTruncateWordsToWholeSentenceOld-8
++      </td>
++      <td>
++        2.50kB ± 0%
++      </td>
++      <td>
++        2.50kB ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        TotalWords-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        EmojiKyokomiFprint-8
++      </td>
++      <td>
++        31.4kB ± 0%
++      </td>
++      <td>
++        31.4kB ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        EmojiKyokomiSprint-8
++      </td>
++      <td>
++        31.3kB ± 0%
++      </td>
++      <td>
++        31.3kB ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (p=1.000 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        HugoEmoji-8
++      </td>
++      <td>
++        624B ± 0%
++      </td>
++      <td>
++        616B ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −1.28%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        ReaderContains-8
++      </td>
++      <td>
++        1.26kB ± 0%
++      </td>
++      <td>
++        1.26kB ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        MD5FromFileFast/full=false-8
++      </td>
++      <td>
++        240B ± 0%
++      </td>
++      <td>
++        144B ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −40.00%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        MD5FromFileFast/full=true-8
++      </td>
++      <td>
++        32.9kB ± 0%
++      </td>
++      <td>
++        32.9kB ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (p=0.429 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        UniqueStrings/Safe-8
++      </td>
++      <td>
++        224B ± 0%
++      </td>
++      <td>
++        224B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        UniqueStrings/Reuse_slice-8
++      </td>
++      <td>
++        96.0B ± 0%
++      </td>
++      <td>
++        96.0B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        UniqueStrings/Reuse_slice_sorted-8
++      </td>
++      <td>
++        32.0B ± 0%
++      </td>
++      <td>
++        24.0B ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −25.00%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/hugofs
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        Walk-8
++      </td>
++      <td>
++        103kB ± 0%
++      </td>
++      <td>
++        99kB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −3.89%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/hugofs/glob
++      </th>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        GetGlob-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/hugolib
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        Cascade/langs-1-8
++      </td>
++      <td>
++        2.33MB ± 0%
++      </td>
++      <td>
++        2.25MB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −3.37%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        Cascade/langs-3-8
++      </td>
++      <td>
++        3.31MB ± 0%
++      </td>
++      <td>
++        3.21MB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −2.93%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        Cascade/langs-5-8
++      </td>
++      <td>
++        4.32MB ± 0%
++      </td>
++      <td>
++        4.20MB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −2.62%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        Cascade/langs-7-8
++      </td>
++      <td>
++        5.37MB ± 0%
++      </td>
++      <td>
++        5.23MB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −2.64%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        Cascade/langs-9-8
++      </td>
++      <td>
++        6.44MB ± 0%
++      </td>
++      <td>
++        6.27MB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −2.57%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        ContentMap/CreateMissingNodes-8
++      </td>
++      <td>
++        14.9kB ± 0%
++      </td>
++      <td>
++        14.4kB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −3.11%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        GetPage-8
++      </td>
++      <td>
++        16.0B ± 0%
++      </td>
++      <td>
++        16.0B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        GetPageRegular/From_root-8
++      </td>
++      <td>
++        686B ± 0%
++      </td>
++      <td>
++        239B ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −65.16%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        GetPageRegular/Page_relative-8
++      </td>
++      <td>
++        763B ± 0%
++      </td>
++      <td>
++        324B ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −57.54%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        MergeByLanguage-8
++      </td>
++      <td>
++        51.5B ± 1%
++      </td>
++      <td>
++        50.8B ± 1%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (p=0.286 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/.Next-pages-300-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/.Next-pages-5000-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/.Prev-pages-300-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/.Prev-pages-5000-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/Pages.Next-pages-300-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/Pages.Next-pages-5000-8
++      </td>
++      <td>
++        8.00B ± 0%
++      </td>
++      <td>
++        8.00B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/Pages.Prev-pages-300-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/Pages.Prev-pages-5000-8
++      </td>
++      <td>
++        8.00B ± 0%
++      </td>
++      <td>
++        8.00B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/Pages.Shuffled.Next-pages-300-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/Pages.Shuffled.Next-pages-5000-8
++      </td>
++      <td>
++        8.00B ± 0%
++      </td>
++      <td>
++        8.00B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/Pages.Shuffled.Prev-pages-300-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/Pages.Shuffled.Prev-pages-5000-8
++      </td>
++      <td>
++        8.00B ± 0%
++      </td>
++      <td>
++        8.00B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/Pages.ByTitle.Next-pages-300-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/Pages.ByTitle.Next-pages-5000-8
++      </td>
++      <td>
++        8.00B ± 0%
++      </td>
++      <td>
++        8.00B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        ResourceChainPostProcess-8
++      </td>
++      <td>
++        36.4MB ± 1%
++      </td>
++      <td>
++        33.0MB ± 1%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −9.26%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        ReplaceShortcodeTokens-8
++      </td>
++      <td>
++        3.07kB ± 0%
++      </td>
++      <td>
++        3.07kB ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Edit_Bundle_with_image-8
++      </td>
++      <td>
++        437kB ± 0%
++      </td>
++      <td>
++        426kB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −2.43%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Edit_Bundle_with_JSON_file-8
++      </td>
++      <td>
++        216kB ± 0%
++      </td>
++      <td>
++        205kB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −4.93%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Edit_Tags_and_categories-8
++      </td>
++      <td>
++        10.3MB ± 0%
++      </td>
++      <td>
++        9.7MB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −6.68%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Edit_Canonify_URLs-8
++      </td>
++      <td>
++        84.2MB ± 0%
++      </td>
++      <td>
++        85.6MB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;1.67%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Edit_Deep_content_tree-8
++      </td>
++      <td>
++        26.5MB ± 0%
++      </td>
++      <td>
++        25.5MB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −3.65%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Edit_Many_HTML_templates-8
++      </td>
++      <td>
++        6.00MB ± 0%
++      </td>
++      <td>
++        5.71MB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −4.82%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Edit_Page_collections-8
++      </td>
++      <td>
++        14.7MB ± 0%
++      </td>
++      <td>
++        14.1MB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −4.21%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Edit_List_terms-8
++      </td>
++      <td>
++        1.83MB ± 0%
++      </td>
++      <td>
++        1.72MB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −6.04%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Regular_Bundle_with_image-8
++      </td>
++      <td>
++        1.93MB ± 0%
++      </td>
++      <td>
++        1.90MB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −1.39%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Regular_Bundle_with_JSON_file-8
++      </td>
++      <td>
++        1.71MB ± 0%
++      </td>
++      <td>
++        1.68MB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −1.54%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Regular_Tags_and_categories-8
++      </td>
++      <td>
++        14.2MB ± 0%
++      </td>
++      <td>
++        13.4MB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −5.48%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Regular_Canonify_URLs-8
++      </td>
++      <td>
++        89.2MB ± 0%
++      </td>
++      <td>
++        90.5MB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;1.42%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Regular_Deep_content_tree-8
++      </td>
++      <td>
++        30.2MB ± 0%
++      </td>
++      <td>
++        28.9MB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −4.26%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Regular_Many_HTML_templates-8
++      </td>
++      <td>
++        9.17MB ± 0%
++      </td>
++      <td>
++        8.83MB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −3.80%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Regular_Page_collections-8
++      </td>
++      <td>
++        18.4MB ± 0%
++      </td>
++      <td>
++        17.6MB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −4.44%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Regular_List_terms-8
++      </td>
++      <td>
++        3.96MB ± 0%
++      </td>
++      <td>
++        3.82MB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −3.64%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/identity
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        IdentityManager/Add-8
++      </td>
++      <td>
++        204B ± 7%
++      </td>
++      <td>
++        131B ± 2%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −35.50%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        IdentityManager/Search-8
++      </td>
++      <td>
++        751B ± 0%
++      </td>
++      <td>
++        311B ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −58.59%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/langs/i18n
++      </th>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/all-present-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/present-in-default-8
++      </td>
++      <td>
++        112B ± 0%
++      </td>
++      <td>
++        112B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/present-in-current-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/missing-8
++      </td>
++      <td>
++        112B ± 0%
++      </td>
++      <td>
++        112B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/file-missing-8
++      </td>
++      <td>
++        304B ± 0%
++      </td>
++      <td>
++        288B ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −5.26%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/context-provided-8
++      </td>
++      <td>
++        200B ± 0%
++      </td>
++      <td>
++        192B ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −4.00%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/readingTime-one-8
++      </td>
++      <td>
++        384B ± 0%
++      </td>
++      <td>
++        384B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/readingTime-many-8
++      </td>
++      <td>
++        608B ± 0%
++      </td>
++      <td>
++        600B ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −1.32%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/same-id-and-translation-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/same-id-and-translation-default-8
++      </td>
++      <td>
++        112B ± 0%
++      </td>
++      <td>
++        112B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/unknown-language-code-8
++      </td>
++      <td>
++        720B ± 0%
++      </td>
++      <td>
++        696B ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −3.33%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/known-language-missing-plural-8
++      </td>
++      <td>
++        488B ± 0%
++      </td>
++      <td>
++        472B ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −3.28%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/dotted-bare-key-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/lang-with-hyphen-8
++      </td>
++      <td>
++        384B ± 0%
++      </td>
++      <td>
++        384B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/markup/goldmark
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        SanitizeAnchorName-8
++      </td>
++      <td>
++        32.0B ± 0%
++      </td>
++      <td>
++        24.0B ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −25.00%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SanitizeAnchorNameAsciiOnly-8
++      </td>
++      <td>
++        48.0B ± 0%
++      </td>
++      <td>
++        48.0B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        SanitizeAnchorNameBlackfriday-8
++      </td>
++      <td>
++        184B ± 0%
++      </td>
++      <td>
++        176B ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −4.35%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        SanitizeAnchorNameString-8
++      </td>
++      <td>
++        64.0B ± 0%
++      </td>
++      <td>
++        56.0B ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −12.50%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/metrics
++      </th>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        HowSimilar-8
++      </td>
++      <td>
++        624B ± 0%
++      </td>
++      <td>
++        624B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/output
++      </th>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        Layout-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        LayoutUncached-8
++      </td>
++      <td>
++        6.34kB ± 0%
++      </td>
++      <td>
++        6.34kB ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (p=1.000 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/parser/metadecoders
++      </th>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        StringifyMapKeysStringsOnlyInterfaceMaps-8
++      </td>
++      <td>
++        1.01kB ± 0%
++      </td>
++      <td>
++        1.01kB ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        StringifyMapKeysStringsOnlyStringMaps-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        StringifyMapKeysIntegers-8
++      </td>
++      <td>
++        1.01kB ± 0%
++      </td>
++      <td>
++        1.01kB ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/parser/pageparser
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        ShortcodeLexer-8
++      </td>
++      <td>
++        119kB ± 0%
++      </td>
++      <td>
++        118kB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −0.10%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        Parse-8
++      </td>
++      <td>
++        17.0kB ± 0%
++      </td>
++      <td>
++        17.0kB ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        ParseWithEmoji-8
++      </td>
++      <td>
++        33.0kB ± 0%
++      </td>
++      <td>
++        33.0kB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −0.02%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/publisher
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        ClassCollectorWriter-8
++      </td>
++      <td>
++        34.8kB ± 0%
++      </td>
++      <td>
++        34.6kB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −0.53%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/related
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        RelatedNewIndex/singles-8
++      </td>
++      <td>
++        21.9kB ± 0%
++      </td>
++      <td>
++        21.9kB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −0.06%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        RelatedNewIndex/all-8
++      </td>
++      <td>
++        23.7kB ± 0%
++      </td>
++      <td>
++        23.7kB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −0.07%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        RelatedMatchesIn-8
++      </td>
++      <td>
++        26.4kB ±26%
++      </td>
++      <td>
++        26.4kB ±26%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (p=0.686 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/resources
++      </th>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        ImageExif/Cold_cache-8
++      </td>
++      <td>
++        160kB ± 0%
++      </td>
++      <td>
++        183kB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;14.12%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        ImageExif/Cold_cache,_10-8
++      </td>
++      <td>
++        172kB ± 0%
++      </td>
++      <td>
++        187kB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;8.44%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        ImageExif/Warm_cache-8
++      </td>
++      <td>
++        12.9kB ± 0%
++      </td>
++      <td>
++        10.9kB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −15.76%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        ResizeParallel-8
++      </td>
++      <td>
++        2.02kB ± 0%
++      </td>
++      <td>
++        2.61kB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;28.92%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        ResourcesMatch-8
++      </td>
++      <td>
++        503B ± 0%
++      </td>
++      <td>
++        504B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (p=1.000 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        ResourcesMatchA100-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        AssignMetadata-8
++      </td>
++      <td>
++        1.34kB ± 0%
++      </td>
++      <td>
++        0.85kB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −36.90%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/resources/images/exif
++      </th>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        DecodeExif-8
++      </td>
++      <td>
++        161kB ± 0%
++      </td>
++      <td>
++        184kB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;14.31%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/resources/page
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        PageCache-8
++      </td>
++      <td>
++        32.0B ± 0%
++      </td>
++      <td>
++        24.0B ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −25.00%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/Shuffled-100-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/Shuffled-500-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/Shuffled-1000-8
++      </td>
++      <td>
++        8.00B ± 0%
++      </td>
++      <td>
++        8.00B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/Shuffled-5000-8
++      </td>
++      <td>
++        8.00B ± 0%
++      </td>
++      <td>
++        8.00B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByWeight-100-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByWeight-500-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByWeight-1000-8
++      </td>
++      <td>
++        8.00B ± 0%
++      </td>
++      <td>
++        8.00B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByWeight-5000-8
++      </td>
++      <td>
++        8.00B ± 0%
++      </td>
++      <td>
++        8.00B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByWeight.Reverse-100-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByWeight.Reverse-500-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByWeight.Reverse-1000-8
++      </td>
++      <td>
++        24.0B ± 0%
++      </td>
++      <td>
++        24.0B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByWeight.Reverse-5000-8
++      </td>
++      <td>
++        24.0B ± 0%
++      </td>
++      <td>
++        24.0B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByDate-100-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByDate-500-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByDate-1000-8
++      </td>
++      <td>
++        8.00B ± 0%
++      </td>
++      <td>
++        8.00B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByDate-5000-8
++      </td>
++      <td>
++        8.00B ± 0%
++      </td>
++      <td>
++        8.00B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByPublishDate-100-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByPublishDate-500-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByPublishDate-1000-8
++      </td>
++      <td>
++        8.00B ± 0%
++      </td>
++      <td>
++        8.00B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByPublishDate-5000-8
++      </td>
++      <td>
++        8.00B ± 0%
++      </td>
++      <td>
++        8.00B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByTitle-100-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByTitle-500-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByTitle-1000-8
++      </td>
++      <td>
++        8.00B ± 0%
++      </td>
++      <td>
++        8.00B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByTitle-5000-8
++      </td>
++      <td>
++        8.00B ± 0%
++      </td>
++      <td>
++        8.00B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByTitle_Linear-100-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByTitle_Linear-500-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByTitle_Linear-1000-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByTitle_Linear-5000-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        SortByWeightAndReverse-8
++      </td>
++      <td>
++        64.0B ± 0%
++      </td>
++      <td>
++        48.0B ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −25.00%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        PermalinkExpand-8
++      </td>
++      <td>
++        400B ± 0%
++      </td>
++      <td>
++        304B ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −24.00%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/resources/resource_transformers/postcss
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        ImportResolver-8
++      </td>
++      <td>
++        39.6kB ± 0%
++      </td>
++      <td>
++        36.6kB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −7.46%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/tpl/internal/go_templates/htmltemplate
++      </th>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        CSSEscaper-8
++      </td>
++      <td>
++        336B ± 0%
++      </td>
++      <td>
++        336B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        CSSEscaperNoSpecials-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        DecodeCSS-8
++      </td>
++      <td>
++        160B ± 0%
++      </td>
++      <td>
++        160B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        DecodeCSSNoSpecials-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        CSSValueFilter-8
++      </td>
++      <td>
++        96.0B ± 0%
++      </td>
++      <td>
++        96.0B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        CSSValueFilterOk-8
++      </td>
++      <td>
++        48.0B ± 0%
++      </td>
++      <td>
++        48.0B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        EscapedExecute-8
++      </td>
++      <td>
++        624B ± 0%
++      </td>
++      <td>
++        544B ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −12.82%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        HTMLNospaceEscaper-8
++      </td>
++      <td>
++        368B ± 0%
++      </td>
++      <td>
++        368B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        HTMLNospaceEscaperNoSpecials-8
++      </td>
++      <td>
++        32.0B ± 0%
++      </td>
++      <td>
++        32.0B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        StripTags-8
++      </td>
++      <td>
++        224B ± 0%
++      </td>
++      <td>
++        224B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        StripTagsNoSpecials-8
++      </td>
++      <td>
++        112B ± 0%
++      </td>
++      <td>
++        112B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        JSValEscaperWithNum-8
++      </td>
++      <td>
++        40.0B ± 0%
++      </td>
++      <td>
++        40.0B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        JSValEscaperWithStr-8
++      </td>
++      <td>
++        384B ± 0%
++      </td>
++      <td>
++        384B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        JSValEscaperWithStrNoSpecials-8
++      </td>
++      <td>
++        96.0B ± 0%
++      </td>
++      <td>
++        96.0B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        JSValEscaperWithObj-8
++      </td>
++      <td>
++        448B ± 0%
++      </td>
++      <td>
++        440B ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −1.79%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        JSValEscaperWithObjNoSpecials-8
++      </td>
++      <td>
++        160B ± 0%
++      </td>
++      <td>
++        152B ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −5.00%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        JSStrEscaperNoSpecials-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        JSStrEscaper-8
++      </td>
++      <td>
++        336B ± 0%
++      </td>
++      <td>
++        336B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        JSRegexpEscaperNoSpecials-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        JSRegexpEscaper-8
++      </td>
++      <td>
++        336B ± 0%
++      </td>
++      <td>
++        336B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        TemplateSpecialTags-8
++      </td>
++      <td>
++        50.1kB ± 0%
++      </td>
++      <td>
++        49.9kB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −0.31%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        URLEscaper-8
++      </td>
++      <td>
++        336B ± 0%
++      </td>
++      <td>
++        336B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        URLEscaperNoSpecials-8
++      </td>
++      <td>
++        112B ± 0%
++      </td>
++      <td>
++        112B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        URLNormalizer-8
++      </td>
++      <td>
++        176B ± 0%
++      </td>
++      <td>
++        176B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        URLNormalizerNoSpecials-8
++      </td>
++      <td>
++        112B ± 0%
++      </td>
++      <td>
++        112B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SrcsetFilter-8
++      </td>
++      <td>
++        160B ± 0%
++      </td>
++      <td>
++        160B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SrcsetFilterNoSpecials-8
++      </td>
++      <td>
++        160B ± 0%
++      </td>
++      <td>
++        160B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/tpl/internal/go_templates/texttemplate/parse
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        ParseLarge-8
++      </td>
++      <td>
++        5.46MB ± 0%
++      </td>
++      <td>
++        5.46MB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −0.01%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        VariableString-8
++      </td>
++      <td>
++        72.0B ± 0%
++      </td>
++      <td>
++        72.0B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        ListString-8
++      </td>
++      <td>
++        1.61kB ± 0%
++      </td>
++      <td>
++        1.47kB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −8.46%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/tpl/tplimpl
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        Partial-8
++      </td>
++      <td>
++        1.15kB ± 0%
++      </td>
++      <td>
++        1.06kB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −7.64%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        PartialCached-8
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td>
++        0.00B
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/tpl/transform
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        UnmarshalString-8
++      </td>
++      <td>
++        832B ± 0%
++      </td>
++      <td>
++        736B ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −11.54%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        UnmarshalResource-8
++      </td>
++      <td>
++        144B ± 0%
++      </td>
++      <td>
++        144B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/transform/urlreplacers
++      </th>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        AbsURL-8
++      </td>
++      <td>
++        1.57kB ± 0%
++      </td>
++      <td>
++        1.57kB ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        AbsURLSrcset-8
++      </td>
++      <td>
++        1.29kB ± 0%
++      </td>
++      <td>
++        1.28kB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −0.62%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        XMLAbsURLSrcset-8
++      </td>
++      <td>
++        1.37kB ± 0%
++      </td>
++      <td>
++        1.36kB ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −0.59%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        XMLAbsURL-8
++      </td>
++      <td>
++        928B ± 0%
++      </td>
++      <td>
++        928B ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr>
++      <td style="text-align: right;padding: 0em 1em;">
++        &nbsp;
++      </td>
++    </tr>
++  </tbody>
++  <tbody>
++    <tr>
++      <th style="text-align: left;"></th>
++      <th colspan="2" class="metric" style="">
++        allocs/op
++      </th>
++      <th style="">
++        delta
++      </th>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/common/hreflect
++      </th>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        IsTruthFul-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/common/maps
++      </th>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        ScratchGet-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/helpers
++      </th>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        StripHTML-8
++      </td>
++      <td>
++        4.00 ± 0%
++      </td>
++      <td>
++        4.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        TestTruncateWordsToWholeSentence-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        TestTruncateWordsToWholeSentenceOld-8
++      </td>
++      <td>
++        2.00 ± 0%
++      </td>
++      <td>
++        2.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        TotalWords-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        EmojiKyokomiFprint-8
++      </td>
++      <td>
++        71.0 ± 0%
++      </td>
++      <td>
++        71.0 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        EmojiKyokomiSprint-8
++      </td>
++      <td>
++        66.0 ± 0%
++      </td>
++      <td>
++        66.0 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        HugoEmoji-8
++      </td>
++      <td>
++        13.0 ± 0%
++      </td>
++      <td>
++        13.0 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        ReaderContains-8
++      </td>
++      <td>
++        20.0 ± 0%
++      </td>
++      <td>
++        20.0 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        MD5FromFileFast/full=false-8
++      </td>
++      <td>
++        5.00 ± 0%
++      </td>
++      <td>
++        4.00 ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −20.00%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        MD5FromFileFast/full=true-8
++      </td>
++      <td>
++        5.00 ± 0%
++      </td>
++      <td>
++        5.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        UniqueStrings/Safe-8
++      </td>
++      <td>
++        7.00 ± 0%
++      </td>
++      <td>
++        7.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        UniqueStrings/Reuse_slice-8
++      </td>
++      <td>
++        6.00 ± 0%
++      </td>
++      <td>
++        6.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        UniqueStrings/Reuse_slice_sorted-8
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/hugofs
++      </th>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        Walk-8
++      </td>
++      <td>
++        2.22k ± 0%
++      </td>
++      <td>
++        2.22k ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/hugofs/glob
++      </th>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        GetGlob-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/hugolib
++      </th>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        Cascade/langs-1-8
++      </td>
++      <td>
++        33.1k ± 0%
++      </td>
++      <td>
++        33.2k ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;0.20%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        Cascade/langs-3-8
++      </td>
++      <td>
++        47.4k ± 0%
++      </td>
++      <td>
++        47.6k ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;0.58%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        Cascade/langs-5-8
++      </td>
++      <td>
++        62.2k ± 0%
++      </td>
++      <td>
++        62.6k ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;0.69%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        Cascade/langs-7-8
++      </td>
++      <td>
++        78.0k ± 0%
++      </td>
++      <td>
++        78.6k ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;0.75%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        Cascade/langs-9-8
++      </td>
++      <td>
++        95.0k ± 0%
++      </td>
++      <td>
++        95.7k ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;0.78%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        ContentMap/CreateMissingNodes-8
++      </td>
++      <td>
++        258 ± 0%
++      </td>
++      <td>
++        254 ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −1.55%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        GetPage-8
++      </td>
++      <td>
++        2.00 ± 0%
++      </td>
++      <td>
++        2.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        GetPageRegular/From_root-8
++      </td>
++      <td>
++        10.0 ± 0%
++      </td>
++      <td>
++        6.0 ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −40.00%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        GetPageRegular/Page_relative-8
++      </td>
++      <td>
++        13.0 ± 0%
++      </td>
++      <td>
++        10.0 ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −23.08%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        MergeByLanguage-8
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/.Next-pages-300-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/.Next-pages-5000-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/.Prev-pages-300-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/.Prev-pages-5000-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/Pages.Next-pages-300-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/Pages.Next-pages-5000-8
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/Pages.Prev-pages-300-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/Pages.Prev-pages-5000-8
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/Pages.Shuffled.Next-pages-300-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/Pages.Shuffled.Next-pages-5000-8
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/Pages.Shuffled.Prev-pages-300-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/Pages.Shuffled.Prev-pages-5000-8
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/Pages.ByTitle.Next-pages-300-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        PagesPrevNext/Pages.ByTitle.Next-pages-5000-8
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        ResourceChainPostProcess-8
++      </td>
++      <td>
++        803k ± 1%
++      </td>
++      <td>
++        817k ± 1%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (p=0.114 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        ReplaceShortcodeTokens-8
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Edit_Bundle_with_image-8
++      </td>
++      <td>
++        3.99k ± 0%
++      </td>
++      <td>
++        4.03k ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;0.93%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Edit_Bundle_with_JSON_file-8
++      </td>
++      <td>
++        3.99k ± 0%
++      </td>
++      <td>
++        4.03k ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;0.93%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Edit_Tags_and_categories-8
++      </td>
++      <td>
++        241k ± 0%
++      </td>
++      <td>
++        244k ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;0.97%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Edit_Canonify_URLs-8
++      </td>
++      <td>
++        364k ± 0%
++      </td>
++      <td>
++        366k ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;0.39%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Edit_Deep_content_tree-8
++      </td>
++      <td>
++        264k ± 0%
++      </td>
++      <td>
++        268k ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;1.60%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Edit_Many_HTML_templates-8
++      </td>
++      <td>
++        90.3k ± 0%
++      </td>
++      <td>
++        91.1k ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;0.90%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Edit_Page_collections-8
++      </td>
++      <td>
++        153k ± 0%
++      </td>
++      <td>
++        156k ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;1.37%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Edit_List_terms-8
++      </td>
++      <td>
++        30.4k ± 0%
++      </td>
++      <td>
++        30.5k ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;0.53%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Regular_Bundle_with_image-8
++      </td>
++      <td>
++        23.2k ± 0%
++      </td>
++      <td>
++        23.2k ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (p=1.000 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Regular_Bundle_with_JSON_file-8
++      </td>
++      <td>
++        23.3k ± 0%
++      </td>
++      <td>
++        23.3k ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −0.01%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Regular_Tags_and_categories-8
++      </td>
++      <td>
++        284k ± 0%
++      </td>
++      <td>
++        287k ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;1.05%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Regular_Canonify_URLs-8
++      </td>
++      <td>
++        387k ± 0%
++      </td>
++      <td>
++        388k ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;0.20%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Regular_Deep_content_tree-8
++      </td>
++      <td>
++        307k ± 0%
++      </td>
++      <td>
++        309k ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;0.63%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Regular_Many_HTML_templates-8
++      </td>
++      <td>
++        129k ± 0%
++      </td>
++      <td>
++        130k ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;0.54%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Regular_Page_collections-8
++      </td>
++      <td>
++        199k ± 0%
++      </td>
++      <td>
++        200k ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;0.55%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        BuildSite/Regular_List_terms-8
++      </td>
++      <td>
++        53.5k ± 0%
++      </td>
++      <td>
++        53.6k ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;0.11%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/identity
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        IdentityManager/Add-8
++      </td>
++      <td>
++        2.00 ± 0%
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −50.00%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        IdentityManager/Search-8
++      </td>
++      <td>
++        15.0 ± 0%
++      </td>
++      <td>
++        11.0 ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −26.67%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/langs/i18n
++      </th>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/all-present-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/present-in-default-8
++      </td>
++      <td>
++        5.00 ± 0%
++      </td>
++      <td>
++        5.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/present-in-current-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/missing-8
++      </td>
++      <td>
++        5.00 ± 0%
++      </td>
++      <td>
++        5.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/file-missing-8
++      </td>
++      <td>
++        12.0 ± 0%
++      </td>
++      <td>
++        12.0 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/context-provided-8
++      </td>
++      <td>
++        5.00 ± 0%
++      </td>
++      <td>
++        5.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/readingTime-one-8
++      </td>
++      <td>
++        3.00 ± 0%
++      </td>
++      <td>
++        3.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/readingTime-many-8
++      </td>
++      <td>
++        9.00 ± 0%
++      </td>
++      <td>
++        9.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/same-id-and-translation-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/same-id-and-translation-default-8
++      </td>
++      <td>
++        5.00 ± 0%
++      </td>
++      <td>
++        5.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/unknown-language-code-8
++      </td>
++      <td>
++        14.0 ± 0%
++      </td>
++      <td>
++        14.0 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/known-language-missing-plural-8
++      </td>
++      <td>
++        8.00 ± 0%
++      </td>
++      <td>
++        8.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/dotted-bare-key-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        I18nTranslate/lang-with-hyphen-8
++      </td>
++      <td>
++        3.00 ± 0%
++      </td>
++      <td>
++        3.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/markup/goldmark
++      </th>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SanitizeAnchorName-8
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SanitizeAnchorNameAsciiOnly-8
++      </td>
++      <td>
++        2.00 ± 0%
++      </td>
++      <td>
++        2.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SanitizeAnchorNameBlackfriday-8
++      </td>
++      <td>
++        6.00 ± 0%
++      </td>
++      <td>
++        6.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SanitizeAnchorNameString-8
++      </td>
++      <td>
++        2.00 ± 0%
++      </td>
++      <td>
++        2.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/metrics
++      </th>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        HowSimilar-8
++      </td>
++      <td>
++        19.0 ± 0%
++      </td>
++      <td>
++        19.0 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/output
++      </th>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        Layout-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        LayoutUncached-8
++      </td>
++      <td>
++        112 ± 0%
++      </td>
++      <td>
++        112 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/parser/metadecoders
++      </th>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        StringifyMapKeysStringsOnlyInterfaceMaps-8
++      </td>
++      <td>
++        6.00 ± 0%
++      </td>
++      <td>
++        6.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        StringifyMapKeysStringsOnlyStringMaps-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        StringifyMapKeysIntegers-8
++      </td>
++      <td>
++        6.00 ± 0%
++      </td>
++      <td>
++        6.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/parser/pageparser
++      </th>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        ShortcodeLexer-8
++      </td>
++      <td>
++        916 ± 0%
++      </td>
++      <td>
++        916 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        Parse-8
++      </td>
++      <td>
++        34.0 ± 0%
++      </td>
++      <td>
++        34.0 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        ParseWithEmoji-8
++      </td>
++      <td>
++        16.0 ± 0%
++      </td>
++      <td>
++        16.0 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/publisher
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        ClassCollectorWriter-8
++      </td>
++      <td>
++        149 ± 0%
++      </td>
++      <td>
++        143 ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −4.03%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/related
++      </th>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        RelatedNewIndex/singles-8
++      </td>
++      <td>
++        199 ± 0%
++      </td>
++      <td>
++        199 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        RelatedNewIndex/all-8
++      </td>
++      <td>
++        200 ± 0%
++      </td>
++      <td>
++        200 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        RelatedMatchesIn-8
++      </td>
++      <td>
++        196 ± 5%
++      </td>
++      <td>
++        196 ± 5%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (p=1.000 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/resources
++      </th>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        ImageExif/Cold_cache-8
++      </td>
++      <td>
++        1.27k ± 0%
++      </td>
++      <td>
++        1.27k ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;0.16%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        ImageExif/Cold_cache,_10-8
++      </td>
++      <td>
++        1.43k ± 0%
++      </td>
++      <td>
++        1.36k ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −4.88%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        ImageExif/Warm_cache-8
++      </td>
++      <td>
++        351 ± 0%
++      </td>
++      <td>
++        327 ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −6.84%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        ResizeParallel-8
++      </td>
++      <td>
++        48.0 ± 0%
++      </td>
++      <td>
++        55.0 ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;14.58%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        ResourcesMatch-8
++      </td>
++      <td>
++        2.75 ±27%
++      </td>
++      <td>
++        2.75 ±27%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (p=1.000 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        ResourcesMatchA100-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        AssignMetadata-8
++      </td>
++      <td>
++        120 ± 0%
++      </td>
++      <td>
++        80 ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −33.33%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/resources/images/exif
++      </th>
++    </tr>
++    <tr class="worse">
++      <td style="text-align: right;padding: 0em 1em;">
++        DecodeExif-8
++      </td>
++      <td>
++        1.20k ± 0%
++      </td>
++      <td>
++        1.20k ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;color: #c00;">
++        &#43;0.50%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/resources/page
++      </th>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        PageCache-8
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/Shuffled-100-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/Shuffled-500-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/Shuffled-1000-8
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/Shuffled-5000-8
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByWeight-100-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByWeight-500-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByWeight-1000-8
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByWeight-5000-8
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByWeight.Reverse-100-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByWeight.Reverse-500-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByWeight.Reverse-1000-8
++      </td>
++      <td>
++        2.00 ± 0%
++      </td>
++      <td>
++        2.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByWeight.Reverse-5000-8
++      </td>
++      <td>
++        2.00 ± 0%
++      </td>
++      <td>
++        2.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByDate-100-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByDate-500-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByDate-1000-8
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByDate-5000-8
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByPublishDate-100-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByPublishDate-500-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByPublishDate-1000-8
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByPublishDate-5000-8
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByTitle-100-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByTitle-500-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByTitle-1000-8
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByTitle-5000-8
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByTitle_Linear-100-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByTitle_Linear-500-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByTitle_Linear-1000-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SearchPage/ByTitle_Linear-5000-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SortByWeightAndReverse-8
++      </td>
++      <td>
++        2.00 ± 0%
++      </td>
++      <td>
++        2.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        PermalinkExpand-8
++      </td>
++      <td>
++        13.0 ± 0%
++      </td>
++      <td>
++        10.0 ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −23.08%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/resources/resource_transformers/postcss
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        ImportResolver-8
++      </td>
++      <td>
++        195 ± 0%
++      </td>
++      <td>
++        186 ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −4.62%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/tpl/internal/go_templates/htmltemplate
++      </th>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        CSSEscaper-8
++      </td>
++      <td>
++        2.00 ± 0%
++      </td>
++      <td>
++        2.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        CSSEscaperNoSpecials-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        DecodeCSS-8
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        DecodeCSSNoSpecials-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        CSSValueFilter-8
++      </td>
++      <td>
++        2.00 ± 0%
++      </td>
++      <td>
++        2.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        CSSValueFilterOk-8
++      </td>
++      <td>
++        3.00 ± 0%
++      </td>
++      <td>
++        3.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        EscapedExecute-8
++      </td>
++      <td>
++        18.0 ± 0%
++      </td>
++      <td>
++        18.0 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        HTMLNospaceEscaper-8
++      </td>
++      <td>
++        3.00 ± 0%
++      </td>
++      <td>
++        3.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        HTMLNospaceEscaperNoSpecials-8
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        StripTags-8
++      </td>
++      <td>
++        3.00 ± 0%
++      </td>
++      <td>
++        3.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        StripTagsNoSpecials-8
++      </td>
++      <td>
++        2.00 ± 0%
++      </td>
++      <td>
++        2.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        JSValEscaperWithNum-8
++      </td>
++      <td>
++        3.00 ± 0%
++      </td>
++      <td>
++        3.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        JSValEscaperWithStr-8
++      </td>
++      <td>
++        2.00 ± 0%
++      </td>
++      <td>
++        2.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        JSValEscaperWithStrNoSpecials-8
++      </td>
++      <td>
++        2.00 ± 0%
++      </td>
++      <td>
++        2.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        JSValEscaperWithObj-8
++      </td>
++      <td>
++        3.00 ± 0%
++      </td>
++      <td>
++        3.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        JSValEscaperWithObjNoSpecials-8
++      </td>
++      <td>
++        3.00 ± 0%
++      </td>
++      <td>
++        3.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        JSStrEscaperNoSpecials-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        JSStrEscaper-8
++      </td>
++      <td>
++        2.00 ± 0%
++      </td>
++      <td>
++        2.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        JSRegexpEscaperNoSpecials-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        JSRegexpEscaper-8
++      </td>
++      <td>
++        2.00 ± 0%
++      </td>
++      <td>
++        2.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        TemplateSpecialTags-8
++      </td>
++      <td>
++        191 ± 0%
++      </td>
++      <td>
++        191 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        URLEscaper-8
++      </td>
++      <td>
++        4.00 ± 0%
++      </td>
++      <td>
++        4.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        URLEscaperNoSpecials-8
++      </td>
++      <td>
++        2.00 ± 0%
++      </td>
++      <td>
++        2.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        URLNormalizer-8
++      </td>
++      <td>
++        3.00 ± 0%
++      </td>
++      <td>
++        3.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        URLNormalizerNoSpecials-8
++      </td>
++      <td>
++        2.00 ± 0%
++      </td>
++      <td>
++        2.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SrcsetFilter-8
++      </td>
++      <td>
++        3.00 ± 0%
++      </td>
++      <td>
++        3.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        SrcsetFilterNoSpecials-8
++      </td>
++      <td>
++        3.00 ± 0%
++      </td>
++      <td>
++        3.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/tpl/internal/go_templates/texttemplate/parse
++      </th>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        ParseLarge-8
++      </td>
++      <td>
++        80.0k ± 0%
++      </td>
++      <td>
++        80.0k ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (p=1.000 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        VariableString-8
++      </td>
++      <td>
++        3.00 ± 0%
++      </td>
++      <td>
++        3.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        ListString-8
++      </td>
++      <td>
++        31.0 ± 0%
++      </td>
++      <td>
++        31.0 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/tpl/tplimpl
++      </th>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        Partial-8
++      </td>
++      <td>
++        37.0 ± 0%
++      </td>
++      <td>
++        37.0 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        PartialCached-8
++      </td>
++      <td>
++        0.00
++      </td>
++      <td>
++        0.00
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/tpl/transform
++      </th>
++    </tr>
++    <tr class="better">
++      <td style="text-align: right;padding: 0em 1em;">
++        UnmarshalString-8
++      </td>
++      <td>
++        6.00 ± 0%
++      </td>
++      <td>
++        5.00 ± 0%
++      </td>
++      <td class="delta" style="font-weight: bold;">
++        −16.67%
++      </td>
++      <td class="note">
++        (p=0.029 n=4&#43;4)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        UnmarshalResource-8
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td>
++        1.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="group">
++      <th colspan="4" style="text-align: left;">
++        github.com/gohugoio/hugo/transform/urlreplacers
++      </th>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        AbsURL-8
++      </td>
++      <td>
++        16.0 ± 0%
++      </td>
++      <td>
++        16.0 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        AbsURLSrcset-8
++      </td>
++      <td>
++        23.0 ± 0%
++      </td>
++      <td>
++        23.0 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        XMLAbsURLSrcset-8
++      </td>
++      <td>
++        21.0 ± 0%
++      </td>
++      <td>
++        21.0 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr class="unchanged">
++      <td style="text-align: right;padding: 0em 1em;">
++        XMLAbsURL-8
++      </td>
++      <td>
++        8.00 ± 0%
++      </td>
++      <td>
++        8.00 ± 0%
++      </td>
++      <td class="nodelta" style="text-align: center !important;">
++        ~
++      </td>
++      <td class="note">
++        (all equal)
++      </td>
++    </tr>
++    <tr>
++      <td style="text-align: right;padding: 0em 1em;">
++        &nbsp;
++      </td>
++    </tr>
++  </tbody>
++</table>
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..92fccadf66ed92cccbb7dd50aaafa8cfece479b6
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,9 @@@
++
++[Godot Tutorials](https://godottutorials.com) aims to teach beginners how to get up and running with basic game programming and game development skills.
++
++The website is built with the **Hugo Framework** alongside aws+cloudfront+lambda.
++
++The site is built by:
++
++* [Godot Tutorials](https://godottutorials.com)
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..fef13b99667ee965f0ffaffb7d5f646fc328d78d
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e33e413e1d867c997db9dbbc4464ff3ed36c2a46
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,25 @@@
++---
++
++title: Godot Tutorials
++date: 2021-01-07
++
++description: "Teaching game development skills with love."
++
++# The URL to the site on the internet.
++siteURL: https://godottutorials.com
++
++# Add credit to the article author. Leave blank or remove if not needed/wanted.
++byline: "[Godot Tutorials](https://godottutorials.com), Web Developer & Game Programmer"
++
++---
++
++
++[Godot Tutorials](https://godottutorials.com) started as a way to teach beginners game programming and game development.
++As I created videos, I ran into a problem; if I made a mistake with a Youtube video, it was difficult to correct errors.
++
++I discovered that blogging episodes and having articles that teach on top of my videos is a fantastic solution to my problem.
++
++As I researched blogging platforms, I came across two solutions; however, I chose [Hugo](https://gohugo.io) because it's built with markdown in mind and simplified my workflow.
++
++In a sense, with [Hugo](https://gohugo.io) programmed the right way, I can focus **more time on planning, creating, and editing**
++my videos and **less time maintaining and fixing** my website.
index 3f93052d9d7b387e5a3043c148647747ef89ad31,0000000000000000000000000000000000000000..b04a2e43f974ca7cb5ca6d8abb3034ea6410f4d4
mode 100644,000000..100644
--- /dev/null
@@@ -1,391 -1,0 +1,341 @@@
- In Hugo 0.55 and later you can do:
 +---
 +title: Taxonomy Templates
 +# linktitle:
 +description: Taxonomy templating includes taxonomy list pages, taxonomy terms pages, and using taxonomies in your single page templates.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [templates]
 +keywords: [taxonomies,metadata,front matter,terms,templates]
 +menu:
 +  docs:
 +    parent: "templates"
 +    weight: 50
 +weight: 50
 +sections_weight: 50
 +draft: false
 +aliases: [/taxonomies/displaying/,/templates/terms/,/indexes/displaying/,/taxonomies/templates/,/indexes/ordering/, /templates/taxonomies/, /templates/taxonomy/]
 +toc: true
 +---
 +
 +<!-- NOTE! Check on https://github.com/gohugoio/hugo/issues/2826 for shifting of terms' pages to .Data.Pages AND
 +https://discourse.gohugo.io/t/how-to-specify-category-slug/4856/15 for original discussion.-->
 +
 +Hugo includes support for user-defined groupings of content called **taxonomies**. Taxonomies are classifications that demonstrate logical relationships between content. See [Taxonomies under Content Management](/content-management/taxonomies) if you are unfamiliar with how Hugo leverages this powerful feature.
 +
 +Hugo provides multiple ways to use taxonomies throughout your project templates:
 +
 +* Order the way content associated with a taxonomy term is displayed in a [taxonomy list template](#taxonomy-list-template)
 +* Order the way the terms for a taxonomy are displayed in a [taxonomy terms template](#taxonomy-terms-template)
 +* List a single content's taxonomy terms within a [single page template][]
 +
 +## Taxonomy List Templates
 +
 +Taxonomy list page templates are lists and therefore have all the variables and methods available to [list pages][lists].
 +
 +### Taxonomy List Template Lookup Order
 +
 +See [Template Lookup](/templates/lookup-order/).
 +
 +## Taxonomy Terms Template
 +
 +### Taxonomy Terms Templates Lookup Order
 +
 +See [Template Lookup](/templates/lookup-order/).
 +
 +### Taxonomy Methods
 +
 +A Taxonomy is a `map[string]WeightedPages`.
 +
 +.Get(term)
 +: Returns the WeightedPages for a term.
 +
 +.Count(term)
 +: The number of pieces of content assigned to this term.
 +
 +.Alphabetical
 +: Returns an OrderedTaxonomy (slice) ordered by Term.
 +
 +.ByCount
 +: Returns an OrderedTaxonomy (slice) ordered by number of entries.
 +
 +.Reverse
 +: Returns an OrderedTaxonomy (slice) in reverse order. Must be used with an OrderedTaxonomy.
 +
 +### OrderedTaxonomy
 +
 +Since Maps are unordered, an OrderedTaxonomy is a special structure that has a defined order.
 +
 +```go
 +[]struct {
 +    Name          string
 +    WeightedPages WeightedPages
 +}
 +```
 +
 +Each element of the slice has:
 +
 +.Term
 +: The Term used.
 +
 +.WeightedPages
 +: A slice of Weighted Pages.
 +
 +.Count
 +: The number of pieces of content assigned to this term.
 +
 +.Pages
 +: All Pages assigned to this term. All [list methods][renderlists] are available to this.
 +
 +## WeightedPages
 +
 +WeightedPages is simply a slice of WeightedPage.
 +
 +```go
 +type WeightedPages []WeightedPage
 +```
 +
 +.Count(term)
 +: The number of pieces of content assigned to this term.
 +
 +.Pages
 +: Returns a slice of pages, which then can be ordered using any of the [list methods][renderlists].
 +
 +## Displaying custom metadata in Taxonomy Terms Templates
 +
 +If you need to display custom metadata for each taxonomy term, you will need to create a page for that term at `/content/<TAXONOMY>/<TERM>/_index.md` and add your metadata in its front matter, [as explained in the taxonomies documentation](/content-management/taxonomies/#add-custom-meta-data-to-a-taxonomy-term). Based on the Actors taxonomy example shown there, within your taxonomy terms template, you may access your custom fields by iterating through the variable `.Pages` as such:
 +
 +```go-html-template
 +<ul>
 +    {{ range .Pages }}
 +        <li>
 +            <a href="{{ .Permalink }}">{{ .Title }}</a>
 +            {{ .Params.wikipedia }}
 +        </li>
 +    {{ end }}
 +</ul>
 +```
 +
 +<!-- Begin /taxonomies/ordering/ -->
 +
 +## Order Taxonomies
 +
 +Taxonomies can be ordered by either alphabetical key or by the number of content pieces assigned to that key.
 +
 +### Order Alphabetically Example
 +
- Before that you would have to do something like:
- ```go-html-template
- <ul>
-     {{ $type := .Type }}
-     {{ range $key, $value := .Data.Terms.Alphabetical }}
-         {{ $name := .Name }}
-         {{ $count := .Count }}
-         {{ with $.Site.GetPage (printf "/%s/%s" $type $name) }}
-             <li><a href="{{ .Permalink }}">{{ $name }}</a> {{ $count }}</li>
-         {{ end }}
-     {{ end }}
- </ul>
- ```
 +```go-html-template
 +<ul>
 +    {{ range .Data.Terms.Alphabetical }}
 +            <li><a href="{{ .Page.Permalink }}">{{ .Page.Title }}</a> {{ .Count }}</li>
 +    {{ end }}
 +</ul>
 +```
 +
- {{< new-in "0.65.0" >}}
 +<!-- [See Also Taxonomy Lists](/templates/list/) -->
 +
 +## Order Content within Taxonomies
 +
 +Hugo uses both `date` and `weight` to order content within taxonomies.
 +
 +Each piece of content in Hugo can optionally be assigned a date. It can also be assigned a weight for each taxonomy it is assigned to.
 +
 +When iterating over content within taxonomies, the default sort is the same as that used for section and list pages: first by weight, then by date. This means that if the weights for two pieces of content are the same, then the more recent content will be displayed first.
 +
 +The default weight for any piece of content is 0. Zero means "does not have a weight", not "has a weight of numerical value zero".
 +
 +Weights of zero are thus treated specially: if two pages have unequal weights, and one of them is zero, then the zero-weighted page will always appear after the other one, regardless of the other's weight. Zero weights should thus be used with care: for example, if both positive and negative weights are used to extend a sequence in both directions, a zero-weighted page will appear not in the middle of the list, but at the end.
 +
 +### Assign Weight
 +
 +Content can be assigned weight for each taxonomy that it's assigned to.
 +
 +```
 ++++
 +tags = [ "a", "b", "c" ]
 +tags_weight = 22
 +categories = ["d"]
 +title = "foo"
 +categories_weight = 44
 ++++
 +Front Matter with weighted tags and categories
 +```
 +
 +The convention is `taxonomyname_weight`.
 +
 +In the above example, this piece of content has a weight of 22 which applies to the sorting when rendering the pages assigned to the "a", "b" and "c" values of the 'tag' taxonomy.
 +
 +It has also been assigned the weight of 44 when rendering the 'd' category.
 +
 +With this the same piece of content can appear in different positions in different taxonomies.
 +
 +Currently taxonomies only support the default ordering of content which is weight -> date.
 +
 +<!-- Begin /taxonomies/templates/ -->
 +
 +There are two different templates that the use of taxonomies will require you to provide.
 +
 +Both templates are covered in detail in the templates section.
 +
 +A [list template](/templates/list/) is any template that will be used to render multiple pieces of content in a single html page. This template will be used to generate all the automatically created taxonomy pages.
 +
 +A [taxonomy terms template](/templates/terms/) is a template used to
 +generate the list of terms for a given template.
 +
 +<!-- Begin /taxonomies/displaying/ -->
 +
 +There are four common ways you can display the data in your
 +taxonomies in addition to the automatic taxonomy pages created by hugo
 +using the [list templates](/templates/list/):
 +
 +1. For a given piece of content, you can list the terms attached
 +2. For a given piece of content, you can list other content with the same
 +   term
 +3. You can list all terms for a taxonomy
 +4. You can list all taxonomies (with their terms)
 +
 +## Display a Single Piece of Content's Taxonomies
 +
 +Within your content templates, you may wish to display the taxonomies that piece of content is assigned to.
 +
 +Because we are leveraging the front matter system to define taxonomies for content, the taxonomies assigned to each content piece are located in the usual place (i.e., `.Params.<TAXONOMYPLURAL>`).
 +
 +### Example: List Tags in a Single Page Template
 +
- Before Hugo 0.65.0 you needed to do something like this:
- ```go-html-template
- {{ $taxo := "tags" }} <!-- Use the plural form here -->
- <ul id="{{ $taxo }}">
-     {{ range .Param $taxo }}
-         {{ $name := . }}
-         {{ with $.Site.GetPage (printf "/%s/%s" $taxo ($name | urlize)) }}
-             <li><a href="{{ .Permalink }}">{{ $name }}</a></li>
-         {{ end }}
-     {{ end }}
- </ul>
- ```
 +```go-html-template
 +<ul>
 +    {{ range (.GetTerms "tags") }}
 +        <li><a href="{{ .Permalink }}">{{ .LinkTitle }}</a></li>
 +   {{ end }}
 +</ul>
 +```
 +
- In Hugo 0.55 and later you can simply do:
 +If you want to list taxonomies inline, you will have to take care of optional plural endings in the title (if multiple taxonomies), as well as commas. Let's say we have a taxonomy "directors" such as `directors: [ "Joel Coen", "Ethan Coen" ]` in the TOML-format front matter.
 +
 +To list such taxonomies, use the following:
 +
 +### Example: Comma-delimit Tags in a Single Page Template
 +
 +```go-html-template
 +{{ $taxo := "directors" }} <!-- Use the plural form here -->
 +{{ with .Param $taxo }}
 +    <strong>Director{{ if gt (len .) 1 }}s{{ end }}:</strong>
 +    {{ range $index, $director := . }}
 +        {{- if gt $index 0 }}, {{ end -}}
 +        {{ with $.Site.GetPage (printf "/%s/%s" $taxo $director) -}}
 +            <a href="{{ .Permalink }}">{{ $director }}</a>
 +        {{- end -}}
 +    {{- end -}}
 +{{ end }}
 +```
 +
 +Alternatively, you may use the [delimit template function][delimit] as a shortcut if the taxonomies should just be listed with a separator. See {{< gh 2143 >}} on GitHub for discussion.
 +
 +## List Content with the Same Taxonomy Term
 +
 +If you are using a taxonomy for something like a series of posts, you can list individual pages associated with the same taxonomy. This is also a quick and dirty method for showing related content:
 +
 +### Example: Showing Content in Same Series
 +
 +```go-html-template
 +<ul>
 +    {{ range .Site.Taxonomies.series.golang }}
 +        <li><a href="{{ .Page.RelPermalink }}">{{ .Page.Title }}</a></li>
 +    {{ end }}
 +</ul>
 +```
 +
 +## List All content in a Given taxonomy
 +
 +This would be very useful in a sidebar as “featured content”. You could even have different sections of “featured content” by assigning different terms to the content.
 +
 +### Example: Grouping "Featured" Content
 +
 +```go-html-template
 +<section id="menu">
 +    <ul>
 +        {{ range $key, $taxonomy := .Site.Taxonomies.featured }}
 +        <li>{{ $key }}</li>
 +        <ul>
 +            {{ range $taxonomy.Pages }}
 +            <li hugo-nav="{{ .RelPermalink}}"><a href="{{ .Permalink}}">{{ .LinkTitle }}</a></li>
 +            {{ end }}
 +        </ul>
 +        {{ end }}
 +    </ul>
 +</section>
 +```
 +
 +## Render a Site's Taxonomies
 +
 +If you wish to display the list of all keys for your site's taxonomy, you can retrieve them from the [`.Site` variable][sitevars] available on every page.
 +
 +This may take the form of a tag cloud, a menu, or simply a list.
 +
 +The following example displays all terms in a site's tags taxonomy:
 +
 +### Example: List All Site Tags {#example-list-all-site-tags}
 +
- Before that you would do something like this:
- {{< todo >}}Clean up rest of the taxonomy examples re Hugo 0.55.{{< /todo >}}
- ```go-html-template
- <ul id="all-tags">
-     {{ range $name, $taxonomy := .Site.Taxonomies.tags }}
-         {{ with $.Site.GetPage (printf "/tags/%s" $name) }}
-             <li><a href="{{ .Permalink }}">{{ $name }}</a></li>
-         {{ end }}
-     {{ end }}
- </ul>
- ```
 +```go-html-template
 +<ul>
 +    {{ range .Site.Taxonomies.tags }}
 +            <li><a href="{{ .Page.Permalink }}">{{ .Page.Title }}</a> {{ .Count }}</li>
 +    {{ end }}
 +</ul>
 +```
 +
 +### Example: List All Taxonomies, Terms, and Assigned Content
 +
 +This example will list all taxonomies and their terms, as well as all the content assigned to each of the terms.
 +
 +{{< code file="layouts/partials/all-taxonomies.html" download="all-taxonomies.html" download="all-taxonomies.html" >}}
 +<section>
 +    <ul id="all-taxonomies">
 +        {{ range $taxonomy_term, $taxonomy := .Site.Taxonomies }}
 +            {{ with $.Site.GetPage (printf "/%s" $taxonomy_term) }}
 +                <li><a href="{{ .Permalink }}">{{ $taxonomy_term }}</a>
 +                    <ul>
 +                        {{ range $key, $value := $taxonomy }}
 +                            <li>{{ $key }}</li>
 +                            <ul>
 +                                {{ range $value.Pages }}
 +                                    <li hugo-nav="{{ .RelPermalink}}">
 +                                        <a href="{{ .Permalink}}">{{ .LinkTitle }}</a>
 +                                    </li>
 +                                {{ end }}
 +                            </ul>
 +                        {{ end }}
 +                    </ul>
 +                </li>
 +            {{ end }}
 +        {{ end }}
 +    </ul>
 +</section>
 +{{< /code >}}
 +
 +## `.Site.GetPage` for Taxonomies
 +
 +Because taxonomies are lists, the [`.GetPage` function][getpage] can be used to get all the pages associated with a particular taxonomy term using a terse syntax. The following ranges over the full list of tags on your site and links to each of the individual taxonomy pages for each term without having to use the more fragile URL construction of the ["List All Site Tags" example above]({{< relref "#example-list-all-site-tags" >}}):
 +
 +{{< code file="links-to-all-tags.html" >}}
 +{{ $taxo := "tags" }}
 +<ul class="{{ $taxo }}">
 +    {{ with ($.Site.GetPage (printf "/%s" $taxo)) }}
 +        {{ range .Pages }}
 +            <li><a href="{{ .Permalink }}">{{ .Title}}</a></li>
 +        {{ end }}
 +    {{ end }}
 +</ul>
 +{{< /code >}}
 +
 +<!-- TODO: ### `.Site.GetPage` Taxonomy List Example -->
 +
 +<!-- TODO: ### `.Site.GetPage` Taxonomy Terms Example -->
 +
 +
 +[delimit]: /functions/delimit/
 +[getpage]: /functions/getpage/
 +[lists]: /templates/lists/
 +[renderlists]: /templates/lists/
 +[single page template]: /templates/single-page-templates/
 +[sitevars]: /variables/site/
index f0d82d65d6578d5756d374efdfdda5ac9418dfa4,0000000000000000000000000000000000000000..4db9074890f007111e2254ee70ef1dbb9af9a3dc
mode 100644,000000..100644
--- /dev/null
@@@ -1,47 -1,0 +1,49 @@@
 +---
 +title: Editor Plug-ins for Hugo
 +linktitle: Editor Plug-ins
 +description: The Hugo community uses a wide range of preferred tools and has developed plug-ins for some of the most popular text editors to help automate parts of your workflow.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [developer tools]
 +keywords: [editor, plug-ins]
 +menu:
 +  docs:
 +    parent: "tools"
 +    weight: 50
 +weight: 50
 +sections_weight: 50
 +draft: false
 +aliases: []
 +toc: false
 +---
 +
 +The Hugo community uses a wide range of preferred tools and has developed plug-ins for some of the most popular text editors to help automate parts of your workflow.
 +
 +## Sublime Text
 +
 +* [Hugofy](https://github.com/akmittal/Hugofy). Hugofy is a plugin for Sublime Text 3 to make life easier to use Hugo static site generator.
 +
 +## Visual Studio Code
 +
 +* [Hugofy](https://marketplace.visualstudio.com/items?itemName=akmittal.hugofy). Hugofy is a plugin for Visual Studio Code to "make life easier" when developing with Hugo. The source code can be found [here](https://github.com/akmittal/hugofy-vscode).
 +* [Hugo Helper](https://marketplace.visualstudio.com/items?itemName=rusnasonov.vscode-hugo). Hugo Helper is a plugin for Visual Studio Code that has some useful commands for Hugo. The source code can be found [here](https://github.com/rusnasonov/vscode-hugo).
 +* [Hugo Language and Syntax Support](https://marketplace.visualstudio.com/items?itemName=budparr.language-hugo-vscode). Hugo Language and Syntax Support is a Visual Studio Code plugin for Hugo syntax highlighting and snippets. The source code can be found [here](https://github.com/budparr/language-hugo-vscode).
++* [Hugo Themer](https://marketplace.visualstudio.com/items?itemName=eliostruyf.vscode-hugo-themer). Hugo Themer is an extension to help you while developing themes. It allows you to easily navigate through your theme files.
++* [Front Matter](https://marketplace.visualstudio.com/items?itemName=eliostruyf.vscode-front-matter). Once you go for a static site, you need to think about how you are going to manage your articles. Front matter is a tool that helps you maintaining the metadata/front matter of your articles like: creation date, modified date, slug, tile, SEO check, and many more...
 +
 +## Emacs
 +
 +* [emacs-easy-hugo](https://github.com/masasam/emacs-easy-hugo). Emacs major mode for managing hugo blogs. Note that Hugo also supports [Org-mode][formats].
 +* [ox-hugo.el](https://ox-hugo.scripter.co). Native Org-mode exporter that exports to Blackfriday Markdown with Hugo front-matter. `ox-hugo` supports two common Org blogging flows --- exporting multiple Org sub-trees in a single file to multiple Hugo posts, and exporting a single Org file to a single Hugo post. It also leverages the Org tag and property inheritance features. See [*Why ox-hugo?*](https://ox-hugo.scripter.co/doc/why-ox-hugo/) for more.
 +
 +## Vim
 +
 +* [Vim Hugo Helper](https://github.com/robertbasic/vim-hugo-helper). A small Vim plugin to help me with writing posts with Hugo.
 +
 +## Atom
 +
 +* [Hugofy](https://atom.io/packages/hugofy). A Hugo Static Website Generator package for Atom.
 +* [language-hugo](https://atom.io/packages/language-hugo). Adds syntax highlighting to Hugo files.
 +
 +[formats]: /content-management/formats/
index a98edde54aee127142a76a557163d900558f15a5,0000000000000000000000000000000000000000..8bad66d4f2a9be721d57a645021c975fe6248f32
mode 100644,000000..100644
--- /dev/null
@@@ -1,307 -1,0 +1,307 @@@
- : the Page content stripped of HTML as a `[]string` using Go's [`strings.Fields`](https://golang.org/pkg/strings/#Fields) to split `.Plain` into a slice.
 +---
 +title: Page Variables
 +linktitle:
 +description: Page-level variables are defined in a content file's front matter, derived from the content's file location, or extracted from the content body itself.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [variables and params]
 +keywords: [pages]
 +draft: false
 +menu:
 +  docs:
 +    title: "variables defined by a page"
 +    parent: "variables"
 +    weight: 20
 +weight: 20
 +sections_weight: 20
 +aliases: []
 +toc: true
 +---
 +
 +The following is a list of page-level variables. Many of these will be defined in the front matter, derived from file location, or extracted from the content itself.
 +
 +{{% note "`.Scratch`" %}}
 +See [`.Scratch`](/functions/scratch/) for page-scoped, writable variables.
 +{{% /note %}}
 +
 +## Page Variables
 +
 +.AlternativeOutputFormats
 +: contains all alternative formats for a given page; this variable is especially useful `link rel` list in your site's `<head>`. (See [Output Formats](/templates/output-formats/).)
 +
 +.Aliases
 +: aliases of this page
 +
 +.Content
 +: the content itself, defined below the front matter.
 +
 +.Data
 +: the data specific to this type of page.
 +
 +.Date
 +: the date associated with the page; `.Date` pulls from the `date` field in a content's front matter. See also `.ExpiryDate`, `.PublishDate`, and `.Lastmod`.
 +
 +.Description
 +: the description for the page.
 +
 +.Dir
 +: the path of the folder containing this content file. The path is relative to the `content` folder.
 +
 +.Draft
 +: a boolean, `true` if the content is marked as a draft in the front matter.
 +
 +.ExpiryDate
 +: the date on which the content is scheduled to expire; `.ExpiryDate` pulls from the `expirydate` field in a content's front matter. See also `.PublishDate`, `.Date`, and `.Lastmod`.
 +
 +.File
 +: filesystem-related data for this content file. See also [File Variables][].
 +
 +.FuzzyWordCount
 +: the approximate number of words in the content.
 +
 +.Hugo
 +: see [Hugo Variables](/variables/hugo/).
 +
 +.IsHome
 +: `true` in the context of the [homepage](/templates/homepage/).
 +
 +.IsNode
 +: always `false` for regular content pages.
 +
 +.IsPage
 +: always `true` for regular content pages.
 +
 +.IsSection
 +: `true` if [`.Kind`](/templates/section-templates/#page-kinds) is `section`.
 +
 +.IsTranslated
 +: `true` if there are translations to display.
 +
 +.Keywords
 +: the meta keywords for the content.
 +
 +.Kind
 +: the page's *kind*. Possible return values are `page`, `home`, `section`, `taxonomy`, or `taxonomyTerm`. Note that there are also `RSS`, `sitemap`, `robotsTXT`, and `404` kinds, but these are only available during the rendering of each of these respective page's kind and therefore *not* available in any of the `Pages` collections.
 +
 +.Language
 +: a language object that points to the language's definition in the site `config`. `.Language.Lang` gives you the language code.
 +
 +.Lastmod
 +: the date the content was last modified. `.Lastmod` pulls from the `lastmod` field in a content's front matter.
 +
 + - If `lastmod` is not set, and `.GitInfo` feature is disabled, the front matter `date` field will be used.
 + - If `lastmod` is not set, and `.GitInfo` feature is enabled, `.GitInfo.AuthorDate` will be used instead.
 +
 +See also `.ExpiryDate`, `.Date`, `.PublishDate`, and [`.GitInfo`][gitinfo].
 +
 +.LinkTitle
 +: access when creating links to the content. If set, Hugo will use the `linktitle` from the front matter before `title`.
 +
 +.Next
 +: Points up to the next [regular page](/variables/site/#site-pages) (sorted by Hugo's [default sort](/templates/lists#default-weight-date-linktitle-filepath)). Example: `{{with .Next}}{{.Permalink}}{{end}}`. Calling `.Next` from the first page returns `nil`.
 +
 +.NextInSection
 +: Points up to the next [regular page](/variables/site/#site-pages) below the same top level section (e.g. in `/blog`)). Pages are sorted by Hugo's [default sort](/templates/lists#default-weight-date-linktitle-filepath). Example: `{{with .NextInSection}}{{.Permalink}}{{end}}`. Calling `.NextInSection` from the first page returns `nil`.
 +
 +.OutputFormats
 +: contains all formats, including the current format, for a given page. Can be combined the with [`.Get` function](/functions/get/) to grab a specific format. (See [Output Formats](/templates/output-formats/).)
 +
 +.Pages
 +: a collection of associated pages. This value will be `nil` within
 +  the context of regular content pages. See [`.Pages`](#pages).
 +
 +.Permalink
 +: the Permanent link for this page; see [Permalinks](/content-management/urls/)
 +
 +.Plain
 +: the Page content stripped of HTML tags and presented as a string.
 +
 +.PlainWords
++: the slice of strings that results from splitting .Plain into words, as defined in Go's [strings.Fields](https://golang.org/pkg/strings/#Fields).
 +
 +.Prev
 +: Points down to the previous [regular page](/variables/site/#site-pages) (sorted by Hugo's [default sort](/templates/lists#default-weight-date-linktitle-filepath)). Example: `{{if .Prev}}{{.Prev.Permalink}}{{end}}`.  Calling `.Prev` from the last page returns `nil`.
 +
 +.PrevInSection
 +: Points down to the previous [regular page](/variables/site/#site-pages) below the same top level section (e.g. `/blog`). Pages are sorted by Hugo's [default sort](/templates/lists#default-weight-date-linktitle-filepath). Example: `{{if .PrevInSection}}{{.PrevInSection.Permalink}}{{end}}`.  Calling `.PrevInSection` from the last page returns `nil`.
 +
 +.PublishDate
 +: the date on which the content was or will be published; `.Publishdate` pulls from the `publishdate` field in a content's front matter. See also `.ExpiryDate`, `.Date`, and `.Lastmod`.
 +
 +.RSSLink (deprecated)
 +: link to the page's RSS feed. This is deprecated. You should instead do something like this: `{{ with .OutputFormats.Get "RSS" }}{{ .RelPermalink }}{{ end }}`.
 +
 +.RawContent
 +: raw markdown content without the front matter. Useful with [remarkjs.com](
 +https://remarkjs.com)
 +
 +.ReadingTime
 +: the estimated time, in minutes, it takes to read the content.
 +
 +.Resources
 +: resources such as images and CSS that are associated with this page
 +
 +.Ref
 +: returns the permalink for a given reference (e.g., `.Ref "sample.md"`).  `.Ref` does *not* handle in-page fragments correctly. See [Cross References](/content-management/cross-references/).
 +
 +.RelPermalink
 +: the relative permanent link for this page.
 +
 +.RelRef
 +: returns the relative permalink for a given reference (e.g., `RelRef
 +"sample.md"`). `.RelRef` does *not* handle in-page fragments correctly. See [Cross References](/content-management/cross-references/).
 +
 +.Site
 +: see [Site Variables](/variables/site/).
 +
 +.Sites
 +: returns all sites (languages). A typical use case would be to link back to the main language: `<a href="{{ .Sites.First.Home.RelPermalink }}">...</a>`.
 +
 +.Sites.First
 +: returns the site for the first language. If this is not a multilingual setup, it will return itself.
 +
 +.Summary
 +: a generated summary of the content for easily showing a snippet in a summary view. The breakpoint can be set manually by inserting <code>&lt;!&#x2d;&#x2d;more&#x2d;&#x2d;&gt;</code> at the appropriate place in the content page, or the summary can be written independent of the page text.  See [Content Summaries](/content-management/summaries/) for more details.
 +
 +.TableOfContents
 +: the rendered [table of contents](/content-management/toc/) for the page.
 +
 +.Title
 +: the title for this page.
 +
 +.Translations
 +: a list of translated versions of the current page. See [Multilingual Mode](/content-management/multilingual/) for more information.
 +
 +.TranslationKey
 +: the key used to map language translations of the current page. See [Multilingual Mode](/content-management/multilingual/) for more information.
 +
 +.Truncated
 +: a boolean, `true` if the `.Summary` is truncated. Useful for showing a "Read more..." link only when necessary.  See [Summaries](/content-management/summaries/) for more information.
 +
 +.Type
 +: the [content type](/content-management/types/) of the content (e.g., `posts`).
 +
 +.UniqueID (deprecated)
 +: the MD5-checksum of the content file's path. This variable is deprecated and will be removed, use `.File.UniqueID` instead.
 +
 +.Weight
 +: assigned weight (in the front matter) to this content, used in sorting.
 +
 +.WordCount
 +: the number of words in the content.
 +
 +## Section Variables and Methods
 +
 +Also see [Sections](/content-management/sections/).
 +
 +{{< readfile file="/content/en/readfiles/sectionvars.md" markdown="true" >}}
 +
 +## The `.Pages` Variable {#pages}
 +
 +`.Pages` is an alias to `.Data.Pages`. It is conventional to use the
 +aliased form `.Pages`.
 +
 +### `.Pages` compared to `.Site.Pages`
 +
 +{{< readfile file="/content/en/readfiles/pages-vs-site-pages.md" markdown="true" >}}
 +
 +## Page-level Params
 +
 +Any other value defined in the front matter in a content file, including taxonomies, will be made available as part of the `.Params` variable.
 +
 +```
 +---
 +title: My First Post
 +date: 2017-02-20T15:26:23-06:00
 +categories: [one]
 +tags: [two,three,four]
 +```
 +
 +With the above front matter, the `tags` and `categories` taxonomies are accessible via the following:
 +
 +* `.Params.tags`
 +* `.Params.categories`
 +
 +{{% note "Casing of Params" %}}
 +Page-level `.Params` are *only* accessible in lowercase.
 +{{% /note %}}
 +
 +The `.Params` variable is particularly useful for the introduction of user-defined front matter fields in content files. For example, a Hugo website on book reviews could have the following front matter in `/content/review/book01.md`:
 +
 +```
 +---
 +...
 +affiliatelink: "http://www.my-book-link.here"
 +recommendedby: "My Mother"
 +...
 +---
 +```
 +
 +These fields would then be accessible to the `/themes/yourtheme/layouts/review/single.html` template through `.Params.affiliatelink` and `.Params.recommendedby`, respectively.
 +
 +Two common situations where this type of front matter field could be introduced is as a value of a certain attribute like `href=""` or by itself to be displayed as text to the website's visitors.
 +
 +{{< code file="/themes/yourtheme/layouts/review/single.html" >}}
 +<h3><a href={{ printf "%s" $.Params.affiliatelink }}>Buy this book</a></h3>
 +<p>It was recommended by {{ .Params.recommendedby }}.</p>
 +{{< /code >}}
 +
 +This template would render as follows, assuming you've set [`uglyURLs`](/content-management/urls/) to `false` in your [site `config`](/getting-started/configuration/):
 +
 +{{< output file="yourbaseurl/review/book01/index.html" >}}
 +<h3><a href="http://www.my-book-link.here">Buy this book</a></h3>
 +<p>It was recommended by my Mother.</p>
 +{{< /output >}}
 +
 +{{% note %}}
 +See [Archetypes](/content-management/archetypes/) for consistency of `Params` across pieces of content.
 +{{% /note %}}
 +
 +### The `.Param` Method
 +
 +In Hugo, you can declare params in individual pages and globally for your entire website. A common use case is to have a general value for the site param and a more specific value for some of the pages (i.e., a header image):
 +
 +```
 +{{ $.Param "header_image" }}
 +```
 +
 +The `.Param` method provides a way to resolve a single value according to it's definition in a page parameter (i.e. in the content's front matter) or a site parameter (i.e., in your `config`).
 +
 +### Access Nested Fields in Front Matter
 +
 +When front matter contains nested fields like the following:
 +
 +```
 +---
 +author:
 +  given_name: John
 +  family_name: Feminella
 +  display_name: John Feminella
 +---
 +```
 +`.Param` can access these fields by concatenating the field names together with a dot:
 +
 +```
 +{{ $.Param "author.display_name" }}
 +```
 +
 +If your front matter contains a top-level key that is ambiguous with a nested key, as in the following case:
 +
 +```
 +---
 +favorites.flavor: vanilla
 +favorites:
 +  flavor: chocolate
 +---
 +```
 +
 +The top-level key will be preferred. Therefore, the following method, when applied to the previous example, will print `vanilla` and not `chocolate`:
 +
 +```
 +{{ $.Param "favorites.flavor" }}
 +=> vanilla
 +```
 +
 +[gitinfo]: /variables/git/
 +[File Variables]: /variables/files/
index 913d7965b616d457c579c055c1169e03d1ec7b50,0000000000000000000000000000000000000000..21649e987abbbbd0f1688ac5757cb7d07233f4d0
mode 100644,000000..100644
--- /dev/null
@@@ -1,31 -1,0 +1,31 @@@
- HUGO_VERSION = "0.78.2"
 +[build]
 +publish = "public"
 +command = "hugo --gc --minify"
 +
 +[context.production.environment]
- HUGO_VERSION = "0.78.2"
++HUGO_VERSION = "0.80.0"
 +HUGO_ENV = "production"
 +HUGO_ENABLEGITINFO = "true"
 +
 +[context.split1]
 +command = "hugo --gc --minify --enableGitInfo"
 +
 +[context.split1.environment]
- HUGO_VERSION = "0.78.2"
++HUGO_VERSION = "0.80.0"
 +HUGO_ENV = "production"
 +
 +[context.deploy-preview]
 +command = "hugo --gc --minify --buildFuture -b $DEPLOY_PRIME_URL"
 +
 +[context.deploy-preview.environment]
- HUGO_VERSION = "0.78.2"
++HUGO_VERSION = "0.80.0"
 +
 +[context.branch-deploy]
 +command = "hugo --gc --minify -b $DEPLOY_PRIME_URL"
 +
 +[context.branch-deploy.environment]
++HUGO_VERSION = "0.80.0"
 +
 +[context.next.environment]
 +HUGO_ENABLEGITINFO = "true"
 +
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..2dd944e97878e438bea56be345537823b60e9734
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..5b2d51a23e09ef4d1a950d346334e99966f78071
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9f1f270e4b2009c923de155b7093e168f51bb658
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..20b712b44577d8608b62c61f9d168b8ecd3d1b16
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d783eba094f0b9ed8cd22e35ae15437ab19d73a2
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..595c6dd3267f25d00956b02cde2e34c1d251b573
new file mode 100644 (file)
Binary files differ