Perl 6 - the future is here, just unevenly distributed

IRC log for #divine, 2016-08-29

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

All times shown according to UTC.

Time Nick Message
01:17 divine-buildbot joined #divine
07:39 yaqwsx joined #divine
10:11 xstill_ joined #divine
11:13 yaqwsx joined #divine
14:08 yaqwsx joined #divine
14:10 xstill_ mornfall: jsi nezarecordoval ten heap::
14:55 mornfall opraveno
17:39 yaqwsx joined #divine
18:54 mornfall hm, unwind pod maskou by měl dělat co vlastně? :)
18:58 xstill unwindovat?
18:59 xstill zrovna na unwind by maska neměla moc mít vliv, ne? I když teda je riziko, že se odunwinduje přes její reset
19:00 xstill o důvod víc mít na masku RAII
19:00 xstill pak to bude fungovat, odmaskuje se to až po tom unwindu do destruktoru
19:01 mornfall nojo, ale __dios_unwind teď masku nastaví tak jak byla u vstupu do unwinderu
19:02 mornfall i když to asi nakonec ničemu nevadí
19:03 xstill no nevadí, on ji nastaví na to co byla než se do něj vlezlo a to je právě správně, ten destruktor běží až potom
19:04 xstill (naštěstí, specifikace dovoluje pouštět cleanup z personality ale libc++abi to naštěstí nedělá)
19:04 xstill (moc nechápu jak se to dá udělat pokud nejsou triviální)
19:10 mornfall ale počítáme teda s tím, že když se unwinduje skrz nějakou C funkci co maskovala tak se to strašlivě rozseká, je tak?
19:15 xstill to jo, ale to ani moc nesouvisí s unwinderem
19:15 mornfall a s čím?
19:16 xstill teda s naší implementací; to je stejné jako když zavoláš pthread_mutex_lock ve funkci která nestihne zavolat unlock protože se skrz ní unwindne
19:16 xstill taky budeš v háji
19:16 mornfall no není
19:16 xstill no budeš trochu víc v háji
19:16 mornfall výrazně :)
19:16 mornfall tady to totiž může schovat bugy
19:17 mornfall a nemusí to mít nutně žádnej jinej efekt
19:19 mornfall ne že bych tušil jestli s tím jde něco dělat
19:20 mornfall jedna věc kterou jsem chtěl nadhodit je mít anotaci která by umožnila té které funkci volat 'nebezpečné' hypercally
19:21 xstill no můžem schovat __vm_mask a na masku mít anotaci která zamaskuje funkci (ona už v lartu je, jen se musí opravit)
19:21 mornfall to by sice zamezilo koncovému uživateli používat __vm_mask přímo a v C++ by nebyl problém mít RAII jako jedinou možnost
19:22 mornfall že by lart přidal landingpady aj do C kódu?
19:22 mornfall cleanupový
19:22 mornfall to by možná byla i cesta ven
19:22 xstill jo, mám to v diplomce
19:23 xstill (on tam teda přidá i C++ personality, ale to reálně ničemu nevadí dokud nebudeme verifikovat jiné jazyky než c a c++)
19:24 mornfall umíme i nějak bezpečně overaproximovat který call-y se musí přepsat na invoke? nebo to jak to clang/llvm generujou je už bezpečný samo od sebe?
19:24 mornfall (tu transformaci si pamatuju, ale tohle ne)
19:26 xstill momentálně se převádí všechno co není nounwind
19:26 xstill ale šlo by to aproximovat výrazně líp
19:27 xstill (proto je potřeba aby byl __vm_* nounwind, jinak ho to invokne a divine to nedá)
19:28 mornfall divine by to i dát mohl kdyby chtěl, ale řekl bych že spíš nechce :)
19:28 xstill ono to ani nedává smysl aby chtěl
19:33 mornfall hm, ale měli jsme tam nemilou botu, on totiž ten __dios_unwind mazal aj interrupted flag
19:35 mornfall (původně byl ten parametr ve __vm_jump myšlený pro scheduler a tam to mazat chceme)
19:36 xstill hm, co jsi s tím udělal?
19:36 mornfall zrušil jsem __vm_jump :D
19:37 mornfall jen jsem to teď málem přepsal v tom původním znění, s resetem interrupted flagu
19:39 xstill a co jsi dal místo __vm_jump?
19:40 mornfall to je možná na delší povídání (a dneska už to asi nestihnu pushnout), přijdeš ve středu?
19:41 xstill nepříjdu, ani nebudu online
19:42 xstill Honza a Heňo tam snad budou, Katka nevím
19:44 mornfall tak jestli tady budeš ještě zítra tak to snad už bude v next-u, když ne tak až se vrátíš (a yaqwsx to ukážu ve středu, přijde-li)
19:45 mornfall udělal jsem explicitní control registry a hypercall kterej v nich může dělat víc změn najednou (tzn. nastavit masku a frame pointer třeba)
19:56 xstill zajímavý. control registry jsou rámec, PC, maska a interrupted flag?
20:01 mornfall je toho výrazně víc, některý jsou read-only (base pointer pro konstanty), některý write-once (scheduler, fault handler, stav), read-write (base pointer pro globální proměnné, rámec, pc, flagy)
20:02 mornfall taky jsem přidal resize objektu, takže stav je v write-once registru který se nastaví při startu a pak se jen případně resizuje
20:02 xstill hezký
20:04 mornfall flagy jsou zatím maska, interrupted, accepting, error a cancel, kde cancel zastupuje to co doteď dělal null return ze scheduleru
20:05 mornfall na když jsem byl u toho, tak jsem přidal jeden číselnej a jeden ukazatelovej 'volnej' registr (kam se může třeba schovat identifikátor vlákna)
20:05 xstill aha, takže goal už se nedělá přes trace ale přes toto?
20:05 xstill :-)
20:06 xstill tohle všechno existuje jen po dobu generování jedno stavu, že?
20:06 mornfall jo, nic z toho není součást stavu
20:06 xstill respektive něco z toho je v interpretru
20:06 xstill jo, to jsem tím myslel

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