Perl 6 - the future is here, just unevenly distributed

IRC log for #divine, 2017-05-10

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

All times shown according to UTC.

Time Nick Message
01:49 ilbot3 joined #divine
01:49 Topic for #divine is now DIVINE | http://divine.fi.muni.cz | http://irclog.perlgeek.de/divine/
10:46 yaqwsx Mám banální dotaz ohledně perlu, který se mi nepodařilo sám si zodpovědět. Proč echo "test\nfoo\nfoon" | perl -ne 'print' funguje, ale echo "test\nfoo\nfoon" | perl -e 'print' nevypíše nic? Myslel jsem, že $0 bude obsahovat celý řetězec...
10:48 xstill_ yaqwsx: předpokládám, že jsi myslel echo -e
10:49 xstill_ print bez parametru vypíše $_, pochybuju, že je $_ nastavené na celý standardní vstup
10:49 xstill_ podle helpu je -n ekvivalentní tomu obalit to v do while (<>) { ... }, kde to <> prování právě načítání řádků ze vstupu do $_
10:51 yaqwsx xstill_: Tj, ale já potřebuji právě pracovat nad celým standardním vstupem.
10:52 xstill_ yaqwsx:  echo -e "test\nfoo\nfoo" | perl -e 'local $/; my $stdin = <>; print $stdin'
10:52 xstill_ (ideálně zabalit do funkce)
10:53 xstill_ (kvůli tomu local $/ aby sis nepřeplácl chování <> všude)
10:53 xstill_ $/ je separátor podle kterého <> běží
10:53 yaqwsx Fuj, to je ale hnusné... :/
10:53 xstill_ (viz http://perldoc.perl.org/perlvar.html)
10:54 xstill_ yaqwsx: určitě existuje i knihovna která na to má funkci…
10:54 yaqwsx Ok, díky.
10:54 xstill_ ten local zdá se můžeš vrazit i do bloku { local $/; … }
10:56 xstill_ je to perl no… na perl to není nějak zásadně hnusné asi
10:57 yaqwsx Ale otočím můj dotaz - chci matchovat víceřádkový regex v souboru a jak jsem pochopil, grep -qzo není standardní. Proto jsem chtěl sáhnout po perlu. Je lepší řešení?
11:00 xstill_ nic mě nenapadá
11:00 xstill_ myslím, že už jsem někde něco takového použil, asi máš moc velké nároky na estetiku kódu :-p
11:43 yaqwsx Můžu perl -e nějak předhodit argument (tak, aby ho nebral jako stdin)? Zatím jsem to v manu nenašel
11:49 xstill_ to nevím, ale můžeš ho nechat přečíst argumenty z environmentu
11:53 xstill_ potřebuješ mu dávat argument když už ho spouštíš s konkrétním příkazem?
12:06 yaqwsx Chtěl jsem tak obejít problém s newliny...
18:13 yaqwsx mornfall: U mě na Arke jsou opravené patche pro traceování helpu, pak je tam patch na testy, patch do VM, který opravuje validaci počtu argumentů u variadických funkcí + test k tomu.
18:47 mornfall yaqwsx: dívám se na to, ale to s tím vararg vs argcount mi není úplně jasný
18:49 mornfall ale možná mám jen problém rozparsovat CNF
18:50 mornfall to by mělo jít zapsat aj obráceně ne? pak by bylo jasnější kde je to - 1 (jestli pro vararg nebo !vararg)
18:50 yaqwsx Měla by tam být implikace (vararg => A) || (!vararg => B )
18:51 yaqwsx teda.. &&
18:53 mornfall spíš !vararg → A || vararg → B? (pokud B je to s -1)
18:54 mornfall hm, možná jsem ale víc zmatenej tím že to vůbec je off by one
18:55 mornfall tušíš proč?
18:56 yaqwsx Problém nastal, když jsem volal variadickou funkci bez argumentů. Pak DIVINE očekával o jeden argument navíc
18:56 yaqwsx Ale musím se na to podívat a připomenout si to, je to patch, který jsem psal ve čtvrtek.
18:59 mornfall já si to zkusím, np
18:59 mornfall až se mi rebuildne divine teda :-)
18:59 yaqwsx Jj, bylo to tak - pro variadickou funkci je function.vararg počet normálních argumentů + 1.
19:00 mornfall function.argcount
19:00 mornfall to je ale trochu záhada
19:00 yaqwsx Věci mi dneska padají, píšu nesmysly... co je to dneska za den?
19:00 mornfall jo ale možná tuším proč... test.c:6: error: ISO C requires a named argument before '...'
19:01 mornfall hm, ne, blbost
19:01 mornfall ten test má named argument
19:01 mornfall to číslo totiž přijde od LLVM, normálně bych čekal že se tam (omylem nebo naschvál) započítal skrytej parametr kterej v divinu realizuje tři tečky
19:03 yaqwsx To jsem tak nějak očekával (a nešťoural jsem do toho hlouběji, když jsem zjistil, že číslo pochází z nějakých volání LLVM)
19:14 mornfall yaqwsx: nojo, ale ten test projde aj bez toho patche kterej to opravuje
19:18 mornfall yaqwsx: a minimising je správně :p
19:30 yaqwsx mornfall: Ok, mám špatný spellcheck (amendnu
19:30 divine-next 4 new patches validated [yaqwsx]
19:34 yaqwsx mornfall: bral jsem to tak, že DiOS obsahuje druhou část testu (volání fault handleru)
19:36 mornfall yaqwsx: kterého testu?
19:36 yaqwsx Veškeré volání __dios_fault bylo ovlivněno tou chybou
19:38 mornfall ale nějak by to přece mělo jít reprodukovat
19:38 mornfall ten test možná testuje něco jinýho než ten VM: patch opravuje?
19:41 mornfall hm, hlavně tenhle test už tam v podstatě byl, test/c/2.vararg-good.c
19:51 yaqwsx Ok, tak to jsem něco domrvil.
19:52 yaqwsx Podívám se na to. Problém byl v tom, že testy procházely - fault se spustil, ale byl to jiný typ faultu.
20:04 mornfall ten awk/perl/... -- nebylo by jednodušší ten jeden test napsat jako .sh místo toho parsování multiline regexu z komentáře?
20:04 mornfall mám podezření že ten BOOT_OUTPUT se zas tak často používat nebude
20:05 mornfall (v tom .sh by na to šlo asi použít test/lib/ordgrep, to je to co se používá v sim testech)
20:06 mornfall něco ve smyslu
20:06 mornfall + boot info:
20:07 mornfall + help:
20:07 mornfall + supported commands:
20:09 mornfall (případně + choices made na konec)
20:26 divine-next 1 new patch validated [yaqwsx]
20:41 divine-next 1 new patch validated [mornfall]
20:54 yaqwsx mornfall: Psal jsem to s motivací, že pro každou konfiguraci DiOSu bude jeden test. Pokud si ale myslíš, že by tomu více sloužil skriptový test, přepíšu to.
20:55 yaqwsx mornfall: PS: těm perlovým zdrojákům v test/lib by neuškodil na začátku komentář popisující funkcionalitu - luštit ten Perl je fakt otrava... :-P
21:36 yaqwsx mornfall: Tak jsem z toho jelen... Ta chyba bude zapeklitější (anebo mi uniká nějaký podstatný detail) - u mě na Arke je XXX patch, který častečně revertuje opravu evalu (ale nechává verbose chyby) a mrzačí DiOS tak, aby v každém bootu zavolal fault handler se špatným počtem argumentů.
22:31 yaqwsx mornfall: Hm, temporaryScheduler má v LLVM prototyp define void @_ZN6__dios21temporaryFaultHandlerE9_VM_Fault9_VM_FramePFvvEz(i32, void ()* nocapture readnone %.coerce0, %struct._VM_Frame* nocapture readnone %.coerce1, void ()* nocapture readnone, ...) #2 !dbg !27687 {
22:31 yaqwsx To lecos vysvětluje
22:31 yaqwsx (mimojiné to, že jsem opravil hloupost)
22:53 yaqwsx ...ok, už to vidím.
22:59 yaqwsx Měl jsem špatný prototyp temporaryFaultHandleru (místo _VM_Frame* bral _VM_Frame), ale nerozumím tomu, jak vzniklo LLVM se špatným počtem argumentů.
22:59 yaqwsx mornfall: Patch, který to opravuje bych nejraději amendnul k DiOS: Handle boot faults properly, ale už jsi ho pullnul. Můžu ho i přesto amendnout?

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