emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Shrinking EIEIO objects


From: Eric Abrahamsen
Subject: Re: Shrinking EIEIO objects
Date: Fri, 09 Jan 2015 13:44:59 +0800
User-agent: Gnus/5.130012 (Ma Gnus v0.12) Emacs/24.4 (gnu/linux)

David Engster <address@hidden> writes:

> Eric Ludlam writes:
>> On 12/30/2014 12:59 PM, Stefan Monnier wrote:
>>> Hi Eric,
>>>
>>> I'd like to install something like the patch below into Emacs's master.
>>> What it does (along with various other side changes) is shorten the
>>> object header from 3 fields (the constant `object', the class name, and
>>> an object "name" field) to just one (an interned symbol with an "eieio-"
>>> prefix, referring to the class object).
>>
>> This seems like a fine idea.  A side effect is that the 'name' slot is
>> gone.  There have received a questions about why there is a 'name' for
>> objects, and really the main thing was debugging.  When you have piles
>> of objects around, naming them makes it much easier to see what is
>> going on.   EIEIO objects have a short hand using a #<class name>
>> format, and when the various prin1 tools are enabled for edebug, that
>> short hand is used in place of the vector.  This is critical when
>> debugging semantic databases where the vectors contain thousands of
>> symbols.
>>
>> Your proposed solution will enable the current source forge hosted
>> version of CEDET to keep going, just with warning messages, which
>> seems fine.
>>
>> I can convert the sourceforge version CEDET to use make-instance
>> instead, which should be compatible before and after your change.
>
> I'm a bit confused. Why would we need to change how we construct our
> objects? Most of these changes seem to be purely internal. The only API
> change I see (aside from the added eieio-- prefixes) is that NAME is now
> optional (but not obsolete), which is certainly a good thing.

Hey wasn't this change supposed to be backwards-compatible? I just
updated emacs git, and every single package that uses eieio is now
giving me "too many arguments to `defclass'". Is this the same issue?




reply via email to

[Prev in Thread] Current Thread [Next in Thread]