From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Paul Eggert Newsgroups: gmane.emacs.devel Subject: Re: encode-time vs decode-time Date: Tue, 6 Aug 2019 08:59:33 -0700 Organization: UCLA Computer Science Department Message-ID: References: <502b23f8-58ed-38ff-ae50-fae391129a10@cs.ucla.edu> <87v9viuivo.fsf@mouse.gnus.org> <83blx2cr2o.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="213115"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 Cc: larsi@gnus.org, andrewjmoreton@gmail.com, emacs-devel@gnu.org To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Aug 06 17:59:59 2019 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1hv1sU-000tFs-5i for ged-emacs-devel@m.gmane.org; Tue, 06 Aug 2019 17:59:58 +0200 Original-Received: from localhost ([::1]:34580 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hv1sS-0002Zi-PP for ged-emacs-devel@m.gmane.org; Tue, 06 Aug 2019 11:59:56 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:40684) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hv1sC-0002Zb-Dy for emacs-devel@gnu.org; Tue, 06 Aug 2019 11:59:41 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hv1sB-0005ex-BT for emacs-devel@gnu.org; Tue, 06 Aug 2019 11:59:40 -0400 Original-Received: from zimbra.cs.ucla.edu ([131.179.128.68]:51970) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hv1s9-0005cb-5c; Tue, 06 Aug 2019 11:59:37 -0400 Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 7FB1C1626F2; Tue, 6 Aug 2019 08:59:35 -0700 (PDT) Original-Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id H0sl8Oi6TOw9; Tue, 6 Aug 2019 08:59:34 -0700 (PDT) Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 48B591626ED; Tue, 6 Aug 2019 08:59:34 -0700 (PDT) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Original-Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id G-m-NShKd8J7; Tue, 6 Aug 2019 08:59:34 -0700 (PDT) Original-Received: from [192.168.1.9] (cpe-23-242-74-103.socal.res.rr.com [23.242.74.103]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 1AE461626C1; Tue, 6 Aug 2019 08:59:34 -0700 (PDT) In-Reply-To: <83blx2cr2o.fsf@gnu.org> Content-Language: en-US X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 131.179.128.68 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.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:239210 Archived-At: >> So now, as you suggested, encode-time has reverted to its old role >> of converting from decoded timestamps to Lisp timestamps and its API is now simpler. > > Thanks, but judging by the changes in Lisp files all over, it sounds > like this is a backward-incompatible change? It's not as scary as it might first appear. The changes to the lisp/* files that work around backward-incompatibility issues (by replacing (encode-time TIME FORM) with (time-convert TIME FORM)) are needed only to fix Emacs internals code that had already been changed to rely on Emacs 27 encode-time. Since Emacs 26 does not support (encode TIME FORM), users will not have to worry about making these kinds of changes to their own code. They only significant backward-compatibility issue I see is in the 2nd patch ("decode-time now returns subsec too"), which affects any user code that requires (= 9 (length (decode-time))). I originally proposed extending decode-time's API with a FORM option that would cause decode-time to continue to behave as before unlless the given the new FORM argument; this would default to current behavior and so would avoid the backward-compatibility issue. However, Lars inspected uses of decode-time and found that they invariably did something like (nth N (decode-time...)) or (apply #'encode-time 0 0 0 (nthcdr 3 (decode-time))). These uses will continue to work, so Lars convinced me that his proposal to return a 10-element list was better. If you prefer the more-backward-compatible approach I could look into redoing the time code that way, though I expect it'll be a bit more hassle to document it and to support it internally.