Skip to content

Latest commit

 

History

History
54 lines (40 loc) · 2.25 KB

File metadata and controls

54 lines (40 loc) · 2.25 KB

Golang Origins

A timeline of events

The Go 1 release marked an important milestone, which is codified in Go 1 and the Future of Go Programs:

Go 1 defines two things: first, the specification of the language; and second, the specification of a set of core APIs, the "standard packages" of the Go library. The Go 1 release includes their implementation in the form of two compiler suites (gc and gccgo), and the core libraries themselves.

It is intended that programs written to the Go 1 specification will continue to compile and run correctly, unchanged, over the lifetime of that specification.

In Spring 2016, Brad Fitzgerald gave a talk: Go 1.6: Asymptotically approaching boring (slides).

Go has releases approximately every six months (seems attractive to others, too).

Rationale: Stable foundation - to build stuff on top.

  • Language (ref/spec)
  • Standard Library (pkg)
  • Runtime (GC, scheduler, and other pieces under active development)
  • Tools (go, godoc, go vet, gofmt, goimports, ... under active development)
  • Ecosystem (external packages, conferences, user groups, and much more)

The current release is Go 1.11 from 24 August 2018.

Origins

A multitude of ideas and influences:

  • C++ might be slow to compile and bloated
  • all programming languages seem to add and add features
  • we are entered the multicore era
  • design for a networked world
  • bridge the gap between dynamic and static programming languages (be safe, yet ease to write)
  • focus on long-term maintenance
  • designed with tools in mind (gofmt being the prototypical tool)
  • a different approach to concurrency
  • a stripped version of object orientation

The original designers are Robert Griesemer, Rob Pike, Ken Thomson.