From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Richard Sent Newsgroups: gmane.lisp.guile.devel Subject: Re: The Guile junk drawer and a C plea Date: Sat, 29 Jun 2024 15:02:35 -0400 Message-ID: <87cynzr2r8.fsf@freakingpenguin.com> References: <20240629002027.13853-1-richard@freakingpenguin.com> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="6061"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Cc: guile-devel To: "Thompson, David" Original-X-From: guile-devel-bounces+guile-devel=m.gmane-mx.org@gnu.org Sat Jun 29 21:03:13 2024 Return-path: Envelope-to: guile-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1sNdLt-0001LS-6l for guile-devel@m.gmane-mx.org; Sat, 29 Jun 2024 21:03:13 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sNdLS-00005V-Oo; Sat, 29 Jun 2024 15:02:46 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sNdLR-00005L-Ja for guile-devel@gnu.org; Sat, 29 Jun 2024 15:02:45 -0400 Original-Received: from mail-108-mta176.mxroute.com ([136.175.108.176]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1sNdLP-0004JI-SE for guile-devel@gnu.org; Sat, 29 Jun 2024 15:02:45 -0400 Original-Received: from filter006.mxroute.com ([136.175.111.3] filter006.mxroute.com) (Authenticated sender: mN4UYu2MZsgR) by mail-108-mta176.mxroute.com (ZoneMTA) with ESMTPSA id 1906560c55d00017a3.001 for (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384); Sat, 29 Jun 2024 19:02:39 +0000 X-Zone-Loop: cb240d62e400d96de51620db976ab528d027b697d7e8 X-Originating-IP: [136.175.111.3] DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=freakingpenguin.com; s=x; h=Content-Type:MIME-Version:Message-ID:Date: References:In-Reply-To:Subject:Cc:To:From:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=LDVdLmu85GpJ3/c99r24kzSG+EePxA3hRFc0ZsWUG5k=; b=jVXNH9IRIY4swg5tOhkPPbRvSs MzkB2Sev8x9HLJ+RMqwlmL36Jiu4kWmN+lNXVgNurq8u7rwFbaiy8M2jTBYol7LIjJ//wVNoF6Z9E aJVRBgXapovsk+j/CPD3HJEbJVpWzzIkPFT0u/8kkKWUbBYWL44c6JERuvGeXnbi3I3Z5umnzvaI2 KDAE0Bg5KHMajTHB5/ODTQb+JEoLnPvpTySdnXhov9UfC1Q968GFTckXqvq8Gugdm7/5xHA0wvlsO CwmoRy9bT0g6G925xROMFMMXZOucBGWyERAi6PF6oZjXbL7G9AvN7MJd663plXjQHnQhQEN9rFV4K Npa4rA8w==; In-Reply-To: (David Thompson's message of "Fri, 28 Jun 2024 22:52:46 -0400") X-Authenticated-Id: richard@freakingpenguin.com Received-SPF: pass client-ip=136.175.108.176; envelope-from=richard@freakingpenguin.com; helo=mail-108-mta176.mxroute.com X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1, DKIM_SIGNED=0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-devel-bounces+guile-devel=m.gmane-mx.org@gnu.org Original-Sender: guile-devel-bounces+guile-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.lisp.guile.devel:22507 Archived-At: Hi David and all, "Thompson, David" writes: > As a rule, I think Guile should *not* add any additional names to the > default environment without an extremely good reason. Because (guile) > is imported implicitly, new names can cause clashes with existing code > that require #:replace to suppress the warning about shadowing core > bindings. For example, the newish 'spawn' procedure collides with > 'spawn' in (goblins core) in the Goblins project. I think Guile needs > a (multi-year, multi-major version) plan to deprecate cruft and move > the good stuff into different modules. Give a hoot, don't pollute (the > default environment)! > > Second, please please please, no more C! Guile's substantial amount of > C code is a legacy of its origins decades ago, and we need to make it > clear to new users and contributors that new code should be written in > Scheme! I see my little patch has ignited a comparatively oversized firestorm. Oops. ;) The current discussion is above my paygrade so I'll largely stay out of it. (Although it's quite fascinating!) In the specific context of this patch I feel like the risks of namespace pollution and C maintenance burden are low since both are near identical to what already exists. But of course, someone else may argue that this is a death by a thousand cuts situation. I will suggest that if a consensus is reached on what new code must adhere to (e.g. no (guile) namespace pollution, no new procedures written in C), it should be documented in the reference manual. There are traces of this but nothing concrete [1]. What little documentation exists is secreted away into the darkest corners of Texinfo. I believe a top-level "Contributing" section in a similar vein to GNU Guix would be a valuable addition. It's quite possible as a first-time contributor I am missing something that already exists. If so, oops again! [1]: (guile) Status -- Take it easy, Richard Sent Making my computer weirder one commit at a time.