From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Richard Stallman Newsgroups: gmane.emacs.devel Subject: Deprecating 'lexical-binding: nil' Date: Mon, 27 Sep 2021 18:35:39 -0400 Message-ID: References: Reply-To: rms@gnu.org Content-Type: text/plain; charset=Utf-8 Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="29798"; mail-complaints-to="usenet@ciao.gmane.io" Cc: monnier@iro.umontreal.ca, emacs-devel@gnu.org To: Stefan Kangas Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Tue Sep 28 00:36:54 2021 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mUzF0-0007To-A5 for ged-emacs-devel@m.gmane-mx.org; Tue, 28 Sep 2021 00:36:54 +0200 Original-Received: from localhost ([::1]:42318 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mUzEz-0002Ob-BW for ged-emacs-devel@m.gmane-mx.org; Mon, 27 Sep 2021 18:36:53 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:59952) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mUzDn-0000yy-O5 for emacs-devel@gnu.org; Mon, 27 Sep 2021 18:35:39 -0400 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]:45676) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mUzDn-0003Sz-GF; Mon, 27 Sep 2021 18:35:39 -0400 Original-Received: from rms by fencepost.gnu.org with local (Exim 4.90_1) (envelope-from ) id 1mUzDn-0005H8-B1; Mon, 27 Sep 2021 18:35:39 -0400 In-Reply-To: (message from Stefan Kangas on Sat, 25 Sep 2021 15:47:45 -0700) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 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-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:275622 Archived-At: [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] I support making lexical binding the default, eventually, but instead of proposing to make nonlexical binding mode obsolete (which implies removing it), let's stop with deprecating it. To delete a mode of usage that was formerly the default would make it almost unfrasible to run old Lisp programs in newer Emacs versions. The changes required to make those old programs function with lexical binding are not simple or eash to write. You can't find them by searching for certain names, as you could for many other incompatible changes. In some cases, they require studying the code carefully. To avoid that, let's keep the nonlexical mode working. I like Stefan's proposal for the approach for doing that: > The plan for phasing out 'lexical-binding:nil' is as follows: > Emacs 28.1 - The byte-compiler warns if there is no 'lexical-binding' > cookie. > Emacs 30.1 - The byte-compiler warns if there is no 'lexical-binding' > cookie, or if the cookie is 'lexical-binding:nil'. > Emacs 32.1 - The warnings remain as before, and 'lexical-binding:t' is > the default. One good thing is that this plans for it to take many years. It took us 10 years to switch in Emacs, and we are to some extent organized. The user community is not organized and will not be quick to switch. Another is that there will be two stages of warnings, proposed here for Emacs 28 and Emacs 30. Each warning will convince some users to switch, so two warning stages are better than one. I have no opinion about whether to take the first step in Emacs 28 or in Emacs 29. -- Dr Richard Stallman (https://stallman.org) Chief GNUisance of the GNU Project (https://gnu.org) Founder, Free Software Foundation (https://fsf.org) Internet Hall-of-Famer (https://internethalloffame.org)