Perl 6 - the future is here, just unevenly distributed

IRC log for #divine, 2017-04-01

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

All times shown according to UTC.

Time Nick Message
01:48 ilbot3 joined #divine
01:48 Topic for #divine is now DIVINE | http://divine.fi.muni.cz | http://irclog.perlgeek.de/divine/
10:50 yaqwsx mornfall: arke:/home/xmrazek7/divine4 jsou XXX patche s konfigurovatelným DiOSem. Mohl bys na ně mrknout?
10:50 yaqwsx Vlastně byste se na to mohli podívat všichni, že ano :D xstill, blurry
10:57 mornfall yaqwsx: pozorování jedna, chybí tam dios/macros :)
10:57 mornfall yaqwsx: (pozorování dva, jsou tam konflikty s next-em)
10:57 mornfall řekl bych že nemáš signálový patche od blurry
10:59 yaqwsx mornfall: Opraveno. Patchů od blurry se teď bojím, bezptak budou plné konfliktů, protože jsem v DiOSu moc řádil.
11:00 mornfall yaqwsx: ale ty patche jsou už docela dávno v next-u, takže pokud to budeš chtít mergovat tak tomu neutečeš
11:11 mornfall yaqwsx: furt chybí macro/core (nazvat soubor 'core' je trochu nešťastný, protože to je tradiční název pro coredump)
11:11 mornfall (proto tam taky není, darcs coredumpy by default ignoruje :p)
11:17 mornfall ale abych řekl pravdu, je to docela messy... co ta myšlenka skládat komponenty děděním?
11:17 mornfall #define GET_VFS get< 2 >
11:19 mornfall nevyšlo by get< VFS > na stejno, když je to stejně configuration-specific kód? (co je možná taky trochu škoda, ta konfigurace je hodně dlouhá)
11:32 mornfall (btw. taky by pak mohlo jít udělat takový trik, že tabulka syscallů by byla statické pole v šablonované fci, template< typename Ctx > Syscall *get_syscalls() { static Syscall table[ N ] = { [ SYS_foo ] = &_impl_foo< Ctx >, ... }; return table; } a pak stačí něco jako switch ( config ) { case C1: syscalls = get_syscalls< Ctx1 >(); break; case C2: ... })
11:33 mornfall (a template< typename Ctx > _impl_foo(...) by bylo ± to co se teď generuje z macro/syscall_dios_impl)
11:34 yaqwsx #define GET_VFS je tam právě z toho důvodu, aby to šlo v budoucnu překlopit na to dědění bez velkých bolestí.
11:34 mornfall (v ideálním světě by krom toho jednoho switche a jednoho typedefu per konfigurace žádnej jinej config-specific kód nemusel existovat)
11:35 mornfall kdyby se to dědilo tak GET_VFS není potřeba vůbec
11:38 yaqwsx Ok, překlopit to na komponenty skládáné děděním teď asi není problém, protože to nejpracnější je hotové a zůstane nezměněné. Jen mám pocit, že jsme minule toto téma uzavřeli s tím "mohlo by to být takhle, ale nevím jak... Udělejme to prvně takto"
11:38 yaqwsx název core beru, neuvědomil jsem si to.
11:38 yaqwsx Mohl bys tedy znovu trochu rozvinout myšlenku komponent skládáním?
11:40 yaqwsx Ještě k délce konfiguračního kódu - buď ho zkrátíš, ale potom se jednotlivé komponenty stanou závislé na uživatelských argumentech anebo pro tu inicializaci vyrobíš funkce, které budou sdílet všechny konfigurace.
11:47 blurry_ joined #divine
11:49 mornfall yaqwsx: no, můžem to udělat postupně, ale tím že to tak bude bolet míň si moc jistej nejsem
11:52 blurry_ yaqwsx: coho sa bojis?
11:52 mornfall yaqwsx:  ten syscall_preprocess.pl a změny v fs-passthru do toho patche asi nepatří?
11:54 mornfall yaqwsx: celkově by tomu dost pomohlo to rozlámat na menší kusy :) pak by bylo taky líp vidět který změny jsou na konkrétní reprezentaci komponent nezávislé
11:56 mornfall třeba tomu fs.cpp -1239 +900 je to asi celkem jedno, to co se stalo ve scheduleru asi taky?
11:59 mornfall (zajímavej problém: dios-specific syscally by se možná mohly jmenovat 'normálně' ale jejich libc wrapper by asi měl být __dios_<foo> ... teď asi vzniklo SYS___dios_get_fault_config?)
11:59 yaqwsx blurry_: Konfliktů, ale nejsou tak strašné
12:00 yaqwsx mornfall: Beru to zatím jako XXX patch, jež je nejjednodušším způsobem, jak to k tobě dostat na code review, finální fatch více rozsekám.
12:00 yaqwsx mornfall: Klidně to už i teď udělám pomocí dědění. Nemám s tím problém - otázka je, jestli nebrzdím Katku nebo blurry_
12:02 yaqwsx mornfall: Ok, DiOS syscally můžu také udělat nesystémově
12:03 yaqwsx Jen mi SYS___dios_get_fault_config přišlo zkousnutelnější než nesystémová změna,.
12:05 mornfall yaqwsx: pokud jde o Katku, tak tam jde v podstatě asi hlavně o změnu syscallů na metody, kdyby šlo vyseparovat to tak se to tím snad vyřeší a dál se jí to nedotkne
12:05 mornfall yaqwsx: s blurry_ to je trochu horší :)
12:05 mornfall yaqwsx: tam to totiž dost závisí na tom jak přesně ty komponenty budou realizované, protože procesy zasáhnou do všeho křížem
12:06 mornfall yaqwsx: (schedulerem počínaje a filesystémem konče)
12:08 mornfall yaqwsx: myšlenka s děděním byla komponenty realizovat jako template< typename Next > struct Component : Next { ... }
12:08 yaqwsx mornfall: Ok, tak jestli máš teď čas, tak to pojďme celé vymyslet.
12:08 blurry_ desite ma
12:09 yaqwsx mornfall: Ok, Katce by tedy asi pomohlo co nejdřívější zmergování nečeho, protože to bude obsahovat novou tabulku syscallů, kterou bude používat.
12:09 yaqwsx blurry_: Pojď vymýšlet taky!
12:10 mornfall a konfiguraci omezit, ideálně, na using DiOS1 = VFS< Scheduler< Core > >; a pak ten jeden switch kterej vyrobí tabulku syscallů ušitou pro DiOS1
12:11 mornfall yaqwsx: Katka si teď naštěstí asi hraje s implementací nahrávání v passthrough módu, takže minimálně do středy ten merge snad počká, pak si s ní kdyžtak sednu a zjistim jak se jí to dotkne
12:11 yaqwsx mornfall: Ok.
12:11 mornfall resp. možná má třeba život, ne jako my :p
12:12 yaqwsx Život mám, jen mě teď přestali bavit lidi.
12:12 blurry_ yaqwsx: v pondelok mam seminar.. :/
12:12 yaqwsx blurry_: To se máš! A co hezkého má?
12:12 yaqwsx *máš
12:12 mornfall (já vim)
12:12 mornfall (ještě že nejsem člověk :)
12:13 yaqwsx mornfall: Považuji tě za mornfall: Člověk {}, ale naštěstí jsi daleko.
12:13 mornfall yaqwsx: ještě bych teda navrhoval možná trochu kontroverzní změnu oproti tomu cos udělal -- hlavičky syscall implementací v komponentách bych nechal vypsaný
12:14 yaqwsx mornfall: Ok, když to budeme dědit takto, tak vlastně zmizí potřeba jakéhokoliv get, protože všechno budou metody na jednom objektu.
12:14 mornfall yaqwsx: pro VFS je to trochu bolavý, ale stejně se musí napsat implementace, takže overhead je furt dost minimální
12:14 mornfall yaqwsx: pro všechno co není VFS to bude pomalu menší overhead vypsaný než s magií
12:15 yaqwsx mornfall: Tak se to vygeneruje tím perlovým scriptem, který už stejně existuje ;)
12:15 mornfall yaqwsx: jo, ale stačí jednou :-)
12:15 mornfall nemusí to být u každýho buildu :p
12:15 yaqwsx mornfall: Tak jsem to myslel.
12:15 mornfall a existence perlovýho skriptu může zůstat temným tajemstvím
12:15 blurry_ yaqwsx: something something SMT solvers something trigger.. something
12:16 blurry_ yaqwsx: tl;dr deti sa rozhodli hrat s kvantifikatormi a emacsom
12:16 yaqwsx mornfall: Otázka - schedulovací funkci by ale potom bylo hezké volat také jako metodu kontextu. Nebude to velký overhead?
12:16 yaqwsx blurry_: Jak do toho zapadá EMACS?
12:16 mornfall yaqwsx: to se (asi) zainlinuje
12:16 yaqwsx To je pravda.
12:17 mornfall yaqwsx: Matajon používá emacs a rozumí SMT, na tom něco bude ne?
12:17 mornfall a já divine programuju taky v emacsu, double win :-)
12:17 blurry_ yaqwsx: spravili si prettifying emacs mod because users matter for some god forsaken reason
12:18 blurry_ yaqwsx: (ale zatial to je dumb-users unfriendly, lebo som to nesprevadzkovala cele :p)
12:18 yaqwsx blurry_: :D
12:18 mornfall blurry_: poslať na užívateľov emacs nie je zrovna prejav toho že 'users matter'
12:18 blurry_ yaqwsx: mozno iba emacs users matter ;)
12:19 mornfall yaqwsx: jsou nějaké 'invariantní' core služby který musí mít každá konfigurace, a který ke své činnosti nepotřebujou žádný komponenty?
12:19 yaqwsx mornfall: Když nad tím přemýšlím, tak skládání děděním vypadá jednoduše, kde byla ta bota?
12:19 mornfall yaqwsx: nevim, byla tam nějaká bota?
12:20 yaqwsx mornfall: Tím tehdy skončila ta diskuse, pokud si pamatuji.
12:20 mornfall už to hledám
12:20 yaqwsx nápodobně
12:20 yaqwsx moje paměť je mizerná
12:21 mornfall moje připojení k internetu je ještě horší :D
12:21 mornfall 18.3.
12:21 yaqwsx https://irclog.perlgeek.de/divine/2017-03-18
12:22 yaqwsx Jsi rychlejší
12:22 mornfall protože mám grep :-)
12:25 blurry_ nic, necham vas pracovat, krasne vam to ide
12:25 blurry_ prilezitostne si poprosim preklad do nejakeho medzinarodne uznavaneho jazyka
12:25 mornfall blurry_: bitvektorová logika môže byť? :p
12:25 yaqwsx blurry_: Klingonština?
12:26 yaqwsx mornfall: V čem by byla komponenta, která je ve všem a je nezávislá na ostatních byla odlišná?
12:27 mornfall yaqwsx: že by mohla fungovat jako zarážka na konec :) ale je to asi jedno, jinak se tam prostě vyrobí prázdná
12:27 blurry_ https://en.wikipedia.org/wiki/List_of_official_languages
12:30 yaqwsx mornfall: Nemohla by být zarážka něco, co implementuje všechny syscally s hláškou "Not implemented"?
12:30 yaqwsx Potom se zjednodušší tabulka wrapperů syscallů
12:30 mornfall mohla
12:31 mornfall (tam se ale bude muset ten seznam metod skutečně nagenerovat)
12:31 mornfall (ne že by to byl problém, just saying)
12:31 yaqwsx Jojo, s tím souhlasím.
12:32 mornfall a implementace teda taky, ale to by taky mohlo jít bez větších potíží
12:32 mornfall (drobná nevýhoda je, že kdyby někdo volal syscall 'interně' tak nedostane compile error ale runtime error, ale s tím asi lze žít)
12:33 mornfall (teda pokud by to byl pokus volat směrem 'nahoru' v tom stacku komponent)
12:33 yaqwsx Ta půjde i bez rekurze v preprocesoru.
12:35 mornfall taky by se pak v syscall.def nemuselo rozlišovat do který komponenty co patří
12:36 yaqwsx To je pravda.
12:38 yaqwsx Jedna věc se mi na tom nelíbí. Pokud se skutečně má zkrátit implementace konfigurace, tak pak se ale komponenty DiOSu musí stát závislé na uživatelském vstupu (SysOpts). Opravdu to chceme?
12:38 mornfall (to co nevim jistě, ale docela hrozí je, že ty passthrough čísla budou muset taky ven, protože jsou Linux-specific, tzn. budou muset zůstat v tabulce bokem, ale tam jde jen o mapování našich SYS_* na linuxový SYS_* tak tam snad nebude muset být nic dalšího)
12:38 mornfall yaqwsx: jo tady to jsem zatím nepochopil co znamená -- v jakém smyslu závislé?
12:40 mornfall z pohledu toho, že je to vektor dvojic mi to nepřijde jako žádný problém
12:40 yaqwsx Že scheduler je svázán s tím, že řetězec "trace:threads" v něm zapíná traceování vláken.
12:41 yaqwsx V současné verzi tam je právě ten init, který "překládá" trace:threads na to, že se použije tato schedulovací funkce
12:43 mornfall no, zase když to vezmeš z druhý strany, nebylo by extrémně divný kdyby každá konfigurace chápala stejný opšny jinak?
12:44 yaqwsx A to se právě může stát - vyměním scheduler a je to tam...
12:44 mornfall nj, ale když to řeší konfigurace tak se to může stát i když nevyměním scheduler
12:44 yaqwsx Ok, ale ono je to vlastně pozitivní
12:45 yaqwsx Když se potom z komponent bude vytahovat help, tak můžu být schopen z DiOSu vytraceovat help na míru šitý konfiguraci
12:51 mornfall uvažuju jestli je lepší ty opšny předávat konstruktoru, nebo to napsat jako explicitní rekurzi (v tom druhým případě může komponenta odstranit to co pochopila a zarážka ohlásit error pokud tam něco zbylo)
12:52 yaqwsx Přijde mi lepší varianta b
12:53 mornfall třetí možnost je teda mít úplně fixní parser který to nasype do struktury
12:53 mornfall není to moc flexibilní, ale zase je zaručená stabilita mezi konfiguracemi
13:06 yaqwsx Pullnul jsem a při kompilaci dostávám spoustu warningů z libm, je to ok nebo jsem něco rozbil?
13:07 mornfall je to 'ok'
15:15 mornfall xstill: myšlenka: divcc/divld a virtuální mašina kolem toho jsou publikačně těžko prodejný artikl, ale pro ten článek na RV na kterým pracuje Katka by to byla IMHO solidní přidaná hodnota
15:16 mornfall xstill: (deadline je 1.5. takže by to mohlo být stihnutelný aspoň v nějaké základní podobě... a pro RH by to taky byl zajímavej/prezentovatelnej výsledek)
15:29 yaqwsx mornfall: Aby mohla být tabulka syscall wrapperů jednoduché statické pole uvnitř šablonované funkce, je třeba mít uvnitř každé komponenty unwrapper pro každý syscall (tzn něco, co vezme va_list a zavolá implementaci s rozbalenými hodnotami). Tento unpacker si představuješ psát nebo generovat?
15:35 mornfall yaqwsx: unwrapper by měl stačit jeden na celý dios
15:35 mornfall yaqwsx: (jen by byl šablonovaný typem kontextu)
15:39 yaqwsx No to ne. Implementace syscallu je něco, co bere argumenty. A ty argumenty musím vytahat z va_listu
15:43 mornfall ale ty argumenty nezávisí na komponentě, jen na definici syscallu
16:27 mornfall (jeden jsem myslel jeden na každej syscall, ne jeden na všechny syscally)
22:00 divine-buildbot Hey! build divine-nightly-debug #96 is complete: Failure [finished]
22:05 mornfall buildbot si nějak pomíchal nightly vs next

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