---
title: "Go 2, and a draft design of contracts for Go"
publication: "Go Weekly"
issue: 273
published_at: "2019-08-01"
canonical_url: "https://golangweekly.com/issues/273"
---

The latest Go development news       

#273 — August 1, 2019 

[Read on the Web](https://golangweekly.com/issues/273)   

Golang Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,e_tint:70:rgb:6cd7e5/gcw2xxqrzbk37ouo2k9d.jpg)](https://about.sourcegraph.com/go/gophercon-2019-on-the-road-to-go-2)   

[On The Road to Go 2](https://about.sourcegraph.com/go/gophercon-2019-on-the-road-to-go-2) — No video _yet_ but this is a fantastically detailed liveblog (complete with integrated slides) of Russ Cox’s talk at GopherCon 2019 that looks at how things are going with the future development of Go. _Hats off to Alan Braithwaite for doing this._ 

Russ Cox   

[A Draft Design of Contracts for Go](https://go.googlesource.com/proposal/+/master/design/go2draft-contracts.md) — Now that the `try` proposal is off the agenda, let’s move on to another idea.. _“We suggest extending the Go language to add optional type parameters to types and functions.”_ This is a step toward generics and this lengthy proposal goes into loads of detail and offers many examples. 

Ian Lance Taylor and Robert Griesemer   [![\](https://copm.s3.amazonaws.com/38baad1d.png)](https://www.jetbrains.com/go/promo/whatsnew/?utm_source=cooperpress&utm_medium=cpc&utm_campaign=goland) 

[Say Hello to GoLand 2019.2](https://www.jetbrains.com/go/promo/whatsnew/?utm_source=cooperpress&utm_medium=cpc&utm_campaign=goland) — GoLand 2019.2 boosts the debugger with function calls support, adds variety to color schemes, offers customizable Postfix Completion templates, supports Go 1.13, and makes Go Modules & dep integration smarter. Get a free 30-day trial right now. 

JetBrains sponsor   

[Why Generics?](https://blog.golang.org/why-generics) — One of the co-authors of the contracts proposal (above) also penned this much more digestible post based on a talk from Gophercon that explains what generics solve and how contracts help. 

Ian Lance Taylor   

[ff: A 'Flags-First' Package for Configuration](https://github.com/peterbourgon/ff) — Provides an opinionated way to populate a `flag.FlagSet` with configuration data from the environment via cmd line args, config file, or environment variables. This week’s release adds YAML config file support. 

Peter Bourgon  

💻 Jobs  

[Are You a Go Developer? Stream Has a Job for You](https://angel.co/company/stream/jobs/241159-backend-software-engineer-go) — Stream is looking for a talented Go developer with a passion for building scalable infrastructure. [Apply now](https://angel.co/company/stream/jobs/241159-backend-software-engineer-go). 

Stream   

[Find a Job Through Vettery](https://www.vettery.com/tech?utm_source=newsletter&utm_medium=cooper-golangweekly&utm_term=tech&utm_content=grouped&utm_campaign=ad-77582) — Vettery matches top tech talent with growing companies. Create a profile to get started. 

Vettery  

📘 Articles & Tutorials  

[My Case Against the Contracts Proposal for Go](https://ericgreer.info/post/my-case-against-go-contracts/) — And, naturally, fresh on the heels of the contracts proposal is the Anti-Contracts Proposal. The points made here are solid, so we’re out of the `try`ing pan (groan) and into the fire? 😂 

Eric Greer   

[Write Maintainable Integration Tests with Docker](https://blog.docker.com/2019/07/maintainable-integration-tests-with-docker/) — A look at work being done to make it easier to write Docker-powered integration tests in Go using [testcontainers](https://github.com/testcontainers/testcontainers-go), originally a Java library but now ported to Go too. 

Gianluca Arbezzano   

[Do You Need Golang or Kubernetes Training?](https://www.ardanlabs.com/training/?utm_source=Cooperpress%20Primary) 

Ardan Labs sponsor   

[Purescript-Native Can Now Target Go](https://discourse.purescript.org/t/purescript-native-can-now-target-golang/878) — [PureScript](https://github.com/purescript/purescript) is a Haskell-inspired, strongly typed language that usually compiles to JavaScript, but it has a [native compiler backend](https://github.com/andyarvanitis/purescript-native) that can target Go and C++11 too. 

PureScript Language Forum   

[A Guide to Secure Coding Practices with Go](https://github.com/OWASP/Go-SCP) — A free online book put together by the folks at the Open Web Application Security Project. 

OWASP   

[Mocking gRPC in Go](https://rogchap.com/2019/06/25/mocking-grpc-in-go/) 

Roger Chapman  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/v1564669843/an7beo8p6lcwtisyjl43.png)](https://github.com/jtyr/gbt)  

[Go Bullet Train (GBT): A Highly Configurable Prompt Builder for Bash and Zsh](https://github.com/jtyr/gbt) — One for you pretty command line prompt fans. 

Jiri Tyr   

[fastrand: Generate Numbers 10x Faster Than `crypto/rand`?](https://github.com/awnumar/fastrand) — Boasts both performance and extra security by using securely allocated memory via [MemGuard](https://github.com/awnumar/memguard). 

Awn   

[Ensure That Your Code Is Error-Free Before Merging](https://lp.codacy.com/code-review?utm_source=CooperPress&utm_medium=cpm&utm_campaign=CooperPress-GoSL) — Set standards on coverage, duplication, complexity, and style issues and see real-time feedback in your Git workflow. 

Codacy sponsor   

[Pion WebRTC 2.1: A Pure Go implementation of the WebRTC API](https://github.com/pion/webrtc) — The [latest version](https://github.com/pion/webrtc/releases/tag/v2.1.0) includes full TURN (Traversal Using Relay NAT) support. 

Pion   

[Gitea 1.9.0 Released](https://blog.gitea.io/2019/07/gitea-1.9.0-is-released/) — This self-hosted Git service, written in Go, has just reached version 1.9.0. It contains various security fixes that could not be backported to 1.8 — as such, updating is strongly recommended. 

Gitea   

[go-pretty: Pretty Print Tables, Lists and Text on the Terminal](https://github.com/jedib0t/go-pretty) 

Naveen Mahalingam   

[Go Rate Limiter: A Blocking 'Leaky-Bucket' Rate Limit Implementation](https://github.com/uber-go/ratelimit) — The ‘bucket’ gets refilled based upon the time elapsed between requests. 

Uber   

[go-git: An Extensible Git Implementation in Pure Go](https://github.com/src-d/go-git) — For when you want to work with git repositories using an idiomatic Go API. 

source{d}   

[Liftbridge: Lightweight, Fault-Tolerant Message Streams](https://github.com/liftbridge-io/liftbridge) — A server that implements a durable, replicated message log for [NATS](https://github.com/nats-io/gnatsd). 

Liftbridge         

Curated by [Glenn Goodrich](https://twitter.com/ruprict) and [Peter Cooper](https://twitter.com/peterc). 

[Change your email address](https://golangweekly.com/edit_subscription/*|UID|*) or[Stop getting this newsletter](https://golangweekly.com/leave/*|UID|*) 

© Cooper Press Ltd · Fairfield Enterprise Centre, Louth, LN11 0LS, United Kingdom
