Perl 6 - the future is here, just unevenly distributed

IRC log for #divine, 2013-05-21

| Channels | #divine index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
01:57 xstill joined #divine
02:12 xstill joined #divine
09:01 mornfall Bleble.
09:01 mornfall Kde se schovává ten zločinec s polštářem? :D
09:43 xstill asi spí, bych se nedivil...
09:49 mornfall Já spal devět a nestačilo to, no.
09:50 mornfall https://jolla.com/ :-)
09:52 mornfall Třeba bych si to mohl pořídit... ale teď klavír. Bbl.
12:56 spito joined #divine
13:06 spito mornfall: to si budeš kupovat?
13:06 spito mornfall: já jsem pravda, spal do 7
13:06 spito pak jsem se 2 hodiny válel
13:06 spito a pak jsem zmizel do práce
13:06 spito ntreehashset jsem integroval, ale rozsypal jsem si svoji tabulku
13:07 spito a proto ještě nebyly patche
13:07 mornfall :D
13:12 spito ha, už to jde zkompilovat
13:12 spito ale někde mi to segví
13:13 spito mornfall: a co ten telefon? to si budeš kupovat? nebo to dělá některý tvůj kamarád?
13:13 spito chceš si dát na kryt hellokitty?
13:13 mornfall To ještě nevim, žejo. :)
13:13 mornfall Jestli si ho kupuju.
13:14 mornfall Ale vypadá to slibně.
13:14 spito kvůli dizajnu?
13:14 mornfall Částečně. :)
13:14 mornfall A kvůli OS.
13:15 spito jdou tam androidí appky a není to android
13:15 spito ještě něco to umí? nebo je t novinka?
13:15 spito *to
13:23 mornfall No, ono to hlavně ještě neexistuje. ;-)
13:50 spito xstill: testy ntreehashset-u vypisují normálně tuny warningů?
13:50 spito při kompilaci...
14:23 xstill spito: to nevím, můžu to vyzkoušet, záleží co to je za warningy...
14:24 spito porovnání (un)signed mišmaš
14:25 spito nevím, jestli jsem to udělal já, nebo to je od výroby
14:25 spito každopádně to opravím
14:26 xstill spito: clang warningy nedává, ale signed/unsigned tam možná je
14:29 spito jo, tak to bude možná ono.....
14:29 xstill jinak testy asi nepokrývají NTree moc dobře, tak kdyžtak zkus jestli je všechno v pořádku na nějakém větším modelu...
14:30 spito jo, já nejdřív musím vysvětlit mé tabulce, že má fungovat
16:25 spito he, už to vypadá, že jsem tabulku umlátil argumenty :)
16:42 spito tak ještě ne...
16:46 xstill mornfall: nechtěl jsi mi poslat patch na Pool v Parallel?
17:23 mornfall xstill: Chtěl. :)
17:23 mornfall hunk ./divine/algorithm/common.h 147
17:23 mornfall +        self->topology().setPool( self->pool() );
17:23 mornfall hunk ./divine/toolkit/parallel.h 312
17:23 mornfall +    void setPool( Pool ) {}
17:23 mornfall hunk ./divine/toolkit/parallel.h 389
17:23 mornfall +    void setPool( Pool p ) { m_mpiForwarder.pool = p; }
17:24 mornfall To je všechno co mám, ukázalo se. Z nějakého důvodu jsem většinu toho smazal s tím že to je blbě a musím to udělat jinak. :-)
17:31 xstill :-D, to není mnoho, uvidím co vymyslím až se mi nebude chtít učit složitost
19:12 mornfall Hm. Alfons se tváří že SpinS by šlo adaptovat na CESMI. :-)
19:12 mornfall Čemuž docela i věřím.
19:21 xstill co je SpinS?
19:21 mornfall No, nějaká adaptace SpinJa.
19:22 xstill co by z toho, že by se to adaptovalo na CESMI plynulo? Že bysme verifikovali promelu?
19:22 mornfall Jo, stejným frontendem jako ltsmin.
19:23 mornfall Chtělo by to na toho nějakýho člověka. :-)
19:23 mornfall Za problém považuju že to je v Javě...
19:23 xstill začíná nás být málo
19:23 xstill to je dost problém
19:23 mornfall (Teda SpinJa je v Javě a generuje Javu, SpinS je upravenej aby generoval C.)
19:24 xstill jako, že to je překladač z promely do C který je napsaný v javě?
19:24 Erbureth hm, dá se něco udělat s těmi warningy z valgrindu? Ony ty definice probublávají zpátky do toho pool.h
19:25 mornfall Nevím no. Je to mrzuté. (Re valgrind)
19:25 mornfall Jedině ho vypnout asi (-DNVALGRIND).
19:25 Erbureth díky
19:25 mornfall xstill: Začíná? :)
19:25 mornfall Nás někdy bylo dost? :-))
19:26 xstill neví, musíme začít osvětovou kampaň jak je divine a C++ super
19:26 xstill tak teď nás ještě ubude žejo
19:28 xstill mornfall: a nebylo by jednodušší napsat loader na ten krám co používaj v LTSminu a pak SpinS použít přímo?
19:28 mornfall Těžko říct. :)
19:28 mornfall Já zatim nevykoumal jak to funguje.
19:29 xstill a to je "stabilní" zdokumentované rozhraní jako CESMI, nebo je to něco čistě interního?
19:30 mornfall No, jestli k tomu nějaká dokumentace je, tak jsem ji nenašel.
19:30 xstill tak oni umí dokumentaci dobře schovat co já vím...
19:31 xstill ale pokud to není aspoň trochu stabilní tak to nemá moc smysl, by to asi vyžadovalo moc údržby
19:33 xstill mornfall: a má ta promela vůbec smysl?
19:34 mornfall No, to já úplně nevim. :-)
19:35 mornfall Jsou v tom namodelovaný zajímavý věci, ale asi se k nim nikdy nedostaneme...
19:36 xstill nechápu
19:36 mornfall Tak, nějakej NASA flight software, třeba.
19:37 mornfall Nějaký kus DeOSu.
19:37 xstill aha, jako tajný věci...
19:37 mornfall No, tajný to není, ale asi nám ty modely jen tak nikdo nedá. :-)
19:38 xstill takže smysl je v tom, že se to reálně používá...
19:38 mornfall Asi jo.
19:38 mornfall A SPIN je stále ještě standardní benchmark pro explicitní modelcheckery.
19:39 mornfall A je spousta věcí který umí jen SPIN a jinak nikdo.
19:50 xstill co třeba umí a my ne?
19:56 mornfall property slicing, bitstate hashing, dfa state storage, komprese
19:56 mornfall (teda nějakej huffman asi)
19:57 mornfall a navíc maj dobrou POR
19:57 mornfall resp. má
19:57 xstill to je docela dost, polovina z toho ani nevím co je (bitstate, dfa state storage)
19:57 mornfall no dfa je deterministic finite automaton :)
19:58 mornfall bitstate hashing je agresivnější verze hashcompactu, používá jen pár bitů na stav
19:58 mornfall ale taky mnohem víc aproximuje
19:59 mornfall taky umí ukládat zásobník na disk
19:59 mornfall my bychom potřebovali ukládat lokální fronty na disk zase
19:59 mornfall (když běžíme s HC)
20:00 xstill ukládat frony by asi nebyl takový problém
20:00 mornfall tak nebyl, ale zase je to něco co někdo musí udělat :-)
20:01 mornfall zrovna teď nám HC nefunguje vůbec :-)
20:01 xstill no jasně
20:01 xstill no tak ono bez těch diskových front čekám, že bude horší než komprese
20:01 xstill (ale nemám to jak ověřit)
20:02 xstill a fronty zase musí být hodně dlouhý aby to mělo smysl ukládat
20:02 mornfall no, my máme smrtelnej problém v protipříkladech
20:02 mornfall spin vezme zásobník a má
20:03 mornfall takže nemusí ukládat parent pointry
20:03 xstill asi by stálo za to to udělat rovnou na úrovni ChunkQueue, pokud to má mít smysl
20:03 xstill no jasně ale to bys nesměl být paralelní
20:03 mornfall no, mohl :-)
20:03 xstill i když pseudo DFS reachabilita by asi šla
20:03 mornfall se sdílenou tabulkou, jo
20:04 mornfall stack slicing
20:04 mornfall to už tu kdysi bylo :-)
20:04 xstill co to je?
20:04 mornfall no, paralelní pseudodfs
20:04 mornfall a protipříklady s tím jsou taky netriviální...
20:05 mornfall ale furt to zabírá míň než 16 bajtů na stav který my teď platíme s HC
20:05 xstill to jsme si nepomohli...
20:05 mornfall (teda podstatně míň)
20:06 xstill ten hash budeme moct z HC zase vyhodit
20:06 mornfall Ten nepočítám, žejo.
20:06 xstill no ale pak ten Blob má 8b
20:06 mornfall 8 bajtů pointr v tabulce, kterej ukazuje na 8 bajtů parentpointru
20:06 xstill jo takle
20:07 mornfall Takže naše HC funguje třikrát hůř než ve spinu, i když si odmyslíme fronty...
20:07 xstill těch 8b platíme za to, že tabulka může růst
20:07 mornfall No, ne nutně.
20:07 xstill ?
20:08 mornfall To s tím v podstatě nemá nic společnýho.
20:08 mornfall Tabulka by klidně rostla i kdyby ten parent pointer byl uloženej přímo v ní.
20:08 mornfall A kdyby tam nebylo nic, taky.
20:08 xstill no jo, ale kam by ukazoval, žejo?
20:08 mornfall (A chovala by se skutečně jako množina, ne jako mapa)
20:09 xstill kdyby to byla množina tak je to jasný
20:09 mornfall Však nikam, obsahoval by hash.
20:09 mornfall Co jinýho, když stav je jen hash.
20:09 xstill ajo
20:09 mornfall To bychom měli overhead jen krát 2.
20:09 mornfall :-)
20:10 mornfall Prostě, práce je s tím víc než dost.
20:10 xstill jak to dělaj oni?
20:10 mornfall Kdo?
20:10 xstill spin
20:10 mornfall No, říkám, SPIN má zásobník.
20:10 mornfall Takže nepotřebuje žádný parentpointry.
20:11 mornfall Protipříklad má vždycky v tom zásobníku.
20:11 mornfall Tzn. hashtabulka ve spinu je skutečně jen množina.
20:11 xstill jo ale píšeš, že kdyby jsme měli tabulku jako mapu, tak stále máme overhead 2x
20:11 mornfall Však jo, protože spin ukládá 1 hash / 1 stav, my ukládáme 2 hashe / 1 stav (parent pointer).
20:12 xstill jo takhle
20:13 spito a dá se ten DFS dobře paralelizovat?
20:13 xstill ono je taky nemilé, že HashSet::Cell má 16b, takže 1/4 tabulky leží ladem...
20:13 mornfall spito: Relativně.
20:13 xstill spito: já hledal stack-slicing a našel toto: http://spinroot.com/gerard/pdf/pdmc2007.pdf
20:13 mornfall Musíš tam čarovat s ukládáním kusů zásobníku.
20:18 spito mornfall: pamatuješ, jak jsme řešili ten problém s tabulkou, když se zvětšovala, tak docházelo k ukládání některého stavu 2x?
20:19 spito nepamatuješ si, jak jsme to vyřešili?
20:20 mornfall no, to jsme řešili tehdá večer
20:20 spito mě se to totiž zase děje
20:20 spito :D
20:20 mornfall abortování insertů
20:21 mornfall to je super :-)
20:21 spito neabortuji?
20:21 mornfall počkej, zeptám se křišťálové koule
20:21 spito jako můžu poslat patch
20:22 spito řekla koule něco? :P
20:22 mornfall no, radši se podívej na diff mezi funkční verzí a tou co máš teď
20:24 mornfall koule řekla že se mám radši najíst
20:24 mornfall a nevymýšlet kraviny
20:25 spito dobrou chuť
20:25 mornfall :-)
20:26 mornfall nějak se nám rozmáhají noční bouřky
20:26 spito bouří?
20:26 spito to ti vadí?
20:26 spito v noci snad spíš, ne?
20:26 mornfall vypadám tak? :)
20:27 spito no....nevim
20:27 spito ale většinou jo, ne
20:27 spito ?
20:27 spito (i když, ty vypadáš, že nespíš)
20:27 mornfall no, zrovna teď nespím
20:27 mornfall a je noc a navíc bouřka
20:28 mornfall a sedím proti oknu, takže mě to občas trochu oslepí
20:28 spito žaluzie
20:28 spito ?
20:28 mornfall :-)
20:28 mornfall až dojim tak se přestěhuju do pracovny
20:28 mornfall tam budu koukat leda do zdi
20:29 spito to máš bez oken?
20:29 mornfall no, mám okna do kuchyně :-))
20:29 mornfall ale jsou bokem
20:36 xstill mornfall: bylo by možný v divine nějak rozumně zjistit out-degree stavu?
20:37 mornfall xstill: no, spočítáš následníky
20:37 mornfall successors(..., [&x](...) { x ++; })
20:38 Erbureth xstill: v DVE je efektivnější počítat continuations, možná by se vyplatilo na to zavést další funkci v generátoru?
20:38 xstill jo to jo, jsem myslel jestli to nejde nějak bez toho aby se musali znova generovat, protože u in-degree to jde...
20:38 mornfall nejde :-)
20:39 mornfall počítání indegree je ještě mnohem dražší
20:39 xstill no ono je to spíš taková otázka na zamyšlení, nevím jestli by to k něčemu pořádně bylo
20:39 xstill mornfall: jakto, in-degree normálně dělá owcty (predecessor count)
20:40 mornfall však jo, a owcty je taky pekelně drahý :-)
20:40 mornfall „počítat“ outdegree je proti tomu úplně triviální
20:41 mornfall každopádně teda záleží co myslíš tím „umí“, outdegree nikde nepočítáme protože pro něj nemáme žádný použití, ale nebyl by problém ho buď napočítat nebo i nacachovat v extension, kdyby to k něčemu bylo
20:43 xstill no myslel jsem to tak, že in-degree lze napočítat při normálním běhu, aniž by se neco generovalo navíc od toho co potřebuje visitor sám
20:43 xstill in-degré se dá prostě napočítat s tím, že se následníci každýho stavu vygenerují právě jednou
20:44 mornfall jistě, ale buď to musíš někam uložit, nebo to zahodíš a pak nemělo úplně smysl to počítat
20:44 mornfall ale pokud nevíme k čemu by to bylo dobrý, tak asi nemá smysl o tom spekulovat
20:45 xstill jo to je zase fakt, že out-degree se dá spočítat a neukládat...
20:45 mornfall no nedá :-)
20:45 mornfall nebo teda, musíš ho nějak použít
20:46 mornfall počítat a ukládat ho jen tak je ... divný
20:46 mornfall nebo počítat a neukládat...
20:46 mornfall ale kdybys ho chtěl předávat transition, tak ho musíš uložit aspoň do IPC fronty
20:46 mornfall a jinak fakt moc není komu
20:47 xstill však jsem říkal, že je to jen něco co mě tak napadlo
20:48 mornfall já si představil že tě napadlo že by to mohlo k něčemu být dobrý :)
20:48 xstill máš moc velké nároky :-D
21:33 spito jů, já to opravil :)
21:33 mornfall :-)
21:34 spito ale je to ještě složitější, než to bylo
21:34 spito tak jsem tam dal komentáře
21:34 mornfall ...
21:35 mornfall a proč?
21:35 spito aj obrázek jsem si radši nakreslil
21:35 mornfall je to složitější?
21:35 spito jenom že hashLock může být v těchto stavech
21:35 spito 0  <==> hash + lock ==> hash ==> lock
21:36 spito a jde o to, že se může přesunout ze druhého stavu do prvního
21:37 mornfall No, mně není jasné co se změnilo.
21:37 mornfall Jakože máš fungující tabulku, pak změníš dealokaci a rozbije se vkládání? Wat? :)
21:38 spito ale ne, já to upravoval a vycházel jsem z tabulky, kterou jsem odevzdal do BC
21:38 spito a ta byla malinko modifikovaná....
21:38 spito ale ta modifikace byla blbě
21:38 spito takže ano, v bakalářce mám chybnou variantu
21:38 spito super, ne?
21:38 spito je tam race asi na 2 místech
21:39 mornfall :-)
21:40 spito u příležitosti opravy jsem pak přidal další úpravu, protože předtím to po chybě vložení označilo buňku jako nepoužitelnou, to jsem oddělal
21:41 mornfall jaký chybě vložení?
21:41 spito zamknu, zkontroluju, jestli se zvětšuje/zvětšilo, pokud ano, pak nastala chyba vložení
21:43 mornfall a čemu pomůže že ji můžeš znovu použít, když jediný k čemu ji použiješ je jiná chyba vložení?
21:44 spito není, ono jí může přepsat insert, který přesouvá ze starého řádku na nový
21:45 mornfall Počkej, ty můžeš omylem vkládat do řádku do kterýho se zvětšuje? Cože?
21:45 mornfall To se stane jak?
21:46 spito T1 okontroluje, že se nezvětšuje
21:46 spito T2 začne zvětšovat
21:46 spito T1 se pokusí vložit
21:46 spito T1 zjistí, že se zvětšuje
21:46 spito T1 si dá pohov
21:46 spito T2 maká jak šílenej
21:46 spito T1 mu pomáhá
21:46 spito některý z nich dojede
21:47 spito pak i ten druhý
21:47 spito a pokračuje se
21:47 mornfall a v kterým momentě nastane to že někdo omylem vkládá do řádku do kterýho se zvětšuje?
21:47 spito řádek 3
21:48 mornfall v řádku 3 se T1 pokusí vložit do starýho řádku, žejo
21:48 mornfall jinak by poznal že se zvětšuje ještě než se pokusil vkládat
21:48 spito hmm, taky fakt...
21:49 mornfall to by skoro stálo za to to zase trochu odkomplikovat :-)
21:53 Erbureth mornfall: uděláš mi prosím review patche?
21:57 spito mornfall: zjednodušeno zpět
22:03 mornfall Jo, zachvilku.
22:05 Erbureth díky
22:05 Erbureth ty unittesty mi vyžírají celou paměť
22:06 mornfall jakto?
22:06 mornfall to je divný
22:06 mornfall který?
22:06 Erbureth ten Visitor
22:07 Erbureth 2 giga zabral, začal jsem swapovat, tak jsem to zabil
22:08 mornfall Hmm, ale 2 giga je jen VIRT, RSS je míň než 200M.
22:08 mornfall Aspoň tady.
22:08 Erbureth fakt mi to natvrdo zabralo ty dvě giga
22:08 mornfall spito: Nevíš o tom něco? :)
22:08 Erbureth (resp. to skončilo na 47.5 % z 3963 MB)
22:09 mornfall 26208 mornfall  20   0 2510m 130m 4692 R  141  1.7   0:20.21 divine-test
22:09 mornfall tady to vypadá zhruba takhle
22:09 mornfall ale je to release branch
22:09 spito mornfall: o čem mám vědět?
22:10 mornfall spito: 00:07 ( Erbureth ) 2 giga zabral, začal jsem swapovat, tak jsem to zabil
22:10 Erbureth mmnt, updatnu branch na aktuální
22:10 spito počítám, že jsi to jel nad partitioned
22:10 spito nikdo zatím nejezdí nad shared
22:10 spito doufám...
22:10 spito protože on má pomalou tabulku
22:10 spito zatím...
22:11 mornfall jo, Erbureth má pravdu
22:11 mornfall v mainline to sežere víc než 2G :-)
22:11 mornfall teď je otázka proč
22:11 mornfall spito: no, já zase doufám že unit testy běží aj nad shared...
22:11 spito který visitor?
22:11 spito jo, unit testy běhají i nad shared
22:11 mornfall ale je možný že to je proto, že se vyrobí hromada Lake-ů který se leaknou...
22:13 spito Erbureth: který test visitora ti zdechnul?
22:13 Erbureth spito: nevím, není to tam rozlišené, jak to zjistím?
22:13 spito Shared je ten poslední
22:13 spito ty předtím jsou ty zaběhnutý
22:14 spito partitioned hlavně
22:14 Erbureth mám tam bunch testů Visitor
22:14 Erbureth 14. várka
22:14 spito tam jich není 14....snad
22:16 Erbureth spito: http://pastebin.com/CkhivcmL
22:16 spito je jich tam 12
22:17 mornfall S tím ~NtreeHashSet by se mohlo něco udělat. :-)
22:17 spito jo, ten je můj
22:17 spito mornfall: s tím to neudělá nic
22:17 Erbureth není to úplný head, chybí  tam těch 7 patchů od Vládi
22:17 spito ha, chyba...moje
22:20 spito jak zjistím, kolik to sežralo paměti?
22:24 spito mornfall: húúú
22:24 mornfall buu
22:24 mornfall man time
22:25 mornfall `type -p time` program
22:25 mornfall XXXXmaxresident
22:25 Erbureth spito: skončil jsem u 2350 MB a doběhlo to
22:26 Erbureth pomohlo vypnout prohlížeč :)
22:26 mornfall jen to nefunguje nějak
22:26 mornfall nevim
22:26 mornfall :-)
22:32 mornfall napiš type -p time
22:32 mornfall a pak skopíruj tu cestu
22:32 mornfall to z nějakého nepochopitelného důvodu funguje
22:32 mornfall aha bože :-)
22:32 mornfall už to vidim
22:32 mornfall nevermind
22:33 spito mornfall:  na antee to nejede
22:33 spito a to budu řešit až jindy
22:33 mornfall na antee je to /run/current-system/sw/bin/time
22:33 mornfall (type -p time ti to určitě řeklo)
22:34 spito neřeklo
22:35 mornfall máš nějakej ošklivej shell
22:42 spito máš patche
22:42 spito já jdu spát
22:43 spito i s ošklivým shelem :P
22:43 spito left #divine
22:43 mornfall Erbureth: Zdá se mi to, nebo teď ten parser bez preprocessoru už nefunguje?
22:43 mornfall Erbureth: Teda po tomhle patchi.
22:44 mornfall Erbureth: Mi přijde že by bylo mnohem lepší tu velikost vyhodnocovat nějak jinak.
22:44 Erbureth mornfall: nezdá. Ale tahle funkcionalita se dá dát ještě do interpretu
22:45 Erbureth ono se tam toho ještě bude v tom preprocesoru počítat mnohem víc
22:45 mornfall Pokud to koncipuješ jako preprocesor, tak by bylo dobrý zachovat možnost pustit parser aj bez něj.
22:45 mornfall Prostě tu funkcionalitu striktně oddělit.
22:45 mornfall Preprocesor šoupá ASTčkem, nic jinýho.
22:46 mornfall Vyhodnocování by mělo fungovat s ASTčkem i když přijde z parseru a ne z preprocesoru, nebo když ho vyrobim "ručně" nějak jinak.
22:47 Erbureth jasný
22:47 Erbureth každopádně ta vybudovaná struktura ještě bude užitečná, tak zatím akorát hodím patch, který výpočet velikosti pole přesune do interpretu
22:48 mornfall interpretu nebo do ASTčka?
22:49 Erbureth interpretu, expression v deklaraci pole je užitečná věc
22:49 mornfall mi přijde že size v Declaration by měla být metoda, která vyhodnotí sizeExpr
22:49 mornfall a interpet by se o to snad ani nemusel starat
22:49 mornfall zase velikost pole musí být stejně konstantní výraz
22:50 Erbureth to je moc brzo, ještě tam bude třeba tu expression prohnat preprocessorem, kdyby obsahovala makra
22:50 Erbureth ano, ale parametrizovatelný
22:50 mornfall interpret by o preprocesoru neměl vědět nic
22:51 mornfall však ten výraz preprocesor opraví ve svém průchodu ne?
22:51 Erbureth jo, ale v té chvíli už parser neběží
22:51 mornfall takže v době kdy to interpret uvidí tam žádný makro nemohlo zůstat
22:52 mornfall parser ne, ale to AST existuje, a protože sizeExpr je uzel AST, tak ho preprocesor opravil
22:52 mornfall a interpret který volá size() už vidí opravený AST
22:54 Erbureth jo, takhle
22:55 Erbureth tam se ale zase dostaneme do cyklické závislosti
22:55 Erbureth protože pak požaduješ, aby parser věděl o symtabu a dve::Expression
22:56 mornfall to určitě ne, jen požaduju aby AST umělo dělat constant folding :-)
22:56 mornfall (to je užitečný aj samo o sobě)
22:58 mornfall vyhodnocovat velikost pole nad symtabem interpretu je vysloveně nebezpečný
23:02 Erbureth takže pro to costant folding bys vytvořil nový symtab jenom pro to AST?
23:04 mornfall no, určitě nesmí vidět na proměnný
23:04 mornfall aspoň teda ne na jejich hodnoty
23:05 mornfall v llvm to řeším tak, že mám dvě instance evaluátoru, jednu pro konstanty a druhou pro runtime
23:06 mornfall taky by to umožnilo z ast přímo vytahovat iniciální hodnoty
23:07 Erbureth jj, to jsem taky původně chtěl přesunout do preprocesoru
23:08 Erbureth takže ti to pošlu jako nadstavbový patch?
23:08 mornfall jj
23:09 mornfall je možný že dve::Expression::build budeš muset vytáhnout ven, pak by expression mohlo mít závislost jen na lex.h a ne na parse.h
23:10 mornfall a symtab by neměl používat parse::Identifier nejspíš
23:11 mornfall ale buď Token, nebo nějakou vlastní třídu
23:11 mornfall ty závislosti na parseru jsou spíš nahodilý než systémový
23:11 Erbureth nebo použít forward declaration, a dát to do parse.cpp
23:12 mornfall to by taky šlo
23:12 Erbureth ono s  tím bude i míň práce
23:15 Erbureth zase na druhou stranu to rozbije kompilátor
23:16 Erbureth ne, nerozbije
23:18 mornfall ten by se rozbil spíš kdyby se to přesunulo do interpretu
23:20 mornfall ono je teda otázka, jestli eventuelně v kompilátoru neudělat z integer input parametrů proměnný který by šlo pak skrz CESMI nějak nastavit
23:20 mornfall ale to je spíš daleká budoucnost
23:20 mornfall a možná víc zajímavý jsou složitější input proměnný
23:21 mornfall třeba takový property process / LTL
23:21 Erbureth to je taky spíš na červen diskuse
23:22 mornfall jo to asi jo
23:22 Erbureth budu rád, když stihnu udělat šablony proceů
23:22 Erbureth *procesů
23:23 mornfall tak ono vrazit proces z definitions do toplevel není zas tolik práce, asi
23:23 mornfall ale chce to rozmyslet jak to prezentovat uživatelsky
23:23 mornfall šablony procesů jsou větší priorita
23:24 Erbureth momentálně uvažuju nad syntaxí "instantiate proctemplname(params);"
23:25 Erbureth což se šablony procesů vytvoří proces proctemplname[n], kde n je jeho pořadí od 0
23:25 mornfall macro process(x, y) { ... }; instantiate proctemplname(params)?
23:25 Erbureth process proctemplname(params){procdef}
23:25 Erbureth jj
23:25 mornfall macro process templ(x, y) { ... }: instantiate templ(a, b);
23:26 mornfall ;
23:26 Erbureth macro tam ani být nemusí, stačí, když to bude reagovat na ty závorky
23:26 mornfall aha
23:26 mornfall expression taky nemá macro
23:27 mornfall otázka je jestli je potřeba mít to instantiate
23:27 mornfall templ(a, b); v toplevelu asi nejde zaměnit s ničím jiným
23:27 Erbureth máš pravdu, nejde
23:29 mornfall jedině že bychom chtěli aby process, system, etc. nebyli klíčový slova
23:29 mornfall y
23:29 mornfall a co tak process templ(a, b);
23:30 mornfall to taky docela dává smysl, ne?
23:30 Erbureth jj, to by taky šlo
23:31 Erbureth a asi by to bylo i lepší pro procesy z definic
23:31 mornfall jo, no
23:31 Erbureth __id by značilo index instance?
23:31 Erbureth templ[__id]
23:32 mornfall to je asi celkem interní věc ne?
23:32 mornfall jo takhle
23:32 mornfall hm
23:32 Erbureth a __count
23:32 mornfall já bych řekl, ať si to lidi indexujou explicitně jestli chcou indexy
23:32 mornfall parametrem
23:32 Erbureth jo, to by taky šlo
23:33 mornfall stejně chceš spíš spojitý indexy přes různý druhy procesů
23:34 mornfall jen asi budeš potřebovat macro-level loop :-)
23:34 mornfall to je trochu nepříjemný...
23:34 Erbureth jak jsem nad tím uvažoval, tak je to hodně nepříjemné
23:34 mornfall (aby šlo vyrobit N procesů kde N je input...)
23:35 Erbureth hlavní problém by byl předání procesu jako parametr makru
23:35 mornfall no já spíš myslel něco jako
23:35 mornfall for ( i in 1 to N )
23:35 mornfall process P(i, "bleble");
23:36 Erbureth macro-level loop už mám v merku
23:36 Erbureth proto jsem taky posílal i tenhle patch
23:36 mornfall jen je otázka, jestli to nejde řešit aj nějak míň škaredě
23:36 mornfall třeba rekurzí :-)
23:37 mornfall na to bys zase potřeboval línej if
23:37 mornfall těžko říct
23:37 Erbureth spíš by byl problém udělat poslat jako parametr něco, co není expression
23:38 mornfall tak, poslat můžeš libovolnej AST uzel
23:38 mornfall nejspíš
23:38 Erbureth jako udělat to lazy
23:39 mornfall no, bez toho to úplně nejde, to by divergovalo
23:40 Erbureth takže zavést parametry maker
23:42 Erbureth expression a(expression b) {b + 5}
23:42 mornfall tak, šablona procesu je taky makro s parametrem ne?
23:42 Erbureth s/parametry/typy parametrů/
23:43 mornfall to taky není úplně nutný, v lispu makra fungujou dost dobře aj bez toho
23:44 Erbureth to je vlastně pravda
23:45 Erbureth takže mi stačí získat konstantu, expression nebo string
23:45 Erbureth konstanta je vlastně speciální případ expression
23:46 mornfall k čemu string?
23:47 Erbureth abych ho pak mohl rozparsovat jako ne-expression node
23:47 Erbureth podle potřeby
23:48 Erbureth no... pošlu ti pak nějaké návrhy
23:48 mornfall a nebylo by lepší mít discriminated union "ast node"?
23:49 mornfall a posouvat si to jako AST místo stringu?
23:49 Erbureth budeš zítra v labu?
23:50 mornfall no, nebudu
23:50 Erbureth popř. jindy?
23:50 mornfall no, můžu jen čtvrtek a pak pondělí... příští týden snad ve středu
23:51 mornfall v pátek su v Blavě
23:51 Erbureth čtvrtek jsem zrovna v práci
23:51 Erbureth tak asi na ircu jindy
23:51 mornfall ok
23:51 mornfall online zítra budu
23:51 Erbureth pošlu ti pár patchů, a mezitím to vykrystalizuje
23:51 Erbureth ook

| Channels | #divine index | Today | | Search | Google Search | Plain-Text | summary