Return-Path: Delivered-To: rainer Received: from h2774747.stratoserver.net (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) by h2774747.stratoserver.net (Dovecot) with LMTP id Z+gGKS9WGV8FSQAA4+3H6A for ; Thu, 23 Jul 2020 11:19:43 +0200 Return-Path: Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) by h2774747.stratoserver.net (8.15.2/8.15.2/Debian-3) with ESMTP id 06N9JgOD018691 for ; Thu, 23 Jul 2020 11:19:43 +0200 Received: from relay2.uni-heidelberg.de ([129.206.119.212]) by mx-ha.gmx.net (mxgmx116 [212.227.17.5]) with ESMTP (Nemesis) id 1MD8bR-1k765p2yDR-0096WQ for ; Thu, 23 Jul 2020 11:19:36 +0200 Received: from listserv.uni-heidelberg.de ([129.206.100.94]) by relay2.uni-heidelberg.de with ESMTP; 23 Jul 2020 11:19:37 +0200 Received: from listserv (localhost [127.0.0.1]) by listserv.uni-heidelberg.de (Postfix) with ESMTP id B9D1812862C; Thu, 23 Jul 2020 11:19:28 +0200 (CEST) Received: by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 17.0) with spool id 44350598 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Thu, 23 Jul 2020 11:19:28 +0200 Delivered-To: LATEX-L@listserv.uni-heidelberg.de Received: from relay2.uni-heidelberg.de (relay2.uni-heidelberg.de [129.206.119.212]) by listserv.uni-heidelberg.de (Postfix) with ESMTP id 8FFAE1284CF for ; Thu, 23 Jul 2020 11:19:28 +0200 (CEST) X-IronPort-MID: 72158310 X-IronPort-RemoteIP: 209.85.221.43 X-IronPort-SenderGroup: UNKNOWNLIST X-IronPort-MailFlowPolicy: $ACCEPTED X-IronPort-Reputation: 2.8 IronPort-PHdr: =?us-ascii?q?9a23=3AIkZ1Rh9IiUCvPv9uRHGN80YQeigqvan1NQcJ65?= =?us-ascii?q?0hzohDabmn44+7bByN//hphU6TG5jd6rdEhuvavqTqVHYPp5qM4zgZaJIZcR?= =?us-ascii?q?gDhI0NmhA4RtafABj5K+Xndyx8A95DW19513S8K05UHsnle1TI+Du56ngPGU?= =?us-ascii?q?a3LhJ7c8LyHIOalMGrz6a38pzXbR9PgW+/Zqh/NBXwsh/QuckKqY5lMKAwzB?= =?us-ascii?q?TSvnJSIaJdwiV1JgHbhA7ys+G3+pMr6CFMo7Qh+spHBL39ZLg9RKdEAS4ONm?= =?us-ascii?q?k04Ij0r0CGQ1fUoHQbVWoSn1xDBA2ctkPAU5z8szX3uq9G4AfBYZeka7cyVH?= =?us-ascii?q?zi9apvQQ6yzjoBNns5/WDbh8h6gbhU5h6s9VR5xMbPbYeZOeAbHOuVdM4GRW?= =?us-ascii?q?dHQsdaVjBQSoK6YYwVCuMdPOFe54DjrloKpBG6CEGiHuTqgjNPg3b32+U93Y?= =?us-ascii?q?FDWUnE2xctB9JIr27Vo9XpHKIVS+a0yqbT0TzZNbVd3nHg68mAcxwsp+2NQa?= =?us-ascii?q?MladDYmixNX0vOilSdr5CgPivAjLxc9TjGqbA6DKTz0D1vsQx6rzmxy915kI?= =?us-ascii?q?TNj5NPjE3C9GB5zYc5KNmyRVR0J9KpQ/4y/2mXMZV7RsQ6TiRmoiE/n/cEvo?= =?us-ascii?q?W2ZChM144myB7DQ/mAaY6J5B34SO+Le3FzgzR4e/js4nT6uVjl0eD6WsSuhR?= =?us-ascii?q?xIqTFIitmKqWoM2BzPws2AUP18+Ei6xT+VjUbY7adZIgpn8MiTY45kybk2mJ?= =?us-ascii?q?0JtE3FFSKjg0T6gpidcUA88/Sp4eDqO++0nJKXOo5qhw27CZwAwZDgU8I/NA?= =?us-ascii?q?VGH3KW/e2tjvv++0y8QLhLgvAymKTDv9bWKJZToKnxGAJT3os5jnT3Rz67zN?= =?us-ascii?q?QVm2UGJ1NZaVqGiYbuIVTHPPH/C7+2nV2tlD5hw/2OMKfmB93BKX3KkbGper?= =?us-ascii?q?gYiQYUyg0owMhfoY1OC74BPNr2XVX3tdrXFQMwKVbyyOGhFdY8noISVGSTA7?= =?us-ascii?q?OIZabbsFuG/OUqcIzuLMcevDfwLeRg5ua71ydo3w9AO/PzhN1LMyPwBPltLk?= =?us-ascii?q?SHbGC5mNoFGHZQ+Bc4TanqhVyOXDpZamy9Ga4xtVRZQMqrC5nOQoe1jfmPxi?= =?us-ascii?q?C+S9dUYXtLElDKDm3peIWYc/ILciSTJMB6jjUeD/6qTMk81lv90W2yg6oiNe?= =?us-ascii?q?fS9iAC4Njh08N4/+2Vigsz+jxoJ8GayWeMSW5vgmoSHXk92+ZiogYurzXLmb?= =?us-ascii?q?g9iPteG9tJ4vpPWQpvLp/QwdtxDNXqUx7AdNOEEQz0eNitDDAvQ950+OcgOB?= =?us-ascii?q?oiSfOliB2LnzCnB7YEzfqWAp1x8q/d03X1LctnxDDK2ftpiV5uWcZJOWC848?= =?us-ascii?q?w3vwHOG47ElVmYnKe2ZOwd2iDK7mKK0WuJuglRTgdxVazPWX1XaFHRqJz14U?= =?us-ascii?q?bLTrnmDrpCUEMJ0cmZNq5DccHkl31DTfbnfcvEOie/xzz2ChGPybeBKoHtfi?= =?us-ascii?q?RV3SnQDlQFjxFG/XuCMltbZG/pqGbfATpyUFP3Nhm0oK8u9TXhFBZyk1rZJ1?= =?us-ascii?q?ds3Le05BMP0OaRT/oChPQZviZkqzh1EFu51d/MBJyMqlkEHu0UbNUj7VNAzW?= =?us-ascii?q?+cuRZ6O8nqLad5i0YeNRttvkzuyz1yDZ9GkM4lt28j1lA0IqXezVALJFb6ld?= =?us-ascii?q?jgf6baLGX/5kXlc6nNxlTXy8qb4I8K4fU87kr55USnShFk/HJg3N1YlXCb49?= =?us-ascii?q?+ZaWhaGYK0WUEx+R9gorjcaSRo/ILY20pnNqysuyPD0dYkXbZ3+lObZ95adZ?= =?us-ascii?q?i8OkryHskdXZX8LeUrnx22dEtBMrwJsqEzOMyier2N36v5ZL88zgLjtnxO5c?= =?us-ascii?q?VG6mzJ7zB1ELaa2pEfxfCe0RCbXi2mylym9N30y9gdNGMiW1GnwC2hP7Z/I6?= =?us-ascii?q?h7fIIFE2CreZXlw9JkgZ/rVGVE/UT5QVgBntKqK0Kf?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0DsAQAuVRlfgCvdVdFgHQEBAQEJARI?= =?us-ascii?q?BBQUBQIFKgiN2VSMEN4QzkRiaIYERA1ULAQEBAQEBAQEBBwEYDQoEAQGECEQ?= =?us-ascii?q?CghUCHAYGNBMCAwEBAQMCBQEBBQEBAQIBAwMEFAEBCQ0JCCeFZQyFcgEBAQM?= =?us-ascii?q?BARARDwEFCAEBOA8LGAICJgICNAEFARwFDggBAR6DBAGCfA+gNYEEPYoydoE?= =?us-ascii?q?ygwEBAQWBMwGBFoNLgTcDBgkBCHwqhTlHgnaDfA+BTD+BOA+CLC4+gReBLhc?= =?us-ascii?q?CgSUFARECAW2CSYJgjyIIpgIpB4JggQgEC4c/hnWKDwUognuOLw0GjhSTb3+?= =?us-ascii?q?HQolWhmmEIQIKBwYPI4FHgQpwMxo0P4JpUBkNjh6DcYpXQDMCCSwCBgEHAQE?= =?us-ascii?q?DCY99AQE?= X-IronPort-AV: E=Sophos;i="5.75,386,1589234400"; d="scan'208";a="72158310" X-MGA-submission: =?us-ascii?q?MDHozdGnjwlpiS5LBryaa1mR2jgimzZU2zkjG/?= =?us-ascii?q?Uqht5UYbgmgN55dSESkcfCcY5GBU1axeYtlw0yT3vXBAHOwHFFfrRJw8?= =?us-ascii?q?VTSKqseWXBlDRpW6EccorXUaCtTmiBGvfYQLAFmPblloIKYqcW2yjvkj?= =?us-ascii?q?iAm+uecGTtz2dBIG9N1PZSFQ=3D=3D?= Received: from mail-wr1-f43.google.com ([209.85.221.43]) by relay2.uni-heidelberg.de with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 23 Jul 2020 11:19:29 +0200 Received: by mail-wr1-f43.google.com with SMTP id 88so4444561wrh.3 for ; Thu, 23 Jul 2020 02:19:28 -0700 (PDT) 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=/aVCUNilZ38uqkww9pWyi/I95Rlz497LZ/sdYS30J90=; b=KZzghFcb2qw0JtM3FMeEbYh+FzOzawrN0Om53TD2yfyNWNf/xCrW6UaFbjYpCqfggi pSXcPbcOv4RP/AwH62c8VSqx8AolYmEl1U4MT9JZhO+LCFF2yFuj6LxvTB91Eh1zYgmN BaW+y2u9zUNXAnhLRtlKrxHyLaB9GcrHOQn7fvx/AHQ+vWLLwODZdFm/vQoEBW25zwhy Aaae/5P3ZpIqrYQvRfcznSL7UkIMMy91Dxc9jH5KCAGLL30/7HczaMmgA9jYj5KZX2lv D0krO4OOgiJhdpOqjR8cp7VCwJFFBfuUvX8a7J6rur0Gd/rJcVIuYVSyQKFTvuJZdr6t P9Dw== X-Gm-Message-State: AOAM533ROVXJ+nRm0nBcG+54rDllbj14xRmG7VEHINHddUXQAUy5j/N5 l9As9jxcUTf2TowTnSlv+1HkdHDuUAI= X-Google-Smtp-Source: ABdhPJzxGczwTguUxqcDcI3W6u8SXWJ9gDnhYw8Omo2qtQYzbyrF0eFBf02k8Uoros/XEML3/b4+MQ== X-Received: by 2002:adf:bc4b:: with SMTP id a11mr3005154wrh.381.1595495967169; Thu, 23 Jul 2020 02:19:27 -0700 (PDT) Received: from [139.222.23.136] (eduroam-23-136.uea.ac.uk. [139.222.23.136]) by smtp.gmail.com with ESMTPSA id z6sm3253590wrs.36.2020.07.23.02.19.26 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 23 Jul 2020 02:19:26 -0700 (PDT) References: <20200723020053.jq6lnwl7k23htouz@vento15post8> User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-GB Content-Transfer-Encoding: 8bit Message-ID: <8fffc89a-7a03-051d-9dfd-264a94af6f32@morningstar2.co.uk> Date: Thu, 23 Jul 2020 10:19:24 +0100 Reply-To: Mailing list for the LaTeX3 project Sender: Mailing list for the LaTeX3 project From: Joseph Wright Subject: Re: Guidelines on the new hook management To: LATEX-L@LISTSERV.UNI-HEIDELBERG.DE In-Reply-To: <20200723020053.jq6lnwl7k23htouz@vento15post8> Precedence: list List-Help: , List-Unsubscribe: List-Subscribe: List-Owner: List-Archive: Envelope-To: X-GMX-Antispam: 0 (Mail was not recognized as spam); Detail=V3; X-Spam-Flag: NO X-UI-Filterresults: notjunk:1;V03:K0:gszCya2u300=:i4UU0PHZL07lONJV9KhQPFIx4q 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 I9O8lQ5+/m5qKLIBIHj/ADg== X-UI-Loop:V01:fMIPfx7ZCrk=:XUFBDvwMvZI0H1Z8O0cPwRdac/bVV2T8ptZhRnRXJ4g= X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:FOiXtXkPg8M=:6WxIYuiEYnuBu2xkOxw2wM 6Xys+GYy6mtUfYd13UMdCQhMMqlPqZ6Z9Mop2d8hUZFdchvCz4HgTV9lki4d0TgllJGylRXgx B4BCbtMXmhP0hdO5O3lLhB7iY6bbnUFLYsXjexk+CMVzaN8g1Be1Bv14JfUPGOiGdCabqcTkB PVlCSaCIWGrjI3XuN3vmPkZpRmAHftpVOK88nUhMChr6MxIxPWa906EeZlbgus2F938M9xI8v 1c/11K3M+Y9iU6f3imeDFbmg/+wytocTe37dEH9JBmzzcrEAKlQvqX+OYNCqOYF6XpsPer7Yn j1r8JntlLiql4Ctpda+OkqpMCAN5Zb2Pa3tNz9QmHRQbfWcpVo3sWOuEijxbJdGEphDNKf85Y 3B822Wnpsb7gvZuIb+bp2qonOVXIQTcalw+JgBPD8rIHDrROTY1t64TyVFtGl3ZjX69XJv8xO XriUpADlb96e4mkiLJRoEegml2JHCFE= X-Scanned-By: MIMEDefang 2.78 on 81.169.212.23 Status: R X-Status: X-Keywords: X-UID: 8211 On 23/07/2020 03:00, Henri Menke wrote: > Dear list, > > Inspired by issue #900 on the PGF/TikZ repo [1], I'd like to kick off > the discussion on how to correctly integrate the new hook management > system into existing LaTeX package codebases. > > In a naïve adaptation, two code branches would be maintained, with and > without the new hook management. This is quite tedious for maintainers, > especially when trying to integrate this properly into existing CI. > > For me as PGF/TikZ maintainer it is also of paramount importance to > avoid anything similar to the oberdiek-split and iftex-merge > clusterfucks. Back then I had to fix the CI every other day without any > guidance whatsoever from upstream, which was a massive sink of my time. > > Obviously there has to be some transition at some point. Hence I'm > asking how to properly integrate and coordinate the migration this time. > > Kind regards, > Henri > > [1] https://github.com/pgf-tikz/pgf/issues/900 Hello Henri, First, an paragraph aside about the oberdiek split and iftex merge changes. Both of those were mainly issues in TeX Live packaging, which is separate from the case here, which is about the macro layer. As such, the impact of the earlier changes was mainly felt by package authors using CI set-ups. There are a couple of ways of setting up a CI: you can have a frozen set of packages (libraries) available, or you can update to see 'what your users get'. Like me, you've gone for the latter: there are advantages to both, but updating does leave you at the mercy of third-party changes. One could I guess set up parallel tests to 'focus in' on where the issues come from, but that is likely overkill here. (The number of packages to track is sufficiently small to know where things come from.) On the matter in hand, all that is needed is to test for the new mechanism being available, and to use it when it is. That is potentially as simple as \@ifundefined{AddToHook} { % Old code } {\AddToHook{...}{...}} if you are using LaTeX, or for code that must work format-neutral \long\def\@firstoftwo#1#2{#1} \long\def\@secondoftwo#1#2{#2} \ifx\AddToHook\undefined \expandafter\@firstoftwo \else \expandafter\@secondoftwo \fi { % Old code } {\AddToHook{...}{...}} (I'll cover the possible targets for \AddToHook in a separate email, as it goes with the tex4ht mail in this thread). I've used the \@firstoftwo approach here as I'm allowing for the 'old code' containing unbalanced conditionals. One might of course define the hook 'payload' in a macro and do something like \protected\def\my@hook@payload{...} \@ifundefined{AddToHook} { \g@addto@macro\document{\my@hook@payload}% } {\AddToHook{begindocument/end}{\my@hook@payload}} I've already adjusted beamer in light of the above need, see https://github.com/josephwright/beamer/commit/877c44cc5fd32ef0736fbe66f88a53995c8e1850: beamer used to mess with \document, not with \shipout. Joseph