Bjørn Erik Pedersen
4c7a78f5ca
testing: Revise usage of b.N and b.Loop() in benchmarks
2025-11-07 13:33:39 +01:00
Bjørn Erik Pedersen
91eac9e573
all: Fix some benchmarks broken by modernize
...
It's not possible to use `b.Loop()` when `b.N` is used to prepare test data.
See 264022a75a
See #14107
2025-11-06 10:43:12 +01:00
Bjørn Erik Pedersen
04650ce778
all: Run modernize -fix ./...
...
Closes #14107
2025-11-05 21:05:42 +01:00
Bjørn Erik Pedersen
264022a75a
Add roles and versions as new dimensions (in addition to language)
...
See the main issue #13776 for details.
Fixes #519
Fixes #13680
Fixes #13663
Fixes #13776
Fixes #13855
Fixes #13648
Fixes #13996
Fixes #14001
Fixes #14031
Fixes #13818
Fixes #13196
2025-11-05 20:39:25 +01:00
Bjørn Erik Pedersen
e9bda21ce9
hreflect: Cache reflect method lookups used in collections.Where and others
...
We already cached the method index on the struct, but caching the resolved `reflect.Method` itself saves us from having to do another lookup on each call, which is escpeciall import in the hot path used by collections.Where and otherrs:
```bash
│ master.bench │ fix-reflectmethodcache.bench │
│ sec/op │ sec/op vs base │
WhereSliceOfStructPointersWithMethod-10 592.2µ ± ∞ ¹ 390.1µ ± ∞ ¹ -34.14% (p=0.029 n=4)
¹ need >= 6 samples for confidence interval at level 0.95
│ master.bench │ fix-reflectmethodcache.bench │
│ B/op │ B/op vs base │
WhereSliceOfStructPointersWithMethod-10 205.14Ki ± ∞ ¹ 64.52Ki ± ∞ ¹ -68.55% (p=0.029 n=4)
¹ need >= 6 samples for confidence interval at level 0.95
│ master.bench │ fix-reflectmethodcache.bench │
│ allocs/op │ allocs/op vs base │
WhereSliceOfStructPointersWithMethod-10 9.003k ± ∞ ¹ 4.503k ± ∞ ¹ -49.98% (p=0.029 n=4)
````
2025-10-27 15:45:50 +01:00
Bjørn Erik Pedersen
3893e70510
all: Simplify the reflect usage
...
* Use helper funcs in hreflect package when possible.
* Use hreflect.ConvertIfPossible to handle conversions when possible.
* Move scratch.go from common/maps to common/hstore to clear cyclic import in the next step.
* Move Indirect to hreflect and reimplementing it and adusting the behavior to preserve struct pointers.
* Adjust evaluateSubElem used by where and others making the struct pointer method case slightly faster.
2025-10-26 17:36:58 +01:00
Bjørn Erik Pedersen
e08278d165
Expand the numeric conversions to template funcs/methods
...
So the example mentioned in #14079 also works for TOML and JSON front matter.
See #14079
2025-10-22 21:04:39 +02:00
Bjørn Erik Pedersen
df4f80d54f
Fix where with uint64
...
Fixes #14081
2025-10-22 21:04:39 +02:00
Bjørn Erik Pedersen
d4c78885ae
Fix it so YAML integer types can be used where Go int types are expected
...
E.g. in date.AddDate.
In Hugo v0.152.0 we moved to a new YAML library (github.com/goccy/go-yaml) which produces uint64 for unsigned integers.
This unfortunately breaks common constructs like:
.Date.AddDate 0 0 7
when .Date is a time.Time and the integers are unmarshaled from YAML front matter.
This commit adds code to handle conversion from uint64 (and other int types) to the required int types where possible.
Fixes #14079
2025-10-22 21:04:39 +02:00
Bjørn Erik Pedersen
29e2c2fa92
tpl/compare: Fix compare/sort of uint64s
...
`uint64` is used by github.com/goccy/go-yaml for unsigned integers, which is the reason why this long-living bug has surfaced now.
Fixes #14078
2025-10-22 13:40:03 +02:00
Bjørn Erik Pedersen
a3d9548469
Replace to gopkg.in/yaml with github.com/goccy/go-yaml (note)
...
This commit also adds validation to prevent the "Billion Laughs" attack (see https://github.com/goccy/go-yaml/issues/461 ). The limit of non-scalar aliases to the same node is set to 10,000. See benchmarks below.
``` │ sec/op │
UnmarshalBillionLaughs/Billion_Laughs_no_validation-10 125.2µ ± ∞ ¹
UnmarshalBillionLaughs/Billion_Laughs_with_validation-10 655.8µ ± ∞ ¹
UnmarshalBillionLaughs/YAML_Front_Matter_no_validation-10 9.223µ ± ∞ ¹
UnmarshalBillionLaughs/YAML_Front_Matter_with_validation-10 9.443µ ± ∞ ¹
geomean 51.71µ
¹ need >= 6 samples for confidence interval at level 0.95
│ fix-goyaml-8822.bench │
│ B/op │
UnmarshalBillionLaughs/Billion_Laughs_no_validation-10 177.0Ki ± ∞ ¹
UnmarshalBillionLaughs/Billion_Laughs_with_validation-10 177.0Ki ± ∞ ¹
UnmarshalBillionLaughs/YAML_Front_Matter_no_validation-10 11.67Ki ± ∞ ¹
UnmarshalBillionLaughs/YAML_Front_Matter_with_validation-10 11.67Ki ± ∞ ¹
geomean 45.45Ki
¹ need >= 6 samples for confidence interval at level 0.95
│ fix-goyaml-8822.bench │
│ allocs/op │
UnmarshalBillionLaughs/Billion_Laughs_no_validation-10 3.302k ± ∞ ¹
UnmarshalBillionLaughs/Billion_Laughs_with_validation-10 3.305k ± ∞ ¹
UnmarshalBillionLaughs/YAML_Front_Matter_no_validation-10 253.0 ± ∞ ¹
UnmarshalBillionLaughs/YAML_Front_Matter_with_validation-10 253.0 ± ∞ ¹
````
Fixes #8822
Fixes #13043
Fixes #14053
Fixes ##8427
2025-10-18 13:52:22 +02:00
Kazuo Oishi
88aea56683
tpl: Fix strings/truncate CJK handling
...
Fix truncate position for mix of CJK and non-CJK text.
Fixes #14039
2025-10-15 13:00:10 +02:00
Bjørn Erik Pedersen
c5dca3bdee
Add transform.HTMLToMarkdown
...
Fixes #13946
2025-10-01 19:17:26 +02:00
Dr. Tobias Quathamer
105d3bc32f
tpl: Workaround s390x precision of Atan and Tan
...
On s390x, math.Atan(1) and math.Tan(1) give values that slightly differ
from other architectures, causing TestTemplateFuncsExamples to fail.
The golang math package states in the overview:
"This package does not guarantee bit-identical results across architectures."
2025-09-29 17:09:29 +02:00
Lukáš Zapletal
25c0f2408a
Remove noindex meta tag from alias.html
...
Google does not behave as expected when an alias is used. It does not index the client-side alias page, but on top of that it also does not index the original page.
Google does not require noindex to be present and since alias pages do not have any content, it makes little sense to provide it. Therefore, this patch removes the line completely.
https://developers.google.com/search/docs/crawling-indexing/301-redirects
2025-09-04 15:58:23 +02:00
Bjørn Erik Pedersen
b8eb45c9df
tpl/collections: Require collections.D args to be ints
...
Fixes #13952
Co-authored-by: Joe Mooring <joe.mooring@veriphor.com >
2025-09-04 14:01:51 +02:00
Bjørn Erik Pedersen
84b5123912
tpl/collections: Add an integration test for collections.D
...
Also
* improve the handling if invalid input
* add a sanity check for number of elements asked for in D (1000000).
2025-08-27 17:25:05 +02:00
Bjørn Erik Pedersen
1ba80874e4
tpl/collections: Add collections.D using Vitter's Method D for sequential random sampling
2025-08-26 20:37:08 +02:00
Bjørn Erik Pedersen
cfc38ecfed
deps: Upgrade github.com/alecthomas/chroma/v2 v2.19.0 => v2.20.0
...
CLoses #13917
2025-08-25 18:24:07 +02:00
Bjørn Erik Pedersen
186934feb4
common/hcontext: Replace with external package
2025-08-22 09:13:46 +02:00
Nigel van Keulen
348aae91e8
tpl/strings: Remove unnecessary error check
2025-08-15 13:43:16 +02:00
n1xx1
2216028620
Add a key to the partialCached deadlock prevention
...
Fixes #13889
2025-08-07 11:17:14 +02:00
n1xx1
ecc3dd1f53
transform: Add support for "format" option in transform.Unmarshal
...
Fixes #13887
2025-08-05 22:19:51 +02:00
Bjørn Erik Pedersen
7ff5ec734c
tpl: Add test for recent template selection regression
...
Closes #13868
Co-authored-by: Joe Mooring <joe.mooring@veriphor.com >
2025-07-27 14:39:39 +02:00
Bjørn Erik Pedersen
9c57af1351
Fix regression with hyphenated codeblock templates, e.g. render-codeblock-go-html-template.html
...
Fixes #13864
Co-authored-by: Joe Mooring <joe.mooring@veriphor.com >
2025-07-27 14:39:39 +02:00
Bjørn Erik Pedersen
90d397b142
Remove the internal GitInfo type and make Page.GitInf() return a pointer
...
See #5693
2025-07-07 14:49:27 +02:00
Jens Broekens
61e6c730dd
source: Expose Ancestor in GitInfo
...
Also updates docs and bumps bep/gitmap to v1.7.0
Closes #5693
Co-authored-by: bep <bjorn.erik.pedersen@gmail.com >
2025-07-07 14:49:27 +02:00
Joe Mooring
84b31721bf
markup/goldmark: Change link and image render hook enablement to enums
...
Closes #13535
2025-07-07 11:19:34 +02:00
Joe Mooring
18a9ca7d7a
tpl/tplimpl: Copy embedded HTML table render hook to each output format
...
Closes #13351
2025-06-21 14:37:47 +02:00
Joe Mooring
b6c8dfa9dc
tpl/tplimpl: Change resources.GetRemote errors to suppressible warnings
...
Closes #13803
2025-06-17 07:35:14 -07:00
Joe Mooring
b5c0383bda
deps: Upgrade github.com/spf13/cast v1.8.0 => v1.9.2
2025-06-12 10:07:09 +02:00
Bjørn Erik Pedersen
5273a884d4
Fix language handling in shortcode templates
...
Fixes #13767
2025-05-31 13:57:00 +02:00
Bjørn Erik Pedersen
6334948515
Handle KaTeX warnings ( #13760 )
...
Co-authored-by: Joe Mooring <joe.mooring@veriphor.com >
Fixes #13735
2025-05-30 20:57:54 +02:00
Andreas Deininger
e57dcd3795
Improve warning message on superfluous prefix when using function 'partials.Include'
2025-05-27 12:16:26 +02:00
Bjørn Erik Pedersen
9ad26b69ad
Fix it so e.g. de in layouts/_shortcodes/de.html is not interpreted as a language code
...
Fixes #13740
2025-05-26 20:26:56 +02:00
Joe Mooring
013c8cfb25
tpl/transform: Expose the KaTeX strict option
...
Closes #13729
2025-05-23 19:21:38 +02:00
Bjørn Erik Pedersen
0c7b1a3f26
Fix live reload when editing inline partials
...
Fixes #13723
2025-05-22 13:15:41 +02:00
Bjørn Erik Pedersen
5a81a3a4cf
tpl: Add a test case
...
I'm not able to reproduce this, but leaving it in.
Closes #13699
2025-05-18 12:48:24 +02:00
Bjørn Erik Pedersen
61317821e4
tpl: Narrow down the usage of plain text shortcodes when rendering HTML
...
After this commit, if you want to resolve `layouts/_shortcodes/myshortcode.txt` when rendering HTML content, you need to use the `{{%` shortcode delimiter:
```
{{% myshortcode %}}
```
This should be what people would do anyway, but we have also as part of this improved the error message to inform about what needs to be done.
Note that this is not relevant for partials.
Fixes #13698
2025-05-18 12:48:24 +02:00
Bjørn Erik Pedersen
6142bc701c
tpl: Fix theme overrides when theme has old layout setup (e.g. _default)
...
Fixes #13715
2025-05-18 12:48:24 +02:00
Joe Mooring
81426998b8
tpl/tplimpl: Change calls to simple versions of embedded shortcodes
...
Closes #13700
2025-05-12 14:19:11 +02:00
Bjørn Erik Pedersen
c745a3e108
Fix/implement cascade for content adapters
...
Fixes #13692
2025-05-10 15:12:24 +02:00
Joe Mooring
84d7a108e8
tpl/tplimpl: Fix vimeo shortcode test to accommodate API changes
...
Fixes #13687
2025-05-09 10:02:00 -07:00
Joe Mooring
325a0dba63
tpl/math: Add MaxInt64 function
...
Closes #13693
2025-05-07 19:40:29 +02:00
Bjørn Erik Pedersen
80f0595311
tpl: Fix case issue in templates.Exists
...
Fixes #13684
2025-05-05 11:23:52 +02:00
Bjørn Erik Pedersen
5fec7829b1
tpl: Add some more test cases
...
See #13672
See #13668
2025-05-01 12:55:11 +02:00
Bjørn Erik Pedersen
be93d5218b
tpl: Fix overlapping layout sections
...
Fixes #13672
2025-04-30 21:04:03 +02:00
Bjørn Erik Pedersen
07983e04e2
tpl: Fix it so we always prefer internal codeblock rendering over render-codeblock-foo.html and similar
...
Fixes #13651
2025-04-25 10:51:33 +02:00
Joe Mooring
5c491409d3
tpl/tplimpl: Fix allowFullScreen option in Vimeo and YouTube shortcodes
...
Closes #13650
2025-04-24 14:14:46 -07:00
Bjørn Erik Pedersen
ad4f63c92f
tpl: Remove some unreached code branches
2025-04-24 14:27:59 +02:00