This Week in Programming: Rust Rejiggers Internal Ownership of Its Standard Library
Like many programming languages, Rust consists of a core specification, a standard library, a compiler, and the documentation. And as you might expect, the skills and focus necessary for building each of these things differ, so there are usually different teams dedicated to each task. This week, the Rust team has taken a look at precisely that — the distinction between standard library and compiler in the ownership of the standard library implementation — and how those teams are defined according to their duties and their ownership.
Moving ahead, they write, the standard library team (Libs) is going to own “just the public API,” while the compiler team will own its implementation. “It’s a lot like the existing relationship between the Lang and Compiler teams, where the Lang team owns the Rust language design and the Compiler team owns the code that implements it,” they write. The idea here, they say, is that, as a codebase, “the standard library is paradoxically specialized. It has privileged access to compiler internals, deep domain knowledge baked into algorithms (have you ever wondered what it takes to efficiently format a float as text for instance?), platform-specific integration, and a lot of tricky unsafe code.”
So, why the reorganization?
They say that the Libs team “traditionally selects members who like to design APIs” and that their current activity scope “leaves little room for development of the standard library itself, which takes a lot of consistent and dedicated attention.” Meanwhile, “the Compiler team is used to giving consistent and dedicated attention to big projects. The standard library is exactly the kind of codebase the Compiler team already has years of experience working on.”
Currently, the entire thing is just a trial reorganization, and they plan to reassess later this year, but we look forward to the insightful blog post that again looks at the hows and whys behind creating what has year after year been one of the most beloved programming languages out there… despite its difficulty and steep learning curve.
Apple switching their processors to ARM is a pretty big RISC
— Aaron Patterson (@tenderlove) June 29, 2020
This Week in Programming
- Amazon CodeGuru Finds Costly Code, Now GA: It’s been a year since Amazon introduced its CodeGuru tool in preview, and now the company has said the tool is ready for production and generally available. In the time between, Amazon writes, the tool has seen many improvements, including a more cost-effective pricing model, support for Bitbucket repositories, and the ability to start the profiling agent using a command-line switch. Powered by machine learning, the tool works to improve applications with automated code reviews and performance recommendations based on runtime data, and with this release has been split into two separate bits: CodeGuru Reviewer and CodeGuru Profiler. The Reviewer uses machine learning to detect potential defects and make recommendations for fixes, all during the development process, while the Profiler again uses machine learning, but this time to identify the most expensive lines of code, in terms of CPU usage or introduced latency, by helping developers understand the runtime behavior of their applications. Currently, the tools support applications written in Java virtual machine (JVM) languages such as Java, Scala, Kotlin, Groovy, Jython, JRuby, and Clojure. This release also introduces support for Github Enterprise, anomaly detection, Lambda function support, code coloring, CloudWatch metrics and alerts, and more.
- GitHub Consolidates Its Docs: GitHub has said that it is launching docs.github.com, a single home for all of GitHub’s product documentation to replease the two sites previously used for product documentation for both users and integrators. The new site, they write, combines the product content that was on help.github.com and developer.github.com into a unified experience, making it so you can search across all of GitHub’s docs in one place. Looking ahead, they plan to have language support for all of their product documentation, including content for integrators, with current languages including Japanese, Simplified Chinese, Brazilian Portuguese, and Spanish.
- A TypeScript 4.0 Beta Appears! It’s been a month since TypeScript 3.9 was released and already Microsoft has announced TypeScript 4.0 Beta, the language’s “next major milestone.” According to the release, the new major version introduces “no substantially larger breaking changes than usual,” following the philosophy of providing “an upgrade path that minimizes disruptive breaking changes while still giving ourselves some flexibility to flag suspicious code as errors when appropriate.” In terms of new features, the TypeScript 4.0 Beta includes variadic tuple types, labeled tuple elements, class property inference from constructors, short-circuiting assignment operators, custom JSX factories, and more. The first release candidate is slated for August 4, with the final release scheduled for August 18.
- Pylance Offers Feature-Rich Language Support for Visual Studio Code: Not to be confused with the OTHER Microsoft-authored Python extension for Visual Studio Code, Pylance was released this week and actually builds on top of the core Python extension. More specifically, Pylance is a new language server for Python that uses the Language Server Protocol to communicate with VS Code. More generally, Pylance “supercharges your Python IntelliSense experience with rich type information, helping you write better code, faster.” The team says it offers better performance as well as a number of new features, such as “a collection of type stubs for popular modules to provide fast and accurate autocompletion and type checking.” Side note, the team notes that the name is a “nod to Monty Python’s Lancelot, who is the first knight to answer the bridgekeeper’s questions in the Holy Grail.” Oh, and while we’re on the topic of Visual Studio Code, WhiteSource also launched a Microsoft Visual Studio integration this week, giving developers visibility and security alerts on problematic open source components while they develop.
That shouldn’t be controversial!
Behind every “10x engineer”, there are nine folks working on docs, tests, tooling, scaling, … to empower the whole team to go fast.
My most notable team contributions weren’t code, but removing roadblocks for others so they could ship faster. https://t.co/Sc6hRyfh9t
— Jérôme Petazzoni (@jpetazzo) June 30, 2020
- Microsoft Intros Porting Assistant for .NET Core: Moving forward, Microsoft has said it will only update .NET 4.8 with bug, reliability and security updates, as the focus has moved on to .NET Core. This week, the company announced the Porting Assistant for .NET, a tool to help analyze and port .NET Framework applications to .NET Core running on Linux, covering both the application source code and the full tree of public API and NuGet package dependencies. For the curious, the data models behind the engine, which Microsoft says are the result of analyzing hundreds of thousands of unique packages with millions of package versions, are available on GitHub, and more details are available in a user guide.
- Microsoft’s Dapr Gets Azure Function Extension: Microsoft first released its Distributed Application Runtime (Dapr) last year, and now it has introduced an Azure Functions extension for Dapr, with Azure Functions providing an event-driven programming model while Dapr provides a set of cloud-native building blocks. The extension brings these two things together, enabling serverless and event-driven apps that can use the growing set of capabilities Dapr provides. The extension is open source and available on GitHub.
- Apollo Adds Apollo Explorer for GraphQL: Last up this week, Apollo has introduced the Apollo Explorer, a new tool for navigating your graph and building GraphQL queries. Rather than focusing on server developers, Apollo Explorer is built for “graph consumers — the product engineering teams that spend their days working with a production data graph.” The tool is a query builder and runner, and its operation editor is built on Monaco, which may make it seem familiar. To check it out, either head on over to demo.apollo.dev or become an Apollo Studio user.
One of the things I regret the most is not learning DOM manipulation.
Guess what is biting me now? Not knowing frameworks? Not knowing advanced stuff? NO.
— Catalin Pit (@catalinmpit) July 2, 2020
Amazon Web Services is a sponsor of The New Stack.
Feature image via Pixabay.
At this time, The New Stack does not allow comments directly on this website. We invite all readers who wish to discuss a story to visit us on Twitter or Facebook. We also welcome your news tips and feedback via email: firstname.lastname@example.org.