From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Drew Adams Newsgroups: gmane.emacs.devel Subject: RE: Emacs 26.1 release branch created Date: Tue, 26 Sep 2017 13:33:53 -0700 (PDT) Message-ID: <15e83da5-6296-4ae3-949f-bb5b892db9bc@default> References: <20170922193511.GC7229@ACM> <20170922220700.GD7229@ACM> <20170924143939.GC5725@ACM> <20170924194139.GA6793@ACM> <20170925190357.GA4651@ACM> <855b1231-2279-4fd7-a2d6-be65435bb8be@default> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="__1506458035025139855abhmp0001.oracle.com" X-Trace: blaine.gmane.org 1506458063 24326 195.159.176.226 (26 Sep 2017 20:34:23 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Tue, 26 Sep 2017 20:34:23 +0000 (UTC) To: Philipp Stephani , Paul Eggert , Alan Mackenzie , emacs-devel@gnu.org, Eli Zaretskii , rms@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Sep 26 22:34:19 2017 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dwwYZ-0005m1-Ai for ged-emacs-devel@m.gmane.org; Tue, 26 Sep 2017 22:34:15 +0200 Original-Received: from localhost ([::1]:51058 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dwwYg-00056K-GI for ged-emacs-devel@m.gmane.org; Tue, 26 Sep 2017 16:34:22 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:49680) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dwwYY-00056B-JY for emacs-devel@gnu.org; Tue, 26 Sep 2017 16:34:15 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dwwYX-0005lr-HO for emacs-devel@gnu.org; Tue, 26 Sep 2017 16:34:14 -0400 Original-Received: from userp1040.oracle.com ([156.151.31.81]:19439) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dwwYS-0005iU-PW; Tue, 26 Sep 2017 16:34:09 -0400 Original-Received: from userv0022.oracle.com (userv0022.oracle.com [156.151.31.74]) by userp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id v8QKXv1f022991 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 26 Sep 2017 20:33:57 GMT Original-Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by userv0022.oracle.com (8.14.4/8.14.4) with ESMTP id v8QKXt5w032709 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 26 Sep 2017 20:33:56 GMT Original-Received: from abhmp0001.oracle.com (abhmp0001.oracle.com [141.146.116.7]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id v8QKXtrR031532; Tue, 26 Sep 2017 20:33:55 GMT In-Reply-To: X-Priority: 3 X-Mailer: Oracle Beehive Extensions for Outlook 2.0.1.9.1 (1003210) [OL 12.0.6776.5000 (x86)] X-Source-IP: userv0022.oracle.com [156.151.31.74] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4.x-2.6.x [generic] [fuzzy] X-Received-From: 156.151.31.81 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:218811 Archived-At: --__1506458035025139855abhmp0001.oracle.com Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Uh, let-binding dynamic variables is as old as the hills. It's older than Emacs (and that's saying something). =C2=A0 It's still no good. Dynamic variables are global mutable state, with all it= s downsides. =C2=A0 Of course they are. With all their upsides and downsides. Nothing new here. =C2=A0 Early Lisps had only dynamic binding because people didn't know better. But= now we know that global mutable state is almost always undesirable and avo= id id wherever we can. =C2=A0 There's nothing new about knowing that global mutable state can be problema= tic, both for users and language optimizers. Old as the sea. =C2=A0 HYPERLINK "http://library.readscheme.org/page1.html"Lexical binding for Lis= p was available before Emacs Lisp. It was actively discussed in Lisp circle= s at the time, in particular in the context of designing Common Lisp. I'm s= ure RMS was quite well aware of it - its advantages as well as its limitati= ons. =C2=A0 He used dynamic binding for Emacs not because he "didn't know better". In t= he article I cited he tells you clearly HYPERLINK "https://www.gnu.org/soft= ware/emacs/emacs-paper.html#SEC15"why dynamic binding is important ("vital"= was the word he used) for an application like Emacs. Those reasons are jus= t as valid today as when they were written. =C2=A0 But you're free to propose that Emacs Lisp should not have user options and= other global variables. =C2=A0 ("Now we know", indeed. Such hubris.) --__1506458035025139855abhmp0001.oracle.com Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable

Uh, let-binding dynami= c variables is as old as the hills.
It's older than Emacs (and that's sa= ying something).

=  

It's still no good. Dynamic= variables are global mutable state, with all its downsides.

=

 

Of course they are. With all their upsides and downsides= . Nothing new here.

 

Early Lisps ha= d only dynamic binding because people didn't know better. But now= we know that global mutable state is almost always undesirable and avo= id id wherever we can.

=  

There's nothing = new about knowing that global mutable state can be problematic, both fo= r users and language optimizers. Old as the sea.

 

Lexical = binding for Lisp was available before Emacs Lisp. It was activel= y discussed in Lisp circles at the time, in particular in the context of de= signing Common Lisp. I'm sure RMS was quite well aware of it - its advantag= es as well as its limitations.

 

He u= sed dynamic binding for Emacs not because he "didn't know better". In the article I cited he tells you clearly why dynamic binding is impo= rtant ("vital" was the word he used) for an applicatio= n like Emacs. Those reasons are just as valid today as when they were writt= en.

 =

But you're free to propose that= Emacs Lisp should not have user options and other global variables.

 

("Now we know", indeed. = Such hubris.)

--__1506458035025139855abhmp0001.oracle.com--