From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1 ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id NWTJNKPVImHCEwEAgWs5BA (envelope-from ) for ; Mon, 23 Aug 2021 00:54:27 +0200 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1 with LMTPS id 8HPVL6PVImG+LQAAbx9fmQ (envelope-from ) for ; Sun, 22 Aug 2021 22:54:27 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 7D44924FC6 for ; Mon, 23 Aug 2021 00:54:27 +0200 (CEST) Received: from localhost ([::1]:46476 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mHwME-0002Mr-JM for larch@yhetil.org; Sun, 22 Aug 2021 18:54:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35586) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mHwM5-0002Mj-Io for guix-devel@gnu.org; Sun, 22 Aug 2021 18:54:17 -0400 Received: from mail-qk1-x736.google.com ([2607:f8b0:4864:20::736]:44765) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mHwM3-0002Xu-KS for guix-devel@gnu.org; Sun, 22 Aug 2021 18:54:17 -0400 Received: by mail-qk1-x736.google.com with SMTP id c10so14842932qko.11 for ; Sun, 22 Aug 2021 15:54:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=philipmcgrath.com; s=google; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-language:content-transfer-encoding; bh=XoI+t3W/zA7aBUF/9FuUBCuUvBfkmw/JGgVXyV0YK0o=; b=blNX+Ah+HyeP/16hrlH1A4EIwmj3Tm+5y1fMiVq2FYM5QqhyDFQvT8rH4C1glFE0It IZu13MafTR2r/36xCcFVo+5WXsiahCJ5egea+fEq2EtjVGPPkNB9BskCMwxUdtFKmIQZ m4oara/2EVKlSuRGc9Fiv+0mYQc2Iz5e2iiJBYLkLuPTRXB4l2HP55enURDMsLqztbcd yPtEBUfPSCpT1IszceQfJZLw2rBCD8rQGa/MKwsfR0HoeAIisIjlG2f2y0CWH4vah+gP VsXwSEKqFKv6IGWfdOrxn0NCw4Y/Jm/6Axh7KIZ9Wevf5PN4SkImyS+bvn/t8F6pS7tm 1SvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=XoI+t3W/zA7aBUF/9FuUBCuUvBfkmw/JGgVXyV0YK0o=; b=RiNEJxA7/IHZ2y/fLAWUlklLjxvifP0cVaaKLd5pdYQ6k1HrAFv/dtv/U5A/E+i9zw DSdcUuEhH4vY8xMoXl8gRE9JJ40q553X4sMCmqvTkfeDCZ3SQ3P2IYhq94SxnykZyH54 z3UOVW7Tt3f+lMtY/+OKTU24Nm6voxzasPEwJEbSLDSBo6pr2hAVsIG/buj03TcDO4d+ w4F7iA09MGKHBzm/lYBw7aHOuE0avGKTLECCTY0q878A4gZczmYiidZJRvS20bsxC3si gmwjFRgFopNwR63BDasWuOP5ygEGQVrmWpdmGCwcJS1oge3ILpltjolYofkcS1NMkYkX BDZQ== X-Gm-Message-State: AOAM530XGQxCBOANa9IXpKA6C/kaqb31G1KnJIlewxWJR2RM9YvmOg+m UeXxAn2qsf78ecJ5kMDeHQt/+y00jooKXcjU X-Google-Smtp-Source: ABdhPJz7CARV4QLqMvReQcuK4c1MGz/LkhiecQU2BXmvud5j7QlRYLgSliSZG9WW8vMzo9LszGjeog== X-Received: by 2002:a37:db0a:: with SMTP id e10mr18973476qki.259.1629672853680; Sun, 22 Aug 2021 15:54:13 -0700 (PDT) Received: from [192.168.45.37] (c-73-125-89-242.hsd1.fl.comcast.net. [73.125.89.242]) by smtp.gmail.com with ESMTPSA id 19sm6910344qkf.127.2021.08.22.15.54.13 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 22 Aug 2021 15:54:13 -0700 (PDT) Subject: Re: How did you handle making a GNU/Linux distribution? To: Sage Gerard , guix-devel@gnu.org References: <73f02b09-6983-7535-b71d-69ff0b0124f4@sagegerard.com> From: Philip McGrath Message-ID: <66138ed4-2725-03a9-5f09-0b8541046ed3@philipmcgrath.com> Date: Sun, 22 Aug 2021 18:54:12 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Received-SPF: neutral client-ip=2607:f8b0:4864:20::736; envelope-from=philip@philipmcgrath.com; helo=mail-qk1-x736.google.com X-Spam_score_int: -8 X-Spam_score: -0.9 X-Spam_bar: / X-Spam_report: (-0.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, NICE_REPLY_A=-0.959, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NEUTRAL=0.779, URI_DOTEDU=1.402 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: guix-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list 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+larch=yhetil.org@gnu.org Sender: "Guix-devel" X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1629672867; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post:dkim-signature; bh=XoI+t3W/zA7aBUF/9FuUBCuUvBfkmw/JGgVXyV0YK0o=; b=X6dPouhU6pIUNG1s8OswJ+blVptO00G2CRMPU9qalkWg5cwEtnFmsU9hYZm0bFEaEk6kQU yZ1cBKvFnWIUpvPxwu7MaJ8wZzJyML0SYAeeRv5W66PGe9N9ek97PjfoEUS0joxEYZTqrR NA1Fq6X2UoB+f0xCOCIhGst9SLMEgV8aFQi5wDpYQlXn6T9tXXFiy7jD7+mpzUihEO1dML e98C4tA6r3aIsosYAwU3tJICf97V7Bd3MWEF7TM/Bk8J/SZZfgYNmo9Yr/C5hYeC+NU5m7 ZaTQdxYeVcQunNvM6I+ZG7RvZV6A9R1qgLy1r8kHoTgvwzNfKPsvcDA81SzIaQ== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1629672867; a=rsa-sha256; cv=none; b=aPJfc7KDtGMgUD+vmj7VTz2vynWdh34NQQ9yzjvLGOv8TM+JeCwokYULtf3Bs56gCREJyt Cxa0oCo/9hdgyV/lnHAfkcpQPiznhOcyC4XLJ3bATkgfggScj4tyU+SWNMD8uibLgNxHHY B6desenYWwhN9qcqiwe7coyPryJCMNJqKQ2TP1GmcN96mkbkIELLefxlN+b3ppMRYHG3uo Dnd0SSCImlKtKc56HgWFONVaz9AV7FrGhOOFC+82ers8adPMHYauOmSnCFJijVkJMpfquN Xc/BQ31UfbamVbFw308bXkBEM7K28maHV3ohiF3naTdWtnBZhCo6Pd8LowL1KA== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=philipmcgrath.com header.s=google header.b=blNX+Ah+; dmarc=none; spf=pass (aspmx1.migadu.com: domain of guix-devel-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=guix-devel-bounces@gnu.org X-Migadu-Spam-Score: -1.63 Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=philipmcgrath.com header.s=google header.b=blNX+Ah+; dmarc=none; spf=pass (aspmx1.migadu.com: domain of guix-devel-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=guix-devel-bounces@gnu.org X-Migadu-Queue-Id: 7D44924FC6 X-Spam-Score: -1.63 X-Migadu-Scanner: scn0.migadu.com X-TUID: dVMsTJN4PeGT Hi Sage, On 8/22/21 5:53 PM, Sage Gerard wrote: > Thanks for the detailed answer! > > It seems wise to adapt GNU Mes towards Racket or Chez Scheme instead of > Guile to bring GNU's benefits to more Scheme and Racket programmers. Has > someone already tried something like that? I haven't tried Xiden yet, and I haven't done any concrete work toward this (I have been working on managing Racket packages with Guix), but Christine Lemmer-Webber had floated the idea at some point of trying to integrate Racket and Guile. IIRC, I think what she's had in mind was trying to make a Guile backend for Racket along the lines of the Chez Scheme backend (or the BC backend, or experimental backends like Pycket). As I said, I haven't actually tried any of this, but, as I've thought about what might be involved, there are two things that have struck me as downsides: 1. Flatt et al. say in "Rebuilding Racket on Chez Scheme (Experience Report)" (§6, p. 13) that, "If our task were to compile Racket to an existing target, then we would not have achieved such a high degree of compatibility. … we have taken the liberty of modifying Chez Scheme to make it an easier target for Racket." https://www.cs.utah.edu/plt/publications/icfp19-fddkmstz.pdf Presumably a Racket-on-Guile project would face the same trade-off, where modifications to Guild, if Racket CS is a guide, could require hard work over many years, and lesser compatibility would make the result less useful. 2. As you probably know, Racket programs can't generally use Chez Scheme implemented libraries, because Chez Scheme effectively is the "unsafe" layer of the Racket VM. For example, not all Racket procedures are Chez Scheme procedures, and Racket's continuations wrap Chez Scheme's to implement delimited and composable control, threads, parameters, full continuation marks, etc. For Racket CS, this isn't a great loss (there aren't so many Chez-specific libraries, and portable libraries can run in Racket's R6RS language), but, for a hypothetical Racket-on-Guile, bidirectional interoperability would be a big attraction: imagine Guix, Shepherd, Mcron, syntax/parse, racket/contract, and more all working together. If I were going to work on this, I'd start by looking at having Racket and Guile coexist as siblings with interoperability through their FFIs level. Even better, eventually you could compile Guile to Racket linklets, so the two could coexist in the same primitive module system. There would probably always need to be something along the lines of require/typed to interoperate between the languages, since Guile has mutable pairs and an unusual approach to falsehood and nullity to let Scheme's #f and '() coexist with Emacs List's nil. (See https://www.gnu.org/software/guile/manual/html_node/Nil.html). >>> I'm at the point where users are requesting a GNU/Linux distribution for >>> Xiden, such that Racket is the primary language for day-to-day >>> operation. I'm ignorant of the scope of work, and am unsure if I can do >>> it alone. To me, at least, the scope of the work in creating a new GNU/Linux distribution seems daunting. My hope would be that bringing Racket and Guile closer together would let most if not all of the effort be shared. Hope some of this is useful, and best of luck! -Philip