Live data from Hacker News

Go 1.15 Released

golang.org

31–40 of 74 posts

Re: Go 1.15 Released

#31
post #24

Caddy binaries on Linux shrink by ~2.5 MB with Go 1.15! (~33 MB down to ~31 MB) 3 MB savings on Mac, and 2 MB on Windows: https://github.com/caddyserver/caddy/pull/3642#issuecomment-... So about 8-10% reduction.

I'm so confused by this. Given the context that Go primarily targets, which is daemon services running on server class machines, binary size, so long as it's not totally absurd, is almost completely irrelevant. Is it like a code golf thing? Why do you care?

You're right. But, leaner binaries are a good sign of a mature compiler & linker.

Re: Go 1.15 Released

#32

Earlier quoted context omitted.

Yes, I agree. No point on linking to the download page, most people use their package manager to update their Go installation.

I'm curious which package managers / repositories allow you to update to the latest version of go as soon as it's released * ? * In any remotely trustable and reliable way; random PPAs relying on somebody's free time don't count, IMHO. I've noticed Ubuntu, Debian, Centos, and Oracle Enterprise Linux are always trailing by quite a clip. Often years. The strategy I've been using is to just manually install it on the ma…

As one commenter pointed out, you could use a rolling release distro like Arch or Fedora Rawhide and get the latest packages within days (sometimes hours) of the official release. I run vanilla Fedora and am usually at most six months behind the last release (though the GHC package is quite behind on Fedora, IIRC).

Re: Go 1.15 Released

#33
post #24

Caddy binaries on Linux shrink by ~2.5 MB with Go 1.15! (~33 MB down to ~31 MB) 3 MB savings on Mac, and 2 MB on Windows: https://github.com/caddyserver/caddy/pull/3642#issuecomment-... So about 8-10% reduction.

I'm so confused by this. Given the context that Go primarily targets, which is daemon services running on server class machines, binary size, so long as it's not totally absurd, is almost completely irrelevant. Is it like a code golf thing? Why do you care?

You forgot that another common use for Go is command-line utilities. And there the file size can be important.

Re: Go 1.15 Released

#35

Earlier quoted context omitted.

I'm curious which package managers / repositories allow you to update to the latest version of go as soon as it's released * ? * In any remotely trustable and reliable way; random PPAs relying on somebody's free time don't count, IMHO. I've noticed Ubuntu, Debian, Centos, and Oracle Enterprise Linux are always trailing by quite a clip. Often years. The strategy I've been using is to just manually install it on the ma…

> I'm curious which package managers / repositories allow you to update to the latest version of go as soon as it's released * ? Arch Linux. I just saw the release when I was checking for updated versions of packages I maintain, and built it before users started bugging me about outdated go binaries. https://www.archlinux.org/packages/community/x86_64/go/

Alpine is very fast too.

Re: Go 1.15 Released

#36
post #16

I think the link should be changed to the 1.15 release notes (now published): https://golang.org/doc/go1.15 -- these are much more interesting and useful.

Yes, I agree. No point on linking to the download page, most people use their package manager to update their Go installation.

Or if you do not and you like official releases, you can use some of the services like https://newreleases.io to get notification and install using official installer.

Re: Go 1.15 Released

