Perl 6 - the future is here, just unevenly distributed

IRC log for #divine, 2013-06-09

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

All times shown according to UTC.

Time Nick Message
08:50 xstill hm budu muset specializovat std::atomic< Blob >
09:11 spito joined #divine
10:08 spito mornfall: víš, že máš v bittuple.h nekonzistenci v umisťování { ?
10:29 mornfall kdyby jenom tam :-)
10:44 spito tak já bych to s dovolením upravil
10:49 mornfall proč?
10:50 mornfall a asi hlavně, jak? :)
10:51 mornfall jak na to koukám, na ř. 97 chybí newline před {, to je asi všechno ne? :-P
10:54 spito já myslel, že máš otevírací závorku vždycky na tom samým řádku
10:54 mornfall nene :-)
10:55 spito tak jak to tedy má být?
10:56 mornfall to záleží aj toho co je v hlavičce aj od toho co je v těle
10:56 spito a máš na to nějaký deterministický algoritmus?
10:57 mornfall algoritmus je deterministický z definice
10:57 spito a ta je?
10:57 mornfall a nemám na to algoritmus
10:58 mornfall An algorithm is an effective method expressed as a finite list[1] of well-defined instructions[2] for calculating a function.
10:58 mornfall (determinismus plyne z toho že počítá funkci)
11:00 spito no, takhle mi to přijde, že to sázíš tak nějak od boku :P
11:01 mornfall sázim to od boku, protože neznám žádné dobré pravidlo které by spolehlivě dávalo estetické výsledky
11:02 mornfall problém je hlavně s vyvážením „hustoty“ kódu
11:03 mornfall podobná nepravidelnost je v prázdných řádcích
11:04 mornfall to jestli { dostane vlastní (prázdný) řádek je jen speciální případ
11:05 mornfall navíc teda pokud máš initializer list, tak { na vlastním řádku je dobrá protože "resetuje" indent
11:05 mornfall stejně tak za dlouhou hlavičkou cyklu
11:05 mornfall (která je zlomená a posunutá)
11:08 mornfall ale mohl bys možná opravit dimension u storage, na [ align( Virtual::bitwidth, 32 ) / 8 ] :-)
11:10 spito oka
11:14 spito mornfall: a co takhle....posudek? :)
11:14 mornfall zatraceně :D
11:14 spito Zuzka se mi už směje, že to je jak na veterině
11:14 mornfall já to šťastně vytěsnil :-))
11:15 mornfall asi bych něco měl... nedovedeš si představit jak hrozně se mi nechce
11:15 spito mornfall: tohle by byl safra blbej důvod, proč bych musel protahovat....
11:15 spito ještě blbější, než tvůj
11:16 mornfall to by nebyl důvod protahovat
11:16 spito jakto?
11:16 spito oni by to vzali bez oponentury?
11:16 mornfall někdo by mi vyhrožoval tak dlouho než bych to fakt napsal
11:59 xstill hm, budem muset vymyslet jak hashovat NTree stav aniž by se poskládal
12:01 mornfall xstill: je to drahý?
12:04 xstill o to nejde, ale chtěl jsem udělat ten compact cell pro Shared a to bez toho nepůjde asi
12:04 xstill (protože na složení je třeba lokální pool)
12:04 xstill (bez poolu by to drahý určitě bylo)
12:29 mornfall asi se bude muset zobecnit spookyHash
12:29 mornfall komponovatelný není, to jsem ověřil
12:31 mornfall teda není ani iterovatelný, ve smyslu že mu nestačí podstrčit hash předchozího kusu jako inicializaci aby to fungovalo
12:31 mornfall takže potřebuje dostat generátor jako parametr
12:34 mornfall resp. spíš iterátor s efektivním memcpy
13:12 xstill hm, kde se vzala ta implementace co je v divine? To je nějaká optimalizace na výkon? Ono totiž to co je na té okazované stránce by stačilo na ten NTree. Prostě by se volalo SpookyHash state; state.init(...); root->forAllLeafs( p, [&]( Leaf l ) { state.update( ... ) } ); state.final( h0, h1 );
13:13 spito xstill: toho spookyhashe?
13:13 spito to jsem tam dal já
13:13 xstill jo ale to není to co je na tom odkaze
13:13 spito upravená varianta oficiálního vydání
13:13 spito ale je
13:13 spito varianta 2
13:14 spito metoda hash128
13:14 spito nebo jak se to jmenovalo...
13:14 spito tuhle iterativní variantu jsem neuvažoval
13:15 xstill aha ono by asi stálo zato to celé nainportovat jako external a podle toho co je potřeba používat Hash128 nebo iterativní
13:15 xstill protože pro NTree bude iterativní potřeba
13:15 xstill asi to udělám
13:16 spito ono v době, kdy jsem to dělal, jsem to nevěděl
13:17 xstill jasný
13:24 mornfall no, kód v SpookyV2.{h,cpp} je mnohem lepší :-)
13:25 spito než co?
13:25 mornfall než to co tam máme teď
13:25 spito jako hezčí?
13:27 mornfall jo, a taky použitelnější (protože to má potenciálně perzistentní stav)
13:27 spito tak já měl za to, že je zapotřebí jenom nahradit funkci jenkins3
13:35 xstill mornfall: navrhuju hodit SpookyV2.{h,cpp} + test do external/jenkins a volat je z hasheru přímo
13:35 mornfall jasně, ale předělat funkce na preprocesorový makra je dost downgrade :-)
13:35 mornfall xstill: nevim, tam je trochu blbý že chceme implementaci mít v headeru, asi
13:36 xstill a chceme? Proč?
13:36 xstill ten hash může zůstat takhle ne?
13:37 mornfall no, mi přijde že ta funkce není tak velká abychom dokázali s jistotou říct že nemá smysl ji inlinovat a propagovat do ní konstanty
13:38 xstill taky fakt no tak ale to není takový problém to spojit do jednoho .h
13:38 xstill potom už bych to ale asi nedával jako external
13:38 mornfall :-)
13:40 mornfall já bych klidně zachoval aj to jednoduchý rozhraní, bez in/out parametrů
13:40 mornfall nevim
13:41 xstill no tak já to udělám tak, že to zmerguju do hash.h a udělám k tomu rozhraní které bude vracet hash128_t
13:41 mornfall rovnou přesuň hash*_t do hash.h taky
13:41 mornfall já to tady udělal ale nemam to zarecordovaný a nechci vyrábět konflikty
13:41 mornfall zbytečně
13:41 xstill a kde je teď
13:41 xstill ?
13:42 mornfall pool.h snad :-]
13:42 mornfall a taky je potřeba zjistit co s nulama
13:43 mornfall spito tam potichu vrazil dva ify který zaručí, že ani jedna polovina nebude nula
13:43 mornfall ale nedá se říct že by to bylo zrovna kosher :-P
13:43 xstill :-D
13:44 mornfall teda vlastně 4 ify
13:45 mornfall aby nemusel opravovat HashCell, počítám :-)
13:51 spito mornfall: jak to chceš upravit jinak?
13:54 mornfall no, teď když je hashlock 64b, tak klidně můžeš používat 2 bity jako lock/valid
13:54 mornfall máš 62b hashe a nemusíš dávat dovnitř hashe škaredý hacky
13:55 mornfall navíc to je izolovaný od implementace tabulky samotný
13:55 xstill spito: jen teď nic nedělej s CompactCell v tom se hrabu já
13:56 spito xstill: neboj
13:56 mornfall xstill: btw. není mi úplně jasné proč potřebuješ tu specializaci?
13:56 spito to, co tam je, je jenom nástřel
13:56 xstill jakou specializaci?
13:56 mornfall 10:50 ( xstill ) hm budu muset specializovat std::atomic< Blob >
13:57 xstill no protože CompactCell má atomic na Blob a ono to s tím samo nedokáže fungovat
13:58 xstill (že to není ani int ani pointer)
13:58 mornfall aha, jakože ta instance prostě nejde vyrobit?
13:58 mornfall ale to je divný ne?
13:59 mornfall nebo se tomu nelíbí ten explicitní default konstruktor?
13:59 xstill nevím co se tomu nelíbí
14:01 mornfall no, já normálně atomic od Blobu vyrobím a nic to neřekne?
14:02 mornfall http://pastebin.dqd.cz/oI0Q/ tohle se přeloží (s -I. -std=c++11)
14:02 xstill hm
14:02 xstill divné
14:04 mornfall na tom nic divné není ;-) divné je že to nefunguje tobě, ale nevim co znamená nedokáže fungovat
14:05 xstill nepřeložilo se to. Pak se na to ještě podívám.
14:09 spito nechybí ti "noexcept"?
14:09 mornfall ten tam je :-)
14:09 spito já vim
14:09 spito ale jestli ho tam má vláďa...
14:11 xstill mělo by to být aktuální
14:18 mornfall no, pokud se nic nezmění, tak budu sedět ve vaší komisi jako sekretář :-)
14:18 spito ten dělá co?
14:18 spito jako u mé obhajoby budeš, ale co u Vládi?
14:18 mornfall píše protokoly a snaží se nesmát moc nahlas
14:19 spito :D
14:19 mornfall budu tam celý den
14:19 mornfall teda od 8:30 do pěti
14:20 mornfall to je daň za PhD studium
14:20 spito máš hodinku na oběd
14:20 spito známky se dávají v rámci těch 30 minut?
14:20 mornfall jo
14:21 spito takže 10 minut 1. otázka, 10 minut 2. otázka, 8 minut prezentace, 2 minuty dohadování o známce?
14:21 mornfall není to fixovaný
14:21 mornfall zejména ne mezi otázkama
14:22 mornfall klidně se může stát že jedna se sfoukne za 3 minuty a na druhý budeš 15 minut maturovat
14:22 mornfall komise vidí do přípravy
14:22 spito a mě ji seberou?
14:23 mornfall jistě :-)
14:23 mornfall co bys s ní chtěl dělat?
14:23 spito no, číst z ní
14:23 spito :)
14:23 mornfall oni se budou ptát hlavně na věci co tam nejsou
14:24 spito aha
14:24 xstill a co je dřív otázky nebo prezentace?
14:25 mornfall hm, to si nějak nepamatuju
14:25 spito já bych řekl, že první jsou otázky
14:25 mornfall ale asi otázky, protože když tě vyrazí ze státnic můžeš odstoupit od obhajob
14:25 mornfall co si tak pamatuju
14:26 xstill takže prezentace už pak má dost fixní čas
14:28 mornfall tak, celej ten rámec je do jisté míry flexibilní... záleží od komise
14:28 spito časy jsou orientační?
14:29 xstill jak to vlastně probíhá s výberem otázek?
14:30 mornfall nemám ponětí, to jsem nikdy neviděl
14:31 xstill myslel jsem časově hlavně. To je někde jinde?
14:31 xstill (jak jsi státnicoval když jsi to neviděl ;-))
14:31 spito písemně
14:32 mornfall tak
14:32 mornfall příprava je v zasedačce
14:32 spito no...ne
14:32 spito podle toho, kde tě grilují
14:32 mornfall no, posledně to bylo v zasedačce :-)
14:32 mornfall pro všechny komise
14:33 spito myslím, že ti, co budou v budově C, tak nebudou přebíhat do B
14:33 mornfall jsou tam dohromady vždycky tři lidi
14:33 mornfall hm
14:33 mornfall teď je to možná víc paralelní :-))
14:33 spito alespoň my máme nějakou místnost v budově C
14:33 mornfall hm, houby
14:33 xstill no ono se těď státnicuje asi ve 3 místnostech naráz
14:33 mornfall ve 4
14:34 mornfall ale příprava je na jednom místě
14:34 mornfall budete holt běhat
14:34 xstill :-D
14:34 mornfall hm, ve 3
14:35 mornfall každopádně má všechny připravující se pod dozorem jeden člověk
14:36 mornfall „Příprava studentů se koná v místnosti C525.“
14:36 mornfall obhajoba je první
14:37 xstill to bereš kde?
14:37 mornfall curl http://www.fi.muni.cz/~hanka/prodekan/pokyny_bc.txt | iconv -f latin2 | less
14:37 xstill :-D
14:41 mornfall (skutečně nechápu jak může ještě dneska někdo používat 8b kódování textu...)
16:23 xstill wtf. mám multiple definition of 'divine::spookyHash(void const*, unsigned long, unsigned long, unsigned long)'
16:27 mornfall řekl bych že ji tam budeš mít fakt víckrát :-))
16:28 mornfall buď ti utekl #include guard nebo to je na dvou místech
16:38 xstill je to divný, guard tam je grep nic neodhalil
16:38 xstill kdyby to alespoň zařvalo dříve než na konci kompilace
16:39 spito neřve linker?
16:40 xstill no právě ten jo
16:40 spito hehe
16:40 spito chybí ti static
16:42 xstill spito: chybí :-D
16:42 xstill díky
16:43 spito ale kdybys z toho udělal šablonu.....
16:43 spito tak ten static tam být nemusí....ale nevím přesně, jaké to má vlastnosti při kompilaci
16:44 * xstill to teď ani vědět nechce ;-)
16:46 xstill už jedou testy :-)
17:09 xstill mornfall: error: first argument to atomic operation must be a pointer to a trivially-copyable type ('const divine::Lake::Pointer *' invalid)
17:10 xstill nevím jakto že to u tebe šlo
17:11 xstill hmm, gcc to přeloží totiž
17:11 spito clang to nedá?
17:11 xstill clang nepřeloží ani ten příklad
17:12 xstill přitom jasně vidím, že používá libstdc++ z gcc
17:12 mornfall to víš že přeloží
17:13 xstill hm jo
17:13 mornfall sice to nejde slinkovat... :-)
17:13 mornfall ale to je úplně jinej problém
17:14 xstill jasný, problém byl, že mě to předtím dávalo jinou chybu a já jsem dodělat operator=
17:14 xstill a pak se divím :-)
17:14 mornfall ... :-P
17:15 xstill (samoržejmě to před tím byla taky nějaká blbost asi)
17:16 spito mornfall: počítám, že { v bit tuplu mám ponechat tak, jak jsou
17:17 mornfall spito: ten jeden newline tam klidně přidej ;-)
17:18 spito mornfall: a mám další problém - v DBM mají pool řešený takovým způsobem, že se tam vyskytuje struktura s prázdným polem
17:18 spito a to se gccéčku nelíbí
17:19 spito po prohlédnutí kódu jsem usoudil, že místo prázdného pole tam dám aspoˇjednotkové pole
17:19 spito *aspoň
17:20 spito ale nejsem si jistý, jestli to je dobře
17:21 spito mornfall: ten newline tam nedám, protože se mi to nelíbí
17:22 mornfall hh
17:24 mornfall kde vidíš to 0-length pole?
17:24 spito dbm/include/base/ItemAllocator.h
17:25 spito dbm/include/dbm/inline_fed.h
17:25 spito allocator : 177
17:26 spito fed: 336
17:26 mornfall no, když tam dáš 1, tak tím rozhasíš velikosti
17:28 mornfall proč tam prostě nedáš -isystem?
17:28 mornfall už jsem se na to asi ptal několikrát, ale furt neznám odpověď :-P
17:28 spito jo, to nevim co přesně je
17:28 spito a kam se to dává a vůbec
17:29 mornfall man gcc
17:29 mornfall /isystem
17:30 mornfall http://stackoverflow.com/questions/1867065/how-to-suppress-gcc-warnings-from-library-headers
17:32 mornfall jo, a všechny "diagnostic push" se můžou smazat, protože jsou zbytečný :-)
17:32 mornfall teda pragmy
17:32 mornfall (pop bez push funguje jako restore commandline options)
17:34 mornfall jo, a když si hraješ s warningama, tak další užitečná věc by byla přeuspořádat #includy v protisměru závislostí
17:35 mornfall teda, v směru, ne protisměru
17:35 mornfall prostě tak aby se nemohlo stát že máme neviditelnou (nezachycenou žádným #include) závislost
17:36 mornfall upravit dependencies.pl tak aby ti vyrobil topsorted seznam headerů nemůže být problém :-)
17:37 mornfall ono by to mohlo jít aj automatizovat, tzn. automaticky zpermutovat všechny #include do pořadí daného tím seznamem
17:38 mornfall ale to je asi už zbytečně trhlý ;-) vypsat co je ve špatným pořadí by úplně stačilo
17:45 xstill super teď mám udefined reference to __atomic_exchange
17:47 xstill clang z těch atomiců docela nemůže
17:47 xstill sranda je že v těch symbolech vůbec není k čemu patří
17:50 spito mornfall: tak pragmy jsou někde jenom v omezeným rozsahu
17:51 xstill a navíc jenkins je plný old-style-cast
18:08 mornfall xstill: v gcc je __atomic_exchange builtin
18:08 mornfall ten symbol nemá existovat
18:08 mornfall — Built-in Function: void __atomic_exchange (type *ptr, type *val, type *ret, int memmodel)
18:08 xstill super
18:08 xstill clang ho vytvořil
18:09 mornfall 19:13 (@ mornfall ) sice to nejde slinkovat... :-)
18:09 mornfall vím o tom
18:10 xstill a já jsem se ztratil v závorkách old-style-cast :-D
18:10 mornfall počítám že clang má jen tohle, — Built-in Function: type __atomic_exchange_n (type *ptr, type val, int memmodel)
18:11 xstill hm otázka je co s tím
18:12 xstill uvidím jestli aspoň projdou testy...
18:28 xstill spito: co plánuješ dávat do prezentace k obhajobě?
18:33 spito xstill: nevím
18:34 spito asi že existuje divajn
18:39 mornfall xstill: no, ty bys to asi hlavně měl přeložit, pokud se nechystáš prezentovat anglicky
18:39 mornfall resp. je dost nezvyklé prezentovat ze slajdů v jiném jazyce pokud nejsou k té příležitosti vysloveně půjčené
18:40 mornfall a zvýrazni si klíčové údaje / myšlenky
18:49 xstill hm, prezentovat anglicky se nechystám to by asi nepotěšilo ani komisi ani mě
18:50 xstill co tomu říkáš obsahově? mě příjde že je tam toho o kompresi relativně málo ale zase nevím co přidat...
18:50 xstill spito: jo to jsme tak nějak napsal, dokonce i že existuje graf stavového prostoru, to Hliněného určitě potěší ;-)
18:51 xstill (zdá se že jsem dosáhl toho, že clang divine neslinkuje a gcc 4.7.3 na něm cyklí
18:51 xstill )
19:09 xstill mám všechno strašně rozbitý...
19:09 xstill budu musate nainstalovat nějaký funkční OS ;-)
19:10 xstill který se člověku nerozpadá pod rukama
20:24 spito mornfall: kde se to dělá s tím -isystem?
20:25 mornfall spito: CMakeLists.txt
20:25 mornfall jen tam je nějaká zrada někde kterou jsem dosud nevykoumal :-))
20:28 spito tohle by se ale mělo dát vypnout jenom u toho dbm, ne?
20:30 mornfall no, to záleží kde ty warningy jsou, jestli v headerech nebo v implementaci
20:30 mornfall ale to druhý by mohlo být i jedno ne? tam jsou snad vypnutý už i teď?
20:31 mornfall i když kdoví
20:31 spito hmm, tak to řve v headrech
20:32 mornfall a proto to -isystem potřebuješ všude kde se to includuje
20:36 spito myslim, že jsem z toho jelen
20:39 mornfall nojo, studovat dokumentaci je práce... já to někdy udělám, až budu mít víc času
20:43 spito ale to já si i přečtu
22:15 spito left #divine
22:15 xstill joined #divine

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