[idle] Re: register<->request

> Ako ne sym bil qsen v predniq post eto kakvo predlagam kato primeren
> interface:
>
> IDLE_Init(IDLE_CAPABILITY_ID functionality_request,
>           MODULE_ID prefered_modules)
>
> IDLE_Compile(IDLE_SOURCE_CODE code,
>              IDLE_COMPILER_FLAGS flags);
>
> IDLE_Compile_Extended(IDLE_SOURCE_CODE code,
>                       IDLE_COMPILER_FLAGS flags,
>                       IDLE_EXTRA_INPUT einput,
>                       IDLE_EXTRA_OUTPUT eoutput);
Hmm. Towa ne mi hareswa. Ideqta beshe da naprawim IDLe ne prosto kupchina 
kompilatori, zashtoto towa neshto go imame w momenta i se naricha IDLe 2 
... mozhe bi s edinstwena razlika w API-to, koeto samo s edin wrapper mozhe 
da se swede do towa, koeto ti si napisal.

No wsxshtnost zamislete se, koq ni e naj-protiwnata strana - pisaneto na 
kompilatori. IDLe 2 + ICC bi bilo neshto dosta stabilno i polzeno. Towa e 
samo mezhdu drugoto.

Kazah wi za moqta ideq za IDLe 3. Nikoj ne kaza hareswa li mu ili ne. Samo 
Ludo otgowori, che bihme imali problemi s interface-a, ponezhe izglezhdal 
mnogo razmit. Towa e taka. Zatowa sega izlizam s update na ideqta si.

Zamislete se kakwo trqbwa da prawi IDLe(kato sistema):
- generira kod
- izpxlnqwa kod
- poddxrzha koda
i nishto poweche.
Taka izliza che mozhem da si reshim problema samo s nqkolko wida 
predwaritelno definirani ot nas interface-i. Wsxshtnost 4 wida.

1. Interface kxm kompilatora.
2. Interface kxm modula-executor.
3. Interface kxm modula poddxrzhasht koda
4. Interface kxm krajniqt potrebitel

Nikoi ot tezi interface-i ne se interesuwa kakwo stoi zad ostanalite 3.
Wrxzkata mezhdu tqh se poema ot kompaktnoto IDLe qdro.
Wxw wseki edin moment zad opredelen interface stoi naj-mnogo edna biblioteka 
ot sxotwetniqt tip.

Gore-dolu towa e shemata. Osnownata ideq e wsichko da stawa prez qdroto i da 
*ne mozhe* dwe biblioteki da si komunikirat direktno s tehen si interface.

Predimstwa:
- towa *garantira* sxwmestimost na wsqkakwi kompilatori sxs wsqkakwi 
executori sxs wsqkakwi biblioteki za kod sxs wsqkakwi potrebitelski 
prilozheniq
- interface-xt e za wsqka chast pootdelno, taka wseki modul si wxrshi tochno 
rabotata za koqto e prednaznachen i nishto drugo
- bibliotekite mozhe da se smenqt wxw wseki edin moment, kato qdroto samo se 
oprawq s towa, koq biblioteka w momenta e aktiwna na sxotwetniqt interface.

Nedostatxci:
- skorost. Otnowo se sblxskwame s problema za skorostta, txj kato 
wzaimodejstwieto mezhdu wseki dwa komponenta minawa prez qdroto.
I wse pak mozhe bi da se okazhe che skorostta e na niwo. I wse pak naj-bawna 
e wrxzkata executor<->qdro<->biblioteka za koda.

Sega mi dojde slednata ideq:
Naprimer da si predstawim slednata situaciq:
Executor:  Qdro, daj mi sledwashtiqt statement za izpxlnenie.
Qdro:  Biblioteko za koda, daj mi sledwashtiqt statement za izpxlnenie.
Biblioteka za koda:  Qdro, eto ti sledwashtiqt statement za izpxlnenie.
Qdroto:  Executore, eto ti sledwashtiqt statement za izpxlnenie.
I towa neshto se powtarq za wseki statement.
(tuk malko nekorektno e kazano "sledwasht statement", pri polozhenie, che 
samo executora znae koj tochno e tozi sledwasht statement, no da si 
predstawim che stawa wxpros za statement s nqkakxw nomer napr. X)

Ta mozhem da naprawim slednoto:
Qdroto da otwori edna FIFO opashka, kxdeto bibliotekata za koda blxska 
postoqnno statementi, a executora gi izpxlnqwa.
Ako ste chuwali za prefetch queue na procesorite - towa e gore-dolu 
sxshtoto.

Pozdrawi,
        Ivo

-- 
Ivaylo Riskov <ivaylo_riskov@xxxxxxx>

"If it happens, it must be possible."

Other related posts: