This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Bulletin from the salt mines

This is a note to the GCC list that I have not given up on the
repository translation.  Having concluded that doing forensics with
9-hour test turnaround times is insupportable and that I had reached
the limit of what off-the-shelf hardware and my existing tools could
do, I am engaged in translating reposurgeon to the Go language.

I expect this to speed up my test cycles by at least an order of
magnitude. Actually, published Python-vs.-Go benchmarks for programs
with similar resource-usage distributions suggest that a speedup
factor of *40* is a realistic expectation.  That would pull my test
runs down to about 15 minutes each.

I also expect a drastic reduction in working set, eliminating the
memory pressure I was having on the later runs. Python's per-object
overhead is pretty large (for example, every Python string has a fixed
base cost of 40 bytes). Go's is perhaps a bit larger than C's due to
its type-reflection support, but not overly so.

Even though the semantic gap between Python and Go is relatively
small, translating 14KLOC of algorithmically dense Python to
*anything* else is necessarily a huge undertaking.  I did not wish to
announce the effort until I was well into it and reasonably confident
of success.

This morning the translation reached its 30% mark.  That gives me
reasonable confidence.

There is still difficulty ahead, however.  A copy-on-write store
that was central to the interpretation of Subversion dumps turned
out not to be practically implementable in a language with static
types and no iterators.

I'm going to have to rework significant parts of the Subversion dump
interpreter to get around that, and if you guessed that that is the
most opaque and dangerous part of the codebase (and the locus of the
translation bugs reported here) you got that right.

I shall persevere. The necessity was unfortunate, but one effect of
the translation is that I'm writing unit tests for each piece as I
go.  There is good reason to hope that thus will make fault isolation
easier than it was in the Python version.
		<a href="";>Eric S. Raymond</a>

Gun Control: The theory that a woman found dead in an alley, raped and
strangled with her panty hose, is somehow morally superior to a
woman explaining to police how her attacker got that fatal bullet wound.
	-- L. Neil Smith

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]