slate gui slowness needs fixing before proceeding

Timmy Douglas timmy+slate at cc.gatech.edu
Wed Jun 14 08:12:36 PDT 2006


Brian Rice <water at tunes.org> writes:

> On Jun 13, 2006, at 9:21 PM, Timmy Douglas wrote:
>
>> Brian Rice <water at tunes.org> writes:
>>
>>> The code that "make newboot" calls (mentioned in INSTALL) is in src/
>>> mobius/vm/build.slate and then there's src/mobius/vm/bootstrap.slate
>>> and so forth. src/mobius/init.slate shows the load order needed to
>>> build up a working VM+image bootstrapper. The README maps out the
>>> contents of the directories of the Slate repositories.
>>>
>>> That said, a guide to Slate's build system is certainly warranted.
>>> I'll think about how to start one, but suggestions are also welcome.
>>
>> The main thing I was looking for would be something like this (which
>> is pure guessing now since I haven't had much time to look into it):
>>
>> 1. vm.c and vm.h is downloaded from the tunes site (why isn't it in
>>    the darcs directory instead?). It is some sort of minimal slate
>>    interpreter which uses <insert something about alpha vm boot
>>    image?> and reads the special slate files:
>>    src/mobius/vm/bootstrap.slate and blah and outputs another vm.c
>>    file.
>
> vm.c and vm.h are only versioned in the alpha/ branch, and even then  
> they are dubious since the order of C functions generated from Pidgin  
> translation is somewhat non-deterministic, thereby raising the level  
> of noise in version diff's.

Yeah, these looked autogenerated to me but I didn't know what they
were coming from until I read the makefile. I guess I missed that part
in the "Build Requirements" (maybe I was tempted to skim over it since
it sort the title comes off as a system requirements section). My
fault.


> It is far easier to use wget or rely on the tarballs (which I
> automate generation of) or releases (which are just versioned
> tarballs with documentation) to automatically include.

ok

>> 2. The new vm.c file is compiled with your c compiler into the final
>>    slate vm and then your image is built using that VM and the files
>>    blah blah blah and saved to slate.image.
>
> There is also a new vm.h file which is also generated from the same  
> definitions used for vm.c.
>
> By default, actually, the new files will be vm.new.c and vm.new.h  
> (the NEWVARIANT Makefile variable will be introduced shortly to  
> parametrize the ".new" part - right now, only the VARIANT Makefile  
> variable exists to specify what to start with for the VM/image core).

ok

> Did you not read what's in the INSTALL file? "Extending Slate" covers  
> the basics of this.

"Extending Slate" points me to src/mobius/vm/post-bootstrap.slate and
tells me how to extend or build a new VM. Since I would be more
interested in knowing how the VM works or how it is built, I'd like to
sort of have an overview on how 'make newboot' works rather than the
commands I type in to generate a new image.


>> It'd be nice if you could go into more details with the files used and
>> what they do in a line of text if ever get time.
>
> Please ask specifically what the INSTALL file does not address.

I don't know, maybe I'm approaching this the wrong way and I should
grep for 'generate' in the mobius directory for something that
specializes on VM definitons. I thought there would be something to
tell me what actually generated the first vm.c that's in the alpha
repository and then that src/mobius/vm/build.slate or whatever
actually generates a vm.new.c/h file, which is compiled again. I don't
think I would have guessed that from this:

VM define: #new -> (VM Definition newNamed: 'vm.new') generate.

since this is my first time looking at the bootstrapping level of a
system I guess there were a lot of gaps that weren't already filled by
experience so maybe that's why I didn't think the docs had everything.



>> The readme has a lot of files in it that don't exist anymore.
>
> No, it does not. Please be specific about the discrepancies and I  
> will address them immediately via corrective patches.

The readme mentions:

src/mobius/bootstrap/ - Bootstrap code, for the future run-time
builds.

src/mop/ - Meta-object protocol.

which don't exist in my repository. Sorry I guess 'a lot' was the
wrong word here.

> Otherwise, make sure to indicate that you are talking about, say, a
> released Slate version as compared to a current darcs repository,
> since there is a huge difference over the last several months.

I'm just using slate/main from darcs, I don't know if I should be
looking at other stuff or not.



More information about the Slate mailing list