Am Mittwoch, 1. November 2006 07:43 schrieb Allison Randal:
> We
> may add compile-time construction of classes at some point as an
> optimization, but we'll never eliminate runtime construction.

Of course not. I never said that.

> > To get around that the following came to my mind:
> >
> > - we create a class when needed during compile time

> I can see the appeal, but unfortunately it won't give us all the
> features we need. This is certainly an option to consider if/when we do
> add compile-time construction of classes, with the understanding that
> only a subset of cases would be able to use it (as is true of most
> optimizations).

It's actually not an optimization IMHO. It could be one, if we add support for 
adding attributes at compile-time too [1]. But for now, I'm just speaking of 
consolidating class construction code.

We now have:

   compile-time         run-time
-----------------------------------------------
.namespace ['Foo']
.sub bar :method
.sub baz :method :vtable(..)
                        cl = newclass 'Foo'
                        addattribute cl, 'x'
                        addmethod cl, 'blurb', meth

The namespace directive in combination with :method is defining parts of a 
class namely all the statically compiled methods and the namespace. The 
problem is how to forward the compile-time part of a class properly to the 
run-time. 

Actually the current implementation is partly wrong to deal with too much 
usage of:

  .namespace ['Foo']
  .sub _init :load
     cl = newclass ['Foo']       # would be ['Foo';'Foo']

and similar. Above should be

  .sub _init :load
     cl = newclass ['Foo']       # ['Foo']
     ...
  .namespace ['Foo']

Having a class available at compile-time would elminate this ambuigity.

> Allison

leo

[1] in fact, we can do that already - see my answer to Nicholas.

Reply via email to