net
net copied to clipboard
html: sync changes from std
Before golang/go@324513b (2012-01-04) std "html" and what is now "golang.org/x/net/html" were the same. Ever since then (well, since golang/go@4e0749a (2012-05-29)) the escape/unescape code that they share has been drifting apart, each receiving separate improvements.
This CL cherry-picks over all of the changes that std "html" has seen.
When applying golang/go@5b92028 (https://golang.org/cl/10172) I had to
get a touch creative. That commit inlined unescape()
into
UnescapeString()
, removing the original unescape()
. However, over
here in x/net, we have other callers of unescape()
so we can't
remove it... but duplicating it is also bad. Simply wrapping it
instead of duplicating it would repeat the first call to IndexByte()
(first as strings.IndexByte()
, then as bytes.IndexByte()
); as
minor as that preformance regression would be, I don't want anything
to go backward. So, I've pulled out an unescapeInner()
function
takes the initial i
as an argument, and both unescape()
and
UnescapeString()
call.
This is the counterpart to https://golang.org/cl/580896, and so also
includes the doc-fix for UnescapeString()
requested at
https://go-review.googlesource.com/c/go/+/580896/comment/cc8b5704_b1899241/
https://github.com/golang/go/commit/a025e1caac516c967486f4644fbe4c647100b632 :
Author: Shawn Smith <[email protected]>
Date: Wed Dec 18 10:20:25 2013 -0800
html: add tests for UnescapeString edge cases
R=golang-dev, gobot, bradfitz
CC=golang-dev
https://golang.org/cl/40810044
https://github.com/golang/go/commit/2d9a50b97f762637627436b6ed153242e43874fb :
Author: Didier Spezia <[email protected]>
Date: Fri May 8 16:38:08 2015 +0000
html: simplify and optimize escape/unescape
The html package uses some specific code to escape special characters.
Actually, the strings.Replacer can be used instead, and is much more
efficient. The converse operation is more complex but can still be
slightly optimized.
Credits to Ken Bloom ([email protected]), who first submitted a
similar patch at https://codereview.appspot.com/141930043
Added benchmarks and slightly optimized UnescapeString.
benchmark old ns/op new ns/op delta
BenchmarkEscape-4 118713 19825 -83.30%
BenchmarkEscapeNone-4 87653 3784 -95.68%
BenchmarkUnescape-4 24888 23417 -5.91%
BenchmarkUnescapeNone-4 14423 157 -98.91%
benchmark old allocs new allocs delta
BenchmarkEscape-4 9 2 -77.78%
BenchmarkEscapeNone-4 0 0 +0.00%
BenchmarkUnescape-4 2 2 +0.00%
BenchmarkUnescapeNone-4 0 0 +0.00%
benchmark old bytes new bytes delta
BenchmarkEscape-4 24800 12288 -50.45%
BenchmarkEscapeNone-4 0 0 +0.00%
BenchmarkUnescape-4 10240 10240 +0.00%
BenchmarkUnescapeNone-4 0 0 +0.00%
Fixes #8697
Change-Id: I208261ed7cbe9b3dee6317851f8c0cf15528bce4
Reviewed-on: https://go-review.googlesource.com/9808
Run-TryBot: Brad Fitzpatrick <[email protected]>
Reviewed-by: Brad Fitzpatrick <[email protected]>
TryBot-Result: Gobot Gobot <[email protected]>
https://github.com/golang/go/commit/a3c0730435a36fb5b22df35569ba6ad491a52886 :
Author: Carlos C <[email protected]>
Date: Wed Jun 17 23:51:54 2015 +0200
html: add examples to the functions
Change-Id: I129d70304ae4e4694d9217826b18b341e3834d3c
Reviewed-on: https://go-review.googlesource.com/11201
Reviewed-by: Andrew Gerrand <[email protected]>
https://github.com/golang/go/commit/5b920281558aa24a4cd422a7ecf9d651355d9936 :
Author: Ingo Oeser <[email protected]>
Date: Sat May 9 17:55:05 2015 +0200
html: speed up UnescapeString
Add benchmarks for for sparsely escaped and densely escaped strings.
Then speed up the sparse unescaping part heavily by using IndexByte and
copy to skip the parts containing no escaping very fast.
Unescaping densely escaped strings slower because of
the new function call overhead. But sparsely encoded strings are seen
more often in the utf8 enabled web.
We win part of the speed back by looking up entityName differently.
benchmark old ns/op new ns/op delta
BenchmarkEscape 31680 31396 -0.90%
BenchmarkEscapeNone 6507 6872 +5.61%
BenchmarkUnescape 36481 48298 +32.39%
BenchmarkUnescapeNone 332 325 -2.11%
BenchmarkUnescapeSparse 8836 3221 -63.55%
BenchmarkUnescapeDense 30639 32224 +5.17%
Change-Id: If606cb01897a40eefe35ba98f2ff23bb25251606
Reviewed-on: https://go-review.googlesource.com/10172
Reviewed-by: Brad Fitzpatrick <[email protected]>
Run-TryBot: Brad Fitzpatrick <[email protected]>
TryBot-Result: Gobot Gobot <[email protected]>
https://github.com/golang/go/commit/a44c4256ae958b0aacecd5fd0b0e7f1156f8bcf4 :
Author: Brad Fitzpatrick <[email protected]>
Date: Sun Apr 10 14:51:07 2016 +0000
html: fix typo in UnescapeString string docs
Fixes #15221
Change-Id: I9e927a2f604213338b4572f1a32d0247c58bdc60
Reviewed-on: https://go-review.googlesource.com/21798
Reviewed-by: Ian Lance Taylor <[email protected]>
https://github.com/golang/go/commit/6dae588a06016a67aad62e732087cb2e32cda139 :
Author: Seiji Takahashi <[email protected]>
Date: Thu Aug 3 22:08:55 2017 +0900
html: updated entity spec link
Fixes #21194
Change-Id: Iac5187335df67f90f0f47c7ef6574de147c2ac9b
Reviewed-on: https://go-review.googlesource.com/52970
Reviewed-by: Avelino <[email protected]>
Reviewed-by: Brad Fitzpatrick <[email protected]>
https://github.com/golang/go/commit/740e589bd00e330ac38e5aa146961f0d49ff1871 :
Author: Brad Fitzpatrick <[email protected]>
Date: Tue Jul 31 21:37:35 2018 +0000
html: lazily populate Unescape tables
Saves ~105KB of heap for callers who don't use html.UnescapeString.
(EscapeString is much more common).
Also saves 70KB of binary size, because now the linker can do dead
code elimination. (because #2559 is still open and global maps always
generate init code)
Fixes #26727
Updates #6853
Change-Id: I18fe9a273097e2c7e0cb7f88205cae1bb60fa89b
Reviewed-on: https://go-review.googlesource.com/127075
Run-TryBot: Brad Fitzpatrick <[email protected]>
Reviewed-by: Emmanuel Odeke <[email protected]>
Reviewed-by: Ian Lance Taylor <[email protected]>
TryBot-Result: Gobot Gobot <[email protected]>
https://github.com/golang/go/commit/4ad13555184eb0697c2e92c64c1b0bdb287ccc10 :
Author: Romain Baugue <[email protected]>
Date: Tue Apr 30 13:51:05 2019 +0200
html: add a Fuzz function
Adds a sample Fuzz test function to package html based on
https://github.com/dvyukov/go-fuzz-corpus/blob/master/stdhtml/main.go
Updates #19109
Updates #31309
Change-Id: I8c49fff8f70fc8a8813daf1abf0044752003adbb
Reviewed-on: https://go-review.googlesource.com/c/go/+/174301
Reviewed-by: Brad Fitzpatrick <[email protected]>
Run-TryBot: Brad Fitzpatrick <[email protected]>
TryBot-Result: Gobot Gobot <[email protected]>
https://github.com/golang/go/commit/52c4488471ed52085a29e173226b3cbd2bf22b20 :
Author: fujimoto kyosuke <[email protected]>
Date: Sun Jan 12 06:49:19 2020 +0000
html: update URL in comment
The comment contained a link that had a file name and ID that no longer existed, so change to the URL of the corresponding part of the latest page.
Change-Id: I74e0885aabf470facc39b84035f7a83fef9c6a8e
GitHub-Last-Rev: 5681c84d9f1029449da6860c65a1d9a128296e85
GitHub-Pull-Request: golang/go#36514
Reviewed-on: https://go-review.googlesource.com/c/go/+/214181
Run-TryBot: Ian Lance Taylor <[email protected]>
TryBot-Result: Gobot Gobot <[email protected]>
Reviewed-by: Ian Lance Taylor <[email protected]>
https://github.com/golang/go/commit/d4b26382342c98a95b85140b2863bc30c48edd68 :
Author: Russ Cox <[email protected]>
Date: Fri Feb 19 18:35:10 2021 -0500
all: go fmt std cmd (but revert vendor)
Make all our package sources use Go 1.17 gofmt format
(adding //go:build lines).
Part of //go:build change (#41184).
See https://golang.org/design/draft-gobuild
Change-Id: Ia0534360e4957e58cd9a18429c39d0e32a6addb4
Reviewed-on: https://go-review.googlesource.com/c/go/+/294430
Trust: Russ Cox <[email protected]>
Run-TryBot: Russ Cox <[email protected]>
TryBot-Result: Go Bot <[email protected]>
Reviewed-by: Jason A. Donenfeld <[email protected]>
Reviewed-by: Ian Lance Taylor <[email protected]>
https://github.com/golang/go/commit/f229e7031a6efb2f23241b5da000c3b3203081d6 :
Author: Russ Cox <[email protected]>
Date: Wed Aug 25 12:48:26 2021 -0400
all: go fix -fix=buildtag std cmd (except for bootstrap deps, vendor)
When these packages are released as part of Go 1.18,
Go 1.16 will no longer be supported, so we can remove
the +build tags in these files.
Ran go fix -fix=buildtag std cmd and then reverted the bootstrapDirs
as defined in src/cmd/dist/buildtool.go, which need to continue
to build with Go 1.4 for now.
Also reverted src/vendor and src/cmd/vendor, which will need
to be updated in their own repos first.
Manual changes in runtime/pprof/mprof_test.go to adjust line numbers.
For #41184.
Change-Id: Ic0f93f7091295b6abc76ed5cd6e6746e1280861e
Reviewed-on: https://go-review.googlesource.com/c/go/+/344955
Trust: Russ Cox <[email protected]>
Run-TryBot: Russ Cox <[email protected]>
TryBot-Result: Go Bot <[email protected]>
Reviewed-by: Bryan C. Mills <[email protected]>
https://github.com/golang/go/commit/200a01ff5589e2b8eb8cebeb4dcf6469aceaab27 :
Author: Tobias Klauser <[email protected]>
Date: Wed May 10 17:08:59 2023 +0200
html: convert fuzz test to native Go fuzzing
Convert the existing gofuzz based fuzz test to a testing.F based fuzz
test.
Change-Id: Ieae69ba7fb17bd54d95c7bb2f4ed04c323c9f15f
Reviewed-on: https://go-review.googlesource.com/c/go/+/494195
TryBot-Result: Gopher Robot <[email protected]>
Reviewed-by: Ian Lance Taylor <[email protected]>
Reviewed-by: Cherry Mui <[email protected]>
Auto-Submit: Tobias Klauser <[email protected]>
Run-TryBot: Tobias Klauser <[email protected]>
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).
View this failed invocation of the CLA check for more information.
For the most up to date status, view the checks section at the bottom of the pull request.
This PR (HEAD: 51307fd87bd297c8ec92d3c5a276a2497791d817) has been imported to Gerrit for code review.
Please visit Gerrit at https://go-review.googlesource.com/c/net/+/580855.
Important tips:
- Don't comment on this PR. All discussion takes place in Gerrit.
- You need a Gmail or other Google account to log in to Gerrit.
- To change your code in response to feedback:
- Push a new commit to the branch used by your GitHub PR.
- A new "patch set" will then appear in Gerrit.
- Respond to each comment by marking as Done in Gerrit if implemented as suggested. You can alternatively write a reply.
- Critical: you must click the blue Reply button near the top to publish your Gerrit responses.
- Multiple commits in the PR will be squashed by GerritBot.
- The title and description of the GitHub PR are used to construct the final commit message.
- Edit these as needed via the GitHub web interface (not via Gerrit or git).
- You should word wrap the PR description at ~76 characters unless you need longer lines (e.g., for tables or URLs).
- See the Sending a change via GitHub and Reviews sections of the Contribution Guide as well as the FAQ for details.
Message from Gopher Robot:
Patch Set 1:
(1 comment)
Please don’t reply on this GitHub thread. Visit golang.org/cl/580855. After addressing review feedback, remember to publish your drafts!
Message from Luke Shumaker:
Patch Set 3:
(2 comments)
Please don’t reply on this GitHub thread. Visit golang.org/cl/580855. After addressing review feedback, remember to publish your drafts!
Message from Luke Shumaker:
Patch Set 3:
(1 comment)
Please don’t reply on this GitHub thread. Visit golang.org/cl/580855. After addressing review feedback, remember to publish your drafts!
This PR (HEAD: 3a376ddfe4df3425b499db1360b72dfc82e22b52) has been imported to Gerrit for code review.
Please visit Gerrit at https://go-review.googlesource.com/c/net/+/580855.
Important tips:
- Don't comment on this PR. All discussion takes place in Gerrit.
- You need a Gmail or other Google account to log in to Gerrit.
- To change your code in response to feedback:
- Push a new commit to the branch used by your GitHub PR.
- A new "patch set" will then appear in Gerrit.
- Respond to each comment by marking as Done in Gerrit if implemented as suggested. You can alternatively write a reply.
- Critical: you must click the blue Reply button near the top to publish your Gerrit responses.
- Multiple commits in the PR will be squashed by GerritBot.
- The title and description of the GitHub PR are used to construct the final commit message.
- Edit these as needed via the GitHub web interface (not via Gerrit or git).
- You should word wrap the PR description at ~76 characters unless you need longer lines (e.g., for tables or URLs).
- See the Sending a change via GitHub and Reviews sections of the Contribution Guide as well as the FAQ for details.
Message from Damien Neil:
Patch Set 5:
(1 comment)
Please don’t reply on this GitHub thread. Visit golang.org/cl/580855. After addressing review feedback, remember to publish your drafts!
Message from Luke Shumaker:
Patch Set 5:
(1 comment)
Please don’t reply on this GitHub thread. Visit golang.org/cl/580855. After addressing review feedback, remember to publish your drafts!
Message from Damien Neil:
Patch Set 5:
(2 comments)
Please don’t reply on this GitHub thread. Visit golang.org/cl/580855. After addressing review feedback, remember to publish your drafts!
Message from Luke T. Shumaker:
Patch Set 5:
(1 comment)
Please don’t reply on this GitHub thread. Visit golang.org/cl/580855. After addressing review feedback, remember to publish your drafts!
This PR (HEAD: 757e15b55af96abc6cec0b4781f39d4a379feac0) has been imported to Gerrit for code review.
Please visit Gerrit at https://go-review.googlesource.com/c/net/+/580855.
Important tips:
- Don't comment on this PR. All discussion takes place in Gerrit.
- You need a Gmail or other Google account to log in to Gerrit.
- To change your code in response to feedback:
- Push a new commit to the branch used by your GitHub PR.
- A new "patch set" will then appear in Gerrit.
- Respond to each comment by marking as Done in Gerrit if implemented as suggested. You can alternatively write a reply.
- Critical: you must click the blue Reply button near the top to publish your Gerrit responses.
- Multiple commits in the PR will be squashed by GerritBot.
- The title and description of the GitHub PR are used to construct the final commit message.
- Edit these as needed via the GitHub web interface (not via Gerrit or git).
- You should word wrap the PR description at ~76 characters unless you need longer lines (e.g., for tables or URLs).
- See the Sending a change via GitHub and Reviews sections of the Contribution Guide as well as the FAQ for details.
Message from Luke T. Shumaker:
Patch Set 6:
(2 comments)
Please don’t reply on this GitHub thread. Visit golang.org/cl/580855. After addressing review feedback, remember to publish your drafts!