#37
Release notes -> [ https://golang.org/doc/go1.15 ] Blog post -> [ https://blog.golang.org/go1.15 ] So much good stuff in this release, COVID notwithstanding, including an extremely improved linker and smaller binaries. Definitely the best Go release ever :)

Here's some details on the changes in the corner of it that Katie and I take care of.

The long deprecated Common Name field on X.509 certificates is now ignored, reducing complexity and removing a gnarly conflict with Name constraints. Public CAs are unaffected, the only major service that broke was AWS RDS, and they've been awesome and fixed it in time for the release (but customers need to regenerate certificates). I honestly did not expect this change to make it and I am thrilled about it and what it means for keeping the Go X.509 ecosystem modern and secure. https://github.com/golang/go/issues/39568#issuecomment-67142...

crypto/tls Configs now have a spiffy VerifyConnection callback that runs for all connections (which is easier to think about than VerifyPeerCertificate) and that gets passed a ConnectionState. This was Katie's idea to make the callback have access to SCTs and stapled OCSP (which makes it possible to write verifying callbacks for those, although we are working on built-in suppport!) but I also love how it delivers the parsed certificates and makes it trivial to customize verification. https://golang.org/pkg/crypto/tls/#example_Config_verifyConn... https://golang.org/cl/229122

What I should have started with: session ticket keys and session tickets are now rotated automatically without any impact on the application :sparkles:, greatly mitigating the main weak link in the forward security chain of TLS 1.2. :happydance: This is a. big. deal. https://blog.filippo.io/we-need-to-talk-about-session-ticket... https://golang.org/cl/231317 https://golang.org/cl/230679

Besides deprecating Common Name, X.509 verification also now has a consistent story on how to handle invalid hostnames: they are matched case-insensitively 1:1 to certificate fields without wildcard or trailing dot processing. There is no spec that says what to do with them, so we had to come with a policy that is predictable, doesn't break applications, but can be implemented securely. It was amazingly difficult. https://golang.org/cl/231378 https://golang.org/cl/231380 https://golang.org/cl/231381

crypto/ecdsa now has SignASN1 and VerifyASN1 functions that do what Sign and Verify should have done all along and operate on byte slices instead of big.Ints. https://golang.org/cl/217940

There is now a function to make RFC 5280-compliant X.509 v2 Certificate Revocation Lists. https://golang.org/cl/217298

Public and private key types now have an Equal method that works with go-cmp, and lets you make your own non-empty PublicKey interface. https://golang.org/cl/231417

crypto/elliptic now has functions to marshal and unmarshal compressed elliptic curve points. Too many people had to implement this one! https://golang.org/cl/202819

math/big.Int now has a method that makes me extremely happy. FillBytes takes a fixed size buffer and puts the value in it, which is both more performant, and saves annoying padding steps in most crypto applications. If you ever had a bug that only happened 1/256 of the times because you were not adding the padding zero at the beginning if the value happened to be small, this is for you. You know who you are, remember that the support group this week meets on Wednesday not Thursday. https://golang.org/cl/230397

Finally, Cthulhu. On macOS we now use the system root store even if there's no cgo, by calling straight into Security.framework with... there's assembly involved, that is all. This code is my nemesis, so it was all worth it. https://golang.org/cl/227037

And more! Check out the release notes. I also plan to write in details about the changes on my newsletter, like I did for Go 1.14.

https://buttondown.email/cryptography-dispatches?tag=hn

Re: Go 1.15 Released

#38

Release notes -> [ https://golang.org/doc/go1.15 ] Blog post -> [ https://blog.golang.org/go1.15 ] So much good stuff in this release, COVID notwithstanding, including an extremely improved linker and smaller binaries. Definitely the best Go release ever :) Here's some details on the changes in the corner of it that Katie and I take care of. The long deprecated Common Name field on X.509 certificates is now ignored,…

> On macOS we now use the system root store even if there's no cgo, by calling straight into Security.framework with... there's assembly involved, that is all.

I feel like I’m developing an addiction to hacks like this. Ever since I started to gain a more intuitive understanding of calling conventions and C/++ ABI I’ve been doing asm calls into MSVC functions and manually laying out COM vtables in pure Go. It’s powerful as long as you have reasonable assurances the ABI rug won’t be pulled from under you!

Re: Go 1.15 Released

#39
post #26

"There are no changes to the language." Rob Pike is the ultimate troll.

What do you mean? Go has been known for its philosophy of “Boring is Good”. Lots of releases these days come with either no changes to the language or some very minor ones.

> Boring is good.

Until you reach channels and realize that mantra apparently went out the window at some point.

Re: Go 1.15 Released

#40
post #24

Caddy binaries on Linux shrink by ~2.5 MB with Go 1.15! (~33 MB down to ~31 MB) 3 MB savings on Mac, and 2 MB on Windows: https://github.com/caddyserver/caddy/pull/3642#issuecomment-... So about 8-10% reduction.

I'm so confused by this. Given the context that Go primarily targets, which is daemon services running on server class machines, binary size, so long as it's not totally absurd, is almost completely irrelevant. Is it like a code golf thing? Why do you care?

These days, server-class machines are often ephemeral and spun up-and-down based on demand. At work, I operate services that have 2 GB of Java code packages, and others that use a single 10 MB Go binary. Guess which one can scale up much more quickly to handle increased demand?
Post reply on HN