From mboxrd@z Thu Jan 1 00:00:00 1970 From: Caleb Ristvedt Subject: GSoC final update Date: Tue, 29 Aug 2017 02:44:56 -0500 Message-ID: <87lgm224xz.fsf@cune.org> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:54900) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dmbCq-0002U8-UC for guix-devel@gnu.org; Tue, 29 Aug 2017 03:45:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dmbCm-0001TW-T0 for guix-devel@gnu.org; Tue, 29 Aug 2017 03:45:04 -0400 Received: from mail-io0-x243.google.com ([2607:f8b0:4001:c06::243]:38101) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dmbCm-0001St-KV for guix-devel@gnu.org; Tue, 29 Aug 2017 03:45:00 -0400 Received: by mail-io0-x243.google.com with SMTP id m40so2735204ioi.5 for ; Tue, 29 Aug 2017 00:45:00 -0700 (PDT) List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: guix-devel@gnu.org -----BEGIN PGP SIGNED MESSAGE----- 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 on. 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 globals.cc: 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 globals.cc. 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). 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. 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 became. 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 -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEEdNapMPRLm4SepVYGwWaqSV9/GJwFAlmlGwUACgkQwWaqSV9/ GJybxwf/ZYtcANxxfaeS2YQFO3IQOlz+eI5cESvlzjyeQUZ6OgBm7sRTkSg67b2S W4i3TvPKeEC/H1skFnYeh+ltlpQQo06ifgrh9ZUGNWbMeMTMq1Aqop6ZP97WQEtx xihPCkjDve45zR4BwdqR6EB162c9Q16SJ3297g4SpcMKfoAKjnIv7T49tWCd2wCm qp8Ia9D29DDYb8WAvD7ZyDo5g0fvB+qsHXpkNm5Lgic2m7XB0eRoWx/PzvtDNPzb 4z3OWN4vVvj1NZStyEgOkifuciY+Pn+W7RjcaQS0vrfkIcGFM7yZBm19nmBZAyrD sz/vNcOfauVsMx3cI1MEZ7QAHIZfpg== =GYqh -----END PGP SIGNATURE-----