Bjørn Erik Pedersen
eada236f87
Introduce a tree map for all content
...
This commit introduces a new data structure to store pages and their resources.
This data structure is backed by radix trees.
This simplies tree operations, makes all pages a bundle, and paves the way for #6310 .
It also solves a set of annoying issues (see list below).
Not a motivation behind this, but this commit also makes Hugo in general a little bit faster and more memory effective (see benchmarks). Especially for partial rebuilds on content edits, but also when taxonomies is in use.
```
name old time/op new time/op delta
SiteNew/Bundle_with_image/Edit-16 1.32ms ± 8% 1.00ms ± 9% -24.42% (p=0.029 n=4+4)
SiteNew/Bundle_with_JSON_file/Edit-16 1.28ms ± 0% 0.94ms ± 0% -26.26% (p=0.029 n=4+4)
SiteNew/Tags_and_categories/Edit-16 33.9ms ± 2% 21.8ms ± 1% -35.67% (p=0.029 n=4+4)
SiteNew/Canonify_URLs/Edit-16 40.6ms ± 1% 37.7ms ± 3% -7.20% (p=0.029 n=4+4)
SiteNew/Deep_content_tree/Edit-16 56.7ms ± 0% 51.7ms ± 1% -8.82% (p=0.029 n=4+4)
SiteNew/Many_HTML_templates/Edit-16 19.9ms ± 2% 18.3ms ± 3% -7.64% (p=0.029 n=4+4)
SiteNew/Page_collections/Edit-16 37.9ms ± 4% 34.0ms ± 2% -10.28% (p=0.029 n=4+4)
SiteNew/Bundle_with_image-16 10.7ms ± 0% 10.6ms ± 0% -1.15% (p=0.029 n=4+4)
SiteNew/Bundle_with_JSON_file-16 10.8ms ± 0% 10.7ms ± 0% -1.05% (p=0.029 n=4+4)
SiteNew/Tags_and_categories-16 43.2ms ± 1% 39.6ms ± 1% -8.35% (p=0.029 n=4+4)
SiteNew/Canonify_URLs-16 47.6ms ± 1% 47.3ms ± 0% ~ (p=0.057 n=4+4)
SiteNew/Deep_content_tree-16 73.0ms ± 1% 74.2ms ± 1% ~ (p=0.114 n=4+4)
SiteNew/Many_HTML_templates-16 37.9ms ± 0% 38.1ms ± 1% ~ (p=0.114 n=4+4)
SiteNew/Page_collections-16 53.6ms ± 1% 54.7ms ± 1% +2.09% (p=0.029 n=4+4)
name old alloc/op new alloc/op delta
SiteNew/Bundle_with_image/Edit-16 486kB ± 0% 430kB ± 0% -11.47% (p=0.029 n=4+4)
SiteNew/Bundle_with_JSON_file/Edit-16 265kB ± 0% 209kB ± 0% -21.06% (p=0.029 n=4+4)
SiteNew/Tags_and_categories/Edit-16 13.6MB ± 0% 8.8MB ± 0% -34.93% (p=0.029 n=4+4)
SiteNew/Canonify_URLs/Edit-16 66.5MB ± 0% 63.9MB ± 0% -3.95% (p=0.029 n=4+4)
SiteNew/Deep_content_tree/Edit-16 28.8MB ± 0% 25.8MB ± 0% -10.55% (p=0.029 n=4+4)
SiteNew/Many_HTML_templates/Edit-16 6.16MB ± 0% 5.56MB ± 0% -9.86% (p=0.029 n=4+4)
SiteNew/Page_collections/Edit-16 16.9MB ± 0% 16.0MB ± 0% -5.19% (p=0.029 n=4+4)
SiteNew/Bundle_with_image-16 2.28MB ± 0% 2.29MB ± 0% +0.35% (p=0.029 n=4+4)
SiteNew/Bundle_with_JSON_file-16 2.07MB ± 0% 2.07MB ± 0% ~ (p=0.114 n=4+4)
SiteNew/Tags_and_categories-16 14.3MB ± 0% 13.2MB ± 0% -7.30% (p=0.029 n=4+4)
SiteNew/Canonify_URLs-16 69.1MB ± 0% 69.0MB ± 0% ~ (p=0.343 n=4+4)
SiteNew/Deep_content_tree-16 31.3MB ± 0% 31.8MB ± 0% +1.49% (p=0.029 n=4+4)
SiteNew/Many_HTML_templates-16 10.8MB ± 0% 10.9MB ± 0% +1.11% (p=0.029 n=4+4)
SiteNew/Page_collections-16 21.4MB ± 0% 21.6MB ± 0% +1.15% (p=0.029 n=4+4)
name old allocs/op new allocs/op delta
SiteNew/Bundle_with_image/Edit-16 4.74k ± 0% 3.86k ± 0% -18.57% (p=0.029 n=4+4)
SiteNew/Bundle_with_JSON_file/Edit-16 4.73k ± 0% 3.85k ± 0% -18.58% (p=0.029 n=4+4)
SiteNew/Tags_and_categories/Edit-16 301k ± 0% 198k ± 0% -34.14% (p=0.029 n=4+4)
SiteNew/Canonify_URLs/Edit-16 389k ± 0% 373k ± 0% -4.07% (p=0.029 n=4+4)
SiteNew/Deep_content_tree/Edit-16 338k ± 0% 262k ± 0% -22.63% (p=0.029 n=4+4)
SiteNew/Many_HTML_templates/Edit-16 102k ± 0% 88k ± 0% -13.81% (p=0.029 n=4+4)
SiteNew/Page_collections/Edit-16 176k ± 0% 152k ± 0% -13.32% (p=0.029 n=4+4)
SiteNew/Bundle_with_image-16 26.8k ± 0% 26.8k ± 0% +0.05% (p=0.029 n=4+4)
SiteNew/Bundle_with_JSON_file-16 26.8k ± 0% 26.8k ± 0% +0.05% (p=0.029 n=4+4)
SiteNew/Tags_and_categories-16 273k ± 0% 245k ± 0% -10.36% (p=0.029 n=4+4)
SiteNew/Canonify_URLs-16 396k ± 0% 398k ± 0% +0.39% (p=0.029 n=4+4)
SiteNew/Deep_content_tree-16 317k ± 0% 325k ± 0% +2.53% (p=0.029 n=4+4)
SiteNew/Many_HTML_templates-16 146k ± 0% 147k ± 0% +0.98% (p=0.029 n=4+4)
SiteNew/Page_collections-16 210k ± 0% 215k ± 0% +2.44% (p=0.029 n=4+4)
```
Fixes #6312
Fixes #6087
Fixes #6738
Fixes #6412
Fixes #6743
Fixes #6875
Fixes #6034
Fixes #6902
Fixes #6173
Fixes #6590
2020-02-18 09:49:42 +01:00
hugoreleaser
4f43c9022a
releaser: Prepare repository for 0.65.0-DEV
...
[ci skip]
2020-02-09 20:53:18 +00:00
hugoreleaser
8bd8d4fe9a
releaser: Bump versions for release of 0.64.1
...
[ci skip]
2020-02-09 20:44:34 +00:00
hugoreleaser
6a74cbe916
releaser: Prepare repository for 0.65.0-DEV
...
[ci skip]
2020-02-04 09:16:38 +00:00
hugoreleaser
7624ab0281
releaser: Bump versions for release of 0.64.0
...
[ci skip]
2020-02-04 09:07:21 +00:00
hugoreleaser
d8e685154d
releaser: Prepare repository for 0.64.0-DEV
...
[ci skip]
2020-01-27 12:22:47 +00:00
hugoreleaser
c7427a50ed
releaser: Bump versions for release of 0.63.2
...
[ci skip]
2020-01-27 12:13:04 +00:00
hugoreleaser
8ae2c9c3d6
releaser: Prepare repository for 0.64.0-DEV
...
[ci skip]
2020-01-23 20:17:44 +00:00
hugoreleaser
fd32849bfe
releaser: Bump versions for release of 0.63.1
...
[ci skip]
2020-01-23 20:08:10 +00:00
hugoreleaser
fb974ae87f
releaser: Prepare repository for 0.64.0-DEV
...
[ci skip]
2020-01-23 12:48:39 +00:00
hugoreleaser
3b3f5a2596
releaser: Bump versions for release of 0.63.0
...
[ci skip]
2020-01-23 12:39:31 +00:00
Bjørn Erik Pedersen
c6d650c8c8
tpl/tplimpl: Rework template management to get rid of concurrency issues
...
This more or less completes the simplification of the template handling code in Hugo started in v0.62.
The main motivation was to fix a long lasting issue about a crash in HTML content files without front matter.
But this commit also comes with a big functional improvement.
As we now have moved the base template evaluation to the build stage we now use the same lookup rules for `baseof` as for `list` etc. type of templates.
This means that in this simple example you can have a `baseof` template for the `blog` section without having to duplicate the others:
```
layouts
├── _default
│ ├── baseof.html
│ ├── list.html
│ └── single.html
└── blog
└── baseof.html
```
Also, when simplifying code, you often get rid of some double work, as shown in the "site building" benchmarks below.
These benchmarks looks suspiciously good, but I have repeated the below with ca. the same result. Compared to master:
```
name old time/op new time/op delta
SiteNew/Bundle_with_image-16 13.1ms ± 1% 10.5ms ± 1% -19.34% (p=0.029 n=4+4)
SiteNew/Bundle_with_JSON_file-16 13.0ms ± 0% 10.7ms ± 1% -18.05% (p=0.029 n=4+4)
SiteNew/Tags_and_categories-16 46.4ms ± 2% 43.1ms ± 1% -7.15% (p=0.029 n=4+4)
SiteNew/Canonify_URLs-16 52.2ms ± 2% 47.8ms ± 1% -8.30% (p=0.029 n=4+4)
SiteNew/Deep_content_tree-16 77.9ms ± 1% 70.9ms ± 1% -9.01% (p=0.029 n=4+4)
SiteNew/Many_HTML_templates-16 43.0ms ± 0% 37.2ms ± 1% -13.54% (p=0.029 n=4+4)
SiteNew/Page_collections-16 58.2ms ± 1% 52.4ms ± 1% -9.95% (p=0.029 n=4+4)
name old alloc/op new alloc/op delta
SiteNew/Bundle_with_image-16 3.81MB ± 0% 2.22MB ± 0% -41.70% (p=0.029 n=4+4)
SiteNew/Bundle_with_JSON_file-16 3.60MB ± 0% 2.01MB ± 0% -44.20% (p=0.029 n=4+4)
SiteNew/Tags_and_categories-16 19.3MB ± 1% 14.1MB ± 0% -26.91% (p=0.029 n=4+4)
SiteNew/Canonify_URLs-16 70.7MB ± 0% 69.0MB ± 0% -2.40% (p=0.029 n=4+4)
SiteNew/Deep_content_tree-16 37.1MB ± 0% 31.2MB ± 0% -15.94% (p=0.029 n=4+4)
SiteNew/Many_HTML_templates-16 17.6MB ± 0% 10.6MB ± 0% -39.92% (p=0.029 n=4+4)
SiteNew/Page_collections-16 25.9MB ± 0% 21.2MB ± 0% -17.99% (p=0.029 n=4+4)
name old allocs/op new allocs/op delta
SiteNew/Bundle_with_image-16 52.3k ± 0% 26.1k ± 0% -50.18% (p=0.029 n=4+4)
SiteNew/Bundle_with_JSON_file-16 52.3k ± 0% 26.1k ± 0% -50.16% (p=0.029 n=4+4)
SiteNew/Tags_and_categories-16 336k ± 1% 269k ± 0% -19.90% (p=0.029 n=4+4)
SiteNew/Canonify_URLs-16 422k ± 0% 395k ± 0% -6.43% (p=0.029 n=4+4)
SiteNew/Deep_content_tree-16 401k ± 0% 313k ± 0% -21.79% (p=0.029 n=4+4)
SiteNew/Many_HTML_templates-16 247k ± 0% 143k ± 0% -42.17% (p=0.029 n=4+4)
SiteNew/Page_collections-16 282k ± 0% 207k ± 0% -26.55% (p=0.029 n=4+4)
```
Fixes #6716
Fixes #6760
Fixes #6768
Fixes #6778
2020-01-22 09:39:49 +01:00
hugoreleaser
273047b5ba
releaser: Prepare repository for 0.63.0-DEV
...
[ci skip]
2020-01-05 18:58:55 +00:00
hugoreleaser
12230b6897
releaser: Bump versions for release of 0.62.2
...
[ci skip]
2020-01-05 18:50:35 +00:00
Bjørn Erik Pedersen
a82d2700fc
markup/goldmark: Make auto IDs GitHub compatible
...
You can turn off this behaviour:
```toml
[markup]
[markup.goldmark]
[markup.goldmark.parser]
autoHeadingIDAsciiOnly = true
```
Note that the `anchorize` now adapts its behaviour depending on the default Markdown handler.
Fixes #6616
2020-01-04 19:46:01 +01:00
hugoreleaser
ae816452b1
releaser: Prepare repository for 0.63.0-DEV
...
[ci skip]
2020-01-01 17:46:46 +00:00
hugoreleaser
3a21a1708d
releaser: Bump versions for release of 0.62.1
...
[ci skip]
2020-01-01 17:38:22 +00:00
hugoreleaser
6b59b64f02
releaser: Prepare repository for 0.63.0-DEV
...
[ci skip]
2019-12-23 10:32:39 +00:00
hugoreleaser
b361d9a462
releaser: Bump versions for release of 0.62.0
...
[ci skip]
2019-12-23 10:23:27 +00:00
hugoreleaser
186a5ebfca
releaser: Prepare repository for 0.62.0-DEV
...
[ci skip]
2019-12-11 08:35:04 +00:00
hugoreleaser
3af783966d
releaser: Bump versions for release of 0.61.0
...
[ci skip]
2019-12-11 08:26:33 +00:00
hugoreleaser
a6b6b135a4
releaser: Prepare repository for 0.61.0-DEV
...
[ci skip]
2019-11-29 15:05:19 +00:00
hugoreleaser
6c05563082
releaser: Bump versions for release of 0.60.1
...
[ci skip]
2019-11-29 14:56:16 +00:00
hugoreleaser
003ba5b10f
releaser: Prepare repository for 0.61.0-DEV
...
[ci skip]
2019-11-27 10:19:00 +00:00
hugoreleaser
763b0dcb97
releaser: Bump versions for release of 0.60.0
...
[ci skip]
2019-11-27 10:09:46 +00:00
Bjørn Erik Pedersen
a3fe5e5e35
Fix Params case handling in the index, sort and where func
...
This means that you can now do:
```
{{ range where .Site.Pages "Params.MYPARAM" "foo" }}
```
2019-11-22 18:41:50 +01:00
Bjørn Erik Pedersen
628efd6e29
common/para: Add parallel task executor helper
...
Usage of this will come later.
2019-11-21 18:38:14 +01:00
Bjørn Erik Pedersen
2dcc1318d1
Add some more output if loading modules takes time
...
Also include the time to collect modules etc. in the "Total in ..." time reported for the `hugo` command.
Fixes #6519
2019-11-21 18:11:07 +01:00
hugoreleaser
07a203406a
releaser: Prepare repository for 0.60.0-DEV
...
[ci skip]
2019-10-31 15:30:12 +00:00
hugoreleaser
e04a22c5e4
releaser: Bump versions for release of 0.59.1
...
[ci skip]
2019-10-31 15:20:53 +00:00
Bjørn Erik Pedersen
baa975082c
deps: Update to Chroma v0.6.8 to fix a crash
...
Also improve relevant logging.
Fixes #6450
2019-10-24 11:11:18 +02:00
hugoreleaser
6bcc5ad8b2
releaser: Prepare repository for 0.60.0-DEV
...
[ci skip]
2019-10-21 09:47:26 +00:00
hugoreleaser
b084af4bfa
releaser: Bump versions for release of 0.59.0
...
[ci skip]
2019-10-21 09:38:50 +00:00
Vazrupe (HyeonGyu Lee)
a9762b5c48
common: Fix elements are doubling when append a not assignable type
...
Fixes #6188
2019-10-11 10:38:12 +02:00
hugoreleaser
8cb7a0d4db
releaser: Prepare repository for 0.59.0-DEV
...
[ci skip]
2019-09-19 15:36:35 +00:00
hugoreleaser
85376a757b
releaser: Bump versions for release of 0.58.3
...
[ci skip]
2019-09-19 15:28:26 +00:00
hugoreleaser
13768c3c50
releaser: Prepare repository for 0.59.0-DEV
...
[ci skip]
2019-09-13 08:12:38 +00:00
hugoreleaser
7bc1270ec7
releaser: Bump versions for release of 0.58.2
...
[ci skip]
2019-09-13 08:04:20 +00:00
hugoreleaser
77b23fe3db
releaser: Prepare repository for 0.59.0-DEV
...
[ci skip]
2019-09-06 09:26:46 +00:00
hugoreleaser
8bc478d3f7
releaser: Bump versions for release of 0.58.1
...
[ci skip]
2019-09-06 09:18:56 +00:00
hugoreleaser
f4e1cb8d05
releaser: Prepare repository for 0.59.0-DEV
...
[ci skip]
2019-09-04 15:51:16 +00:00
hugoreleaser
10c0baddfa
releaser: Bump versions for release of 0.58.0
...
[ci skip]
2019-09-04 15:41:58 +00:00
Bjørn Erik Pedersen
f9978ed164
Image resource refactor
...
This commit pulls most of the image related logic into its own package, to make it easier to reason about and extend.
This is also a rewrite of the transformation logic used in Hugo Pipes, mostly to allow constructs like the one below:
{{ ($myimg | fingerprint ).Width }}
Fixes #5903
Fixes #6234
Fixes #6266
2019-08-26 15:00:44 +02:00
hugoreleaser
3ae4b3e19f
releaser: Prepare repository for 0.58.0-DEV
...
[ci skip]
2019-08-17 17:59:28 +00:00
hugoreleaser
01fbb46354
releaser: Bump versions for release of 0.57.2
...
[ci skip]
2019-08-17 17:51:54 +00:00
hugoreleaser
36d749f4ea
releaser: Prepare repository for 0.58.0-DEV
...
[ci skip]
2019-08-15 19:00:12 +00:00
hugoreleaser
484106cfa2
releaser: Bump versions for release of 0.57.1
...
[ci skip]
2019-08-15 18:52:49 +00:00
hugoreleaser
37f5929803
releaser: Prepare repository for 0.58.0-DEV
...
[ci skip]
2019-08-14 08:13:53 +00:00
hugoreleaser
ab849fcc98
releaser: Bump versions for release of 0.57.0
...
[ci skip]
2019-08-14 08:05:33 +00:00
Bjørn Erik Pedersen
9e57182705
tests: Convert from testify to quicktest
2019-08-12 13:26:32 +02:00