This Week in Programming: Gophers Dig into Generics, Go 2.0 and Gophercon 2018

1 Sep 2018 6:00am, by

This past week, nearly 2,000 gophers (that’s what you Golang types refer to yourselves as, yes?) descended upon the Mile High City for the fifth annual Gophercon, where hopefully not too many people broke out into fisticuffs over things like generics or the recently adopted vgo semantic versioning. As you might expect, the event offered some big news for the world of Golang, including the latest version of Go to be released, a sneak peak into the next big version of Go, and some talk about how the process works for determining what makes it into that next big release. So, to start off this week, we’ll take a quick look at the latest for you Golang devotees.

First up, the latest version, Go 1.11, was released just prior to the conference, which saw “many changes and improvements to the toolchain, runtime, and libraries, but two features stand out as being especially exciting: modules and WebAssembly support.”

As we discussed last week, this latest version “adds preliminary support for a new concept called “modules,” which is still “considered experimental” and is the renamed version of the aforementioned and somewhat controversial vgo. Go 1.11 also adds an experimental port to WebAssembly, which “allows programmers to compile Go programs to a binary format compatible with four major web browsers.” Surely you’ve read all about version 1.11 by now, though. But if you haven’t, there are always the release notes, as well as a feature round-up in both JAXEnter and InfoWorld that do well to sum things up.

Of course, the big highlight of Gophercon may have been the “sneak peek at preliminary drafts of possible designs for changes to error handling and generics,” which you can watch Go project lead Russ Cox discuss here:

Tech blog PacktHub provides a quick read on Go 2.0, noting that Cox doesn’t seem convinced on the need for generics quite yet. In the above video, Cox says “I’ve been examining generics recently, but I don’t have in my mind a clear picture of the detailed, concrete problems that Go users need generics to solve. As a result, I can’t answer a design question like whether to support generic methods.” Cox also discusses the process for adopting new features, commenting that Go 2.0 is currently in the “identify and explain a problem” phase, which comes necessarily before proposing and discussing solutions. (Does this feel like a “don’t get too irate about anything yet, please?” to anyone else?)

Surely, we could talk about Go 2.0 at length, but there’s more to note before moving on to the rest of the news for the week! Microsoft also joined the Golang news cycle this week with its own announcement of Project Athens and GopherSource, which it says “represent an important milestone in the work that Microsoft has been doing to enable Go developers to build and run better apps and services, with support for Go in tools like Visual Studio Code and Visual Studio Team Services, as well as on our Azure cloud platform.” The open source Project Athens works to create the first proxy server for Go modules, while GopherSource is a community space for “giving feedback and reviews to Go, making official Go proposals and implementing them, fostering a better Go community, and contributing to open source,” according to JAXEnter. And just in case you missed out…

This Week in Programming

  • GitHub Introduces a Well-Meaning, but Possibly Poorly Named “Project Paper Cuts”: I don’t know about you, but when I think of paper cuts, I cringe. Well, that’s the name of GitHub’s latest endeavor, Project Paper Cuts, which purports to address “the usability nitpicks that bother you daily but might not be a part of our bigger product initiatives.” I get it. Paper cuts are small. These problems are small. But the saying “death by a thousand cuts” (or paper cuts, if you prefer) refers, usually, to the “failure that occurs as a result of many small problems.” Oh well, I guess we’re flipping this one on its head and talking about applying some liquid bandaid to these paper cuts? Yeah, let’s go with that. So anyways, Project Paper Cuts “is dedicated to working directly with the community to fix small to medium-sized workflow problems, iterate on UI/UX, and find other ways to make the quick improvements that matter most” by listening more carefully and “looking at the wider GitHub community’s creation of self-organized “feature request” repositories and browser extensions, as well as actively asking for feedback.” My own issues with the name aside, this sounds like a great step forward.
  • GitHub Adds Checks and Statuses to GitHub for Visual Studio: Also in the world of GitHub, a quick update on GitHub for Visual Studio, which now supports checks and statuses in pull requests. According to the announcement, checks and statuses help to determine if the conditions set for a repository are met and their addition will allow for every commit to show a status of pending, passing, or failing for each check, and provides the “necessary information to review and merge pull requests” and “takes us one step closer to building out a complete pull request workflow.”
  • Platform Risk, Lock-in, and Caring: A few reads of note this week on such topics as platform risk, lock-in, and whether or not these companies even care about things like APIs and the developers/users who rely on them. First up, ProgrammableWeb writes that 23andMe will shutter its public API, giving developers two weeks notice and following in the footsteps of so many other companies that seem to drop their developers on a dime. The API has been around for six years and “was intended to give developers the ability to build apps and tools that took advantage of the company’s genetic data sets.” Unfortunately, 23AndMe told its developers that it plans to “focus on apps that build on the interpretations and results we provide to our customers” and that’s that. Meanwhile, another story on the site looks at two developers and their call to challenge Google Maps pricing. Google Maps, they say, is “objectively the best product on its market” but the product’s “recent radical price increase puts the cost way higher than alternatives.” In the end, it’s stories like these, and further recent headlines from Twitter yet again shutting down APIs that have to make one wonder — as API Evangelist Kin Lane muses — whether or not companies are interested in the interoperability that APIs bring. Spoiler alert, they’re not.
  • Babel 7 Now Supports TypeScript: That’s right, Microsoft announced this week that TypeScript and Babel 7 are now in cahoots. Apparently “a common theme among Babel users was that trying to get TypeScript set up was just too hard” so now Microsoft has worked with the Babel team to make is easy peasy. For the unfamiliar, Babel transforms the latest JavaScript features to older runtimes and browsers, but, as Microsoft points out, “doesn’t do type-checking, which our team believes can bring that experience to another level.” And while TypeScript can do both of these things, they write, “we wanted to make it easier to get that experience without forcing users to switch from Babel.” Thus, the newfound support. For those of you looking to use this combo, make sure to read further, as “the first thing users should be aware of is that Babel won’t perform type-checking on TypeScript code; it will only be transforming your code, and it will compile regardless of whether type errors are present.”
  • Looking Forward to JavaScript 2018: Finally, one from our own pages, Mary Branscombe looks at what’s coming up in JavaScript 2018, writing that “the latest annual ECMAScript update, published in June 2018, is the largest yearly release so far.” According to the Brandscombe, “the two biggest developer features in this release are async generators and some long-awaited improvements to regular expressions, along with rest/spread properties,” but the article offers several further details.

A newsletter digest of the week’s most important stories & analyses.