Perl 6 - the future is here, just unevenly distributed

IRC log for #divine, 2017-01-29

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

All times shown according to UTC.

Time Nick Message
01:25 divine-buildbot Hey! build divine-next-debug #455 is complete: Success [finished]
02:48 ilbot3 joined #divine
02:48 Topic for #divine is now DIVINE | http://divine.fi.muni.cz | http://irclog.perlgeek.de/divine/
03:39 divine-buildbot Hey! build divine-nightly-debug #63 is complete: Success [finished]
08:32 xstill mornfall: co potřebuješ v tom VM nainstalované aby se divbench připojil na postgres?
08:33 mornfall funkční odbc?
08:33 xstill i když on si to vlastně může i nainstalovat ten run script
08:34 xstill přemýšlím jestli má vůbec smysl to přidávat do toho obrazu
09:01 xstill jinak ident z VM funguje, jen se musí ručně nastavit jak se má jmenovat ten postgres uživatel (= username venku z virtuálky)
10:14 mornfall někdy si budeme muset sednout a stvořit nějakej důkaz korektnosti pro tau redukce (to co je teď v divinu zase jednou není dobře)
10:19 mornfall (myslím si, že interrupt_mem by měl jít před load a za store, kolem atomických by asi měl být interrupt load, instrukce, interrupt store)
10:23 mornfall ten problém co je tam teď je, že vznikají bloky který začínají storem a pak jsou k tomu atomicky přilepený loady který nemůžou pozorovat dopad toho store na ostatní vlákna
10:25 mornfall správně by ty bloky asi měly vypadat tak, že obsahujou nějaký loady a končí storem (mám to nahozený, ale failuju nějaký testy)
10:31 xstill hm, zrovna včera jsem nad tím přemýšlel, ale zjevně ne dost
10:34 mornfall je to ještě trochu horší, store musí mít taky předsebou interrupt_mem( ..., load )
10:34 mornfall před sebou*
10:34 xstill proč?
10:35 mornfall jinak z i++ vznikne atomická akce
10:35 xstill ajo :-/
11:23 divine-next 2 new patches validated [mornfall]
11:32 divine-next 1 new patch validated [mornfall]
14:27 yaqwsx Jak proběhl defconf?
14:27 divine-next 1 new patch validated [mornfall]
14:29 mornfall to nevim, tam jsem nikdy nebyl :p
14:29 mornfall hm, to se vlastně jmenuje spíš defcon
14:30 yaqwsx *devconf
14:30 yaqwsx Ano, zároveň je defcon i PC hra o studené válce :D
14:31 mornfall já si představil spíš tohle, https://defcon.org/
14:32 yaqwsx Ah, ok.
14:33 mornfall jinak trochu nuda...
14:34 mornfall yaqwsx: mě by spíš zajímalo jak se má dios ;)
14:46 yaqwsx mornfall: Popravdě teď trochu stagnuje. Ohledně jeho modularizace - nenapadlo mě nic převratného a jsem teď v mentálním rozpoložní, že ani jedna z variant, které jsme navrhli se mi moc nelíbí.
14:46 yaqwsx Jestli máš teď čas, klidně můžeme brainstormovat.
15:04 mornfall hm
15:05 yaqwsx mornfall: Jak jsi to vlastně myslel se šablonovaným stavem? Teď jsem si to přečetl znovu a úplně jsem to nepochopil ohledne generování tabulky syscallů.
15:05 mornfall no to staví na tom principu, že tabulka syscallů se složí v boot-u z dílčích tabulek
15:06 mornfall syscally nejsou volné fce jako teď, ale metody
15:07 mornfall ta dílčí tabulka obsahuje wrappery které udělají return std::get< Typ >( stav ).syscall( ... )
15:07 mornfall tzn. třeba std::get< VFS >( stav ).write( ... )
15:08 mornfall (a ta metoda by vlastně ideálně brala už rozbalený parametry, nikoliv va_list)
15:09 mornfall pár těch wrapperů na nepříjemný syscally se asi bude muset rozepsat, ale dost toho jde generovat z syscall-vfs.def nebo tak něco
15:09 yaqwsx Ok. A pak by ještě existovala druhá tabulka, která obsahovala delegáty na ne-syscally (např. getThreadId)?
15:10 yaqwsx Nebo se jí umíme nějak vyhnout?
15:11 xstill getThreadId je přece jen funkce která vůbec dios nevolá, ne?
15:11 mornfall to nevim jestli je lepší jedna univerzální definice nebo ukazatel na funkci
15:11 yaqwsx Ale její implementace závisí na scheduleru.
15:12 mornfall xstill: getThreadId() { return 0; } bude pro sequential scheduler fungovat dost dobře, ale asi pro žádný jiný
15:12 yaqwsx Když budu mít bezvláknový scheduler, tak by měla být implementovaná jako return 0
15:12 xstill kolik těch smysluplných konfigurací diosu bude?
15:12 xstill jde to nějak odhadnout?
15:13 mornfall zatím aspoň 3, budou-li procesy bude to asi víc
15:13 xstill dává smysl mít threadový scheduler bez procesů?
15:13 xstill jaký je ten 3.?
15:13 xstill (chápu singhlethreaded a ten co je teď)
15:13 mornfall plus mínus vfs
15:14 mornfall ale možná je to jedno, vfs třeba bude stačit neinicializovat
15:14 xstill právě, pokud se správně rozdělí cpp tak se ani nemusí přilinkovat
15:14 mornfall procesy těžko říct, ale zadarmo nejsou, ani v paměti ani v instrukcích
15:15 xstill a inicializace může být podmíněná tím, že existuje nějaký __dios_vfs_init symbol nebo tak něco
15:15 xstill takže pak jen stačí, že se neslinkuje
15:15 mornfall touhle cestou bych radši nešel
15:15 xstill proč?
15:15 mornfall s tím budou jen problémy
15:16 mornfall protože to přestane fungovat jakmile se vyřeší problém sdílené libc/libc++
15:16 xstill + nevím jestli VFS něco stojí v okamžiku kdy se jen inicializuje (kromě chvilky bootu)
15:16 xstill to je pravda, že s nesdílenou libc++ by to byl problém
15:17 mornfall stojí minimálně položku snapshotu (nebo i několik, nevím)
15:18 mornfall yaqwsx: asi bych zkusil tady ty 'shortcut' funkce nespecializovat a zjistil kam až s tím půjde dojít
15:18 mornfall yaqwsx: sequential může v příslušným registru držet 0, return 0 by se vyplatilo stejně jen v momentě kdy se v době překladu ví že se bude volat tady ta implementace
15:19 yaqwsx mornfall: Jakože se snažit použít stejné funkce nehledě na to, jaký scheduler bude použit, chápu správně?
15:19 mornfall yaqwsx: jo
15:19 mornfall ten problémový element je ve skutečnosti trace
15:20 yaqwsx Proč? Ten také může být obecný.
15:20 xstill nemůžou ty syscally být něco jako { void ( void *syscallstate, args... ), state offset }, a volání pak bude vypadat tak, že se ze stavu získá pointer na příslušném offsetu a ten se tomu hodí, pokud existuje a pokud neexistuje tak to bude fault?
15:21 xstill je to typově hnusný teda
15:21 xstill a vyžaduje to,  že funkční podčásti stavu musí být prefixy
15:21 xstill nebo druhou tabulku na mapování indexů
15:21 mornfall yaqwsx: no, bylo by dobré aby mohl zůstat bez syscallu a zároveň aby měl per-threadový počítadlo ... ale to se vlastně vyřeší pokud bude existovat zaručená sekvenční varianta thread-id
15:21 mornfall xstill: tohle je už myslím vyřešený
15:23 mornfall yaqwsx: a nakonec pokud by mělo být sekvenční threadid volitelný, tak to asi může vracet 0 a bude se to celý chovat jako teď (sdílenej offset mezi vláknama)
15:23 mornfall yaqwsx: (jen pak to API musí jasně být jen hint a ne zaručený threadid)
15:26 mornfall yaqwsx: scheduler kterej vede seq. threadid by pak asi musel překladovou tabulku držet v dalším registru, nevim jak jinak se k ní rozumně dostat (pokud je ta tabulka nullptr tak seq. threadid neexistujou)
15:27 mornfall pokud by byla jen ve stavu, muselo by se na ni přes syscall
15:27 yaqwsx mornfall: Nepokazíme si něco, když budeme "skoro všechno" držet v registru?
15:27 mornfall to je otázka co je skoro všechno
15:27 mornfall nebezpečný to trochu je :-)
15:30 mornfall alternativa by byla počas bootu to nacpat do globální tabulky konstant
15:31 mornfall tím se teda trochu pokazí nějaký invarianty, ale nevim jestli k něčemu jsou (zejména že konstanty neukazujou do haldy... až na to že to už možná ani není pravda, nevim jak přesně jsou teď vedený metadata)
15:31 mornfall ten ukazatel se od bootu už měnit totiž nebude
15:31 mornfall takže asi škoda registru
15:32 xstill metadata jsou myslím na haldě odkazovaný z konstant
15:33 xstill což nám asi taky plýtvá spoustu pointerů v snapshotu teda
15:34 xstill asi jsem schopný je přehodit zpět do konstant
15:34 xstill a udělat z nich jednu velkou tebulku, takže funkci půjde najít v konstatním čase podle instrukce
15:37 mornfall kde spousta = 2
15:37 mornfall jdu ven, bbl
15:40 xstill aha ono se to cpe všechno do jednoho objektu, měl jsem pocit, že je jeden na funkci
15:45 xstill i tak, ty dva pointry se nikdy nezmění, trochu problém je, že aby to mohlo být v konstantách přímo, museli bychom napočítat počet instrukcí staticky, což se kvůli loweringu počítá špatně, leda by se lowering vytáhnul do lartu
17:05 mornfall jo to jo
17:05 mornfall lower se asi klidně může posunout na dřív
17:08 mornfall dbg_value se stejně bude muset vyřešit jinak než je teď
17:58 xstill proč?
21:12 mornfall no protože jak je teď nefunguje dobře
21:12 mornfall chybí nám stdatomic.h
21:26 mornfall https://github.com/khizmax/libcds tady je taky spousta unit testů

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