[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

GSoC final update

From: Caleb Ristvedt
Subject: GSoC final update
Date: Tue, 29 Aug 2017 02:44:56 -0500

Hash: SHA256

As the official work time for GSoC draws to a close, it seems fitting to
summarize where the project is at right now. *deep breath*

What works: building hello. I tried building SBCL as well, but building
one of the dependencies caused hanging (but the same thing happened when
I tried building it with the C++ daemon). In short, for at least simple
derivations, building derivations works.

What doesn't: Way too much. RPCs aren't implemented (for testing
building I've been manually running builds from a REPL within test-env),
scheduling of multiple concurrent derivations isn't implemented, garbage
collection isn't implemented, and a lot of features even of
derivation-building aren't implemented (substitutes, offloading,
etc). call-with-container is also in a semi-broken state, though the big
issues could be fixed by going back to the way it was and bind-mounting
a store directory to collect output in (bind-mounts mess with my head
for some reason... thanks for mentioning that, Ricardo). The list goes

Maybe I should describe my experience a bit. Reading the C++ source was
extremely tedious. The only way to know what a value is at any point is
to follow the entire execution of the program up to that point. A
slightly faster heuristic is to rgrep for anything that might change
that value, and consider only those statements. This, however, is
confused by C++'s scoping rules. For example, there are 3 "settings"
variables visible in a global variable from globals.hh, a
private variable from globals.hh, and a namespace-local (I think? The
scoping rules still aren't completely clear to me) variable from As a side-note, in the future I will consider any code that
repeats four of the same names in a row when read aloud ("Settings
settings; Settings::Settings()") to be something to run far away from.

The scheme side of things was nice. The most frustrating part was not
knowing what was already implemented, especially what was implemented
but used an RPC for a low-level task. I also didn't know that a scanner
already existed (in hindsight it should have been obvious - how else
would grafts work?) and so ended up writing my own inefficient version
(though I intuitively think for some reason that it could be made fast).

<Digression> I found myself checking the guile reference quite
frequently. One time I happened upon a part describing the ECMAScript
implementation (curiosity and all that), and noticed that several times
it was mentioned how irresponsible the implementor was. That scared me
probably more than it should have. By all objective criteria, I have
failed in this project, and it frightens me to think that, nice as the
community is, I could screw up badly enough to end up a footnote
somewhere as an example of what not to be. That fear pretty much sums up
my mental state during the second half of the summer.</Digression>

In short, I've failed to achieve the goals I set out in my
proposal. Worst of all is that I failed to regularly communicate. I
specifically said that I would regularly communicate, and then I failed
to do so, especially during the second half of the summer. It seems that
the less I communicated, the more afraid of communicating I

Currently nothing has been merged - I don't think it's in a fit state to
be merged presently. I intend to continue working on this as time
allows.  School started last week, though, and it's kept me quite busy
so far.

The code so far can be found at the guile-daemon branch on Savannah.

tl;dr - I did not achieve the goals I set out to achieve. That makes me
sad. I plan on working on it more.

- - reepca



reply via email to

[Prev in Thread] Current Thread [Next in Thread]