Notes on the Go translation of Reposurgeon
This is an experience report on a Python-to-Go translation of a program with significant complexity, written in attempted conformance with the Go community’s practice for grounding language enhancement requests not in it-would-be-nice-to-have abstractions but rather in a description of real-world problems. Reposurgeon is a program for editing version-control histories and interconverting them among version-control systems. I spent much of 2019 moving the reposurgeon codebase from Python to Go because the Python implementation was too slow to be useful on on really large repositories. The workflow it is designed to support is rapid iterative improvement of conversion recipes by a human operator; long test cycles disrupt this by making experimentation painful. Subversion-to-git conversion of the Gnu Compiler Collection history, at over 280K commits (over 1.6M individual change actions), was the straw that broke the camel’s back. Using PyPy with every optimization on semi-custom hardware
GoNotes.adoc · 1bfa90ff8c8c7ae7e409e2de9e5f24da57e364f2 · Eric S. Raymond / reposurgeon · GitLab Loading
Explore this link on the map →related reading
- Rewriting Bun in Rust | Bun Blogbun.com
- Why Turborepo is migrating from Go to Rust - Vercelvercel.com
- Four Days of Go – Evan Millerevanmiller.org
- Stevey's Google Platforms Rant · GitHubgist.github.com
- GitHub - fatih/vim-go: Go development plugin for Vim · GitHubgithub.com
- Reddit - Please wait for verificationreddit.com
- CodeReviewComments · golang/go Wiki · GitHubgithub.com
- llm-wiki · GitHubgist.github.com
- Frequently Asked Questions (FAQ) - The Go Programming Languagego.dev
- Go at Google: Language Design in the Service of Software Engineering - The Go Programming Languagego.dev
- Go | CodeCraftersapp.codecrafters.io
- From hand-tuned Go to self-optimizing code: Building BitsEvolve | Datadogdatadoghq.com