{"id":7959,"date":"2018-04-29T21:32:39","date_gmt":"2018-04-30T01:32:39","guid":{"rendered":"http:\/\/esr.ibiblio.org\/?p=7959"},"modified":"2018-05-01T03:53:26","modified_gmt":"2018-05-01T07:53:26","slug":"flight-of-the-reposturgeon","status":"publish","type":"post","link":"http:\/\/esr.ibiblio.org\/?p=7959","title":{"rendered":"Flight of the reposturgeon!"},"content":{"rendered":"<p>I haven&#8217;t posted a reposurgeon release announcement in some time because there hasn&#8217;t been much that is very dramatic to report.  But with 3.44 in the can and <a href=\"http:\/\/www.catb.org\/esr\/reposurgeon\/\">shipped<\/a>, I do have an audacious goal for the next release, which may well be 4.0.<\/p>\n<p>We (I and a couple of my closest collaborators) are going to try to move the reposurgeon code to Go.<\/p>\n<p><!--more--><\/p>\n<p>I&#8217;ve been muttering about trying this for a while, because while Python is an excellent tool for a lot of things, speedy it is not.  This is particular pain in the ass on really large repository moves; I&#8217;m still trying to get GCC over to git and am severely hampered by test cycles that take a minimum of nine hours or so.<\/p>\n<p>Yes, I said nine <em>hours,<\/em> and that&#8217;s on the Great Beast&#8217;s semi-custom hardware specifically designed for the workload. I think there&#8217;s a realistic prospect that a Go implementation could cut an order of magnitude off that.<\/p>\n<p>Still, until a couple days ago my speculations were more wishes than plans.  We&#8217;re talking 14KLOC of algorithmically dense Python, some of which came in from <a href=\"http:\/\/esr.ibiblio.org\/?p=6971\">cometary contributors<\/a> and I don&#8217;t necessarily understand very well myself.  The labor load of hand translation &#8211; and worse, the expected defect rate &#8211; made the project impractical.<\/p>\n<p>What changed everything is that Google has the same problem I do on a much larger scale &#8211; that is, piles and piles of underperforming Python needing to be moved to a language with compiled speed.  Thus, the Go language (of which I am already a fan) and now&#8230;<a href=\"https:\/\/github.com\/google\/grumpy\">grumpy.<\/a><\/p>\n<p>Yes, it&#8217;s a Python to Go source-code translator.  It&#8217;s hedged around with warnings about a few unsupported features and many missing pieces of the Python standard libraries. Still&#8230;I think it&#8217;s a realistic path forward.  If I have to write some of the missing library support myself, that&#8217;s not a big deal compared to moving a much larger block of deeply interwingled code by hand.<\/p>\n<p>And if I end up improving the translator, where&#8217;s the downside?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I haven&#8217;t posted a reposurgeon release announcement in some time because there hasn&#8217;t been much that is very dramatic to report. But with 3.44 in the can and shipped, I do have an audacious goal for the next release, which may well be 4.0. We (I and a couple of my closest collaborators) are going&hellip; <a class=\"more-link\" href=\"http:\/\/esr.ibiblio.org\/?p=7959\">Continue reading <span class=\"screen-reader-text\">Flight of the reposturgeon!<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[33],"class_list":["post-7959","post","type-post","status-publish","format-standard","hentry","category-general","tag-reposurgeon","entry"],"_links":{"self":[{"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=\/wp\/v2\/posts\/7959","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7959"}],"version-history":[{"count":4,"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=\/wp\/v2\/posts\/7959\/revisions"}],"predecessor-version":[{"id":7965,"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=\/wp\/v2\/posts\/7959\/revisions\/7965"}],"wp:attachment":[{"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7959"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7959"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7959"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}