Perl 6 - the future is here, just unevenly distributed

IRC log for #divine, 2017-02-21

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

All times shown according to UTC.

Time Nick Message
00:03 divine-buildbot Hey! build divine-nightly-release #71 is complete: Failure [finished]
00:44 divine-buildbot Hey! build divine-nightly-debug #74 is complete: Failure [finished]
00:56 mornfall hm, nějaký xbendik-ovo mvc sežralo všechnu ramku na arke (a umřelo na oom)
01:22 divine-next 1 new patch validated [mornfall]
03:17 divine-buildbot Hey! build divine-next-debug #495 is complete: Failure [finished]
08:33 xstill_ mornfall: ty změny v libc++ se mi moc nelíbí, jednak přidáváš new který budou selhávat, jednak modifikuješ libc++ do kterého jsme zatím vůbec nehrabali; chápu, že to asi zrychlí DIVINE tím, že to nebude v globals (pokud se to locale teda přilinkuje, ale to je možná dost často), nicméně to by možná stálo za to se zamyslet jestli nedokážeme vyřešit nějak líp, protože na to
08:33 xstill_ stejně narazíme i mimo knihovny
10:15 mornfall funkce se volají jen když nějakou locale věc použiješ
10:16 mornfall a ty wstringy skoro určitě alokujou už teď, to se do short-string optimalizace nevejde
10:17 mornfall jsou to něco jako 3kB dat
10:18 mornfall který navíc překáží v sim-u v $globals
10:22 mornfall arke už zase umírá
10:23 mornfall 4x40G, to se asi nevleze
10:26 mornfall xstill_: locale.cpp přítáhne nejspíš dios, protože se vyskytuje aj v C programech
10:28 mornfall ještě se chci zbavit staticky alokovaných stdio bufferů v pdclib-u
10:29 mornfall to je teda asi jenom 750B, proti locale stringům asi zanedbatelný...
11:35 xstill_ napsal jsem Jardovi aby si to uspořádal, a podívám se příležitostně na limit
11:35 xstill_ on tam nějakej byl, ale asi nebyl perzistetní
11:36 xstill_ s tím locale je otázka jestli se to přitáhne když člověk použije cokoli z C++, nebo jenom někdy
11:36 mornfall no, jak říkám, stačí použít dios
11:37 mornfall otázka je jestli to není proto že fs.cpp si jen tak pro radost includuje <iostream>
11:39 mornfall (a pokud je to tím, tak nám to nejspíš deformuje výsledky s -fno-exceptions proti zbytku)
11:40 xstill_ ono by to stejně chtělo zajistit aby se VFS neslinkovalo pokud není potřeba
11:41 mornfall to by se mělo poznat jak přesně?
11:41 xstill_ no, že pokud není potřeba nic z VFS (write,…) tak by se to nemuselo ani přilinkovat ty objekty
11:42 mornfall runtime linker ještě dost dlouho nehrozí, jestli někdy :-)
11:42 mornfall jakože podle toho co se volá v programu by se přelinkoval dios?
11:43 mornfall a smazat <iostream> stejně nestačí
11:51 mornfall hm, ta arke je ale dost nepoužitelná
11:52 xstill_ no ne dynamicky podle programu, ale podle toho jestli to má závislost na nějakých symbolech z VFS. Jen by se musela nějak vyřešit inicializace.
11:53 mornfall hm?
11:53 mornfall to nedává smysl přece
11:53 mornfall vfs implementuje syscally v dios-u
11:54 mornfall ty musíš vypnout nějaký syscally abys mohl vypnout vfs
11:54 mornfall to je provázaný číslama, ne symbolama
11:54 xstill_ hm, pravda, ono to jde všechno přes syscally, takže to moc nepůjde udělat, tak nic no
11:54 mornfall ...
11:58 xstill_ nicméně myslenka byla prostě to co dělá normální statickej linker, jen teda skrz ty syscally to úplně nejde
11:58 mornfall spíš vůbec
12:00 xstill_ no to zas ne, "jen" by linker musel na základně použití symbolu z jedné množiny přilinkovat jinou množinu symbolů a musel bys mít DiOS rozdělený na dvě části
12:03 mornfall to by taky nefungovalo, ne bez globálních konstruktorů který by mohly přepsat tabulku syscallů
12:07 mornfall udělal jsem pkill -U xbendik, arke byla úplně out, oom co pět minut a napsat ten příkaz mi zabralo taky několik minut (zabít ty mvc nestačilo)
12:08 xstill_ už jsem Jardovi řekl, ať si v tom udělá pořádek
12:15 divine-next validate failed (4 tests), 1 patches pending [mornfall]
12:15 xstill_ ono by ti stačilo rozdělit syscally na 2 skupiny, něco jako Entry *__syscals_core = { … }; __attribute__((weak)) Entry **__syscals_fs = 0; a dios-vfs by obsahovalo něco jako Entry *__syscals_fs_impl = { … }, Entry **__syscals_fs = &__syscals_fs_entry; Jen by tím teda bylo o dereferenci a if navíc, což je otázka kolik tě na syscallu stojí, a muselo by se zajistit, že se dios-vfs přilinkuje
12:15 xstill_ ve správnou dobu. Ale to je asi jedno, z hlediska tehlech benchmarků je otázka spíš co přitáhne ten locale, jestli je to VFS nebo DiOS obecně
12:16 mornfall jak by to dios-vfs obsahovalo? to staticky napsat nejde
12:17 xstill_ co nejde?
12:18 mornfall jo to je přeplácnutí weak symbolu, to je pak asi jedno jestli to je celá ta tabulka nebo jen ten ukazatel ne?
12:21 xstill_ v podstatě ano
12:21 mornfall ale když už uvažujeme magický linker který vidí skrz syscally, nebylo by podstatně lepší nelinkovat do dios-u globální proměnné vůbec?
12:21 mornfall stejně je nesmí použít
12:22 mornfall a pak je úplně jedno jestli se vfs přilinkuje nebo ne
12:30 xstill_ no, nelinkovat proměnné, dios neobsahuje definice těch proměnných, jedině bys mohl všechny přístupy k gloabls z dios modůlů nahradit za undefy nebo unreachable nebo něco
12:35 mornfall pokud by se dios linkoval na jedno .bc (co se dříve nebo později bude muset) tak by je stačilo nechat nedefinovaný při linkování a pak pustit stub pass
12:47 xstill_ to by asi šlo
12:47 xstill_ mornfall: umí sim nějak vypsat konstanty?
12:47 xstill_ tak jako má $globals?
12:52 mornfall neumí (víceméně proto že jich je typicky víc než megabajt)
12:52 xstill_ no, nemusel by je člověk vypisovat všechny
12:54 divine-next 1 new patch validated [mornfall]
12:54 mornfall tomu nevím úplně jak zabránit
12:55 xstill_ říkám nemusel, pokud má někdo pocit, že ho osvítí když uvidí všechny konstanty tak ať si je klidně vypíše, to že to není příjemné není podle mě argument k tomu neumět vypisovat konstanty
12:58 mornfall nejde o příjemné, prostě to nejde používat
12:58 xstill_ proč by nešlo používat $constants.foo?
12:58 mornfall pokud ta konstanta nemá unikátní jméno, jakože takových bude hodně, tak bez toho celkovýho výpisu je to k ničemu
12:59 mornfall $constants.foo$31 není úplně věc kterou uhodneš
13:00 xstill_ hm, a kde se vůbec berou tyhle $ věci? Protože pokud ta proměnná/konstanta není statická, tak tam víc se stejným jménem být nemůže
13:00 mornfall třeba statický proměnný uvnitř funkcí
13:01 mornfall nejde o to že by nešlo smysluplně vypisovat konstanty, ale nejde to udělat tak jak se vypisujou $globals
13:01 mornfall a mám jaksi i jinou práci, hodnotu konstanty si většinou člověk může stejně dobře přečíst ve zdrojáku
13:02 xstill_ no dobře, ale pro ne-statickou věc T foo; (nebo const T foo) to přece v LLVM musí být @foo, ne?
13:03 xstill_ já se jen ptal jestli to jde
13:03 mornfall a já řekl že ne
13:08 xstill_ existuje nějaký důvod proč je má první funkce ID 2 a ne 1 nebo je to jen bug?
13:11 mornfall jo to je nejspíš off-by-one na program.cpp:669 (ten iniciální CodePointer by měl být null)
13:12 xstill_ jo, to jsem právě viděl, opravím
15:05 divine-buildbot Hey! build divine-next-debug #496 is complete: Failure [finished]
16:38 xstill_ no, jedna CFL anotace a DIVINE je o 10 % pomalejší, to je taky radost

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