What's new in the World of Golang? 26.2.2018 - devconf.cz Vincent Batts Developer @vbatts vbatts@redhat.com https://github.com/vbatts/talks * howdy $> whoami vbatts $> id -Gn vbatts devel openshift docker golang slackware ruby farts etc * Golang .image 74f836db7e03776d5592cfd0943480ec12fc6b68.png _ 300 .caption [[https://gopherize.me/gopher/74f836db7e03776d5592cfd0943480ec12fc6b68][gopherize.me]] * Overview - strongly typed - compiled - stylistically nice - opinionated * Release Timeles 6 month cadence - Go1.5 - 19.8.2015 - Go1.6 - 17.2.2016 - Go1.7 - 15.8.2016 - Go1.8 - 16.2.2017 - Go1.9 - 24.8.2017 - Upcoming 1.10 release [[https://github.com/golang/go/compare/go1.9...go1.10rc1][go1.9...go1.10rc1]] 2066 commits * Best release ever .image best_release.png _ 400 .caption [[https://twitter.com/search?f=tweets&vertical=default&q=best%20release%20from%3Abradfitz&src=typd][twitter.com]] * New Features since my 2015 devconf.cz "Golang: the Good, the Bad, and the Ugly" * New Features - Full compiler rewrite from C to golang (go1.5) - No cross-compile bootstrapping needed (go1.5) - Shared library support (C->go; go->go; go->C) (go1.5) - HTTP/2 support (go1.6) - “Vendor” directory feature now default (go1.6) - Static-single assignment (SSA) compiler backend (go1.7) - Reduction in binary size by 20-30% (go1.7) * New Features - `context` package now included (go1.8) - Dynamically loadable “plugins” (go1.8) - Testing helpers, safe sync.Map and monotonic time (go1.9) - Sparse files for `archive/tar` (g1.10) * Less than Ideal - package management vendoring is a beast [[https://github.com/golang/dep][github.com/golang/dep]] - RPMs [[https://github.com/gofed/gofed][github.com/gofed/gofed]] - Package guidelines ... [[https://fedoraproject.org/wiki/PackagingDrafts/Go][Fedora Go Packaging Draft]] [[https://fedorahosted.org/fpc/ticket/382][FPC #382]] * Less than Ideal - Debugging still is archaic (but hopeful!) Call to action for DWARF and elf folks to contribute. Gdb - FIPS isn’t there yet * Reasons it’s nice - FIPS is in progress! Upstream has a branch working with boringSSL We are now working to incorporate and participate in this effort - Debugger traction [[https://github.com/derekparker/delve][github.com/derekparker/delve]] We have understanding with and interest from upstream, but they are not motivated for gdb features * Reasons it’s nice - Learning and ownership of code is easier - Multi-arch and gcc-go (which is go1.8.1 as of gcc-7.2) Cross-Compiles are nice (apart from cgo understandably) - Community is diverse and vigilant And growing [[https://trends.google.com/trends/explore?date=all&q=golang&hl=en-US]] [[https://octoverse.github.com/]] - Opportunity to talk and learn [[https://gophercon.com/][GopherCon]] [[https://gophercon.is/][GopherCon.is]] [[https://gophercon.sg/][GopherCon.sg]] [[http://gothamgo.com/][GothamGo]] * Where's Red Hat? - Having an increased presence Still need to have our name present at confs Need more speakers But as far as active code development, presence and respect, we are formidable - Products are written in it e.g. OpenShift. Openstack teams are working on tooling in golang