XCHAOS: Prekompilace...slepa vetev. Nas system se bootstrapuje tim ze vyssi programovaci jazyk preklada do C, ktere se pozdeji prelozi pomoci GCC/BCC/MSVC. Super technologie pred 25 lety. Dnes uz bych do toho nesel a to i za cenu toho, ze jinak bych musel opustit jednu z mych oblibenych featur soucasneho systemu (inline-C). Dnes bych vse nechal na JITu a pro bootstrap minimalniho systemu bych pouzil interpret AST, jedno jak pomalej.
Duvody jsou dva:
(i) stejne musis mit JIT pro rozumny vykon a inkrementalni vyvoj (pro me co nedovoluje vyvijet inkrementalne je nepouzitelne, jsem narocny :-)
(ii) pokud chces rychlost + GC + nejake pokrocile featurky jako reifikovatelny stack, kontinuace apod, tvrde narazis na to, ze kazdy C prekladac s kazdou verzi s kazdym jednotlivym prepinacem generuje jiny kod, nekdy invalidni, nekdy proste jen ignoruje/ruzne si vyklada volatile, inline apod. Nikdy nemas kontrolu nad tim, jak presne vypada frame na stacku, co v nem presne je, nikdy nevis co presne je v registrech a co v pameti. Tahle nejistota je zabijak...
Takze pokud prekompilovat, tak jedine do ASM a vypnout vsechny jeho "optimalizace" jako automaticke plneni delayslotu podobne legracky. Kompilovat do C je o neco snadnejsi na zacatku a obrovsky problem na konci. Takze tudy ne, alespon ne pro HLL.
DAVIDOWITCH: Tak u vsech modernich VM je se zasobnikovy bytekod pouziva spis proto, ze do nej pohodlne preklada a ze to je tradice. Stejne prvni co udelas je ze to dekompilujes zpet do AST a prelozis do strojaku...
PIGSTER: My jsme tam doiterovali a delame si vsechno sami (VM, knihovny, GUI, IDE, krom operacniho systemu :-) a ma to sve vyhody...