|author||Dmitri Shuralyov <email@example.com>||Sat Dec 19 20:17:44 2020 -0500|
|committer||Dmitri Shuralyov <firstname.lastname@example.org>||Mon Dec 21 02:59:56 2020 +0000|
shiny/iconvg: make SetEllipticalGradient math deterministic Add explicit rounding in Encoder.SetEllipticalGradient to disable fused operations. This allows the TestEncodeElliptical case to pass on GOARCH=arm64. Otherwise, fused multiply-sub instructions are used on GOARCH=arm64 (but not GOARCH=amd64), which results in a slightly different real value being computed for a "Set NREG" instruction (with a tiny delta of 7.450581e-09), and then encoded into non-identical bytes: ac Set NREG[NSEL-4] to a real number -00 0 +03 00 00 b2 -7.450581e-09 Document the IconVG design decision that the encoder aims to produce byte-identical output on all supported platforms per suggestion in golang.org/issue/43219#issuecomment-748531069. This should make it clear for the future—if another similar problem is detected—that the encoder implementation should be fixed (rather than relaxing Encode tests to allow for non-deterministic encoding). It also allows package users to be aware that the encoder is platform-agnostic and not have to take additional measures themselves. (If this proves to be truly unsustainable to maintain, it is still viable to remove it given the "SUBJECT TO INCOMPATIBLE CHANGES" clause.) Rename TestRasterizer to TestDecodeAndRasterize since it tests both decoding and rasterizing. There isn't another test that tests only the Decode function. Fix some broken links to the material-design-icons repository. Fixes golang/go#43219. Updates golang/go#11811. Change-Id: I5cf15541a4648e408c9c61689041c678c14441bf Reviewed-on: https://go-review.googlesource.com/c/exp/+/279294 Run-TryBot: Dmitri Shuralyov <email@example.com> TryBot-Result: Go Bot <firstname.lastname@example.org> Trust: Dmitri Shuralyov <email@example.com> Trust: Nigel Tao <firstname.lastname@example.org> Reviewed-by: Nigel Tao <email@example.com>
This subrepository holds experimental and deprecated (in the
old directory) packages.
The idea for this subrepository originated as the
pkg/exp directory of the main repository, but its presence there made it unavailable to users of the binary downloads of the Go installation. The subrepository has therefore been created to make it possible to
go get these packages.
Warning: Packages here are experimental and unreliable. Some may one day be promoted to the main repository or other subrepository, or they may be modified arbitrarily or even disappear altogether.
In short, code in this subrepository is not subject to the Go 1 compatibility promise. (No subrepo is, but the promise is even more likely to be violated by go.exp than the others.)