Well, well, well, here we are, we arrived in the last days of 2021 with nasal swabs sticking out of our noses, Zoom’s fatigue having turned into something more Zoom-existential-like- dread, and hopefully a method or two in place to prevent the eternal end roll that we’ve perfected in 2020. We made big plans, changed big plans, reflected on how exhausted we really were. , then we were told later that, don’t worry, we were back to pre-pandemic productivity levels.
It’s been a year, hasn’t it?
Each week I sit down and select what I think is the most interesting, important and interesting news, as well as topics that seem to be at the end of all languages, in the world of software development. (and its fields) and compile them in the This week column in this week’s programming. While the topics can vary greatly from week to week, some stories stick with us and are visited over and over again.
All of this to say that there have been, in my humble opinion, a few landmark stories from the past year, and I’m here to present them to you in no particular order – a brief recap and certainly not exhaustive, if you will, of some of the great stories of the past year in programming.
A decade (or more) later, Go gets generics
As we wrote in the very first weeks of 2021, the time has finally come for the Gophers to rejoice, “because the question of whether or not the Go programming language will adopt generics has finally, after many years of debate, been answered this week with the acceptance of a proposal made last month. In fact, the issue of generics has agitated the Golang community for so long that it was the very first topic we broached in this same column, and the same arguments about adding generics have been made long before and since. .
In the most recent proposal made earlier this year, Golang team member Ian Lance Taylor noted that credits have, in fact, been “one of the most requested language features” since release. language in 2009. To say that generics have been a constant subject of discussion and debate would be an understatement, and even Taylor recounted the troubled history of functionality in his latest proposal, writing that “One of the first attempts ( defective) of adding generics to Go dates back to 2010 “.
This most recent proposal, however, addressed enough issues to be accepted, and the December 2021 release of Go 1.18 Beta 1 was the first to offer access to the long-awaited feature.
As we noted in October, however, the Go team decided to put the brakes on generics a bit and not bring the feature directly into the main library. Instead, the proposed Rob pike, one of the original designers of Go, was to move the changes to the golang / x / exp repository for now, where they “can be tested in production, but can be changed, adapted, and developed for a cycle or two,” letting the whole community test them. According to a comment from Taylor, “The only public package that uses type parameters in 1.18 will be the constraint package.”
Nonetheless, the generics are indeed finally available, and there are a lot of people out there kicking the tires out and looking at when you might already want to use the new feature.
Of course, that’s not the only thing that happened in the Go realm this year – the project also quickly accepted the proposal to add fuzz to Go’s standard library, which was later released in beta in the Go development branch, dev.fuzz, in Go 1.17 – but credits were definitely the defining achievement for Go in 2021.
Rust is there to secure all the memory
2021 has been a big year for Rust, we would say.
In recent years, many headlines have been written about the difficulty of learning the language and the issues with its lack of tools, but 2021 has been more about the many advancements and developments in the popular language of open source systems.
In 2021, Rust becomes more and more synonymous with memory security and is also seen as the smart replacement for C and C ++, as well as new security-related applications. To quote a recent interview about choosing Rust, “If you want to go secure on this layer today, Rust is the language to use.” That’s it. […] If you start from scratch, which we did, you start with Rust.
But the proof is in the pudding, as they say, and it can be seen with a few important Rust adoption cases that really show the language’s maturity in the programming language landscape. For example, in 2021 Rust made serious forays into Windows and Linux.
In April, we wrote that Microsoft was going Rusty, noting the company’s new Getting Started with Rust course with the first Rust preview for Windows, which allows developers to “use any Windows API. (past, present and future) directly and transparently via the Windows checkout. Microsoft previously touted Rust as the industry’s “best chance” when it comes to secure systems programming, discussing its intention to slowly move from C / C ++ to Rust to build its infrastructure software, and this year they have started doing it.
As for Linux, the idea of the Linux kernel getting support in the tree was rather nascent in mid-2020, but by April 2021 it seemed increasingly likely that Rust was heading into the development branch. of the Linux kernel, and in December it was declared that Rust’s support was “pretty good”. Although support is “still considered experimental,” the maintainer of the Rust for Linux project, Miguel Ojeda, wrote that “the support is good enough that kernel developers can start working on Rust abstractions. for subsystems and write drivers and other modules “.
And, if you need further proof that Rust is good at this sort of thing, look no further than Amazon Web Services’ efforts with Bottlerocket, a Linux distribution for containers that is largely written in Rust.
GitHub uses all this training data (your code)
There is probably no company that we mention more in our weekly column This Week in Programming than GitHub, and this year was no exception.
One particular GitHub story, however, really stood out: the controversy surrounding GitHub Copilot, its perception of copyright infringement, and open source licensing considerations.
When GitHub first introduced Copilot in June, they revealed that it was built using the OpenAI codex and “trained over billions of lines of public code,” which many assumed included code. under the GPL virus license. The GPL license requires all derivative works to carry that same license, and accusations immediately surfaced that, at the very least, GitHub Copilot was in violation of copyright.
Unlike Intellisense, Copilot doesn’t just complete a single line of code, but rather suggests entire blocks of code, and it didn’t take long for the tool to be spotted spitting out entire chunks of code. easily identifiable. It’s not as if GitHub hasn’t thought about it, however, and GitHub CEO Nat Friedman has argued that the code most often suggested by Copilot has been transformed and is free to use, as reported. in an OpenAI article. Not only that, but, as a blog post pointed out, GitHub’s Terms of Service likely covered their use of any code they hosted to train the model. Another article argued that the easy way out of this conundrum would be for Copilot to simply offer attribution when it spits out text code.
On the other end of the spectrum, some have called on the Electronic Frontier Foundation (EFF) and the Free Software Foundation (FSF) to file class actions, and the FSF has called for papers, saying that Copilot ” as it stands is unacceptable and unfair. So far, however, no papers have been published, no actual lawsuits filed to our knowledge, or any real legal tests put to the test of GitHub’s “AI pair programmer”.
On the contrary, at least one report indicates that GitHub has seen a slight increase in the number of Copilot users, and the tool has extended its reach to IntelliJ and PyCharm versions of JetBrains 2021.2 and higher and Neovim 0.6 pre-release with Node. js, as well as the inclusion of support for multiline code completions for Java, C, C ++, and C #. And for those of you who find yourself with a bad taste in your mouth about it all, but puzzled nonetheless, there are still the many open source GitHub Copilot alternatives that you could give a whirlwind.
Overall, GitHub Copilot is just one (somewhat controversial) example of the various features that GitHub has offered since its acquisition by Microsoft – and more than 2021 – that appear to consolidate Microsoft ownership over many lifecycles of developers.