jvoisin
d94aeb90e8
perf: short-circuit IsFunction, IsSelection, and IsNodes
...
These methods were building a full filtered Selection (via
FilterFunction/FilterSelection/FilterNodes -> winnow -> grep) only to
check Length() > 0. This commit replaces with early-return loops that stop at
the first match, significantly speeding them up:
name old ns/op new ns/op delta
IsFunction-8 1530 3.9 -99.7%
IsSelection-8 1890 19.9 -98.9%
IsNodes-8 2016 19.9 -99.0%
name old B/op new B/op delta
IsFunction-8 784 0 -100.0%
IsSelection-8 72 0 -100.0%
IsNodes-8 72 0 -100.0%
name old allocs new allocs delta
IsFunction-8 28 0 -100.0%
IsSelection-8 3 0 -100.0%
IsNodes-8 3 0 -100.0%
2026-05-23 22:57:17 +02:00
jvoisin
5f0afd53e4
perf: replace Index() PrevAll traversal with direct sibling walk
...
Index() was creating a Selection, calling PrevAll() which traversed
through getSiblingNodes -> mapNodes (allocating a dedup map and
intermediate slices), then calling Length() on the result.
This commit replaces this with a direct PrevSibling pointer walk that counts
element nodes, bringing the number of allocations down to zero instead of a
couple of hundreds on local benchmarks
2026-05-23 22:50:53 +02:00
jvoisin
45d35d506a
perf: avoid per-node Selection allocation in winnow Not path
...
The winnow() "Not" path routed through grep(), which called
newSingleSelection() for every node, allocating a Selection and
a 1-element []*html.Node slice on the heap per node, only to
immediately unwrap it via s.Get(0) for m.Match().
This commit call m.Match(n) directly and pre-allocate the result slice.
It also adds BenchmarkNotMatcher to isolate the winnow path from
compileMatcher overhead.
Here are my local benchmark results, for BenchmarkNotMatcher with 373 <li>
nodes, and a pre-compiled matcher:
old ns/op new ns/op delta
22750 19350 ~-15%
old B/op new B/op delta
9384 3120 -66.7%
old allocs new allocs delta
11 2 -81.8%
2026-05-23 22:02:15 +02:00
Martin Angers
33466f5bcd
Merge pull request #544 from PuerkitoBio/dependabot/go_modules/golang.org/x/net-0.55.0
...
Bump golang.org/x/net from 0.54.0 to 0.55.0
2026-05-22 08:52:45 -04:00
dependabot[bot]
33ce051cd9
Bump golang.org/x/net from 0.54.0 to 0.55.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.54.0 to 0.55.0.
- [Commits](https://github.com/golang/net/compare/v0.54.0...v0.55.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-version: 0.55.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-05-22 05:52:54 +00:00
Martin Angers
8c2d01c469
Merge pull request #543 from PuerkitoBio/dependabot/go_modules/golang.org/x/net-0.54.0
...
Bump golang.org/x/net from 0.53.0 to 0.54.0
2026-05-13 21:34:12 -04:00
dependabot[bot]
21b9b64897
Bump golang.org/x/net from 0.53.0 to 0.54.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.53.0 to 0.54.0.
- [Commits](https://github.com/golang/net/compare/v0.53.0...v0.54.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-version: 0.54.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-05-11 06:41:06 +00:00
Martin Angers
c92c45163d
Merge pull request #542 from PuerkitoBio/dependabot/go_modules/golang.org/x/net-0.53.0
...
Bump golang.org/x/net from 0.52.0 to 0.53.0
2026-04-11 09:47:15 -04:00
dependabot[bot]
43d03d8533
Bump golang.org/x/net from 0.52.0 to 0.53.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.52.0 to 0.53.0.
- [Commits](https://github.com/golang/net/compare/v0.52.0...v0.53.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-version: 0.53.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-04-10 05:52:49 +00:00
Martin Angers
401642b253
Update readme to prepare for 1.12 release
v1.12.0
2026-03-15 12:26:31 -04:00
Martin Angers
afd9326761
Merge pull request #540 from PuerkitoBio/dependabot/go_modules/golang.org/x/net-0.52.0
2026-03-15 12:25:04 -04:00
dependabot[bot]
f799f78b6e
Bump golang.org/x/net from 0.50.0 to 0.52.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.50.0 to 0.52.0.
- [Commits](https://github.com/golang/net/compare/v0.50.0...v0.52.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-version: 0.52.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-03-15 16:21:07 +00:00
Martin Angers
805d7b1d5c
Update CI to 1.25 and 1.26
2026-03-15 12:19:53 -04:00
Martin Angers
7dc7e6463b
Merge pull request #538 from PuerkitoBio/dependabot/go_modules/golang.org/x/net-0.50.0
2026-02-13 10:10:41 -05:00
dependabot[bot]
3020ebb46d
Bump golang.org/x/net from 0.49.0 to 0.50.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.49.0 to 0.50.0.
- [Commits](https://github.com/golang/net/compare/v0.49.0...v0.50.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-version: 0.50.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-02-10 05:52:35 +00:00
Martin Angers
ee4bcdb889
Merge pull request #537 from PuerkitoBio/dependabot/go_modules/golang.org/x/net-0.49.0
...
Bump golang.org/x/net from 0.48.0 to 0.49.0
2026-01-17 10:29:26 -05:00
dependabot[bot]
f3bc303dcb
Bump golang.org/x/net from 0.48.0 to 0.49.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.48.0 to 0.49.0.
- [Commits](https://github.com/golang/net/compare/v0.48.0...v0.49.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-version: 0.49.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-01-13 07:22:25 +00:00
Martin Angers
0f22828bca
Merge pull request #536 from PuerkitoBio/dependabot/go_modules/golang.org/x/net-0.48.0
...
Bump golang.org/x/net from 0.47.0 to 0.48.0
2025-12-23 09:13:59 -05:00
dependabot[bot]
68de6a15bb
Bump golang.org/x/net from 0.47.0 to 0.48.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.47.0 to 0.48.0.
- [Commits](https://github.com/golang/net/compare/v0.47.0...v0.48.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-version: 0.48.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-12-09 05:05:12 +00:00
Martin Angers
8ef6c9c294
Merge pull request #535 from PuerkitoBio/dependabot/github_actions/actions/checkout-6
...
Bump actions/checkout from 5 to 6
2025-11-21 16:01:03 -05:00
dependabot[bot]
ffba93fcef
Bump actions/checkout from 5 to 6
...
Bumps [actions/checkout](https://github.com/actions/checkout ) from 5 to 6.
- [Release notes](https://github.com/actions/checkout/releases )
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md )
- [Commits](https://github.com/actions/checkout/compare/v5...v6 )
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-11-21 05:20:57 +00:00
Martin Angers
d3e3ce5663
Merge pull request #534 from PuerkitoBio/mna-prepare-1.11
...
Update readme for 1.11 release
v1.11.0
2025-11-16 11:05:17 -05:00
Martin Angers
9841a36e8f
Update readme for 1.11 release
2025-11-16 11:04:18 -05:00
Martin Angers
469d4eab16
Merge pull request #533 from PuerkitoBio/dependabot/go_modules/golang.org/x/net-0.47.0
...
Bump golang.org/x/net from 0.43.0 to 0.47.0
2025-11-16 11:00:17 -05:00
dependabot[bot]
a03654e5c2
Bump golang.org/x/net from 0.43.0 to 0.47.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.43.0 to 0.47.0.
- [Commits](https://github.com/golang/net/compare/v0.43.0...v0.47.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-version: 0.47.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-11-16 15:58:30 +00:00
Martin Angers
faf16ca2df
Merge pull request #523 from PuerkitoBio/dependabot/github_actions/actions/checkout-5
...
Bump actions/checkout from 4 to 5
2025-11-16 10:56:22 -05:00
Martin Angers
4c1c718c62
Update test matrix to run on Go 1.24 and 1.25
2025-11-16 10:54:17 -05:00
dependabot[bot]
62bfb673c9
Bump actions/checkout from 4 to 5
...
Bumps [actions/checkout](https://github.com/actions/checkout ) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases )
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md )
- [Commits](https://github.com/actions/checkout/compare/v4...v5 )
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: '5'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-09-04 14:08:26 +00:00
Martin Angers
e3142812ec
Merge pull request #525 from PuerkitoBio/dependabot/github_actions/actions/setup-go-6
...
Bump actions/setup-go from 5 to 6
2025-09-04 10:07:26 -04:00
dependabot[bot]
0961921b55
Bump actions/setup-go from 5 to 6
...
Bumps [actions/setup-go](https://github.com/actions/setup-go ) from 5 to 6.
- [Release notes](https://github.com/actions/setup-go/releases )
- [Commits](https://github.com/actions/setup-go/compare/v5...v6 )
---
updated-dependencies:
- dependency-name: actions/setup-go
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-09-04 11:22:17 +00:00
Martin Angers
695fbfd142
Merge pull request #522 from PuerkitoBio/dependabot/go_modules/golang.org/x/net-0.43.0
...
Bump golang.org/x/net from 0.42.0 to 0.43.0
2025-08-08 11:27:15 -04:00
dependabot[bot]
91702e55ec
Bump golang.org/x/net from 0.42.0 to 0.43.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.42.0 to 0.43.0.
- [Commits](https://github.com/golang/net/compare/v0.42.0...v0.43.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-version: 0.43.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-08-08 05:10:58 +00:00
Martin Angers
37bfcfb2ff
Merge pull request #520 from PuerkitoBio/dependabot/go_modules/golang.org/x/net-0.42.0
...
Bump golang.org/x/net from 0.41.0 to 0.42.0
2025-07-11 09:55:20 -04:00
dependabot[bot]
2213b25d2b
Bump golang.org/x/net from 0.41.0 to 0.42.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.41.0 to 0.42.0.
- [Commits](https://github.com/golang/net/compare/v0.41.0...v0.42.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-version: 0.42.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-07-11 05:32:37 +00:00
Martin Angers
26759cf6df
Merge pull request #519 from PuerkitoBio/dependabot/go_modules/golang.org/x/net-0.41.0
2025-06-07 10:51:20 -04:00
dependabot[bot]
01cff33869
Bump golang.org/x/net from 0.40.0 to 0.41.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.40.0 to 0.41.0.
- [Commits](https://github.com/golang/net/compare/v0.40.0...v0.41.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-version: 0.41.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-06-06 05:24:15 +00:00
Martin Angers
250e47114e
Merge pull request #518 from apocelipes/stringsreplaceall
...
Use strings.ReplaceAll to silence golangci-lint warnings
2025-05-23 09:47:45 -04:00
apocelipes
9ec8fd3fbf
Use strings.ReplaceAll to silence golangci-lint warnings
2025-05-23 18:54:39 +08:00
Martin Angers
32ce829020
Merge pull request #517 from PuerkitoBio/dependabot/go_modules/golang.org/x/net-0.40.0
...
Bump golang.org/x/net from 0.39.0 to 0.40.0
2025-05-08 09:43:27 -04:00
dependabot[bot]
8f996d0795
Bump golang.org/x/net from 0.39.0 to 0.40.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.39.0 to 0.40.0.
- [Commits](https://github.com/golang/net/compare/v0.39.0...v0.40.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-version: 0.40.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-05-06 05:35:57 +00:00
Martin Angers
9c6a69cd4d
Prepare for v1.10.3
v1.10.3
2025-04-11 14:15:50 -04:00
Martin Angers
80f14c7111
Merge pull request #516 from PuerkitoBio/dependabot/go_modules/golang.org/x/net-0.39.0
...
Bump golang.org/x/net from 0.38.0 to 0.39.0
2025-04-10 09:48:46 -04:00
dependabot[bot]
58dcec12a0
Bump golang.org/x/net from 0.38.0 to 0.39.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.38.0 to 0.39.0.
- [Commits](https://github.com/golang/net/compare/v0.38.0...v0.39.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-version: 0.39.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-04-08 05:08:10 +00:00
Martin Angers
aadb1cdadc
Merge pull request #515 from PuerkitoBio/dependabot/go_modules/golang.org/x/net-0.38.0
...
Bump golang.org/x/net from 0.37.0 to 0.38.0
2025-03-28 12:15:05 -04:00
dependabot[bot]
9cd3cf0815
Bump golang.org/x/net from 0.37.0 to 0.38.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.37.0 to 0.38.0.
- [Commits](https://github.com/golang/net/compare/v0.37.0...v0.38.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-03-28 05:59:18 +00:00
Martin Angers
fa93633a0f
Merge pull request #514 from PuerkitoBio/dependabot/go_modules/golang.org/x/net-0.37.0
2025-03-05 21:35:54 -05:00
Martin Angers
858507ff1b
Run go mod tidy
2025-03-05 21:32:02 -05:00
dependabot[bot]
5c48549c05
Bump golang.org/x/net from 0.35.0 to 0.37.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.35.0 to 0.37.0.
- [Commits](https://github.com/golang/net/compare/v0.35.0...v0.37.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-03-06 02:27:30 +00:00
Martin Angers
c2d1a0902f
Merge pull request #512 from myxzlpltk/master
...
increase performance by migrating from bytes.Buffer to strings.Builder
2025-02-27 21:31:04 -05:00
Saddam Azy
3951e60495
increase performance by migrating from bytes.Buffer to strings.Builder
2025-02-27 08:48:50 +07:00