GNU bug report logs - #70398
[PATCH 0/5] Reduce the size of gnu/packages/*.go files

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: guix-patches; Reported by: Ludovic Courtès <ludo@HIDDEN>; Keywords: patch; dated Mon, 15 Apr 2024 15:29:03 UTC; Maintainer for guix-patches is guix-patches@HIDDEN.

Message received at 70398 <at> debbugs.gnu.org:


Received: (at 70398) by debbugs.gnu.org; 15 Apr 2024 20:31:51 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Apr 15 16:31:51 2024
Received: from localhost ([127.0.0.1]:39457 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rwSzV-0006Kz-3W
	for submit <at> debbugs.gnu.org; Mon, 15 Apr 2024 16:31:50 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:51376)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1rwSzT-0006Jv-MP
 for 70398 <at> debbugs.gnu.org; Mon, 15 Apr 2024 16:31:48 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <ludo@HIDDEN>)
 id 1rwSzC-0002Yb-Ag; Mon, 15 Apr 2024 16:31:30 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-Version:Date:References:In-Reply-To:Subject:To:
 From; bh=9UObZ4NCjgxd1bEK1ZChK7VcgRNgJJmkNJG6EUXJWEo=; b=FiG5lWOI/i4I3+OI96DI
 BbE0mukDquqhcSi2sdt4JPJCrbS2u9xXcom1Xa3nPxwW6dNXIgyoWX+WDU1LBgmezYVSm8Rc57f9R
 QzWaWPecCsKJq0bsOUDPR4kIac/AFtdlKcj+Ir/tNNRVW5EsqAaxOJiEjQHZ/fyfA1SfGJgzBGlAv
 OqCHaAtVXDC0WXONJl+XpQg8xOkD6mwiYzWh0XOvV/Q1xrjR+2TfeHtBiaNTzLC3MbdUqIg5wA2G7
 ppG4aZVAXUUlAt5LoQz0h3hqdAmpGSR7c5ni68TSRRiWG+PXYVcBDlpEIJnkmxC1s0pb/OnsBuNxV
 cG5MmdwKFfpnDA==;
From: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN>
To: Simon Tournier <zimon.toutoune@HIDDEN>
Subject: Re: [bug#70398] [PATCH 5/5] packages: Reduce code bloat due to list
 allocation in input fields.
In-Reply-To: <87zftuik7b.fsf@HIDDEN> (Simon Tournier's message of "Mon, 15
 Apr 2024 19:56:08 +0200")
References: <cover.1713194148.git.ludo@HIDDEN>
 <e66ee292ea3368424d1ec904a45c804f5fa81879.1713194148.git.ludo@HIDDEN>
 <87zftuik7b.fsf@HIDDEN>
Date: Mon, 15 Apr 2024 22:31:20 +0200
Message-ID: <877cgyz7tz.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 70398
Cc: 70398 <at> debbugs.gnu.org, Josselin Poiret <dev@HIDDEN>,
 Mathieu Othacehe <othacehe@HIDDEN>, Tobias Geerinckx-Rice <me@HIDDEN>,
 Ricardo Wurmus <rekado@HIDDEN>, Christopher Baines <guix@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Simon Tournier <zimon.toutoune@HIDDEN> skribis:

> On lun., 15 avril 2024 at 17:37, Ludovic Court=C3=A8s <ludo@HIDDEN> wrot=
e:
>
>> +    ((_ (list args ...))
>> +     ;; As of 3.0.9, (list ...) is open-coded, which can lead to a long=
 list
>> +     ;; of instructions.  To reduce code bloat in package modules where=
 input
>> +     ;; fields may create such lists, move list allocation to the calle=
e.
>> +     (add-input-labels args ...))
>
> I am not sure to understand: =C2=AB (list ...) is open-coded, which can l=
ead
> to a long list of instructions. =C2=BB.

This:

--8<---------------cut here---------------start------------->8---
scheme@(guile-user)> ,c (lambda () (list 1 2 3 4))

[...]

   8    (allocate-words/immediate 0 2)=20=20
   9    (scm-set!/immediate 0 0 2)=20=20=20=20=20=20
  10    (scm-set!/immediate 0 1 1)=20=20=20=20=20=20
  11    (allocate-words/immediate 2 2)=20=20
  12    (scm-set!/immediate 2 0 3)=20=20=20=20=20=20
  13    (scm-set!/immediate 2 1 0)=20=20=20=20=20=20
  14    (allocate-words/immediate 3 2)=20=20
  15    (scm-set!/immediate 3 0 4)=20=20=20=20=20=20
  16    (scm-set!/immediate 3 1 2)=20=20=20=20=20=20
  17    (allocate-words/immediate 4 2)=20=20
  18    (scm-set!/immediate 4 0 5)=20=20=20=20=20=20
  19    (scm-set!/immediate 4 1 3)=20=20=20=20=20=20
--8<---------------cut here---------------end--------------->8---

> Well, irrelevant for .go size but why not something like:
>
>     ((_ (list args . rest))
>       (apply add-inputs-labels (append args rest)))

That=E2=80=99s more code and I=E2=80=99m really trying hard to minimize gen=
erated code.
:-)

Ludo=E2=80=99.




Information forwarded to guix-patches@HIDDEN:
bug#70398; Package guix-patches. Full text available.

Message received at 70398 <at> debbugs.gnu.org:


Received: (at 70398) by debbugs.gnu.org; 15 Apr 2024 18:50:08 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Apr 15 14:50:07 2024
Received: from localhost ([127.0.0.1]:38963 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rwRP1-0005zz-Ux
	for submit <at> debbugs.gnu.org; Mon, 15 Apr 2024 14:50:07 -0400
Received: from mail-wr1-x42f.google.com ([2a00:1450:4864:20::42f]:39075)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <zimon.toutoune@HIDDEN>) id 1rwROv-0005xc-AU
 for 70398 <at> debbugs.gnu.org; Mon, 15 Apr 2024 14:50:02 -0400
Received: by mail-wr1-x42f.google.com with SMTP id
 ffacd0b85a97d-346407b8c9aso1520763f8f.0
 for <70398 <at> debbugs.gnu.org>; Mon, 15 Apr 2024 11:49:45 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1713206979; x=1713811779; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=LPeHmnUk2Z7i0EEa0JU4U20gdVzYmUzmRrs3W5y5W/U=;
 b=kZ2dpPkPHSkZ4gFcDcypFwyrS0uToDY1XnLa95LBV+x+or2aKwUHa6eCqnxgPWnG4E
 R/4ATwIF1xhDGzy4l7/98FXpreVa4jo4FHzo1GeB6cAl9SeQzmhAsUoLuJ7j93+G4c/2
 5ioxYKPzgDiI3Xg6ZtFHXPweMsoZT1ZXlp1Weemqwv/Q9LbKashJy0fJDL+A7FX4/xNJ
 XkoidBkgXgmx5YRLP0Av5Xa+sYnPxL6Gv0wmSs2wBe+H+TVCCkT0BCjYqb7tcFYoI7U6
 C7Ehi/KWilZEtdKwU+uMe3blWEm6TqPH+Gt+38JlXGPgPSk2mak78KDyMvsrkBv/wwll
 Y8Uw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1713206979; x=1713811779;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
 :to:cc:subject:date:message-id:reply-to;
 bh=LPeHmnUk2Z7i0EEa0JU4U20gdVzYmUzmRrs3W5y5W/U=;
 b=Jvifm+jUoM27dJkiBQMKhH1VCwW2xseG25OExSqK0zgkf7di/JcgYW5fflHpYEUZxd
 PYpe56SrBJOtAaUjfrN7KuGV4CDpSevDzcL2z3tqO2BwPh2e6515eVInv7UiJXFLV3Om
 AvtYylYSsp+zxsmT3ViVaeyKgrDY+fPuuclauBe827UEBde9eK/lO7BWE8aAsRMrk8a2
 nC1X4RDojjEQyomvvIajM62eO1XRaHg7BVKild2IO0qQ/CNL5jVtM6X0UiVlyksIJve2
 4BEgn1GR/vwBTDiTKvpcBGRkvHW0yvFUE14/0R3HUvfq4O0MsSJuey657QdpS2jcI4oU
 E9pQ==
X-Gm-Message-State: AOJu0YxRRO9jCdrcbPNTjzp3nHkcSotR20RiybElQJ6X+02YCYrBJkAy
 YAYvNAymWnUSyiPM639wxkwvvHC7qYwcQOwKclkeJZ71Yk3RGbUm
X-Google-Smtp-Source: AGHT+IEn1eMcuROIyoksmYv/HFwkGZxjFqxZ7ZT/rsl3rLeN0PH6oZVzOsmfWAwcOetPIAPTnWxg7A==
X-Received: by 2002:a05:600c:474a:b0:417:29a3:3f4f with SMTP id
 w10-20020a05600c474a00b0041729a33f4fmr7919164wmo.2.1713206979342; 
 Mon, 15 Apr 2024 11:49:39 -0700 (PDT)
Received: from lili (roam-nat-fw-prg-194-254-61-46.net.univ-paris-diderot.fr.
 [194.254.61.46]) by smtp.gmail.com with ESMTPSA id
 df12-20020a5d5b8c000000b00343a3e62997sm12693768wrb.50.2024.04.15.11.49.37
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 15 Apr 2024 11:49:38 -0700 (PDT)
From: Simon Tournier <zimon.toutoune@HIDDEN>
To: Ludovic =?utf-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
Subject: Re: [bug#70398] [PATCH 0/5] Reduce the size of gnu/packages/*.go files
In-Reply-To: <87cyqq1ua3.fsf@HIDDEN> ("Ludovic =?utf-8?Q?Court=C3=A8s=22'?=
 =?utf-8?Q?s?= message of "Mon, 15 Apr 2024 18:10:28 +0200")
References: <cover.1713194148.git.ludo@HIDDEN> <87cyqq1ua3.fsf@HIDDEN>
Date: Mon, 15 Apr 2024 20:49:32 +0200
Message-ID: <87sezmihqb.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 70398
Cc: Ricardo Wurmus <rekado@HIDDEN>, Josselin Poiret <dev@HIDDEN>,
 Mathieu Othacehe <othacehe@HIDDEN>, Tobias Geerinckx-Rice <me@HIDDEN>,
 70398 <at> debbugs.gnu.org, Christopher Baines <guix@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Hi,

On lun., 15 avril 2024 at 18:10, Ludovic Court=C3=A8s <ludo@HIDDEN> wrote:
> Ludovic Court=C3=A8s <ludo@HIDDEN> skribis:
>
>> What follows is a bunch of tricks to reduce code bloat, achieving ~14%
>> reduction in the size of .go files (~18% if we look at gnu/packages
>> alone).
>
> On this topic, you may also like this earlier post:
>
>   https://lists.gnu.org/archive/html/guix-devel/2020-06/msg00071.html

And unrelated to this patch set, let also mention this other thread [1],
comparing (btrfs):

--8<---------------cut here---------------start------------->8---
# compsize /gnu/store/nqrb3g4l59wd74w8mr9v0b992bj2sd1w-guix-d62c9b267-modul=
es/lib/guile/3.0/site-ccache/gnu
Processed 503 files, 1317 regular extents (1317 refs), 0 inline.
Type       Perc     Disk Usage   Uncompressed Referenced
TOTAL       27%       40M         144M         144M
none       100%       10M          10M          10M
zstd        22%       30M         133M         133M

# compsize /gnu/store/s6rqlhqr750k44ynkqqj5mwjj2cs2yln-guix-a09968565-modul=
es/lib/guile/3.0/site-ccache/gnu
Processed 530 files, 1169 regular extents (1169 refs), 0 inline.
Type       Perc     Disk Usage   Uncompressed Referenced
TOTAL       19%       22M         116M         116M
none       100%       32K          32K          32K
zstd        19%       22M         116M         116M
--8<---------------cut here---------------end--------------->8---

Compared to (ext4):

--8<---------------cut here---------------start------------->8---
145M /gnu/store/nqrb3g4l59wd74w8mr9v0b992bj2sd1w-guix-d62c9b267-modules/lib=
/guile/3.0/site-ccache/gnu
117M /gnu/store/s6rqlhqr750k44ynkqqj5mwjj2cs2yln-guix-a09968565-modules/lib=
/guile/3.0/site-ccache/gnu
--8<---------------cut here---------------end--------------->8---

Somehow, these packages .go files could be compressed and decompressed
on the fly when needed.

Cheers,
simon


1: Re: How many bytes do we add (closure of guix) when adding one new packa=
ge?
Guillaume Le Vaillant <glv@HIDDEN>
Wed, 31 May 2023 12:47:09 +0000
id:87h6rsll5i.fsf@kitej
https://lists.gnu.org/archive/html/guix-devel/2023-05
https://yhetil.org/guix/87h6rsll5i.fsf@kitej




Information forwarded to guix-patches@HIDDEN:
bug#70398; Package guix-patches. Full text available.

Message received at 70398 <at> debbugs.gnu.org:


Received: (at 70398) by debbugs.gnu.org; 15 Apr 2024 18:07:51 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Apr 15 14:07:51 2024
Received: from localhost ([127.0.0.1]:38767 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rwQjy-00060r-3D
	for submit <at> debbugs.gnu.org; Mon, 15 Apr 2024 14:07:51 -0400
Received: from mail-wr1-x42f.google.com ([2a00:1450:4864:20::42f]:39027)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <zimon.toutoune@HIDDEN>) id 1rwQjo-0005yL-Tf
 for 70398 <at> debbugs.gnu.org; Mon, 15 Apr 2024 14:07:30 -0400
Received: by mail-wr1-x42f.google.com with SMTP id
 ffacd0b85a97d-346407b8c9aso1508287f8f.0
 for <70398 <at> debbugs.gnu.org>; Mon, 15 Apr 2024 11:07:16 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1713204431; x=1713809231; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=p21/OzxrzbuyZQyBn5O47bphdKN+aIRNy0DtxhBIn6g=;
 b=eoTWP8yTgYgESiRz+yBfKoGR+3a0hIKtomms3Hyf6WknV8F3mlCQDBSIR8MHHvnyyH
 Tr9SWideqpdQiaVqjL7S0CbKEM9qkG1yciAg1QkelVeMXCZk0ZnbYB8IWCKPhoRARIcp
 co31u3JCPCpuUjCxKSFbK5DQ1sdT4juwAHYfBwMC5+WEISMKlHTbBSvzokBNw0S0zuxH
 TknEiy+6iSoUUuvO8aoLF+61TtA2PjywPBozXoCT/aATytKPS93oRXiGPei8HAelZUBV
 GMzT/PtDc1fr5kgohZlM+4sOuvrCJncC7JCOs15vhmbl0tx8ge0IKtyGcaq32dEvH8p2
 oyjg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1713204431; x=1713809231;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
 :to:cc:subject:date:message-id:reply-to;
 bh=p21/OzxrzbuyZQyBn5O47bphdKN+aIRNy0DtxhBIn6g=;
 b=fW/gG6MFJj5O6gmHT39vDjX/knZtizYa1DLzqXzyaP5UeowAbtaRe/Q37izVuQNOkf
 qPirfGXxASDN5o2GxVGlIQ+fnX6Lqgt5rTbJZNuyrKaf+qpTwylM0BVyj9B0bkMBubYQ
 +H4F/sk8uywZ5vzI+fg8f8tz7Shbfze2QbopOBsdfuVNOR/aol9DFY3CCSV5O3KiI/Ag
 GU35JrdvbHgqc+DJE77xoZLNt8OX+9OCwN/V3Fe3D6vTcw2lXs8+zYhKHj9xmwHR3r0x
 a1sqTLZFhCvc0pqK9cg4/AIUkhUStWLTIcirLzFg/J2eK3upLDj+YLoY/LR6vAhOQiQ9
 eYiQ==
X-Gm-Message-State: AOJu0YxSJ4FUxKZLYwlDmWP3R4f7Nm+8F8SbRSiT95SCZyHRsViVPDac
 8lk2m+ApAnro2EXwnGrz7dHeyv3gMz5XklGD1zWtJpPlhQRcvNuY
X-Google-Smtp-Source: AGHT+IFEofrkrHpOgcaEhwQnsT8LQoo3b/RVOqPneYZk21ogkRfVIIH2ZK9whkdabQIq7h7gRwPuEg==
X-Received: by 2002:a05:600c:6908:b0:418:c7a:c215 with SMTP id
 fo8-20020a05600c690800b004180c7ac215mr6556240wmb.1.1713204431126; 
 Mon, 15 Apr 2024 11:07:11 -0700 (PDT)
Received: from lili (roam-nat-fw-prg-194-254-61-45.net.univ-paris-diderot.fr.
 [194.254.61.45]) by smtp.gmail.com with ESMTPSA id
 r11-20020a05600c458b00b00417f7ddd21dsm14104842wmo.37.2024.04.15.11.07.09
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 15 Apr 2024 11:07:10 -0700 (PDT)
From: Simon Tournier <zimon.toutoune@HIDDEN>
To: Ludovic =?utf-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
Subject: Re: [bug#70398] [PATCH 0/5] Reduce the size of gnu/packages/*.go files
In-Reply-To: <cover.1713194148.git.ludo@HIDDEN> ("Ludovic =?utf-8?Q?Court?=
 =?utf-8?Q?=C3=A8s=22's?= message
 of "Mon, 15 Apr 2024 17:27:36 +0200")
References: <cover.1713194148.git.ludo@HIDDEN>
Date: Mon, 15 Apr 2024 20:06:15 +0200
Message-ID: <87wmoyijqg.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 70398
Cc: Ricardo Wurmus <rekado@HIDDEN>, Josselin Poiret <dev@HIDDEN>,
 Mathieu Othacehe <othacehe@HIDDEN>, Tobias Geerinckx-Rice <me@HIDDEN>,
 70398 <at> debbugs.gnu.org, Christopher Baines <guix@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Hi,

On lun., 15 avril 2024 at 17:27, Ludovic Court=C3=A8s <ludo@HIDDEN> wrote:

> What follows is a bunch of tricks to reduce code bloat, achieving ~14%
> reduction in the size of .go files (~18% if we look at gnu/packages
> alone).

If have not checked that the reduction would be of ~18%.  From my
understanding, the patch set LGTM; modulo an unrelated comment about
ellipsis and potential quadratic penalty on performances.


> About 60% of those files are in the 64=E2=80=93128 KiB range.  Since ELF =
sections
> are currently 64 KiB-aligned (see =E2=80=98*lcm-page-size*=E2=80=99 in Gu=
ile), we would
> save space by ensuring these are sparse files.  To do that, we=E2=80=99ll=
 need to
> detect holes when restoring nars and/or to change the nar format to
> preserve holes, while also ensuring that when the daemon copies files
> around, it also preserves holes.  Work for later!

Since [1], I think that compiling a generic Guile record for <package>
is touching the limit of DSL. :-) Other said, I think the binary
(compiled) representation of records <package> should be specific and
thus optimized.  Work for after later. ;-)

Cheers,
simon


1: How many bytes do we add (closure of guix) when adding one new package?
Simon Tournier <zimon.toutoune@HIDDEN>
Thu, 25 May 2023 20:24:30 +0200
id:87r0r4uv4x.fsf@HIDDEN
https://lists.gnu.org/archive/html/guix-devel/2023-05
https://yhetil.org/guix/87r0r4uv4x.fsf@HIDDEN




Information forwarded to guix-patches@HIDDEN:
bug#70398; Package guix-patches. Full text available.

Message received at 70398 <at> debbugs.gnu.org:


Received: (at 70398) by debbugs.gnu.org; 15 Apr 2024 18:07:32 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Apr 15 14:07:32 2024
Received: from localhost ([127.0.0.1]:38764 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rwQjq-0005zU-8P
	for submit <at> debbugs.gnu.org; Mon, 15 Apr 2024 14:07:32 -0400
Received: from mail-wr1-x429.google.com ([2a00:1450:4864:20::429]:39021)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <zimon.toutoune@HIDDEN>) id 1rwQjn-0005xy-78
 for 70398 <at> debbugs.gnu.org; Mon, 15 Apr 2024 14:07:28 -0400
Received: by mail-wr1-x429.google.com with SMTP id
 ffacd0b85a97d-346407b8c9aso1508271f8f.0
 for <70398 <at> debbugs.gnu.org>; Mon, 15 Apr 2024 11:07:15 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1713204429; x=1713809229; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=hWue6cf8r6MECGGViNQp2lK8pvPZEuWZX5dVuOENq7g=;
 b=K+w3Q06BsrLUxWxM5/YFptPTcgtRsSnCFKaujtdKX6X71z6rVXxFOFnB8abA20iRgH
 DyHkZxd5PO6FcqQ6QpLaYcPokDwyBhnIVpGGApHeMOOEgw2Nx+KiGz2GVlX/uok0muVW
 jzbyOzXb4OvXBc0h8Ps2CDFpaaXK7u6FJMGore8BnljGBGEKVyxINtVm35/NhPewV7LB
 6EnQbGyvic96VJWtmClJU5jr4Cao4iGrhukT3hyCujYAMyVxMRRwuCb94AQfEvRdM72+
 hai3Ta79VPPoc3q667AZY6mWH2ahCcJBpyb2w5lNOI+oCCa44nLpSWwtABeh8xF5dCpO
 8kwQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1713204429; x=1713809229;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
 :to:cc:subject:date:message-id:reply-to;
 bh=hWue6cf8r6MECGGViNQp2lK8pvPZEuWZX5dVuOENq7g=;
 b=nFVCwsUaCe0yvXsRC6NMDuupopXOU4qjjwrPbxeKn2Ul/x4QJgtBLGNtmYbfMuGJFM
 YoO0s/3MpQPo4kGd2wSw9Ur/55FJTQxvqRJHGv+JQFuxMSWeao/KPgfs0VIa/nrf/1gD
 EIbhUe23AB0k3FWg132y8la8lhquvGEsB+jLmgxOts3VymIcfXBU5cq5negldY7l76a0
 PLLNw4PztDF6JTTVz+NXiEAyBe89Iq8qXobObKy9an/dPZrqRjxyHEYT5Weqdjmpd+m2
 bppQBzut1ZeILuAURfj1uZJQsnX7nlobVXeKl1A83Gjar7Ty8CnJqKZlBNWAm9mv27Ed
 exDw==
X-Gm-Message-State: AOJu0YyWFkhCDuiHFj6cgw3jJtBCzClYjTugvoltlfXE2fDg4nsxy5iQ
 39drOEl8lPlcU5BNNXIJiy9YXNs35bjLkOaAwwAk0erLTHu8NxxL
X-Google-Smtp-Source: AGHT+IE/sh82i9bxq+xirUwm2iqrKxNEzS5G4lqGjOwNRbQiotvhedIEEWvIhW63goDr6GtOoQdAYA==
X-Received: by 2002:a05:600c:474a:b0:417:29a3:3f4f with SMTP id
 w10-20020a05600c474a00b0041729a33f4fmr7859849wmo.2.1713204429104; 
 Mon, 15 Apr 2024 11:07:09 -0700 (PDT)
Received: from lili (roam-nat-fw-prg-194-254-61-40.net.univ-paris-diderot.fr.
 [194.254.61.40]) by smtp.gmail.com with ESMTPSA id
 k21-20020a05600c1c9500b004182a36b185sm9785647wms.2.2024.04.15.11.07.07
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 15 Apr 2024 11:07:08 -0700 (PDT)
From: Simon Tournier <zimon.toutoune@HIDDEN>
To: Ludovic =?utf-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
Subject: Re: [bug#70398] [PATCH 5/5] packages: Reduce code bloat due to list
 allocation in input fields.
In-Reply-To: <e66ee292ea3368424d1ec904a45c804f5fa81879.1713194148.git.ludo@HIDDEN>
 ("Ludovic =?utf-8?Q?Court=C3=A8s=22's?= message of "Mon, 15 Apr 2024
 17:37:07 +0200")
References: <cover.1713194148.git.ludo@HIDDEN>
 <e66ee292ea3368424d1ec904a45c804f5fa81879.1713194148.git.ludo@HIDDEN>
Date: Mon, 15 Apr 2024 19:56:08 +0200
Message-ID: <87zftuik7b.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 70398
Cc: Ricardo Wurmus <rekado@HIDDEN>, Josselin Poiret <dev@HIDDEN>,
 Mathieu Othacehe <othacehe@HIDDEN>, Tobias Geerinckx-Rice <me@HIDDEN>,
 70398 <at> debbugs.gnu.org, Christopher Baines <guix@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Hi Ludo,

On lun., 15 avril 2024 at 17:37, Ludovic Court=C3=A8s <ludo@HIDDEN> wrote:

> +    ((_ (list args ...))
> +     ;; As of 3.0.9, (list ...) is open-coded, which can lead to a long =
list
> +     ;; of instructions.  To reduce code bloat in package modules where =
input
> +     ;; fields may create such lists, move list allocation to the callee.
> +     (add-input-labels args ...))

I am not sure to understand: =C2=AB (list ...) is open-coded, which can lead
to a long list of instructions. =C2=BB.  Well, irrelevant for .go size but
why not something like:

    ((_ (list args . rest))
      (apply add-inputs-labels (append args rest)))

It would not change for .go size but it would change for run-time if
it=E2=80=99s a long list, no?

Cheers,
simon




Information forwarded to guix-patches@HIDDEN:
bug#70398; Package guix-patches. Full text available.

Message received at 70398 <at> debbugs.gnu.org:


Received: (at 70398) by debbugs.gnu.org; 15 Apr 2024 16:25:29 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Apr 15 12:25:29 2024
Received: from localhost ([127.0.0.1]:38186 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rwP96-0000R0-Il
	for submit <at> debbugs.gnu.org; Mon, 15 Apr 2024 12:25:29 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:38322)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1rwP8s-0000Nh-Bb
 for 70398 <at> debbugs.gnu.org; Mon, 15 Apr 2024 12:25:26 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <ludo@HIDDEN>)
 id 1rwP8V-0001VI-VR; Mon, 15 Apr 2024 12:24:56 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-Version:Date:References:In-Reply-To:Subject:To:
 From; bh=vGJVl6Kb5fzc0SrhBkq4yzX6PvLgoZ64cBuxgJZaOPg=; b=SrwppJpY9PENsblFW90c
 xeYS124rtBvP2P4lZndPp6C6QwRxoPXGcmt6t1aCIIOQq8I4BVF4mX4ohFSWgkty8Y81jczlRzrcW
 aEEQJBSvLK1PyuTqBiG8Rxyy2uZbD1/dB/6jiE9uIll4mbdBo4WRzCGHfG3Oqpep4CWjwBG9BvgK3
 WjhMUfgu5NpO10C2JnK1mYGTKEPNK27jom5PLKtmMPGxlOOqnPi26Q1abZr6L9Up/uMtg5ay7VPJ2
 jyaWqeqUGfX6ZkkWgACPDv65METsskeXYfLxc4DH7fxkmN9m7jm2+2PALgrvGVxnTLhKgsQogJL57
 E3+gDnR44g8d7w==;
From: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN>
To: 70398 <at> debbugs.gnu.org
Subject: Re: [bug#70398] [PATCH 0/5] Reduce the size of gnu/packages/*.go files
In-Reply-To: <cover.1713194148.git.ludo@HIDDEN> ("Ludovic =?utf-8?Q?Court?=
 =?utf-8?Q?=C3=A8s=22's?= message
 of "Mon, 15 Apr 2024 17:27:36 +0200")
References: <cover.1713194148.git.ludo@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
Date: Mon, 15 Apr 2024 18:24:25 +0200
Message-ID: <87sezmzj9i.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 70398
Cc: Josselin Poiret <dev@HIDDEN>,
 Simon Tournier <zimon.toutoune@HIDDEN>, Mathieu Othacehe <othacehe@HIDDEN>,
 Tobias Geerinckx-Rice <me@HIDDEN>, Ricardo Wurmus <rekado@HIDDEN>,
 Christopher Baines <guix@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Ludovic Court=C3=A8s <ludo@HIDDEN> skribis:

> What follows is a bunch of tricks to reduce code bloat, achieving ~14%
> reduction in the size of .go files (~18% if we look at gnu/packages
> alone).

On this topic, you may also like this earlier post:

  https://lists.gnu.org/archive/html/guix-devel/2020-06/msg00071.html

Ludo=E2=80=99.




Information forwarded to guix-patches@HIDDEN:
bug#70398; Package guix-patches. Full text available.

Message received at 70398 <at> debbugs.gnu.org:


Received: (at 70398) by debbugs.gnu.org; 15 Apr 2024 16:10:55 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Apr 15 12:10:54 2024
Received: from localhost ([127.0.0.1]:38095 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rwOuz-0006ui-Kg
	for submit <at> debbugs.gnu.org; Mon, 15 Apr 2024 12:10:54 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:57948)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1rwOuw-0006tQ-KK
 for 70398 <at> debbugs.gnu.org; Mon, 15 Apr 2024 12:10:52 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <ludo@HIDDEN>)
 id 1rwOud-0007UN-Ib; Mon, 15 Apr 2024 12:10:31 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-Version:Date:References:In-Reply-To:Subject:To:
 From; bh=vGJVl6Kb5fzc0SrhBkq4yzX6PvLgoZ64cBuxgJZaOPg=; b=NAX6sFAQ66N6NwZe811L
 zKgl/FA0tejKu6IFVBMNmDhe6AgeRXRTIzRcbl1bpWbemJeQNbHrXhuXC29FidUlZ2TRdYhhHOw+v
 c1KY3eFY+6bBKsK+A5Qr/RoUEUE8Lj0rxaFUNlnar+QsXAm7f39BIxIWB6mdhH0m3sT2aw4Q5C+ql
 UuA6O1nGzovgl/1d6CmirlFFEFrpWRdOqAvkMiI7KPWq6sfI3XibXkfg/BDkzZFomiRo4O8TLBpEz
 7jz7d7M8H3jCPytuowP3aorq2y6leApv/EGltQ3qyyZvdvTnqN0HOyWhYwEbiEtu6fQr4WSeM2Ugz
 hfhPnADUj1ikzg==;
From: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN>
To: 70398 <at> debbugs.gnu.org
Subject: Re: [bug#70398] [PATCH 0/5] Reduce the size of gnu/packages/*.go files
In-Reply-To: <cover.1713194148.git.ludo@HIDDEN> ("Ludovic =?utf-8?Q?Court?=
 =?utf-8?Q?=C3=A8s=22's?= message
 of "Mon, 15 Apr 2024 17:27:36 +0200")
References: <cover.1713194148.git.ludo@HIDDEN>
Date: Mon, 15 Apr 2024 18:10:28 +0200
Message-ID: <87cyqq1ua3.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 70398
Cc: Josselin Poiret <dev@HIDDEN>,
 Simon Tournier <zimon.toutoune@HIDDEN>, Mathieu Othacehe <othacehe@HIDDEN>,
 Tobias Geerinckx-Rice <me@HIDDEN>, Ricardo Wurmus <rekado@HIDDEN>,
 Christopher Baines <guix@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Ludovic Court=C3=A8s <ludo@HIDDEN> skribis:

> What follows is a bunch of tricks to reduce code bloat, achieving ~14%
> reduction in the size of .go files (~18% if we look at gnu/packages
> alone).

On this topic, you may also like this earlier post:

  https://lists.gnu.org/archive/html/guix-devel/2020-06/msg00071.html

Ludo=E2=80=99.




Information forwarded to guix-patches@HIDDEN:
bug#70398; Package guix-patches. Full text available.

Message received at 70398 <at> debbugs.gnu.org:


Received: (at 70398) by debbugs.gnu.org; 15 Apr 2024 15:38:28 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Apr 15 11:38:27 2024
Received: from localhost ([127.0.0.1]:37908 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rwOPZ-0007vF-8Z
	for submit <at> debbugs.gnu.org; Mon, 15 Apr 2024 11:38:27 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:41200)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1rwOPH-0007qJ-GZ
 for 70398 <at> debbugs.gnu.org; Mon, 15 Apr 2024 11:38:11 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <ludo@HIDDEN>)
 id 1rwOP0-0001Uv-F0; Mon, 15 Apr 2024 11:37:50 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-Version:References:In-Reply-To:Date:Subject:To:
 From; bh=5vXsn8BSLiVvAWZCYbh1dNBBvzLJn4lDK2zl8EwU1cw=; b=Y0I7T/nN6wfQPUlEGQ0C
 +40E6lYiOFeR7ItfcJkyd0c6q7xnvj70+3j1J4geC5Kpp4D8xFVqFstFjamN7nvhRI5ADVVIGUccV
 XKJhrTtdhds1Sl5uCZqt+xC4UDE8C7TAKn24r1/ltWU2vldiv1WisnU8QuqFFnpscz4EJ7WB8iJ5e
 eZkzAyKeUEIPq3BOLopT99TOiPS6nq2czeif8ajMsmfE9KK6oEIKHMr+cipvbN7pm7FwKAuOHqUTj
 Li2cx+tVduWn8Iu3KlU1kq6BihadjnEKE8FMRvtC3hZToKlWiRMTb07JPdQnk8YDIfI8tnt2xy2EE
 3LLKdRQnXXEv6w==;
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@HIDDEN>
To: 70398 <at> debbugs.gnu.org
Subject: [PATCH 5/5] packages: Reduce code bloat due to list allocation in
 input fields.
Date: Mon, 15 Apr 2024 17:37:07 +0200
Message-ID: <e66ee292ea3368424d1ec904a45c804f5fa81879.1713194148.git.ludo@HIDDEN>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <cover.1713194148.git.ludo@HIDDEN>
References: <cover.1713194148.git.ludo@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
X-Debbugs-Cc: Christopher Baines <guix@HIDDEN>, Josselin Poiret <dev@HIDDEN>, Ludovic Courtès <ludo@HIDDEN>, Mathieu Othacehe <othacehe@HIDDEN>, Ricardo Wurmus <rekado@HIDDEN>, Simon Tournier <zimon.toutoune@HIDDEN>, Tobias Geerinckx-Rice <me@HIDDEN>
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 70398
Cc: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

* guix/packages.scm (add-input-labels): New procedure.
(sanitize-inputs): Add case for (list …).

Change-Id: Ice8241508ded51efd38867b97ca19c262b8c4363
---
 guix/packages.scm | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/guix/packages.scm b/guix/packages.scm
index 6c697bcc67..3a4f547d6b 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -439,16 +439,26 @@ (define (maybe-add-input-labels inputs)
          inputs)
         (else (map add-input-label inputs))))
 
+(define (add-input-labels . inputs)
+  "Add labels to all of INPUTS."
+  (map add-input-label inputs))
+
 (define-syntax sanitize-inputs
   ;; This is written as a macro rather than as a 'define-inlinable' procedure
   ;; because as of Guile 3.0.9, peval can handle (null? '()) but not
   ;; (null? (list x y z)); that residual 'null?' test contributes to code
   ;; bloat.
-  (syntax-rules (quote)
+  (syntax-rules (quote list)
     "Sanitize INPUTS by turning it into a list of name/package tuples if it's
 not already the case."
     ((_ '()) '())
-    ((_ inputs) (maybe-add-input-labels inputs))))
+    ((_ (list args ...))
+     ;; As of 3.0.9, (list ...) is open-coded, which can lead to a long list
+     ;; of instructions.  To reduce code bloat in package modules where input
+     ;; fields may create such lists, move list allocation to the callee.
+     (add-input-labels args ...))
+    ((_ inputs)
+     (maybe-add-input-labels inputs))))
 
 (define-syntax current-location-vector
   (lambda (s)
-- 
2.41.0





Information forwarded to guix@HIDDEN, dev@HIDDEN, ludo@HIDDEN, othacehe@HIDDEN, rekado@HIDDEN, zimon.toutoune@HIDDEN, me@HIDDEN, guix-patches@HIDDEN:
bug#70398; Package guix-patches. Full text available.

Message received at 70398 <at> debbugs.gnu.org:


Received: (at 70398) by debbugs.gnu.org; 15 Apr 2024 15:38:25 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Apr 15 11:38:25 2024
Received: from localhost ([127.0.0.1]:37906 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rwOPX-0007uo-5S
	for submit <at> debbugs.gnu.org; Mon, 15 Apr 2024 11:38:25 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:41190)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1rwOPG-0007q5-Qe
 for 70398 <at> debbugs.gnu.org; Mon, 15 Apr 2024 11:38:11 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <ludo@HIDDEN>)
 id 1rwOOx-0001Tr-Mf; Mon, 15 Apr 2024 11:37:47 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-Version:References:In-Reply-To:Date:Subject:To:
 From; bh=tBUOkiAnBuL2QEmqfFVT8B9c4zk/02jrYmzHc66l0Og=; b=nBKQXczgh9v3c+MQc324
 IjkMC80tPsVmIbhMAuoowimD9M4FZv2H2t+RLIdF7pdbeNZnw0N886BW+76c30VnAmhwH+JLyXCBX
 hS7l62jVFW8POunlSt5qSIOwOxvWrpNeyLrhIix8LFHNwDklAe1OLZYvCnt7Oc4K7ngCXrHcPlEN5
 L4hy54zerPC1mw7LXG0NtsyostsGTR0yY0PZdGwKn8SIVTm0saYWAb0XtZZHaFH1mzmS1peNI2TcC
 5EF0CZJg4gX/mRVRHT6q1LFs2izhhqfv3Xr/LX9bnjSOiKR26Quh/9vRwRV9Krmd54R20rQXgoqAA
 zTMkwwGVniYNqg==;
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@HIDDEN>
To: 70398 <at> debbugs.gnu.org
Subject: [PATCH 2/5] =?UTF-8?q?packages:=20Reduce=20bloat=20induced=20by?=
 =?UTF-8?q?=20=E2=80=98sanitize-inputs=E2=80=99.?=
Date: Mon, 15 Apr 2024 17:37:04 +0200
Message-ID: <5668e959834c21809c42c1556359eb65bf285caf.1713194148.git.ludo@HIDDEN>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <cover.1713194148.git.ludo@HIDDEN>
References: <cover.1713194148.git.ludo@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
X-Debbugs-Cc: Christopher Baines <guix@HIDDEN>, Josselin Poiret <dev@HIDDEN>, Ludovic Courtès <ludo@HIDDEN>, Mathieu Othacehe <othacehe@HIDDEN>, Ricardo Wurmus <rekado@HIDDEN>, Simon Tournier <zimon.toutoune@HIDDEN>, Tobias Geerinckx-Rice <me@HIDDEN>
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 70398
Cc: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

At -O1, peval does the bulk of the optimization work and it cannot
reduce things like (null? (list 1 2)), unlike what happens in CPS at
-O2.  Thus, reduce the part of ‘sanitize-inputs’ that’s inlined.

* guix/packages.scm (maybe-add-input-labels): New procedure.
(sanitize-inputs): Turn into a macro; use ‘maybe-add-input-labels’.

Change-Id: Id2283bb5a2f5d714722200bdcfe0b0bfa606923f
---
 guix/packages.scm | 21 ++++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/guix/packages.scm b/guix/packages.scm
index 930b1a3b0e..bd6724cdd4 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012-2023 Ludovic Courtès <ludo@HIDDEN>
+;;; Copyright © 2012-2024 Ludovic Courtès <ludo@HIDDEN>
 ;;; Copyright © 2014, 2015, 2017, 2018, 2019 Mark H Weaver <mhw@HIDDEN>
 ;;; Copyright © 2015 Eric Bavier <bavier@HIDDEN>
 ;;; Copyright © 2016 Alex Kost <alezost@HIDDEN>
@@ -430,15 +430,26 @@ (define %cuirass-supported-systems
   ;; <https://lists.gnu.org/archive/html/guix-devel/2017-03/msg00790.html>.
   (fold delete %supported-systems '("mips64el-linux" "powerpc-linux" "riscv64-linux")))
 
-(define-inlinable (sanitize-inputs inputs)
-  "Sanitize INPUTS by turning it into a list of name/package tuples if it's
-not already the case."
-  (cond ((null? inputs) inputs)
+(define (maybe-add-input-labels inputs)
+  "Add labels to INPUTS unless it already has them."
+  (cond ((null? inputs)
+         inputs)
         ((and (pair? (car inputs))
               (string? (caar inputs)))
          inputs)
         (else (map add-input-label inputs))))
 
+(define-syntax sanitize-inputs
+  ;; This is written as a macro rather than as a 'define-inlinable' procedure
+  ;; because as of Guile 3.0.9, peval can handle (null? '()) but not
+  ;; (null? (list x y z)); that residual 'null?' test contributes to code
+  ;; bloat.
+  (syntax-rules (quote)
+    "Sanitize INPUTS by turning it into a list of name/package tuples if it's
+not already the case."
+    ((_ '()) '())
+    ((_ inputs) (maybe-add-input-labels inputs))))
+
 (define-syntax current-location-vector
   (lambda (s)
     "Like 'current-source-location' but expand to a literal vector with
-- 
2.41.0





Information forwarded to guix@HIDDEN, dev@HIDDEN, ludo@HIDDEN, othacehe@HIDDEN, rekado@HIDDEN, zimon.toutoune@HIDDEN, me@HIDDEN, guix-patches@HIDDEN:
bug#70398; Package guix-patches. Full text available.

Message received at 70398 <at> debbugs.gnu.org:


Received: (at 70398) by debbugs.gnu.org; 15 Apr 2024 15:38:23 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Apr 15 11:38:23 2024
Received: from localhost ([127.0.0.1]:37904 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rwOPV-0007uO-Jq
	for submit <at> debbugs.gnu.org; Mon, 15 Apr 2024 11:38:23 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:41180)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1rwOPG-0007q2-NG
 for 70398 <at> debbugs.gnu.org; Mon, 15 Apr 2024 11:38:08 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <ludo@HIDDEN>)
 id 1rwOOz-0001UY-K6; Mon, 15 Apr 2024 11:37:49 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-Version:References:In-Reply-To:Date:Subject:To:
 From; bh=Lzhqu2e+cAy1Td6udzgnsfK/iejWG8dEsKU670jPODA=; b=NsruURYwoStjrRLCluVZ
 MIxXquM/bL6MgDIRt+4s32RyGpCghD4xXDbetl/XkmjKMrmsCxShIgVB+mEYGiYEv4SHvRKC0E0m7
 4yUr2LqKMNGcA0usT0/bRE3/l1aP/eurDYRLZuhbS92jCmXLef9a+ZebN85qWUcV77XnkOoKNhAqm
 jKYxpJQWbWHtXfOSaXU+hpdQN2aWyNstvmFRL/EGpHAFE33bo1Pn2eCS4So5tZ+RxsIGKy+Fm8nHc
 DBGKeo2CBU4wfMUeQ/20+i8x3j8i2/Z8yXeMusy8abmdJJ8rOcbwp3cEipCU7mVXXhjIodVNx2gqp
 pWhs63OL/RgStw==;
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@HIDDEN>
To: 70398 <at> debbugs.gnu.org
Subject: [PATCH 4/5] =?UTF-8?q?packages:=20=E2=80=98define-public=E2=80=99?=
 =?UTF-8?q?=20replacement=20calls=20=E2=80=98module-export!=E2=80=99=20dir?=
 =?UTF-8?q?ectly.?=
Date: Mon, 15 Apr 2024 17:37:06 +0200
Message-ID: <723be7e4e70628f32862b8c1043eee641c4ccf8c.1713194148.git.ludo@HIDDEN>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <cover.1713194148.git.ludo@HIDDEN>
References: <cover.1713194148.git.ludo@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
X-Debbugs-Cc: Christopher Baines <guix@HIDDEN>, Josselin Poiret <dev@HIDDEN>, Ludovic Courtès <ludo@HIDDEN>, Mathieu Othacehe <othacehe@HIDDEN>, Ricardo Wurmus <rekado@HIDDEN>, Simon Tournier <zimon.toutoune@HIDDEN>, Tobias Geerinckx-Rice <me@HIDDEN>
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 70398
Cc: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

This reduces code bloat and loading overhead for package modules, which
use ‘define-public’ extensively.

* guix/packages.scm (define-public*): Use ‘define’ followed by
‘module-export!’ directly instead of ‘define-public’.

Change-Id: I7f56d46b391c1e3eeeb0b9a08a9d34b5de341245
---
 guix/packages.scm | 22 +++++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)

diff --git a/guix/packages.scm b/guix/packages.scm
index bd6724cdd4..6c697bcc67 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -482,7 +482,8 @@ (define-syntax-parameter current-definition-location
 (define-syntax define-public*
   (lambda (s)
     "Like 'define-public' but set 'current-definition-location' for the
-lexical scope of its body."
+lexical scope of its body.  (This also disables notification of \"module
+observers\", but this is unlikely to affect anyone.)"
     (define location
       (match (syntax-source s)
         (#f #f)
@@ -499,10 +500,21 @@ (define-syntax define-public*
 
     (syntax-case s ()
       ((_ prototype body ...)
-       #`(define-public prototype
-           (syntax-parameterize ((current-definition-location
-                                  (lambda (s) #,location)))
-             body ...))))))
+       (with-syntax ((name (syntax-case #'prototype ()
+                             ((id _ ...) #'id)
+                             (id #'id))))
+         #`(begin
+             (define prototype
+               (syntax-parameterize ((current-definition-location
+                                      (lambda (s) #,location)))
+                 body ...))
+
+             ;; Note: Use 'module-export!' directly to avoid emitting a
+             ;; 'call-with-deferred-observers' call for each 'define-public*'
+             ;; instance, which is not only pointless but also contributes to
+             ;; code bloat and to load-time overhead in package modules.
+             (eval-when (expand load eval)
+               (module-export! (current-module) '(name)))))))))
 
 (define-syntax validate-texinfo
   (let ((validate? (getenv "GUIX_UNINSTALLED")))
-- 
2.41.0





Information forwarded to guix@HIDDEN, dev@HIDDEN, ludo@HIDDEN, othacehe@HIDDEN, rekado@HIDDEN, zimon.toutoune@HIDDEN, me@HIDDEN, guix-patches@HIDDEN:
bug#70398; Package guix-patches. Full text available.

Message received at 70398 <at> debbugs.gnu.org:


Received: (at 70398) by debbugs.gnu.org; 15 Apr 2024 15:38:21 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Apr 15 11:38:21 2024
Received: from localhost ([127.0.0.1]:37902 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rwOPU-0007uG-4I
	for submit <at> debbugs.gnu.org; Mon, 15 Apr 2024 11:38:21 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:60120)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1rwOPG-0007q0-HP
 for 70398 <at> debbugs.gnu.org; Mon, 15 Apr 2024 11:38:07 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <ludo@HIDDEN>)
 id 1rwOOy-0001UD-Fs; Mon, 15 Apr 2024 11:37:48 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-Version:References:In-Reply-To:Date:Subject:To:
 From; bh=1ICemtEEU1CmhNI7sFvE9ToBYNnUj1tEAAedcWXFjdc=; b=a+XL1m1yYrn9FByrq3AK
 ExBKiCq26aGxG9x/uxLvEA8Zy0/IIE/yWjt5NI+Q9TUix6yXVKvtjqpcQzBlkNh/t1UPkvAkabdLt
 YbnWn9EbsyzoyMmY28zQwI6GitrKoXTTyK173Se8YR4W47wDU8jpm5MDhz2YSxr/XOwBIHvTWem1r
 DY2vI8jRqXSSptky1jf9ob335zNy11Y0TAL1uLoVzbC8uhp63r8hfq+WDQC+IMoTYqDgW5OcnEn31
 U/daNdBICHrViFAN1WLMGGfA/gLeGhTXWyjbQFQlv2DZt4kbEc9Ttv3UP/t1+W4iwKZOG9aygnNqo
 fbqwh+QfZ4Ej7Q==;
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@HIDDEN>
To: 70398 <at> debbugs.gnu.org
Subject: [PATCH 3/5] records: Do not inline the constructor.
Date: Mon, 15 Apr 2024 17:37:05 +0200
Message-ID: <f09974509ebd1aeffed10a2db08720bcedd039b5.1713194148.git.ludo@HIDDEN>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <cover.1713194148.git.ludo@HIDDEN>
References: <cover.1713194148.git.ludo@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
X-Debbugs-Cc: Christopher Baines <guix@HIDDEN>, Josselin Poiret <dev@HIDDEN>, Ludovic Courtès <ludo@HIDDEN>, Mathieu Othacehe <othacehe@HIDDEN>, Ricardo Wurmus <rekado@HIDDEN>, Simon Tournier <zimon.toutoune@HIDDEN>, Tobias Geerinckx-Rice <me@HIDDEN>
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 70398
Cc: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Struct initialization uses one instruction per field, which contributes
to code bloat in the case of package modules.  With this change, the
‘.rtl-text’ section of ‘gnu/packages/tex.go’ goes from 7,334,508 B to
6,356,592 B (-13%; -7% on the whole file size), which alone is still
larger than the source file (4,2 MB).

* guix/records.scm (make-syntactic-constructor)[record-inheritance]: Use
CTOR instead of ‘make-struct/no-tail’.
Pass ABI-COOKIE as the first argument to CTOR.
(define-record-type*): Define CTOR-PROCEDURE and pass it to
‘make-syntactic-constructor’.

Change-Id: Ifd7b4e884e9fbf21c43fb4c3ad963126ef5cb476
---
 guix/records.scm | 47 +++++++++++++++++++++++++++++++++--------------
 1 file changed, 33 insertions(+), 14 deletions(-)

diff --git a/guix/records.scm b/guix/records.scm
index 48637ea0a4..dca1e3c2e7 100644
--- a/guix/records.scm
+++ b/guix/records.scm
@@ -164,16 +164,16 @@ (define-syntax make-syntactic-constructor
                (record-error 'name s "extraneous field initializers ~a"
                              unexpected)))
 
-           #`(make-struct/no-tail type
-                          #,@(map (lambda (field index)
-                                    (or (field-inherited-value field)
-                                        (if (innate-field? field)
-                                            (wrap-field-value
-                                             field (field-default-value field))
-                                            #`(struct-ref #,orig-record
-                                                          #,index))))
-                                  '(expected ...)
-                                  (iota (length '(expected ...))))))
+           #`(ctor #,abi-cookie
+                   #,@(map (lambda (field index)
+                             (or (field-inherited-value field)
+                                 (if (innate-field? field)
+                                     (wrap-field-value
+                                      field (field-default-value field))
+                                     #`(struct-ref #,orig-record
+                                                   #,index))))
+                           '(expected ...)
+                           (iota (length '(expected ...))))))
 
          (define (thunked-field? f)
            (memq (syntax->datum f) 'thunked))
@@ -249,8 +249,8 @@ (define-syntax make-syntactic-constructor
                 (cond ((lset= eq? fields '(expected ...))
                        #`(let* #,(field-bindings
                                   #'((field value) (... ...)))
-                           #,(abi-check #'type abi-cookie)
-                           (ctor #,@(map field-value '(expected ...)))))
+                           (ctor #,abi-cookie
+                                 #,@(map field-value '(expected ...)))))
                       ((pair? (lset-difference eq? fields
                                                '(expected ...)))
                        (record-error 'name s
@@ -435,7 +435,13 @@ (define-syntax define-record-type*
               (sanitizers (filter-map field-sanitizer
                                       #'((field properties ...) ...)))
               (cookie     (compute-abi-cookie field-spec)))
-         (with-syntax (((field-spec* ...)
+         (with-syntax ((ctor-procedure
+                        (datum->syntax
+                         #'ctor
+                         (symbol-append (string->symbol " %")
+                                        (syntax->datum #'ctor)
+                                        '-procedure/abi-check)))
+                       ((field-spec* ...)
                         (map field-spec->srfi-9 field-spec))
                        ((field-type ...)
                         (map (match-lambda
@@ -502,7 +508,20 @@ (define-syntax define-record-type*
                                                   #'id)))))))
                thunked-field-accessor ...
                delayed-field-accessor ...
-               (make-syntactic-constructor type syntactic-ctor ctor
+
+               (define ctor-procedure
+                 ;; This procedure is *not* inlined, to reduce code bloat
+                 ;; (struct initialization takes at least one instruction per
+                 ;; field).
+                 (case-lambda
+                   ((cookie field ...)
+                    (unless (eq? cookie #,cookie)
+                      (record-abi-mismatch-error type))
+                    (ctor field ...))
+                   (_
+                    (record-abi-mismatch-error type))))
+
+               (make-syntactic-constructor type syntactic-ctor ctor-procedure
                                            (field ...)
                                            #:abi-cookie #,cookie
                                            #:thunked #,thunked
-- 
2.41.0





Information forwarded to guix@HIDDEN, dev@HIDDEN, ludo@HIDDEN, othacehe@HIDDEN, rekado@HIDDEN, zimon.toutoune@HIDDEN, me@HIDDEN, guix-patches@HIDDEN:
bug#70398; Package guix-patches. Full text available.

Message received at 70398 <at> debbugs.gnu.org:


Received: (at 70398) by debbugs.gnu.org; 15 Apr 2024 15:38:12 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Apr 15 11:38:12 2024
Received: from localhost ([127.0.0.1]:37900 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rwOPI-0007s0-BG
	for submit <at> debbugs.gnu.org; Mon, 15 Apr 2024 11:38:11 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:60108)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1rwOPE-0007pw-TS
 for 70398 <at> debbugs.gnu.org; Mon, 15 Apr 2024 11:38:06 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <ludo@HIDDEN>)
 id 1rwOOw-0001Tq-MX; Mon, 15 Apr 2024 11:37:47 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-Version:References:In-Reply-To:Date:Subject:To:
 From; bh=EXkmOYq5C91w+rjqInPiIAPtMC1u/Ul7/eM3xbS+R04=; b=A8fPfDUYuwSzjAJXp8yN
 mdqlPMtnExmgwydCqqNrIVYH8JXBIzUnIjN69VbT0TcM6dpBQoZx8++b9j5Ny2j065jMbp4QOcchP
 JzBZBC3f8KuVx9xxg+mcobMSzQ3M+SYjQMx8tuU10tB1k03DSYi1jFeA9vbbGRQeyPmOXEhcniC5J
 A6DEVT9aOXgJs6koya+jiIXJTENq0r+ZC127FmVE1S/QNxuAPWX0CVAGvPgau6hVm+uff42Jvszc1
 wUTjoK/kgwjBNlGuJyVST0e6siw2O7I95evtW5JIgNtf6TdS9wXiYngzAw1747KiFX4cbOenqcORV
 DFUuBbSwvdsgZA==;
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@HIDDEN>
To: 70398 <at> debbugs.gnu.org
Subject: [PATCH 1/5] records: Do not inline throws for ABI mismatches.
Date: Mon, 15 Apr 2024 17:37:03 +0200
Message-ID: <a169679444f30d2d10c71438a00167c857ca50ef.1713194148.git.ludo@HIDDEN>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <cover.1713194148.git.ludo@HIDDEN>
References: <cover.1713194148.git.ludo@HIDDEN>
MIME-Version: 1.0
X-Debbugs-Cc: Christopher Baines <guix@HIDDEN>, Josselin Poiret <dev@HIDDEN>, Ludovic Courtès <ludo@HIDDEN>, Mathieu Othacehe <othacehe@HIDDEN>, Ricardo Wurmus <rekado@HIDDEN>, Simon Tournier <zimon.toutoune@HIDDEN>, Tobias Geerinckx-Rice <me@HIDDEN>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 70398
Cc: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

* guix/records.scm (record-abi-mismatch-error): New procedure.
(abi-check): Use it.

Change-Id: I49936599716e117b8fbf26fb9d8f462bbbb8e88b
---
 guix/records.scm | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/guix/records.scm b/guix/records.scm
index f4d12a861d..48637ea0a4 100644
--- a/guix/records.scm
+++ b/guix/records.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012-2023 Ludovic Courtès <ludo@HIDDEN>
+;;; Copyright © 2012-2024 Ludovic Courtès <ludo@HIDDEN>
 ;;; Copyright © 2018 Mark H Weaver <mhw@HIDDEN>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -61,6 +61,11 @@ (define-syntax record-error
         (string-append "% " (symbol->string type-name)
                        " abi-cookie")))))
 
+  (define (record-abi-mismatch-error type)
+    (throw 'record-abi-mismatch-error 'abi-check
+           "~a: record ABI mismatch; recompilation needed"
+           (list type) '()))
+
   (define (abi-check type cookie)
     "Return syntax that checks that the current \"application binary
 interface\" (ABI) for TYPE is equal to COOKIE."
@@ -68,9 +73,7 @@ (define-syntax record-error
       #`(unless (eq? current-abi #,cookie)
           ;; The source file where this exception is thrown must be
           ;; recompiled.
-          (throw 'record-abi-mismatch-error 'abi-check
-                 "~a: record ABI mismatch; recompilation needed"
-                 (list #,type) '()))))
+          (record-abi-mismatch-error #,type))))
 
   (define* (report-invalid-field-specifier name bindings
                                            #:optional parent-form)
-- 
2.41.0





Information forwarded to guix@HIDDEN, dev@HIDDEN, ludo@HIDDEN, othacehe@HIDDEN, rekado@HIDDEN, zimon.toutoune@HIDDEN, me@HIDDEN, guix-patches@HIDDEN:
bug#70398; Package guix-patches. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 15 Apr 2024 15:28:24 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Apr 15 11:28:23 2024
Received: from localhost ([127.0.0.1]:37820 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rwOFm-0006Yn-JW
	for submit <at> debbugs.gnu.org; Mon, 15 Apr 2024 11:28:23 -0400
Received: from lists.gnu.org ([2001:470:142::17]:41118)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1rwOFe-0006WP-H2
 for submit <at> debbugs.gnu.org; Mon, 15 Apr 2024 11:28:14 -0400
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 <ludo@HIDDEN>) id 1rwOFJ-0003y2-Rq
 for guix-patches@HIDDEN; Mon, 15 Apr 2024 11:27:51 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <ludo@HIDDEN>)
 id 1rwOFJ-0008D1-Im; Mon, 15 Apr 2024 11:27:49 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-Version:Date:Subject:To:From:in-reply-to:
 references; bh=1L4kkuE/4SdugaIqHE3X4BsGqWFLTdC9ewEbqqXRPJg=; b=ODHFKCdZg1ohFA
 p0jcq9xpL7u6M3md3IOtn5mDShABJmdfebQOi6acC0QJtqhSuPgO3c3qT5Pgs9IWi/ln6v2qHmRz8
 o3cVdxV5clH8psZ7zwWABR/MnRGp+r0i5JUri48nnzleuG4RRZA3q3nsvaY5jxJ/zyErSMmc5o+HZ
 iVDUdBWl4VFQxpEfdlBnFOkI6cN8HD2kCJqELCWu01URo+FckCROYhDeg72exvKVHvd4Mf9lFGm51
 BS59qFdPEfs/DlppgtEAoGTHyDJAAmhFeiIR2wjczIvloEWxEZ7HbEl1GZ6mr7K+UKETv6Aj20K1F
 oUM4ill+pgAumYFMxK1w==;
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@HIDDEN>
To: guix-patches@HIDDEN
Subject: [PATCH 0/5] Reduce the size of gnu/packages/*.go files
Date: Mon, 15 Apr 2024 17:27:36 +0200
Message-ID: <cover.1713194148.git.ludo@HIDDEN>
X-Mailer: git-send-email 2.41.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
X-Debbugs-Cc: Christopher Baines <guix@HIDDEN>, Josselin Poiret <dev@HIDDEN>, Ludovic Courtès <ludo@HIDDEN>, Mathieu Othacehe <othacehe@HIDDEN>, Ricardo Wurmus <rekado@HIDDEN>, Simon Tournier <zimon.toutoune@HIDDEN>, Tobias Geerinckx-Rice <me@HIDDEN>
Content-Transfer-Encoding: 8bit
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: submit
Cc: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Hello!

As a followup to <https://issues.guix.gnu.org/70280>, I started looking
into the size of Guix itself, and in particular that of gnu/packages/*.go
files.

What follows is a bunch of tricks to reduce code bloat, achieving ~14%
reduction in the size of .go files (~18% if we look at gnu/packages
alone).

About 60% of those files are in the 64–128 KiB range.  Since ELF sections
are currently 64 KiB-aligned (see ‘*lcm-page-size*’ in Guile), we would
save space by ensuring these are sparse files.  To do that, we’ll need to
detect holes when restoring nars and/or to change the nar format to
preserve holes, while also ensuring that when the daemon copies files
around, it also preserves holes.  Work for later!

Thoughts?

Ludo’.

Ludovic Courtès (5):
  records: Do not inline throws for ABI mismatches.
  packages: Reduce bloat induced by ‘sanitize-inputs’.
  records: Do not inline the constructor.
  packages: ‘define-public’ replacement calls ‘module-export!’ directly.
  packages: Reduce code bloat due to list allocation in input fields.

 guix/packages.scm | 53 +++++++++++++++++++++++++++++++++++--------
 guix/records.scm  | 58 ++++++++++++++++++++++++++++++++---------------
 2 files changed, 83 insertions(+), 28 deletions(-)


base-commit: cd45294d576975a3bff2f755764a3f46f09ea6f9
-- 
2.41.0





Acknowledgement sent to Ludovic Courtès <ludo@HIDDEN>:
New bug report received and forwarded. Copy sent to guix@HIDDEN, dev@HIDDEN, ludo@HIDDEN, othacehe@HIDDEN, rekado@HIDDEN, zimon.toutoune@HIDDEN, me@HIDDEN, guix-patches@HIDDEN. Full text available.
Report forwarded to guix@HIDDEN, dev@HIDDEN, ludo@HIDDEN, othacehe@HIDDEN, rekado@HIDDEN, zimon.toutoune@HIDDEN, me@HIDDEN, guix-patches@HIDDEN:
bug#70398; Package guix-patches. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Mon, 15 Apr 2024 20:45:04 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.