Google announced an open source project dubbed Grumpy, which is a Python to Go source code transcompiler and runtime that is intended to be a near drop in replacement for CPython 2.7. It’s as creative an application for Go, as it is a transformation of Python’s use cases.
The company’s front-end server for YouTube and its YouTube API are mainly written in Python, and run on CPython 2.7, as opposed to other implementations (Jython, PyPy, or IronPython). The project began out of a need to improve Python execution on YouTube, which runs its front end on CPython 2.7, to handle concurrent workloads well.
“Grumpy cannot leverage the wealth of existing Python C extensions, but it gave us a lot of flexibility to design an API and object representation that scales for parallel workloads,” said Dylan Trotter, a staff software engineer within YouTube Engineering at Google in a blog post. “We think Grumpy has the potential to scale more gracefully than CPython for many real-world workloads.”
According to Trotter, other Python runtimes weren’t able to solve the concurrency issue without introducing unsatisfactory trade-offs.
“So we asked ourselves a crazy question: ‘What if we were to implement an alternative runtime optimized for real-time serving?’” Trotter said. “Once we started going down the rabbit hole, Go seemed like an obvious choice of platform since its operational characteristics align well with our use case (e.g. lightweight threads). We wanted first class language interoperability and Go’s powerful runtime type reflection system made this straightforward. Python in Go felt very natural, and so Grumpy was born.
“Grumpy is an experimental Python runtime for Go. It translates Python code into Go programs, and those ‘transpiled’ programs run seamlessly within the Go runtime. We needed to support a large existing Python codebase, so it was important to have a high degree of compatibility with CPython (quirks and all). The goal is for Grumpy to be a drop-in replacement runtime for any pure-Python project,” wrote Trotter.
However, Trotter warns that even though Grumpy has been freshly released to open source, it remains alpha-grade software.
“Most of the language constructs and many core built-in types work like you’d expect [but]there are still holes to fill — many built-in types are missing methods and attributes, built-in functions are absent and the standard library is virtually empty,” he said.