[Top][All Lists]

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

Re: Shrinking EIEIO objects

From: Eric Ludlam
Subject: Re: Shrinking EIEIO objects
Date: Fri, 02 Jan 2015 10:04:12 -0500
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.3.0

On 01/02/2015 06:22 AM, David Engster wrote:
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

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.

In the patch, the generated constructor method calls 'message' if the first slot is a string (which is the now optional name input), and the message says the name input is obsolete, and also no longer saves the name.

While reading through the patch, there was a bunch of changes related
to doc strings and methods.  The goal was if you used help on a
method, such as:

C-h f constructor RET

(or eieio-constructor in your patch)

it should list the core doc (generic) and doc for every class that has
it's own implementation and custom doc.  I couldn't intuit from the
patch what might happen as some of the doc strings looked like they
were removed?
I don't think that has changed. I just tried Emacs with the patch and I
see the "EIEIO-enhanced" docs as usual.

Great!   Thanks for checking.


reply via email to

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