Liste des Groupes | Revenir à cl c |
Bart <bc@freeuk.com> wrote:
This sounds an intriguing kind of system to implement.Either you're developing using interpreted code, or you must have someYes.
means of converting source code to native code, but for some reason you
don't use 'compile' or 'build' to describe that process.
>
Or maybe your REPL/incremental process can run for days doing
incremental changes without doing a full compile.
It seems quite mysterious.There is nothing misterious here. In typed system each module has
a vector (one dimensional array) called domain vector containg amoung
other references to called function. All inter-module calls are
indirect ones, they take thing to call from the domain vector. When
module starts execution references point to a runtime routine doing
similar work to dynamic linker. The first call goes to runtime
support routine which finds needed code and replaces reference in
the domain vector.
When a module is recompiled references is domain vectors are
reinitialized to point to runtimne. So searches are run again
and if needed pick new routine.
Note that there is a global table keeping info (including types)
about all exported routines from all modules. This table is used
when compileing a module and also by the search process at runtime.
The effect is that after recompilation of a single module I have
runnuble executable in memory including code of the new module.
If you wonder about compiling the same module many times: system
has garbage collector and unused code is garbage collected.
So, when old version is replaced by new one the old becomes a
garbage and will be collected in due time.
The other system is similar in principle, but there is no needI would call that something else, perhaps based around 'Make' (nothing to do with Linux 'make' tools).
for runtime search and domain vectors.
I might run my compiler hundreds of times a day (at 0.1 seconds a time,Build means creating new fully-functional system. That involves
600 builds would occupy one whole minute in the day!). I often do it for
frivolous purposes, such as trying to get some output lined up just
right. Or just to make sure something has been recompiled since it's so
quick it's hard to tell.
>>>
I know. But this is not what I do. Build produces mutiple
artifacts, some of them executable, some are loadable code (but _not_
in form recogized by operating system), some essentially non-executable
(like documentation).
So, 'build' means something different to you. I use 'build' just as a
change from writing 'compile'.
possibly multiple compilations and whatever else is needed.
Les messages affichés proviennent d'usenet.