Perl 6 - the future is here, just unevenly distributed

IRC log for #divine, 2013-08-30

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

All times shown according to UTC.

Time Nick Message
08:42 xstill operator=() se nedědí?
08:42 xstill ono to vlastně docelá dává smysl
09:16 mornfall :-)
09:24 xstill zajímavé, ve standardu chybí std::atomic_fetch_... funkce pro pointrové specializace atomicu...
09:27 xstill i když, ono asi pro ně není moc uplatnění, protože oni jsou kvůli C11 a tam asi není atomic ptr
09:27 xstill i když by se hodil teda...
09:29 mornfall No, C11 je takový nedodělaný celkově.
09:30 xstill a ještě je to vesměs nepovinný...
09:30 xstill teda to, že nefunguje std::atomic< int > x = 10; mě pěkně štve
09:31 mornfall to je možná kvůli trivial konstruktorům
09:32 xstill ?
09:33 mornfall jen takovej nápad :) cokoliv cpeš do atomic-u musí být triviálně kopírovatelný a kdovíco
09:33 mornfall triviálně destruovatelný
09:33 mornfall třeba z toho nějak vypadne, že nejde rozumně udělat ani netriviální konstruktor pro atomic samotný
09:34 xstill ah, no on by měl mít konstruktor z T, ale z kompilátorové chyby vyplývá, že to na místě té 10 zkonstruuje atomic a pak to volá copy kontruktor (který není)
09:34 xstill je to takové divné
09:38 xstill jo, konečně prošel mi interface test atomicu :-)
09:48 xstill ale stejně to ještě nemám celé
10:05 mornfall xstill: Btw. to s těma středníkama procházelo protože normálně to asi Milan překládá bez DEBUG.
10:06 xstill super...
10:13 xstill jde u darcs-u nějak nastavit prehook na trvalo?
10:13 mornfall _darcs/prefs/defaults
10:14 mornfall # cat /home/xrockai/dev/public/divine/mainline/_darcs/prefs/defaults
10:14 mornfall apply run-posthook
10:14 mornfall apply posthook /home/xrockai/bin/darcs-posthook
10:15 xstill jo
10:15 xstill a nevíš jestli to jde nastavit jen pro daný příkaz?
10:15 mornfall jo, apply je příkaz :)
10:15 xstill sorry
10:15 xstill dík
10:16 xstill :-D
10:18 xstill projedu build a jestli to projde tak ti ten atomic pošlu
10:22 mornfall Hm, field místo array jsem už dlouho neviděl. :-)
10:24 xstill kde?
10:24 mornfall sharedhashset.test.h
10:25 xstill :-D
10:27 xstill wtf mi zase mění flagy v cmake
10:28 xstill respektive proč nefunguje -DCMAKE_C_FLAGS_RELEASE=...
10:28 mornfall to nevim
10:29 xstill budu to muset prověřit
10:57 mornfall škoda že enum class není ADT
10:58 xstill jak to myslíš?
10:59 mornfall že bych těm hodnotám mohl dát parametry :-)
10:59 mornfall enum class Foo { Bar( int ), Baz }
10:59 xstill nojo, to už by tak nebyl enum, že...
10:59 xstill a měl bys haskell v C++
11:00 xstill skoro
11:00 mornfall spíš ML možná
11:43 xstill hm, tak -gstabs+ zmenšlo release with debug tak o třetinu, ale likování stále potřebuje přes 3GB
11:48 mornfall je to děs
11:48 mornfall asi bych se na to vykašlal
11:50 xstill jako "řešením" je možná konfigurovat RelWithDebug bez PERFORMANCE
11:52 xstill Jiřík by na noťasu mohl konfigurovat bez MPI, to by mu taky pomohlo
11:52 mornfall tojo, ale on zase to MPI chce testovat asi
11:53 mornfall nejmíň kritický je asi to PERFORMANCE
11:56 xstill ono to bude mít v podstatě stejné následky na počet instantní
11:56 xstill a taky compact je dost drahý
11:56 xstill on má totiž jiné visit strukury podle iterace
11:57 xstill na mailu máš ten atomic, mělo by tam stad být všechno, až na to, že nemám každou funkci ve dvou verzích - s volatile a bez...
14:14 mornfall To jsem se zase jednou nachytal... template< typename T > struct X { T t; ... }; pak X() : t() {} a X() = default; není to stejný, protože T může být POD
14:26 xstill pokud je to POD tak X() = default nechá t neinicializované?
14:30 xstill hm, ten bits/c++config.h z libsupc++ asi tak úplně napasuje k té naší libstdc++
14:30 xstill zdá se že to má úplně vypnuté thready a kdo ví co ještě
14:30 xstill neměla by mít svůj vlastní config?
14:42 xstill co je to vlastně za verze knihoven?
14:44 xstill aha, vidím z patchů že je to poskládané z několika zdrojů
14:46 xstill každopádně problém je, že když se pokusím zapnout thready pomocí -D_GLIBCXX_HAS_GTHREADS -D_GLIBCXX_USE_C99_STDINT_TR1, tak mi to zdechne v future na tom, že nemá exception_ptr, který by měl být z <exception> -> <bits/exception_ptr.h>
15:15 mornfall pasuje, ale musí se editovat :)
15:16 mornfall teda relativně pasuje
15:16 mornfall ono ty implementace libstdc++ jsou takový veselý
15:16 xstill no, já jsem si všiml
15:17 xstill s tímhle asi budu potřebovat pomoct
15:19 xstill doufám totiž že implementaci C++11 threadů bysme mohli pouzít z libstdc++ a ona použije naše pthreads
15:22 xstill ale zatím to nejde přeložit (ani knihovny)
15:25 mornfall jo, to jsem si taky myslel :-)
15:26 mornfall a mělo by to v zásadě fungovat
15:26 mornfall cos udělal? (hm, brb, jídlo)
15:28 xstill no zkusil jsem zadefinovat -D_GLIBCXX_HAS_GTHREADS  -D_GLIBCXX_USE_C99_STDINT_TR1
15:28 xstill aby se kompilovali thready
15:28 xstill a pak to bouchlo při kompilaci future
15:28 xstill (zkoušel jse to přidat do příkazu, neměnil jsem c++config.h)
15:39 mornfall hmm
15:39 mornfall jednak je lepší to změnit v c++config.h
15:39 mornfall a druhak gthreads není pthreads :)
15:40 xstill tak mě to bylo divný :-), ale v std/thread je to celé střežené #if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1
15:40 xstill tak jsem to zkoušel
15:41 mornfall gthreads je nějakej portable thread runtime
15:41 mornfall a pthread je až jeho backend
15:42 mornfall libsupc++/gthr.h
15:42 xstill no jo, to jsem našel
15:42 xstill nebo něco takového
15:43 mornfall potřebuješ #define _PTHREADS aby to naincludovalo gthr-posix.h
15:43 xstill aha, já blbec se zase koukal do systémových include místo do divine...
15:44 xstill ale ten _GLIBCXX_HAS_GTHREADS by stejně měl být zapnutý ne?
15:44 mornfall jo to jo
15:44 mornfall když už máš funkční gthr :-)
15:45 mornfall hm
15:45 mornfall ale bits/gthr.h je koukám gthread-posix.h
15:46 mornfall plusminus weak reference
15:46 mornfall tak nevim úplně co se rozbilo
15:47 xstill podle mě je problém, že ta libsupc++/exception je jiná, než co future čeká
15:48 mornfall podívám se
15:48 mornfall hm, tam se toho nemá moc co rozbít
15:49 xstill ono to chce exception_ptr
15:49 mornfall přeložím a uvidím
15:49 mornfall exception_ptr je private, no
15:50 mornfall aha, v C++11 už to je ale veřejný
15:51 mornfall takže to je potřeba přesunout z eh_exception.cc do exception asi
15:52 mornfall (aj s rethrow_exception, current_exception jako extern)
15:55 xstill no, vyzkouším to
15:58 xstill prosimtě, eh_eception.cc:26 to je nějaká divná konstrukce. Co to je?
16:01 mornfall myslíš 29?
16:02 xstill jo
16:02 xstill :-D
16:02 mornfall "class exception_ptr" je forward-deklarace a current_exception je název proměnné
16:02 mornfall () jsou parametry konstruktoru :)
16:03 xstill nojo, ale potom je definovaná funkce current_exception()
16:03 mornfall ha
16:03 mornfall jo, to je prototyp totiž
16:03 mornfall ono s proměnnou by to nefungovalo, protože by ti vynadal na incomplete type
16:04 mornfall a default konstruktor asi takhle zavolat nesmíš
16:04 xstill takže jsou to dvě forward-deklarace v sobě?
16:04 mornfall ale "class exception_ptr" je prostě typ
16:04 mornfall ne, funkce má prototyp, ne forward deklaraci
16:04 xstill no jo
16:05 mornfall to je celý kvůli těm friendům asi takhle
16:06 mornfall ono by asi šlo napsat aj
16:06 mornfall class exception_ptr;
16:06 mornfall exception_ptr current_exception();
16:06 mornfall ...
16:06 xstill jo, a bylo by to čitelné i pro mě :-D
16:08 xstill hm, tak na druhý pokus jsem se posunul o trochu dále
16:08 xstill teď chybí copy_exception
16:10 xstill (já ji mám v bits/exception_ptr.h v systému)
16:11 xstill ale cppreference to nezná
16:12 mornfall taky je možnost ty future zatím zrušit :-)
16:13 mornfall můžeš exception_ptr ukrást někde
16:13 mornfall aj s těmahle GNU vylepšeníma :-)
16:13 xstill no jo, jen nevím jestli se nerozbije něco dalšího
16:14 mornfall to asi nezjistíš jinak než že to zkusíš
16:14 xstill to jo
16:14 xstill zkusím to
17:54 xstill hm, -fno-exceptions -- nepomohlo by nám to třeba, dokud nemáme podporu výjimek v interpretru?
17:56 xstill (ještě teda nevím jestli to pomůže na ten můj problém)
17:58 mornfall pochybuju že půjde libstdc++ přeložit s -fno-exceptions
17:59 xstill no viděl jsem tam #ifdef-y
18:01 mornfall By using this combination of language re-specification by the compiler, and the pre-processor tricks and the functional indirection layer for thrown exception objects by the library, libstdc++ files can be compiled with -fno-exceptions.
18:03 xstill hm, zatím jsem se moc daleko nedostal protože mi chybí std::abort
18:06 xstill ten by měl být v cstdlib a pdclib ho tam i má, jen ho musíme nějak zaplácnout, ale ono ho to asi vůbec nevidí
18:09 xstill wtf jsou ty manglovaný jména na konci usr-cstdlib.cpp?
18:09 mornfall :-)
18:10 mornfall kde na konci?
18:10 mornfall void _ZNSt8ios_base4InitC1Ev( void ) { // std::ios_base::Init
18:10 mornfall tohle?
18:11 xstill divine/llvm/usr-cstdlib.cpp:83  _Unwind_Reason_Code _Unwind_RaiseException (struct _Unwind_Exception *) ...
18:12 mornfall co je na tom manglovanýho?
18:13 xstill aha, tak nic
18:13 xstill jsem jsen viděl množství podtržítek a velkých písmen...
18:13 mornfall :-P
18:19 xstill teda, to že v té běžné cčkové knihovně jsou i c-čkové hlavičky jako stdlib.h zabalené do std:: pokud se kompiluje C++ je divné ne?
18:22 xstill hm, libstdc++ možná bez výjimek půjde, ale ta naše libsupc++ nechce
18:27 xstill minimálně ty  __cxxabiapple věci
18:32 xstill hm, zdá se že někdo v libstdc++ rozhodl, že C++11 bez výjimek nikdo neche, protože future stále nefunguje
18:32 xstill ho jdu zase zkusit vynout
18:34 mornfall :D
18:38 xstill hm, teď jsem alespoň zkompiloval knihovny, až na to, že libpdc až libsup jsou kompilované s výjimkami a libstdc++ bez
18:38 xstill což je asi docela divné
18:40 mornfall tak, divné to je, ale fungovat by to chvíli mohlo
18:40 mornfall jakmile budou llvm výjimky tak se to začne sypat ovšem
18:41 xstill možná, že to nepotřebuju vypnout :-)
18:42 xstill ale momentálně zkompiluji threadový příklad ale podle draw nefunguje
18:44 xstill je to horší
18:44 xstill /home/xstill/DiVinE/mainline/divine/llvm/execution.h: 852: assertion `unknown opcode 32' failed;
18:45 xstill jak zjistím co je opcode 32?
18:46 xstill jestli je to zase unreachable...
18:47 xstill no asi jo
18:47 xstill rozhodně je v tom bc
18:59 mornfall HANDLE_MEMORY_INST(32, AtomicRMW , AtomicRMWInst )
19:00 xstill aj, to je horší
19:00 xstill to bude intrinsic
19:00 xstill z clangu
19:00 mornfall http://llvm.org/docs/LangRef.html#atomicrmw-instruction
19:01 mornfall to je docela hustá instrukce :-))
19:02 xstill hmm
19:03 xstill drsný, ale kde se nám to tam bere
19:03 xstill ach jo
19:03 mornfall no, asi nezbude než ji implementovat :-)
19:04 mornfall a cmpxchg asi taky rovnou
19:06 xstill asi by to bylo dobré, jako jinak by se dal přeprasit ten __sync_ intrinsic na něco jiného...
19:06 xstill zatím
19:06 xstill než to implementuješ
19:09 mornfall to bych možná mohl udělat hned
19:09 mornfall teda hned po večeři ;-)
19:10 xstill super :-)
20:34 xstill tak jsem to konečně dostal do kompilovatelného stavu i s výjimkama, ale "  Unresolved symbol (global variable): _ZTIN10__cxxabiv115__forced_unwindE."
20:34 mornfall máš při ruce ty intrinsic-y?
20:34 mornfall hm, ten forced unwind jsem tam přitom někam dával
20:34 mornfall aha
20:34 xstill co s intrinsic-ama?
20:34 mornfall jen tam chybí implementace
20:35 mornfall jak se jmenujou ty co generujou atomic instrukce
20:35 mornfall __sync_kdovíco
20:35 mornfall asi mám
20:35 xstill tady je něco: http://gcc.gnu.org/onlinedocs/gcc-4.3.5/gcc/Atomic-Builtins.html
20:36 mornfall jj
20:37 mornfall 6391 Segmentation fault      (core dumped) divine verify atomic_iterface.bc -p assert -d -r
20:37 mornfall ojoj :-)
20:38 xstill hm, divné
20:38 xstill u mě to šlo
20:39 xstill a ještě k tomu mám blbje spelling
20:42 xstill pokud jsi to ještě neposlal tak by zaamendoval ten spelling
20:43 mornfall neposlal
20:54 mornfall xstill: Můžeš rovnou přejmenovat atomic.sh na std_atomic.sh? :)
20:54 xstill jo
20:55 mornfall já chci taky atomic.sh a nechci to přejmenovat protože pak zbytečně vyrobim závislost
20:58 xstill opravil jsme
20:58 xstill *jsem
20:58 xstill blbý race :-D
21:05 mornfall :-P
23:08 mornfall xstill: std_atomic neskipuje když je LLVM vypnutý

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