Received: from mx0.gmx.net (mx0.gmx.net [213.165.64.100]) by h1439878.stratoserver.net (8.14.2/8.14.2/Debian-2build1) with SMTP id o1FBnpCr017906 for ; Mon, 15 Feb 2010 12:49:52 +0100 Received: (qmail 7348 invoked by alias); 15 Feb 2010 11:49:46 -0000 Delivered-To: GMX delivery to rainer.schoepf@gmx.net Received: (qmail invoked by alias); 15 Feb 2010 11:49:45 -0000 Received: from relay2.uni-heidelberg.de (EHLO relay2.uni-heidelberg.de) [129.206.210.211] by mx0.gmx.net (mx027) with SMTP; 15 Feb 2010 12:49:45 +0100 Received: from listserv.uni-heidelberg.de (listserv.uni-heidelberg.de [129.206.100.94]) by relay2.uni-heidelberg.de (8.13.8/8.13.8) with ESMTP id o1FBlCht005416 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 15 Feb 2010 12:47:12 +0100 Received: from listserv.uni-heidelberg.de (localhost.localdomain [127.0.0.1]) by listserv.uni-heidelberg.de (8.13.1/8.13.1) with ESMTP id o1EN15JH028587; Mon, 15 Feb 2010 12:47:13 +0100 Received: by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 16.0) with spool id 381577 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Mon, 15 Feb 2010 12:47:13 +0100 Received: from relay.uni-heidelberg.de (relay.uni-heidelberg.de [129.206.100.212]) by listserv.uni-heidelberg.de (8.13.1/8.13.1) with ESMTP id o1FBlDVu024136 for ; Mon, 15 Feb 2010 12:47:13 +0100 Received: from moutng.kundenserver.de (moutng.kundenserver.de [212.227.126.171]) by relay.uni-heidelberg.de (8.14.1/8.14.1) with ESMTP id o1FBlAHX025796 for ; Mon, 15 Feb 2010 12:47:13 +0100 Received: from morse.mittelbach-online.de (p54A860A3.dip.t-dialin.net [84.168.96.163]) by mrelayeu.kundenserver.de (node=mreu0) with ESMTP (Nemesis) id 0M9LBa-1NXc0p36wY-00CMWX; Mon, 15 Feb 2010 12:47:09 +0100 Received: by morse.mittelbach-online.de (Postfix, from userid 501) id E34216E622; Mon, 15 Feb 2010 12:47:06 +0100 (CET) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit References: <6EBBC8A1-0CB0-451D-AF0A-3EF2A41C0B52@YAHOO.DE> X-Mailer: VM 7.19 under Emacs 21.3.1 X-Provags-ID: V01U2FsdGVkX18xMZmijw2sj6bmQ7Xpe6fWiHRJp5e0LgXdQQF uQ7vmhRBRwKVi1sJVldpVP1JiO8+Mc/X7Q6o4wDUJ8an1qeVrZ kLyanvQzC99gYNvQx2e8w== X-Spam-Whitelist-Provider: Message-ID: <19321.13370.889338.543600@morse.mittelbach-online.de> Date: Mon, 15 Feb 2010 12:47:06 +0100 Reply-To: Mailing list for the LaTeX3 project Sender: Mailing list for the LaTeX3 project From: Frank Mittelbach Subject: Re: Assorted suggestions pt. 1 - scratch variables To: LATEX-L@listserv.uni-heidelberg.de In-Reply-To: <6EBBC8A1-0CB0-451D-AF0A-3EF2A41C0B52@YAHOO.DE> Precedence: list List-Help: , List-Unsubscribe: List-Subscribe: List-Owner: List-Archive: X-GMX-Antispam: 0 (Mail was not recognized as spam); Detail=5D7Q89H36p6i75npGen84eVAEFK/syJmiNoEBJhgjYKpglu1TZLLw7xMZnJMXwBFK0zrU udEInhYyaWAzwtcf5K2pCdD+gZ2/z4PnBLkwiyoeaAaBw0w/R9PyND+sdPA0hHLnvJj8Cr0sTNjw /Cn3g==V1; X-Resent-By: Forwarder X-Resent-For: rainer.schoepf@gmx.net X-Resent-To: rainer@rainer-schoepf.de X-Scanned-By: MIMEDefang 2.63 on 85.214.41.38 Status: R X-Status: X-Keywords: X-UID: 6277 Philipp Stephani writes: > - the scratch variables have already been mentioned in another thread. I > - think that a few scratch variables guaranteed not to be touched by the > - kernel are useful, if combined with a warning like "The kernel defines > - the following scratch variables: ... They are guaranteed to never be used > - by the kernel. However, calling other packages' macros might affect them > - since they are shared by all packages. So you must not rely on these > - variables being unaltered when calling macros that are not defined by the > - kernel. In the latter case, use your own private variables. As an > - example, a package `foo' might define private scratch variables > - `\l_foo_tmpa_tl' and so on." on the whole I think we should abandom general purpose scratch registers as they are never ever safe so I propose we use kernel only scratch registers/tls that we document as "do not use in your own code" - that should have been the case in the first place really, we already did that for 2e, no idea why that got forgotten/changed In addition we can either totally drop the scratch registers or keep those already in use typically, but clearly document that it is safer not to use such things but instead use some that are local to the package, eg \l_foo_tmpa_tl as otherwise one can't make any assumptions on their content. In theory I would be for dropping them completely, however, people will use such fine names as \l_tmpa_tl if only because they always did so in the past, so it might be better to keep them, but better document the restrictions coming with them. frank