From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Lars Brinkhoff Newsgroups: gmane.emacs.devel Subject: Re: User-defined record types, v2 Date: Fri, 24 Mar 2017 11:15:38 +0100 Organization: nocrew Message-ID: <86vaqzkmk5.fsf@molnjunk.nocrew.org> References: <86y3w2tt2n.fsf@molnjunk.nocrew.org> <86pohbosxp.fsf@molnjunk.nocrew.org> <86r31omqkp.fsf@molnjunk.nocrew.org> <86d1d8mq6d.fsf@molnjunk.nocrew.org> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: blaine.gmane.org 1490350659 10038 195.159.176.226 (24 Mar 2017 10:17:39 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Fri, 24 Mar 2017 10:17:39 +0000 (UTC) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri Mar 24 11:17:32 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 1crMHg-0001QK-Uo for ged-emacs-devel@m.gmane.org; Fri, 24 Mar 2017 11:17:29 +0100 Original-Received: from localhost ([::1]:60570 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1crMHl-0006Cw-7h for ged-emacs-devel@m.gmane.org; Fri, 24 Mar 2017 06:17:33 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:52220) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1crMGG-0005fA-Mi for emacs-devel@gnu.org; Fri, 24 Mar 2017 06:16:01 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1crMGB-00047i-Mn for emacs-devel@gnu.org; Fri, 24 Mar 2017 06:16:00 -0400 Original-Received: from [195.159.176.226] (port=53959 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1crMGB-00047S-H4 for emacs-devel@gnu.org; Fri, 24 Mar 2017 06:15:55 -0400 Original-Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1crMFz-0000Y0-S0 for emacs-devel@gnu.org; Fri, 24 Mar 2017 11:15:43 +0100 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 25 Original-X-Complaints-To: usenet@blaine.gmane.org Cancel-Lock: sha1:sRAmGS1zJEuIfBsBRgJ9zR9+q2M= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 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:213286 Archived-At: Stefan Monnier wrote: > BTW, I see further compatibility problems: > > if you compile a chunk of code which constructs structs, they get > macroexpanded/inlined to code that does either > > (record 'FOO ) > or > (vector 'cl-struct-FOO ) > > depending on whether the corresponding cl-defstruct is using the old or > the new style. > > So if this is in a different file from the one that does the > `cl-defstruct` you can end up with a situation where the > `cl-define-struct` defines a new-style struct (because it was recently > recompiled), while some code constructs old style structs of that > same type (because it hasn't been recompiled recently). The easy way out would seem to have old-struct-compat set to t by default. Then, maybe next major release default to nil. Or check something in the .elc file when it's loaded. The Emacs version number is there (or if it isn't, it's really ancient; looking at you Emacs 16). Explicit information about using records could be put in.