From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Richard Stallman Newsgroups: gmane.emacs.devel Subject: Re: RFC: `macro-eval' Date: Thu, 31 Aug 2006 03:33:34 -0400 Message-ID: References: <43976.128.165.123.18.1156957903.squirrel@webmail.lanl.gov> Reply-To: rms@gnu.org NNTP-Posting-Host: main.gmane.org Content-Type: text/plain; charset=ISO-8859-15 X-Trace: sea.gmane.org 1157009699 16039 80.91.229.2 (31 Aug 2006 07:34:59 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Thu, 31 Aug 2006 07:34:59 +0000 (UTC) Cc: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Aug 31 09:34:59 2006 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by ciao.gmane.org with esmtp (Exim 4.43) id 1GIh4h-0002fI-Jf for ged-emacs-devel@m.gmane.org; Thu, 31 Aug 2006 09:34:55 +0200 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1GIh4h-0002Hj-1R for ged-emacs-devel@m.gmane.org; Thu, 31 Aug 2006 03:34:55 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1GIh3S-0001ey-GS for emacs-devel@gnu.org; Thu, 31 Aug 2006 03:33:38 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1GIh3Q-0001eM-Or for emacs-devel@gnu.org; Thu, 31 Aug 2006 03:33:37 -0400 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1GIh3Q-0001eG-82 for emacs-devel@gnu.org; Thu, 31 Aug 2006 03:33:36 -0400 Original-Received: from [199.232.76.164] (helo=fencepost.gnu.org) by monty-python.gnu.org with esmtp (Exim 4.52) id 1GIhCz-0001MN-CQ for emacs-devel@gnu.org; Thu, 31 Aug 2006 03:43:29 -0400 Original-Received: from rms by fencepost.gnu.org with local (Exim 4.34) id 1GIh3O-0008Hd-Oj; Thu, 31 Aug 2006 03:33:34 -0400 Original-To: herring@lanl.gov In-reply-to: <43976.128.165.123.18.1156957903.squirrel@webmail.lanl.gov> (herring@lanl.gov) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:59146 Archived-At: I wrote a macro to automatically generate the boilerplate "delayed evaluation with uninterned symbol" code needed in many macros (and described at (elisp)Surprising Local Vars), which I present for comment. Actually we recently decided to stop using that method for two important macros, dotimes and dolist, because it turns out to be rather wasteful to generate all those symbols. We concluded that it is better, overall, to use an interned symbol so that only one symbol would be needed. We gave the interned symbol a name that users will tend not to use. Maybe that means we should change the recommendations in the Lisp Manual. However, for other macros that are used less often, the recommendation there may still be best. In many other Lisp implementations the compiler would get rid of such variables, so the recommended technique costs nothing. But the Emacs Lisp byte compiler can't do that, because Emacs bytecode has no anonymous stack slots. As far as my testing shows, it works both in interpreted and compiled environments, with the one caveat that, as it uses `progv', it both requires the cl library at runtime That is a fatal flaw for this implementation.