»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by sorear on 25 June 2013.
ingy is the 6model in current use? 00:03
00:07 eternaleye joined
timotimo yes 00:12
leont: @<foo> should dwim to @($<foo>)
00:14 eternaleye left 00:26 chenryn joined
chenryn m:say 3 ∈ [2, 3, 5, 6];my @w=[2,3,5,6];say 3 ∈ @w; 00:26
m: say 3 ∈ [2, 3, 5, 6];my @w=[2,3,5,6];say 3 ∈ @w; 00:27
camelia rakudo-moar de1626: OUTPUT«True␤False␤»
00:29 chenryn left
timotimo m: my @w = [2, 3, 5, 6]; say @w.perl; say @w.elems 00:35
camelia rakudo-moar de1626: OUTPUT«Array.new([2, 3, 5, 6])␤1␤»
timotimo ^- it's a one-element array with a list inside
(the [ ] makes a list that's "itemified", so it will turn into a single element) 00:36
00:37 araujo joined
timotimo o/ araujo 00:38
do you think we can convince gentoo developers to rewrite that terrible codebase called "emerge" in p6? :P 00:40
00:45 cognome joined 00:48 cognome left, cognome joined 00:53 cognome left
gtodd can camelia do a rough sort of immitation of "timing" a bit of code to eval? 00:58
BenGoldberg m: say now - BEGIN { now };
camelia rakudo-moar de1626: OUTPUT«0.0279894␤»
gtodd ah right 00:59
BenGoldberg m: my $a; $a += 1 for 1..1e5; say now - BEGIN { now };
camelia rakudo-moar de1626: OUTPUT«1.42114722␤»
gtodd k goodie
BenGoldberg :)
gtodd camelia: my apologies for waking you ...
hmm lines() can be "eager" now ? 01:01
cool :)
BenGoldberg m: .say for eager lines;
camelia rakudo-moar de1626: OUTPUT«Céad slán ag sléibhte maorga Chontae Dhún na nGall␤Agus dhá chéad slán ag an Eireagal ard ina stua os cionn caor is coll;␤Nuair a ghluais mise thart le Loch Dhún Lúich’ go ciúin sa ghleann ina luí␤I mo dhiaidh bhí gleanntáin ghlas’ G…»
BenGoldberg Not that I can tell the difference between eager and non-eager, in this case. 01:02
gtodd heh ... oh I see it has to go through a loop once first 01:04
or something
01:04 Ben_Goldberg joined, BenGoldberg left, Ben_Goldberg is now known as BenGoldberg
gtodd well it took the recent perlmonks log parsing "benchmark" from 70 second to 64 seconds my machine 01:05
doing perl6 -e 'for eager lines() { say ~$/ if m/(<<\w**5>>)/}' 150k-lines-of-log.txt
hmm a ~9% speed up I guess ... I always think I should know how to warn perl6 that "the list you are about to use will definitely not be lazy/infinite" or something like that 01:07
araujo timotimo, hi there :) 01:08
timotimo, hehe, it'd be an interesting experiment for sure ;)
gtodd perl6 -MPerl5 -n -e 'say $1 if /\b(\w{5})\b/' 150k-lines-of-log.txt takes longer ... despite using Perl5 ;-) 01:11
01:19 FROGGS_ joined
diakopter o_O 01:21
gtodd j/k 01:22
dalek osystem: e4aa843 | segomos++ | META.list:
Add role module 'Pluggable'

Role 'Pluggable' lets you find plugins for your cool module (and other modules)
01:23 FROGGS left 01:24 slmult0 joined
timotimo gtodd, BenGoldberg: the "eager" flag is currently just used by passing :eager to the sub itself 01:34
we don't have a proper mechanism for the eager prefix to understand the meaning of the :eager flag
01:35 yeahnoob joined, bjz left 01:40 Akagi201 joined 01:45 cognome joined 01:49 dayangkun joined, cognome left 01:52 slmult0 left 02:11 chenryn joined, chenryn left, chenryn joined 02:13 dayangkun left 02:17 leont left 02:21 eternaleye joined 02:22 xinming left 02:26 dayangkun joined, eternaleye left 02:45 cognome joined 02:47 noganex joined 02:50 cognome left, noganex_ left
diakopter www.youtube.com/watch?v=wIuFFU8T0kI#t=1525 02:55
03:17 molaf joined 03:18 eternaleye joined 03:22 eternaleye left 03:31 rindolf joined 03:35 molaf left 03:45 cognome joined 03:50 cognome left 04:02 tokuhirom left 04:03 kaare_ joined, yeahnoob left 04:04 robinsmidsrod left 04:06 robinsmidsrod joined, rindolf left 04:14 rindolf joined 04:17 [Sno] left 04:31 jerrycheung joined 04:35 BenGoldberg left 04:40 mr-foobar left 04:44 dayangkun left 04:45 cognome joined 04:49 kaare_ left 04:50 cognome left 05:01 dayangkun joined 05:17 xenoterracide joined 05:19 kaare_ joined 05:24 yeahnoob joined 05:27 xenoterracide left 05:29 FROGGS_ left 05:31 anaeem1_ joined 05:34 anaeem1_ left 05:35 anaeem1_ joined 05:37 FROGGS_ joined 05:45 cognome joined 05:47 FROGGS_ left, denis_boyun_ joined 05:50 cognome left 05:52 denis_boyun_ left 05:53 denis_boyun_ joined, dayangkun left 05:55 SamuraiJack joined, FROGGS_ joined 05:57 [Sno] joined 05:59 rindolf left 06:03 mr-foobar joined 06:04 eternaleye joined 06:13 eternaleye left 06:20 rhr left 06:21 ren1us joined
ren1us weird question. my very simple code takes up all of my memory in about 20 seconds. watching it go, it quickly starts jumping a few hundred megs per second. am i doing something very obviously wrong? 06:22
github.com/ren1us/COM320/blob/mast...W1/xmer.p6 <--- the demon code
06:24 darutoko joined 06:25 FROGGS_ left 06:38 FROGGS joined 06:42 grondilu joined 06:43 baest_ is now known as baest
grondilu ren1us: there are quite a few things that are wrong in your code 06:43
like in '[+] %hash.values ~~ $file.chars - $_' You probably need some parenthesis here 06:44
because that means [+] (%hash.values ~~ $file.chars - $_), which I have hard to believe that's what you wanted. 06:45
06:45 cognome joined
grondilu also: given foo() -> $str {...} does not make much sense. Either you write for foo() -> $str {...} or given foo() {...} but not a mix 06:47
06:47 denis_boyun_ left 06:50 cognome left
grondilu but in any case I have very little idea of what your code does. 06:50
(or is supposed to do)
you may consider adding a short description of your program in a comment when publishing. 06:51
06:51 denis_boyun_ joined
ren1us oddly enough, swapping out the givens in there fixed my problem. i have absolutely no idea why. 06:51
i'm guessing there's some weird memory suckage happening there
06:53 rhr joined
grondilu m: given "foo" -> $str { say "$str" } 06:53
camelia rakudo-moar de1626: OUTPUT«foo␤»
grondilu I'm amazed this is even syntactically correct. Maybe it shouldn't? 06:54
std: given "foo" -> $str { say "$str" }
06:54 camelia left
ren1us that's an interesting effect 06:55
nine wow, must me very wrong
06:55 aborazmeh joined
grondilu did that kill camelia or something? 06:55
ren1us if it works how i suspect it does, it seems like a way to keep large, constant objects from sitting in memory longer than they're actually needed, despite being in scope
06:56 camelia joined
grondilu m: say "hi" 06:56
nine grondilu: no, camelia seems to have issues at the moment: irclog.perlgeek.de/perl6/2014-09-15#i_9361228 06:57
camelia std : OUTPUT«Can't chdir to '/home/p6eval/std/snap': No such file or directory at lib/EvalbotExecuter.pm line 163.␤ EvalbotExecuter::_auto_execute('HASH(0x1944cf0)', 'given "foo" -> $str { say "$str" }', 'GLOB(0x1884ec0)', '/tmp/XJAH5cWlLk', 'std') called at lib/EvalbotExecuter.pm…»
06:57 ChanServ sets mode: +v camelia
camelia rakudo-moar de1626: OUTPUT«hi␤» 06:57
grondilu ok
TimToady also, /[^ATCG]/ is very much a Perl 5 regex, you want /<-[ATCG]>/ in P6
ren1us i'm still quite interested in where the memory exploded 06:59
found it. %hash{$file.substr([+] %hash.values, $_)}++; causes the memory usage to skyrocket, but %hash{$file.substr(([+] %hash.values), $_)}++; does not 07:01
07:01 telex left 07:02 telex joined 07:05 eternaleye joined
grondilu quite understably. You were getting very long substrings in the first case. 07:06
grondilu is mused by his "understably" typo 07:07
07:10 zakharyas joined
grondilu lizmat: not sure you want to link π to pi. Someone may want to have different values and write for instance 'constant π = 355/113;' 07:11
07:11 denis_boyun_ left
grondilu refers to commit de1626553c6d83a948040d881c60856da3ed63bf 07:14
07:15 eternaleye left
FROGGS m: say π; { constant π = 'hi grondilu'; say π }; say π 07:17
camelia rakudo-moar de1626: OUTPUT«3.14159265358979␤hi grondilu␤3.14159265358979␤»
FROGGS grondilu: argument invalidated :P 07:18
07:20 slmult0 joined
FROGGS grondilu: also, a for loop sets topic unless you put a param in the signature of the pointy block... why shouldn't given do the same? 07:21
grondilu: putting something in a variable for use in a given scope is a nice and useful thing after all... 'given' does not imply to use 'when' on the topic always 07:23
same goes for 'if' statements... that's a very very useful thing 07:24
07:27 camelia left 07:28 camelia joined
FROGGS m: given 42 { when * -> $fortee-too { say $fortee-too } } # I also consider this valid, even when (haha!) it explodes 07:28
TimToady: ^^ ?
would be handy to alias the topic to something to e.g. pass it on as nameds to a routine
variable names have a job after all 07:29
07:29 ChanServ sets mode: +v camelia
camelia rakudo-moar de1626: OUTPUT«Too few positionals passed; expected 1 argument but got 0␤ in block at /tmp/AHu2YEVLbo:1␤ in block <unit> at /tmp/AHu2YEVLbo:1␤␤» 07:29
FROGGS diakopter: can you please 'mkdir /home/p6eval/std/snap' on feather08? 07:30
TimToady: would I be able to do that? given @list { when :(Int,Str) -> $a, $b { ... } } 07:31
and I could also imagine that some does a .grep in the 'when' clause and likes to fetch the result 07:33
07:37 yeahnoob left
FROGGS someone* 07:38
.tell leont about the 9 revisions of the perl6-p bisect: git bisect log | grep -P '^#' | wc -l # 47 :o( 07:43
yoleaux FROGGS: I'll pass your message to leont.
grondilu m: say π; constant π = 'hi grondilu'; say pi 07:45
camelia rakudo-moar de1626: OUTPUT«3.14159265358979␤3.14159265358979␤»
07:45 cognome joined, kurahaupo left
grondilu it does work indeed. My bad. 07:45
FROGGS m: constant π = 'hi grondilu'; say pi 07:46
camelia rakudo-moar de1626: OUTPUT«3.14159265358979␤»
FROGGS ahh 07:47
m: constant π = 'hi grondilu'; say π
camelia rakudo-moar de1626: OUTPUT«hi grondilu␤»
grondilu that's good, isn't it?
FROGGS yes yes
lizmat gtodd: re irclog.perlgeek.de/perl6/2014-09-16#i_9362201, for now you would have to add :eager to the call to .lines
it is intended as a temporary way to give you eagernes 07:48
07:48 slmult0 left
lizmat ah, I see timotimo already said that 07:49
lizmat continues backlogging
07:49 slmult0 joined 07:50 cognome left
FROGGS p: my int $chars; say $chars + 1 + nqp::add_i(0,0) 07:55
camelia rakudo-parrot de1626: OUTPUT«0␤»
FROGGS p: my int $chars; say $chars + 1 + nqp::add_i(0,1)
camelia rakudo-parrot de1626: OUTPUT«2␤»
FROGGS *g*
that's just insane
07:56 kaleem joined
lizmat so it's for all nqp:: ops this happens ? 07:57
FROGGS for all native ops 07:58
there is an optimization that gets applied in case the return value is a native... I bet that triggers it
p: my int $chars; say $chars + 1 + nqp::add_I(0,1, Int)
camelia rakudo-parrot de1626: OUTPUT«2␤»
FROGGS p: my int $chars; say $chars + 1 + nqp::add_I(0,0, Int)
camelia rakudo-parrot de1626: OUTPUT«1␤»
FROGGS yeah, that might be it
lizmat seems so: 07:59
$ perl6-p --optimize=0 -e 'my int $chars; say $chars + 1 + nqp::add_i(0,0)'
1
$ perl6-p --optimize=2 -e 'my int $chars; say $chars + 1 + nqp::add_i(0,0)' 08:00
0
optimize=1 is also ok
FROGGS ohh, good to know :o)
lizmat adds this to the ticket
FROGGS it is the optimization of p6decontrv if I am right
08:04 kjs_ joined
FROGGS timotimo: what do you think, will an ordat be much faster than this in Perl6::Optimizer? nqp::substr($op, nqp::chars($op) - 1, 1) eq 'I' 08:06
timotimo: in case yes, we should consider changing every nqp::substr(..., 1) to ordat, because like in the shown case we do that for many nodes 08:07
08:07 jack_rabbit left
lizmat nqp::ordat is a lot faster, I think, judging from the opt jnthn did to Str.lines 08:07
grondilu notices optimization stage was extremely long on his machine today 08:08
FROGGS then we should do that
grondilu notices mast stage was even longer 08:10
FROGGS rakudo/src$ grep -R 'nqp::substr' * | grep -P '1\s*\)' | wc -l
57
though, there are also quite some false positives
m: say nqp::ordat("foo", -1)
camelia rakudo-moar de1626: OUTPUT«Invalid string index: max 2, got -1␤ in block <unit> at /tmp/EzR2Uuk4rc:1␤␤» 08:11
FROGGS p: say nqp::ordat("foo", -1)
camelia rakudo-parrot de1626: OUTPUT«111␤»
FROGGS would be handy (and faster) to allow negatives...
grondilu compilation timings for reference: pastebin.com/4a8BRT0i 08:15
FROGGS grondilu: is that an 486? that's awful 08:16
08:17 eternaleye joined
grondilu x586 08:19
sorry i686
08:19 virtualsue joined
FROGGS perl6-p "only" takes 116s here for stage parse, and moar only 34s 08:20
grondilu (it's a EeePC netbook, so not the fastest beast ever)
FROGGS ahhh
still somewhat painful :o)
grondilu still, usually the longest stage is the parse one, by far. 08:21
not the optimize one
also, the parse stage usually goes below or aroung 200s. It's been getting worse lately. 08:22
08:22 eternaleye left
dalek kudo/nom: 3fae8d2 | (Elizabeth Mattijsen)++ | src/core/Proc/Async.pm:
Implement Proc::Async.stdout/stderr

  .stdout_chars/.stdout_bytes/.stderr_chars/.stderr_bytes not yet removed.
08:23
ast: 68d79bf | (Elizabeth Mattijsen)++ | S17-procasync/ (2 files):
Use new Proc::Async.stdout/stderr methods
08:24
08:26 dakkar joined, virtualsue left 08:41 aborazmeh left 08:45 cognome joined 08:46 FROGGS left 08:50 cognome left 08:58 FROGGS joined 08:59 jerrycheung left 09:02 slmult0 left, AW3i joined
timotimo FROGGS: i seem to recall having implemented a compile-time optimization that turns an eqat that compares with a one-character-string into an ordat with the correct ordinal number 09:11
oh 09:12
that's only in parrot 09:13
github.com/perl6/nqp/blob/master/s....nqp#L2174
and yeah, ordat should be a whole lot faster
and eqat should be a bit faster than substr + eq, too
nwc10 timotimo: so, you were asking brrt what you should do next... :-) 09:14
timotimo heh. 09:15
yeah, i can do that. would look like a simple port 09:16
nwc10 can you do it at a level that works on both MoarVM and JVM? 09:17
timotimo not really 09:20
there isn't a stage that nqp:: ops go through before they reach the QAST Compiler
the optimizer could in theory do it
but it'd seem cheaper to me to build it directly into the compiler
that way we don't have the discovery logic multiple times
09:22 virtualsue joined 09:23 eternaleye joined 09:24 AW3i left
grondilu was reading p6weekly.wordpress.com/, most particularily the part about Bags and Mixes and suddenly started wondering if his MultiVector class should not implement the Mixy role or something. 09:25
09:27 eternaleye left
grondilu (or maybe QuantHash) 09:27
FROGGS >.< gist.github.com/FROGGS/02305f2e46d8fb3ef0b9 09:28
grondilu std: my UInt $ 09:29
09:29 camelia left
grondilu had forgotten about camelia being gone 09:29
Isn't UInt supposed to be a thing? It's apparently NYI on rakudo. 09:30
timotimo d'oh, FROGGS! :(
09:30 camelia joined 09:31 bjz joined
camelia std : OUTPUT«Can't chdir to '/home/p6eval/std/snap': No such file or directory at lib/EvalbotExecuter.pm line 163.␤ EvalbotExecuter::_auto_execute('HASH(0x1944cf0)', 'my UInt $', 'GLOB(0x1b90b80)', '/tmp/59zcGTipgV', 'std') called at lib/EvalbotExecuter.pm line 114␤ EvalbotExecu…» 09:32
09:32 ChanServ sets mode: +v camelia
grondilu ouch 09:33
09:37 denis_boyun_ joined 09:38 ren1us left
grondilu (subset UInt of Int where * >= 0;) should be easy to add in Int.pm 09:41
09:45 cognome joined 09:48 ggoebel1111119 joined 09:49 ggoebel1111118 left 09:50 cognome left
timotimo subsets with a where clause are immensely expensive; this should be handled at the VM level, imo 09:50
09:57 jaffa4 joined
jaffa4 m: module b; sub c() {} ; module main; use b; b::c(); 09:59
camelia rakudo-moar 3fae8d: OUTPUT«===SORRY!=== Error while compiling /tmp/lS5PvnoVdE␤Too late for semicolon form of module definition␤at /tmp/lS5PvnoVdE:1␤------> module b; sub c() {} ; module main; ⏏use b; b::c();␤ expecting any of:␤ …»
09:59 leont joined 10:03 JimmyZ joined
JimmyZ timotimo: s/abbrevation /abbreviation/ 10:03
timotimo oops, that's an aggrevating mistake :P 10:04
diakopter FROGGS: simply creating that directory will solve it? 10:05
10:07 JimmyZ_ joined, leont left 10:09 JimmyZ left, JimmyZ__ joined, JimmyZ__ is now known as JimmyZ
diakopter std: 1 10:10
camelia std : OUTPUT«Can't open perl script "tryfile": No such file or directory␤»
FROGGS diakopter: obviously not :o) 10:11
10:11 eternaleye joined
jaffa4 hi all what is the search path of dlls in nativecall? 10:12
10:13 JimmyZ_ left
FROGGS jaffa4: PATH and cwd on windows 10:14
10:16 kaleem left 10:17 eternaleye left
diakopter msdn.microsoft.com/en-us/library/wi...plications 10:17
10:20 thilp joined, kaleem joined 10:23 cognome joined 10:33 JimmyZ_ joined 10:34 JimmyZ__ joined 10:36 JimmyZ left, JimmyZ__ is now known as JimmyZ 10:38 JimmyZ_ left 10:45 JimmyZ left 10:46 jantore left, jantore joined 10:49 cognome left 10:50 cognome joined
jaffa4 m: BEGIN {my $p = 'D:\m\p6\guiultimate\lib\\GUI\Upp.pm6'; say $p.subst(/(.+)\\.+$/,{$0});} 10:55
camelia rakudo-moar 3fae8d: OUTPUT«␤»
jaffa4 m: {my $p = 'D:\m\p6\guiultimate\lib\\GUI\Upp.pm6'; say $p.subst(/(.+)\\.+$/,{$0});}
camelia rakudo-moar 3fae8d: OUTPUT«D:\m\p6\guiultimate\lib\GUI␤»
jaffa4 bug!!!!!!!!!!!!!!!
colomon smoker appears to have hung in panda rebootstrap overnight?!? 10:57
FROGGS m: BEGIN { my $p = 'D:\m\p6\guiultimate\lib\\GUI\Upp.pm6'; say $p.match(/(.+)\\.+$/) } 10:59
camelia rakudo-moar 3fae8d: OUTPUT«「D:\m\p6\guiultimate\lib\GUI\Upp.pm6」␤ 0 => 「D:\m\p6\guiultimate\lib\GUI」␤␤»
FROGGS m: BEGIN { my $p = 'D:\m\p6\guiultimate\lib\\GUI\Upp.pm6'; say $p.match(/(.+)\\.+$/); say $/ }
camelia rakudo-moar 3fae8d: OUTPUT«「D:\m\p6\guiultimate\lib\GUI\Upp.pm6」␤ 0 => 「D:\m\p6\guiultimate\lib\GUI」␤␤「D:\m\p6\guiultimate\lib\GUI\Upp.pm6」␤ 0 => 「D:\m\p6\guiultimate\lib\GUI」␤␤»
11:04 cognome left 11:05 cognome joined 11:13 Woodi left, Woodi joined 11:14 mattp_ left 11:17 mattp_ joined
jaffa4 m : say "hello"[0..2]; 11:20
m: say "hello"[0..2];
camelia rakudo-moar 3fae8d: OUTPUT«hello␤»
jaffa4 m: say ("hello"[0..2]);
camelia rakudo-moar 3fae8d: OUTPUT«hello␤»
11:21 kjs_ left
FROGGS m: say "hello"[0] 11:22
camelia rakudo-moar 3fae8d: OUTPUT«hello␤»
FROGGS that makes it more clear
11:23 mattp_ left, leont joined
leont Occasionally observing «P6opaque: no such attribute '$!tappers_lock'» errors (from inside the Supply guts), not sure how to handle them 11:24
yoleaux 07:43Z <FROGGS> leont: about the 9 revisions of the perl6-p bisect: git bisect log | grep -P '^#' | wc -l # 47 :o(
FROGGS leont: that probably means that an nqp::decont is needed somewhere in the gust of rakudo 11:25
leont doesn't even know what a decont is ;-) 11:26
jnthn More like there's a data race somewhere.
leont Yeah, I would guess it to be some kind of data race too
jnthn leont: About the double free, ASAN or Valgrind tends to be good at helping hunt those, without needing to reduce it to something tiny.
11:27 kaleem left
leont Fair point, though I think it was a freak accident anyway. Didn't save the exact code when I hit it :-/ 11:27
Also, I seem to be observing spinlocking again in Proc::Async :-s 11:28
Or at least some part of the async code
11:28 chenryn left
jnthn There's some issue I'm aware of which can result in a core being kept way too busy by the IO event loop thread. 11:29
That one at least is already on my todo list. :)
leont :-)
jnthn So hopefully it's that you're seeing, not some other nasty.
leont prove6 seems to trigger it quite reliably 11:30
11:32 eternaleye joined, ab5tract joined
jnthn Good to know. 11:32
jnthn is into the last couple of weeks of this consulting gig in China, and so will have some quality bug-hunting time again in not too long. :) 11:33
ab5tract colomon: hi there 11:34
jnthn figures he should go nom something :) 11:35
bbl o/
nwc10 this is JIT nom?
11:36 eternaleye left
dalek kudo/nom: e99b04b | (Tobias Leich)++ | tools/build/Makefile- (3 files):
allow fudging of Perl6::Optimizer

It is cheaper to fudge the source compared to check the backend at runtime.
11:37
11:39 kaleem joined, kaleem left, kaleem joined 11:46 fhelmberger joined, mattp_ joined 11:48 kjs_ joined 12:01 kjs_ left
carlin is there a way to die and suppress the backtrace? 12:05
FROGGS carlin: you could: $*ERR.say("ohh noes!"); exit 1;
carlin problem with exit is it kills tests 12:07
m: use Test; dies_ok { exit 1 }
camelia ( no output )
carlin m: use Test; dies_ok { die 1 }
camelia rakudo-moar 3fae8d: OUTPUT«ok 1 - ␤»
colomon ab5tract: o/ 12:09
ab5tract: I'll try to think about / check on the Bag code today.
ab5tract: apologies for slow
12:10 brrt joined
lizmat FROGGS: you mean: note "ohh noes"; exit 1 :-) 12:11
carlin would like something like die('oh noes', :!backtrace) 12:13
FROGGS lizmat: probably :o)
lizmat carlin: you mean the full --ll-exception one ? 12:14
ah, *no* backtrace
12:19 dayangkun joined
lizmat carlin: is this for testing only? 12:20
12:20 dayangkun left
lizmat if so, I used to have an "urgh" at former $work 12:20
sub urgh($text) { note $test; exit }
then, whenever I was working on a test and wanted it to abort then and there if something went wrong 12:21
dalek kudo-star-daily: 79728a1 | coke++ | log/ (15 files):
today (automated commit)
[Coke] we're going to be missing a day of the daily run due to server issues, sorry.
lizmat I did a "urgh" , or an urgh "something"
12:22 eternaleye joined
lizmat [Coke]: too bad, but there are worse things: like continuing server problems 12:23
diakopter hopefully host08 will be stable since it's prepaid forever, supposedly
(cloudatcost.com)
[Coke] diakopter++ 12:24
ab5tract colomon: no worries :)
diakopter although it may fall prey to the same thing host07 did, which is non-upgradability of the kernel due to the virtualization architecture, preventing upgrading of ubuntu release
carlin lizmat: no, not only for testing
lizmat: I could use exit, but exit makes tests abort
diakopter .. but which should be solvable by off-machine backup then re-image and restore
carlin my use case is a connection is failing, so I want to show an error saying "connection failed, is the daemon running" without spewing out the extra info 12:25
lizmat make it a fail and check for ~~ Failure ? 12:26
then print the Failure instead of throwing it ?
12:27 SamuraiJack left 12:29 dayangkun joined 12:31 eternaleye left
brrt ooh os x has color inversion for the whole monitor 12:32
very amaze
lizmat also contrast enhance or grayscaling and sizable cursor 12:33
Ulti software.intel.com/en-us/articles/...n-in-julia <--- maybe of interest given talk of a list rewrite and the new moar-jit being a thing :P
yoleaux 13 Sep 2014 19:03Z <raiph> Ulti: Were your 8-22 and 9-11 BioPerl profile reports for the exact same codebase?
12:33 aindilis left
brrt it's not quite font-size enlarging, but it is actually quite nice 12:33
lizmat brrt: and a shortcut key to size the screen 12:34
brrt is that so
lizmat zoom I should say
brrt ah
but zoom is never very useful
i.e. i only use it when the need is very very high
12:34 ivanshmakov left
brrt because you lose overview of the screen 12:34
lizmat true, but even I use it every now and then when looking at a picture and am too lazy to put it into some kind of editor 12:35
brrt :-)
Ulti .tell raiph yes the code base was identical but 8-22 might have been without the JIT, which at the time made no difference to the execution time 12:36
yoleaux Ulti: I'll pass your message to raiph.
brrt Ulti: anything wrong with JIT? 12:37
Ulti nope use it all the time now, and it does speed up the code now so some new optimisation is making itself felt 12:38
nine diakopter: I'm curious. How prevented the virtualization architecture upgrades of the kernel? 12:39
12:39 jaffa4 left
diakopter nine: I think it's Shared Kernel Virtualization 12:40
such as VServer, Zones/Containers, FreeVPS, OpenVZ
nine ah
12:41 ivanshmakov joined
carlin lizmat: is it possible to do that and still make the program stop running? 12:41
diakopter nine: I suppose it could also be KVM, but I/we don't know how to update the kernel properly 12:42
brrt Ulti: good to hear 12:43
we strive to keep adding features to the JIT :-)
lizmat carlin: like exit() does? or what ? 12:46
carlin lizmat: like die() does but without a backtrace
ab5tract carlin: so, like exit() ? :) 12:47
carlin ab5tract: exit makes tests abort
otherwise it would work
ab5tract ah, gotcha 12:48
lizmat carlin: exit makes the current test *file* abort, not all tests, afaik
carlin lizmat: yeah, that's a problem because I want to test dies_ok 12:49
jnthn back
nwc10 sucessfully nommed? 12:50
12:50 eternaleye joined
carlin and in Perl 5 this is as easy as die("oh noes\n") 12:52
FROGGS carlin: so you want to test dies_ok but you do not want to see a backtrace, right? 12:53
m: use Test; dies_ok { die 1 }
jnthn nwc10: Beef, rice, and a big iron pot cooking it JIT for me at the table seemed pretty successful, yes. :)
camelia rakudo-moar e99b04: OUTPUT«ok 1 - ␤»
nwc10 sounds awesome 12:54
FROGGS carlin: this does not print a backtrace, so I don't understand your issue
jnthn nwc10: Food was. My Chinese is awful though. :)
carlin FROGGS: it will when the actual code runs 12:55
12:55 anaeem1_ left
FROGGS carlin: sure, that is how it is meant to be 12:55
jnthn should probably learn something more than "hello", "beer", "this thingy", "thanks", and "the bill" :)
tadzik :P 12:56
carlin waht I want to do is; IO::Socket::INET.new(...); CATCH { die "could not connect, is the daemon running?") }
but with no backtrace printed
I could use exit(1) but then dies_ok won't when I test that 12:57
* won't work
nwc10 jnthn: but you have those 5 working quite well? 12:58
carlin I could just live with it printing the backtrace, but it really should be possible not to
12:58 ivanshmakov left, ivanshmakov joined
jnthn m: class QuietException is Exception { has $.message; method gist() { $.message } }; sub die-quietly($message) { QuietException.new(:$message).throw } die-quietly "on noes!" 13:00
camelia rakudo-moar e99b04: OUTPUT«===SORRY!=== Error while compiling /tmp/jWhvljW1ZP␤Two terms in a row␤at /tmp/jWhvljW1ZP:1␤------> { QuietException.new(:$message).throw } ⏏die-quietly "on noes!"␤ expecting any of:␤ method argumen…»
nine jnthn: is there more to learn?
jnthn m: class QuietException is Exception { has $.message; method gist() { $.message } }; sub die-quietly($message) { QuietException.new(:$message).throw }; die-quietly "on noes!"
camelia rakudo-moar e99b04: OUTPUT«on noes!␤»
jnthn carlin: Maybe something like that :)
nwc10: Appears so... :) 13:01
gtodd jnthn: with about 300 words and ~1000 phrases and good pronunciation you are as fluent as many native speakers
brrt jnthn: do we have support for udp sockets, by the way?
jnthn brrt: No
brrt :-o
jnthn brrt: libuv offers it, but nobody wired things up :)
brrt i have a project in which i'm going to use udp sockets
ah
hmm
what would be necessary to do it?
jnthn Do you need sync or async? 13:02
brrt i think udp is async by default?
jnthn heh, true :)
brrt you don't get acknowledgment after all
jnthn aye, though receive can still be blocking or non-blocking...
brrt receiving a message would be sync
dalek kudo/nom: e1ae1db | (Tobias Leich)++ | src/ (2 files):
fudge problematic optimization for parrot

Also unfudge Str.lines which suffered from this optimization.
13:03
jnthn Well, in that case see syncsocket.c in MoarVM and make a syncudpsocket.c or so, then whatever is needed in Rakudo to expose it.
lizmat FROGGS++
carlin jnthn: yes, perfect :)
jnthn++
13:03 JimmyZ joined, kaare_ left
FROGGS lizmat: now the p-spectest look better 13:04
lizmat cool!
FROGGS lizmat: gist.github.com/FROGGS/f4f082706daec56ed5fd - RT122783 is what I just pushed, nom is what it was before
[Coke] S99:RSN
synopsebot Link: perlcabal.org/syn/S99.html#RSN
13:04 eternaleye left
[Coke] ^^ LHF - someone was asking about this on list. 13:05
lizmat as in Real Soon Now ?
[Coke] aye 13:06
jnthn Repetitive Spec-change Nausea
13:06 aindilis joined
brrt jnthn: ok, good to know. thanks :-) 13:07
dalek ecs: 59013c3 | (Elizabeth Mattijsen)++ | S99-glossary.pod:
Add lemma for RSN
13:08 eternaleye joined, travis-ci joined
travis-ci [travis-ci] Rakudo build failed. Tobias Leich 'fudge problematic optimization for parrot 13:08
[travis-ci] travis-ci.org/rakudo/rakudo/builds/35431321 github.com/rakudo/rakudo/compare/e...ae1db0005c
13:08 travis-ci left
dalek kudo/nom: decb9aa | (Elizabeth Mattijsen)++ | src/core/Proc/Async.pm:
Proc::Async methods used as instance methods only
13:08
kudo/nom: 7d62b8d | (Elizabeth Mattijsen)++ | src/core/Proc/Async.pm:
Bring Proc::Async.kill up to spec
FROGGS :o( 13:09
lizmat $is-parrot undeclared
13:09 LLamaRider joined
dalek kudo/nom: 9517345 | (Tobias Leich)++ | src/Perl6/Optimizer.nqp:
unbreak the build real quick
13:10
lizmat too quick: Unable to parse expression in blockoid; couldn't find final '}' 13:11
FROGGS I don't spot it 13:12
lizmat: did you reconfigure?
13:12 travis-ci joined
travis-ci [travis-ci] Rakudo build failed. Elizabeth Mattijsen 'Bring Proc::Async.kill up to spec' 13:12
[travis-ci] travis-ci.org/rakudo/rakudo/builds/35431787 github.com/rakudo/rakudo/compare/e...62b8da57ed
13:12 travis-ci left
lizmat nope 13:12
FROGGS lizmat: the Perl6::Optimizer is now fudged, so I updated the Makefile-*.in 13:13
lizmat ah, will try
FROGGS I should add an irc highlight on 'build failed'
lizmat builds now 13:14
PerlJam FROGGS: especially when it says "Tobias Leich"? ;)
FROGGS PerlJam: no, every time :o)
lizmat will travis do a reconfig ? 13:15
13:15 eternaleye left
FROGGS lizmat: it starts with a fresh virtual machine, fresh MoarVM, nqp, ... 13:15
lizmat and tell us the build's ok now ?
FROGGS it will tell when the status changes, and when the build faild 13:16
so, yes
two out of three builds passed already
13:16 eternaleye joined
FROGGS travis-ci.org/rakudo/rakudo 13:17
13:17 travis-ci joined
travis-ci [travis-ci] Rakudo build passed. Tobias Leich 'unbreak the build real quick' 13:17
[travis-ci] travis-ci.org/rakudo/rakudo/builds/35431918 github.com/rakudo/rakudo/compare/7...17345cea40
13:17 travis-ci left
FROGGS there we go :o) 13:17
travis++
PerlJam FROGGS++
13:18 LLamaRider left 13:19 jerrycheung joined 13:20 guru joined, guru is now known as Guest18977, Guest18977 is now known as ajr_ 13:27 JimmyZ_ joined
gtodd timotimo: was searching iPhone6 info and found github.com/timo/iperl6kernel (appears I googled iPerl6 instead of iPhone6) 13:28
13:29 JimmyZ left, JimmyZ_ is now known as JimmyZ
dalek kudo-star-daily: 57679a5 | coke++ | log/ (15 files):
today (automated commit)
13:32
13:36 eternaleye left, JimmyZ left
carlin isn't iPerl6 called Swift? :p 13:37
FROGGS ./perl6-j --target=jar --output=lib/lib.pm6.jar lib/lib.pm6 13:42
===SORRY!===
P6int representation does not support natively typed attributes
>.<
13:44 eternaleye joined
gtodd carlin: :) 13:47
lizmat FROGGS: --ll-exception ? 13:48
FROGGS lizmat: yes, in a mo' :o)
gtodd carlin: interesting how Swift uses a bird metaphor like Parrot :-) 13:49
FROGGS lizmat: from looking at the bt it could be very well related to local modifications, so nvm for now 13:50
alexghacker m: sub t( :$abc ) { say $abc }; my $def = "abc"; my %t = $def => 456; t( |%t ) 13:51
camelia rakudo-moar e99b04: OUTPUT«456␤»
alexghacker m: sub t( :$abc ) { say $abc }; my $def = "abc"; t( $def => 456 )
camelia rakudo-moar e99b04: OUTPUT«Too many positionals passed; expected 0 arguments but got 1␤ in sub t at /tmp/UofwmjwC68:1␤ in block <unit> at /tmp/UofwmjwC68:1␤␤»
alexghacker can someone explain why the first works but the second does not?
FROGGS alexghacker: that is the difference between a named parameter and a pair
13:52 kjs_ joined
FROGGS m: sub t( :$abc ) { say $abc }; my $def = "abc"; t( "$def" => 456 ) 13:52
camelia rakudo-moar e99b04: OUTPUT«Too many positionals passed; expected 0 arguments but got 1␤ in sub t at /tmp/ARPhal7vfs:1␤ in block <unit> at /tmp/ARPhal7vfs:1␤␤»
alexghacker but doesn't => construct a Pair?
FROGGS yes
and you are passing a Pair as a positional parameter
m: sub t( :$abc ) { say $abc }; my $def = "abc"; t( |($def => 456) )
camelia rakudo-moar e99b04: OUTPUT«456␤»
alexghacker ok 13:53
up until then in my experiementation it had looked like pairs automatically filled named parameters
FROGGS see also:
alexghacker thanks for the clarification
FROGGS m: sub t( :$abc ) { say $abc }; my $def = "abc"; t( abc => 456 )
camelia rakudo-moar e99b04: OUTPUT«456␤»
FROGGS m: sub t( :$abc ) { say $abc }; my $def = "abc"; t( "abc" => 456 )
camelia rakudo-moar e99b04: OUTPUT«Too many positionals passed; expected 0 arguments but got 1␤ in sub t at /tmp/tCJbODX3uW:1␤ in block <unit> at /tmp/tCJbODX3uW:1␤␤»
13:54 mattp_ left
alexghacker the difference between those last to is very subtle 13:54
PerlJam m: sub t( :$abc ) { say $abc }; t( ( abc => 456 ) ); 13:55
camelia rakudo-moar e99b04: OUTPUT«Too many positionals passed; expected 0 arguments but got 1␤ in sub t at /tmp/W5LEAL4_mN:1␤ in block <unit> at /tmp/W5LEAL4_mN:1␤␤»
PerlJam alexghacker: that one too
But yet, it all makes sense :)
13:56 kjs_ left
alexghacker the last one I can understand, as I can see the () encapsulating the Pair in a List that tries to fill positional parameters 13:56
I'm still not seeing the difference that explicitly quoting the key makes, though 13:57
13:57 JimmyZ joined
alexghacker m: my %t = abc => 123; say %t 13:58
camelia rakudo-moar e99b04: OUTPUT«"abc" => 123␤»
gtodd what is the embarassingly simple explanation for why from the shell I can do: perl6 -e 'say SETTING::.keys' and get a list ... but in the REPL if I can only do it once ... (subsequent runs produce different output)
alexghacker m: my %t = "abc" => 123; say %t
camelia rakudo-moar e99b04: OUTPUT«"abc" => 123␤»
alexghacker m: say abc => 123 13:59
camelia rakudo-moar e99b04: OUTPUT«Unexpected named parameter 'abc' passed␤ in sub say at src/gen/m-CORE.setting:15105␤ in block <unit> at /tmp/4tNbf5M_PK:1␤␤»
alexghacker heh
m: say( abc => 123 )
camelia rakudo-moar e99b04: OUTPUT«Unexpected named parameter 'abc' passed␤ in sub say at src/gen/m-CORE.setting:15105␤ in block <unit> at /tmp/ctuPwCvvKU:1␤␤»
alexghacker m: say "abc" => 123 14:00
camelia rakudo-moar e99b04: OUTPUT«"abc" => 123␤»
alexghacker at least it's consistent
gtodd oh in the the REPL I can use CORE::keys
alexghacker m: say ( abc => 123 ) 14:01
camelia rakudo-moar e99b04: OUTPUT«"abc" => 123␤»
lizmat m: sub a (:$foo) { $foo }; say a( (foo => "bar") ) # it's a pair
camelia rakudo-moar e99b04: OUTPUT«Too many positionals passed; expected 0 arguments but got 1␤ in sub a at /tmp/NmgSS5ELTz:1␤ in block <unit> at /tmp/NmgSS5ELTz:1␤␤»
FROGGS alexghacker: I see it as: "an indirection indicates passing a Pair"
lizmat m: sub a (:$foo) { $foo }; say a( |(foo => "bar") ) # it's flattened to a named param
camelia rakudo-moar e99b04: OUTPUT«bar␤»
14:01 eternaleye left
lizmat m: sub a (:$foo) { $foo }; say a( foo => "bar" ) # as it was like this 14:02
camelia rakudo-moar e99b04: OUTPUT«bar␤»
lizmat m: sub a (:$foo) { $foo }; say a( :foo<bar> ) # or this
camelia rakudo-moar e99b04: OUTPUT«bar␤»
alexghacker m: sub t( :$abc ) { say $abc }; my $def = "abc"; t( |( $def => 456 ) ) 14:03
camelia rakudo-moar e99b04: OUTPUT«456␤»
alexghacker that's where I wanted to end up
tyvm, all
lizmat++, PerlJam++, FROGGS++ 14:04
and TimToady++ (for his clarification last night)
leont lizmat++ # Bring Proc::Async.kill up to spec
lizmat leont: writing tests now 14:05
14:05 mr-foobar left
lizmat m: {say +Nil; CONTROL { }}; 1 14:05
camelia rakudo-moar e99b04: OUTPUT«use of uninitialized value of type Nil in numeric context in block <unit> at /tmp/DzxNttSoNz:1␤␤Trying to unwind over wrong handler␤»
lizmat jnthn, brrt: ^^^ "trying to unwind over wrong handler" ??? 14:06
m: +Nil; CONTROL { } 14:07
camelia rakudo-moar e99b04: OUTPUT«WARNINGS:␤Useless use of "+" in expression "+Nil" in sink context (line 1)␤use of uninitialized value of type Nil in numeric context in block <unit> at /tmp/J794S5UuDW:1␤␤»
lizmat m: {+Nil; CONTROL { }}
camelia rakudo-moar e99b04: OUTPUT«use of uninitialized value of type Nil in numeric context in block <unit> at /tmp/WC_Le_ZAB0:1␤␤Trying to unwind over wrong handler␤»
14:07 kaleem left
masak got a TODO: passed on test 12 of t/spec/S17-procasync/print.rakudo.moar 14:11
otherwise, all-passing stresstest suite. moritz++ others++
14:11 eternaleye joined
dalek ast: e3291a2 | (Elizabeth Mattijsen)++ | S02-types/nil.t:
Add some Nil related tests, as per S02:491
14:12
synopsebot Link: perlcabal.org/syn/S02.html#line_491
lizmat masak: I'm afraid that's a flapper :-( 14:19
14:20 kaleem joined 14:25 kaleem left 14:26 kaleem joined 14:27 kaleem left
jnthn lizmat: Weird error... 14:27
lizmat: Though
m: last
camelia ( no output )
jnthn Hm
There's something odd tehre too
I'd not be surprised if they're related...
Also 14:28
m: Thread.start({ last }).join # weird too
camelia rakudo-moar e99b04: OUTPUT«(signal )»
jnthn hopes he'll find the same thing at the root of all 3 :)
lizmat hopes so too...
brrt lizmat: dunno :-o
never seen that actually 14:29
lizmat neither, so I thought I'd report it
jnthn Makes me wonder if it's a corruption issue of some kind...
lizmat as it may indicate a general problem with warnings
well, then I hope we have a simple case to test now :-)
jnthn So, with the updates I did to the allocation profile, I can now see that 50 frames of rc-forest-fire allocates 1.2 million Ints. 14:30
timotimo oh my 14:31
14:31 [Sno] left
jnthn Amazingly, only 7% of the time is spent in GC 14:32
timotimo when we have escape analysis, we'd be able to throw boxing/unboxing away in some cases, no?
tadzik how much in allocator? :P
timotimo do we measure that? 14:33
i don't think so
tadzik or is it part of GC
jnthn Well, allocating is rather hard to measure
I mean, it's cheap
JimmyZ GC is sometimes strange, run samecase once cause a GC, while twice doesn't
timotimo yeah, we just bump the pointer
jnthn It's a bump-the-pointer algorithm.
So allocating is just "compare two numbers, then add two numbers"
JimmyZ and always does that 14:34
tadzik that's provided that we have a preallocated poll for 1.2 million ints
isn't that so?
jnthn No, it's more than we alloate in a nursery
14:34 kaare_ joined, eternaleye left
timotimo yeah, one of the allocations will trigger a gc run 14:34
jnthn Almost all of these die on the first collect, I think.
Yeah, the promotion rate is relaly low
timotimo right, and an Int will not really cause many things to be traversed 14:35
jnthn As low as 2KB of promotion
It's so low that we do 76 GC runs and don't accumulate enough promoted data for any of them to need to be full collects
timotimo (yay, i wrote the beginning of that code) 14:36
jnthn Aye :)
Very worth it.
hoelzro good * #perl6!
timotimo good hoelzro, *!
hoelzro o/ timotimo 14:37
14:37 aborazmeh joined, aborazmeh left
jnthn o/ hoelzro 14:40
hoelzro o/ jnthn 14:41
14:41 eternaleye joined, eternaleye is now known as eternaley
lizmat jnthn: sanity check: we should allow more than one signal to be tapped at a time, right ? 14:44
jnthn lizmat: aye 14:45
lizmat putting this in a file:
signal(SIGHUP).act: -> { }; signal(SIGINT).act: -> { }; sleep 5;
running it and pressing CTRL-c gives a very strange backtrace
Unhandled exception in code scheduled on thread 4527849472 14:46
Cannot call 'postcircumfix:<[ ]>'; none of these signatures match:
no line numbers, not even with --ll-exception
jnthn Odd 14:47
lizmat rakudobug it? 14:48
jnthn yeah 14:50
$*DYNAMICALLY_COMPILED in the optimizer is really getting in the way of optimizing osme aspects of CORE.setting... 14:52
alexghacker m: sub t( |cap ) { say cap }; t( abc => 123 ) 14:53
camelia rakudo-moar 951734: OUTPUT«\(abc => 123)␤»
alexghacker m: sub t( |cap ) { say cap }; t( "abc" => 123 )
camelia rakudo-moar 951734: OUTPUT«\("abc" => 123)␤»
alexghacker m: sub t( |cap ) { say cap }; t( |( abc => 123 ) )
camelia rakudo-moar 951734: OUTPUT«\(abc => 123)␤»
alexghacker m: sub t( |cap ) { say cap }; t( |( "abc" => 123 ) )
camelia rakudo-moar 951734: OUTPUT«\(abc => 123)␤»
timotimo jnthn: that gets set when we have begin blocks and constant definitions? 14:54
jnthn timotimo: Yeah, or in the case I'm looking at when the code gets run uring the compile.
timotimo: trait mods can cause it also
timotimo i can imanige that'd happen many, many times
when that is set we just give up on lots of stuff, right?
jnthn Basically it prevents block flattening.
No, not much
timotimo oh. well, block flattening is quite a dramatic thing to lack nowadays :) 14:55
what with lexical elimination depending on it
jnthn Right, precisely
And because it gets in the way of void analysis too
Since it becomes inter-frame and the QAST compiler is in a less good place to do much about it.
So we're doing all kinds of boxing.
So yeah, big knock-on effect. 14:56
Of course, removing it immediately breaks the build :)
timotimo aye, that would have been way to easy. can't have that!
alexghacker m: sub t( |cap ) { say cap }; t( ( abc => 123 ) ) 14:59
camelia rakudo-moar 951734: OUTPUT«\("abc" => 123)␤»
timotimo m: sub t( |cap ) { say cap.perl }; t( ( abc => 123 ) )
camelia rakudo-moar 951734: OUTPUT«Capture.new(list => ("abc" => 123,))␤»
15:00 woolfy1 left
alexghacker timotimo: I had figured that out, but doing .perl does make it more clear (and is new to me) 15:01
15:02 woolfy joined
alexghacker I still don't understand *why* the distinction is made there between « abc => 123 » and « "abc" => 123 », but for the moment I'm willing to live with it since it is well-behaved 15:02
I just started writing perl6 code yesterday, so I shouldn't expect to understand it all yet. :) 15:03
lizmat afk& 15:04
15:05 eternaley left, ab5tract left 15:06 denis_boyun_ left
PerlJam alexghacker: how about this ... the quotes are a syntactic marker than says "treat this thing literally", whereas without the quotes it's a "name" and you're telling Perl that you want to give the name a value. 15:07
alexghacker OIC 15:08
FROGGS +1
where name == identifier
15:08 eternaleye joined
PerlJam aye 15:08
alexghacker It's that way because we want it to be that way, not because of something more subtle crawling out of the depths
PerlJam alexghacker: right.
alexghacker: you could say that foo => 123 is the same as :foo(123) with regards to the "nameiness" of foo 15:09
15:10 anaeem1 joined, treehug88 joined
alexghacker is this deliberate distinction unique to the implicit creation of Captures, or are there other contexts in which it applies? 15:11
15:16 jerrycheung left 15:18 JimmyZ left 15:19 ajr joined, ajr_ left 15:20 ajr is now known as Guest84835, Guest84835 is now known as ajr_ 15:24 flussence left, flussence joined, flussence left
timotimo alexghacker: you can write "foo bar baz" => 123, but you can never have a variable named $foo bar baz 15:24
the rules for what is allowed to come before a => are the same as for an identifier in general 15:25
15:25 flussence joined, flussence left, flussence joined 15:26 dayangkun left
timotimo i mean: literals before a => 15:27
you can of course still get the datum from a variable, like $foo => $bar
15:27 eternaleye left
timotimo the fact that it's entirely syntactic, i.E. { my $foo = "abc"; mysub($foo => 123) } will not give you a named parameter "abc" just because "abc" happens to be an identifier, makes it much less confusing 15:28
but it's still a little bit of a gotcha
15:30 jerrycheung joined
alexghacker I can see the utility of the distinction, and I believe I understand the mechanics of it too. 15:32
15:32 eternaleye joined, eternaleye is now known as eternaley
timotimo yeah, it's easy to understand, but surprising if you don't know about it yet 15:32
(and the "flattening" operator still allows you to pass named arguments where the name comes from a variable) 15:33
15:33 xinming joined
alexghacker Currently it appears to me to be something that is exclusive to Captures, but I don't yet know enough perl6 to know if there's anyplace else where we might have chosen to do it the same way 15:33
timotimo as far as i know it's only in argument lists 15:34
15:34 jerrycheung left 15:35 zakharyas left 15:37 FROGGS left 15:39 brrt left, mattp_ joined 15:41 mr-foobar joined 15:43 telex left, eternaley left 15:44 telex joined
Brock Any StrangeLoop attendees here? I'll be heading to STL tonight 15:44
dalek kudo/nom: 6b8aac1 | jonathan++ | src/core/ (2 files):
Some allocation-reducing micro-opts.

Eliminate a bunch of Int boxings on some hot paths.
15:47
jnthn 'night o/ 15:49
timotimo gnite jnthn! 15:50
15:50 eternaleye joined 15:53 rurban joined 15:55 FROGGS joined 15:56 Brock is now known as awwaiid 15:57 mst joined 15:58 eternaleye left
timotimo a friend suggests we use qemu-in-emscripten to run moarvm in a browser 16:01
16:02 rurban left
hoelzro timotimo: why would qemu be necessary? 16:04
timotimo because we can't just translate libuv to js
hoelzro ah
timotimo if you can get libuv and the other stuff working in emscripten, that'd be fine
but with the qemu approach, our jit should also work! :P 16:05
FROGGS *lol* #swag #yolo
my first blade arrived at home
16:05 rurban joined
timotimo blade server or knife blade? :) 16:06
FROGGS from an ibm bladecenter
:o)
timotimo from the kitchen? 16:09
16:11 fhelmberger left 16:12 fhelmberger joined 16:16 fhelmberger left
FROGGS hell's kitchen :o) 16:16
carlin while trying to precompile, what would cause; STable conflict detected during deserialization.
(also panda-build doesn't stop if a module fails to compile, but that's another issue)
FROGGS ewww 16:18
I think we had/have a bug where our scoped subs/var could case that... but I'm not sure 16:19
carlin ah, the file that's failing to compiling has a lot of our scoped subs 16:20
16:20 dwarring left 16:21 [Sno] joined
FROGGS do you access my scoped vars from within these subs that are outside of these subs? 16:21
16:23 treehug88 left
carlin no, does access our-scoped vars from a different module though 16:23
FROGGS yay, I think my MATCH-patch works! (CAPHASH removal)
16:23 treehug88 joined
FROGGS carlin: that still might be it though 16:23
[Coke] lizmat: if I try signal(SIGHUP).act: -> { say "WAT!"; }; sleep 5; locally, hitting ^C just kills the program. (moar)
(same with loop {} instead of sleep) 16:26
S17-procasync/print.rakudo.moar failing on daily run on jit, but ok without. 16:27
parrot is MUCH better today, still 10 failures.
JVM got wrecked. 16:28
dalek rl6-roast-data: 8471c54 | coke++ | / (6 files):
today (automated commit)
16:28 treehug88 left
[Coke] looks like the eval server is dying again. 16:29
diakopter: Did you kill anything on host08 earlier today? 16:30
16:31 liztormato joined
[Coke] I'll try doing just a jvm run. 16:32
carlin hmm, nope, removing the uses of the our-scoped vars didn't fix it
16:32 liztormato_ joined
liztormato_ [Coke]: Did the control-c break the sleep or not? It shouldn't! 16:34
[Coke] it did.
and also did not say WAT.
liztormato_ Zen we haz a bug ;-(
carlin oh, it uses a module that has my-scoped vars...
[Coke] this is with a recent but not HEAD rakudo 16:35
(on moar)
is anyone bothered (enough to open a ticket) that rakudo puts nqp next to parrot, but puts moarvm inside nqp? 16:36
(during the build process)
16:36 liztormato left, liztormato_ is now known as liztormato
FROGGS [Coke]: no :o) 16:38
timotimo: btw, I got my tent^Wshirt also >.< 16:39
16:42 virtualsue left
FROGGS timotimo: I'd like to bench my Cursor.MATCH fiddling... any ideas about good tests? 16:45
16:51 kaleem joined
carlin bah, removing all the my-scoped vars from the other module didn't fix it... I don't know what the problem is 16:53
16:58 vendethiel joined, slmult0 joined 16:59 ajr_ left 17:00 spider-mario joined
vendethiel o/ 17:00
17:00 dakkar left
vendethiel ingy: please merge my PR, I feel bad :P 17:07
carlin oh no :( It's `use Inline::Perl5` that makes it fail... 17:09
liztormato Oh noes! 17:12
nine never tried it on anything but Rakudo HEAD
17:20 liztormato left, camelia left 17:22 kaleem left
tony-o panda isn't finding Pluggable, what am i doing wrong? 17:30
did i update the wrong repo for panda packages?
carlin Last-Modified: Fri, 12 Sep 2014 07:32:25 GMT 17:32
tadzik: panda isn't updating it's projects.json again
I wonder if it would be useful if panda read the last-modified header when it downloads tte list and warns if it's older than ~24 hours or something 17:34
colomon Or just to have a more distributed set of places to get projects.json, in an effort to make things more reliable. 17:39
tadzik the cronjob seems to not work 17:41
[Coke] isn't projects.json available in a git repo?
tadzik nope
a perl script is regenerating it
it should do that every hour, for some reason it does not
I have no idea how to investigate
[Coke] any idea where the script is running? 17:42
where is the script?
(source)
colomon do we have the script somewhere? 17:43
tadzik it's on my feather account
I should turn it into a service that any admin can manage
colomon upload the script to github? 17:45
tadzik can do that, but that doesn't quite solve the problem :) 17:46
the script itself is okay
or you mean for someone to set it up?
colomon so anyone can run it locally 17:47
tadzik ah, good point 17:48
colomon actually, that would be a great option for panda, no? github is basically always up
17:48 ajr joined, ajr is now known as Guest4704, Guest4704 is now known as akr_
tadzik true 17:49
the script could be turned into Perl 6
17:50 akr_ is now known as ajr_
retupmoca either that or teach panda what mirrors are 17:50
vendethiel tadzik: please post it, would be fun to translate it :-) 17:51
tadzik okay :) 17:52
tony-o i'd mirror it 17:53
[Coke] diakopter: something happen to host08? ssh is hanging. 17:54
tadzik there
dalek osystem: 0c645a5 | tadzik++ | updatelist.pl:
Add a script producing projects.json
vendethiel tadzik: lwp::simple brings getstore()? 17:57
[Coke] I could set that up to run on host08 if we wanted.
ingy vendethiel: I'm thought I did merge it 17:58
colomon tadzik++
vendethiel ingy: you made a follow-up commit then
ingy: where you broke it
17:59 camelia joined
vendethiel (so I re-PR'd to fix it) 17:59
o/, camelia
ingy I see
let me try
vendethiel what you thought was a typo... was not a typo :-)
tadzik vendethiel: that's right
vendethiel but you just "fixed" it and pushed without even testing :(
tadzik not sure why I used wget :)
vendethiel so I re-pr'd to fix it
tadzik: haha was wondering as well. 18:00
[Coke] hey, host08 is wicked slow. bet a java test is hanging and not dying properly under ulimit...
ingy vendethiel: the test fails for me with your "fix" 18:01
vendethiel ingy: I don't believe so.
ingy :)
vendethiel ingy: you *need* the s because that's how scala interpolation works
i.e. "$a!" is "$a!", s"$a!" is (a + "!")
ingy vendethiel: gist.github.com/099f25325019f9809f8b 18:02
vendethiel ingy: which scala version?
I'm running 2.11. 18:03
18:03 Ven joined
ingy Scala compiler version 2.9.2 -- Copyright 2002-2011, LAMP/EPFL 18:03
[Coke] ok, finally finished catchup with me typing "htop". (wow)
18:03 camelia left
ingy it's the ubuntu 12.04 pkg 18:04
Ven ingy: 2.9 doesn't have string interpolation
hence the error message
ingy I'll try to upgrade since I have 14.04 now
Ven (2.9.2 is from 2012-04)
ingy ok
I'll add a test for it
Ven add a test for what? 18:05
ingy 2.11
Ven right. the perl5 test also blew up here 18:07
ingy on Mo? 18:08
I'll fix that too
18:08 slavik left
colomon tadzik: huh, the script doesn't seem to work for me. 18:10
tadzik colomon: that might be because it's rigged to write into /home/tjs :P 18:11
colomon tadzik: already fixed that, still doesn't work
tadzik colomon: how doesn't it work?
ingy Ven: I fetch/rebase/push and that closed PR/2. fyi
[Coke] lizmat: "as gong awry" might be too esoteric.
colomon tadzik: projects.json comes out with exactly two bytes in it.
tadzik weierd 18:12
[Coke] (and or simply incorrect. feels like you were going for gang aft a-gley)
18:13 Ven left
[Coke] colomon: oh, so maybe my problem is related to this problem. (where I get a mostly empty projects.json...) 18:13
colomon [Coke]: could be
leont I may be observing Proc::Async supplies having some serious ordering issues. Trying to get a small example
tadzik I can't reproduce the problem 18:14
colomon tadzik: should it say 501 after each github URL printed when it runs? 18:15
tadzik colomon: definitely not :)
colomon tadzik: so I gets the getstore call is failing? 18:16
*guess
18:16 dwarring joined
tadzik colomon: yes 18:16
[Coke] "async" and "ordering issues" doesn't sound like a problem, per se. 18:17
colomon tadzik: "Protocol scheme 'https' is not supported"
tadzik that explains it
18:18 treehug88 joined
[Coke] lizmat: few places in the spec still found with: ack '"SIG' -- should those be using, e.g. SIGHUP instead of "SIHUP" ? 18:19
colomon tries installing LWP::Protocol::https
[Coke] (one of them is ok, given it's an example of using the string, but there's at least one other that might want be "canonical" 18:20
18:22 slavik joined
dalek osystem: fdc6d93 | (Solomon Foster)++ | updatelist.pl:
Remove hard link into tadzik's directory.
18:25
timotimo leont: is that about a "process has shut down" fires before you read the last stuff out of stdout? 18:26
colomon okay, www.harmonyware.com/files/projects.json should be a workable, current projects.json, if anyone still needs it. 18:27
leont No. Actually I may have a fix for that one, but I'm sometimes observing my input characters in not quite the expected order
timotimo your input characters? 18:28
leont I'm receiving stuff like this: «ok 1 - Test would have returned 0ok 2 - Expected 3 test», note the missing newline there :-/ 18:29
timotimo receiving, as in? you're reading that from a process' stdout? 18:30
leont Proc::Async is giving me a Supply, I've act()ed it
timotimo that should be the right way to get at the stdout's stuff, yeah 18:31
leont New test, actually confirmed a case of getting my "ok 6" after my "ok 7"…
timotimo d'oh
leont This gives "interesting" parsing results… 18:32
Worse yet, get stuff like "ok7ok6\n\n"
timotimo blergh. that is pretty sucky. 18:33
FROGGS do we have to flush the handles or some such? 18:34
leont Something must be wrong on a moarvm level. I don't quite grok that code yet… 18:35
timotimo i'm looking over the procops.c code right now 18:36
leont What I think is happening, is that it schedules multiple reading tasks that push to the supply, but the scheduler doesn't guarantee any ordering between them 18:37
Don't understand enough of how moar works to fix that though 18:39
FROGGS damn, I've got a BOOTInt in my MATCH code, and dunno how to cope with it :/
timotimo too much code for me to grok at once ... 18:41
[Coke] leont: what code are you running? again, i wouldn't expect proc async to return things in order. 18:49
18:49 liztormato joined 18:50 darutoko left
leont [Coke]: I expect stdout_chars Supply to give my the output of the command in order 18:52
18:53 zakharyas joined
leont Anything else is nothing short of useless 18:53
liztormato leont: I expect that as well
diakopter leont: you'll want to cause them to print in a synchronous order, then, not asynchronous. 18:56
dalek line-Perl5: 8b07781 | nine++ | / (4 files):
Allow passing Callables from P6 to P5 and call them from P5.
18:58
leont The printing in the command is synchronous, and works fine. It's the reading on the other side that's the issue
diakopter they're not each printing directly to stdout while racing in separate threads? 18:59
FROGGS getting my "ok 6" after my "ok 7"… <--- that sounds like it comes from one file 19:00
err process
ingy vendethiel: I added Makefile conditionals for the tests that had extra requirements (scala, perl5). `make test` should run to completion now, regardless of your install situation.
vendethiel: let me know if it doesn't 19:01
19:02 brrt joined 19:04 Ven joined
Ven ingy: oke :) thanks 19:04
ingy: would you be interested in lispy stuff? 19:05
19:05 slmult0 left 19:06 slmult0 joined
timotimo should we have a constructor sub like "set" for keysets? 19:18
liztormato Keysets? 19:19
leont At least I now grok my parser error: it doesn't handle empty lines well
liztormato timotimo: Do you mean SetHashes? 19:21
timotimo er, SetHash
yes
FROGGS I am totally SetBack by all these names 19:22
liztormato Spec it and I'll implement it ;-)
m: <a b c>.SetHash.perl.say 19:23
[Coke] leont: can you provide code showing the issue?
.ask masak if he's on target for the release in 2 days 19:25
yoleaux [Coke]: I'll pass your message to masak.
leont github.com/Leont/tap-harness6. I'm trying to reduce it to a simpler case, but it's a rather non-deterministic bug :-/
[Coke] If folks could beef up the changelog, that will help him come thursday.
leont: ok, but what code are you running? 19:26
ufo && make test?
leont PERL6LIB=lib perl6 bin/prove6 t/generator.t 19:27
[Coke] FYI, I only get this for output: t/generator.t .. 1/? 19:29
leont That should be outputted during the testing 19:31
19:31 liztormato left
leont It should give a summary later 19:31
Which may or may not contain the described error
19:31 camelia joined 19:33 ChanServ sets mode: +v camelia
[Coke] it outputs that and terminates immediately. 19:35
running the test with perl6 directly gives expected TAP output. 19:36
This is perl6 version 2014.08-358-gde16265 built on MoarVM version 2014.08-139-gb37f93e
retupmoca leont: I can duplicate your sporadic out-of-order process output with: This is perl6 version 2014.08-356-g8002629 built on MoarVM version 2014.08-135-gb6f6b29 19:37
[Coke] need a more recent rakudo?
leont [Coke]: the point is that it only happens part of the time, it's non-deterministic
My rakudo is only a few days old, I doubt that's the problem 19:38
retupmoca [Coke]: also, the test file is fine as I understand it - the issue is reading that test output with Proc::Async
[Coke] leont: I'm saying I can't get your code to do anything other than print that line. 19:39
carlin a golf of my precomp issue from earlier: gist.github.com/carbin/8401f4443407ce0697f6
[Coke] repeatedly, nothing else is output using the command line you provided above with prove6
retupmoca runs git pull 19:40
[Coke] are you saying I should see the issue with just perl6 t/generator.t ?
carlin so what does I::P5 do that breaks precomp...
lizmat is back
[Coke] (or is the issue only appearing when run through prove6?)
lizmat leont: I've seen that kind of flapping behaviour in the Proc::Async tests as well :-(
retupmoca the issue was only appearing with prove6
[Coke] ok. I can't prove 6 to show me anything other than the test plan; sorry. 19:41
can't -get-
19:41 jaffa4 joined 19:42 ggoebel11111110 joined, ggoebel1111119 left 19:44 liztormato joined
lizmat timotimo: wrt to sethash(), I seem to recall that TimToady had an opinion about that, prohibiting its existence 19:46
oth, I don't see the use much for set(), bag() and mix() myself, but that's another thing 19:47
19:47 liztormato left
timotimo OK 19:47
TimToady the difference is that immutables have to be built completely at the start, whereas mutables are generally built-up bit by bit, so don't really need the composers so much 19:48
timotimo ah
not a bad explanation
timotimo is pair-programming/teaching a little hangman game with a programming newbie :3
vendethiel timotimo: I did a *full* hangman (reading from file etc included) in p6 in .. 10 lines :P 19:49
retupmoca leont: still has issues with latest rakudo: This is perl6 version 2014.08-365-g6b8aac1 built on MoarVM version 2014.08-139-gb37f93e
timotimo vendethiel: cute. but did it also have an ascii art gallows?
vendethiel timotimo: no clue what a gallow is! tho I can guess 19:50
timotimo i think the singular i sactually "gallows" 19:53
vendethiel timotimo: gist.github.com/Nami-Doc/67dc9304a75d4980b16d 9 lines actually
dalek ast: 40a7cc7 | (Elizabeth Mattijsen)++ | S17-procasync/kill.t:
Add tests for Proc::Async.kill

Which basically fails because signal(SIGNAL).act seems busted
19:54
PerlJam vendethiel: Did you try running it? 19:55
vendethiel: because $word.substr(-1) doesn't make any sense.
vendethiel PerlJam: right :P
I know I tried to run it; because else I wouldn't know about substr-rw
nine I give up. How can I pass on all parameters passed to a postcircumfix:<( )> to a method call? I end up getting a Capture.new(list => (5,)) instead of just the single int. 19:56
geekosaur that is actually what you want, I think? but I don't recall how you use it. I do know that what you think you want loses context 19:57
timotimo nine: you want to | that capture into the new method call
PerlJam nine: |@stuff ?
lizmat flatten it!
nine Can you give me some example? I think I've tried all permutations of |, @, *@, .list, |flat and whatever else I could find. 19:58
This is absolutely over complicated
dalek kudo/nom: abbd376 | (Elizabeth Mattijsen)++ | t/spectest.data:
Add Proc::Async.kill tests
19:59
lizmat m: sub a(|c) { b(|c) }; sub b(*@_,*%_) { say @_.perl; say %_.perl }; a( 23, a=>42 ) # an example for nine ? 20:01
camelia rakudo-moar 6b8aac: OUTPUT«Array.new(23)␤("a" => 42).hash␤»
jaffa4 hello all, I found a problem, if I called a function in a module like this modulename::functionname(); and the function was not found... 20:02
nine lizmat: this gives me Capture.new(list => (5,))
lizmat [Coke]: the "gong awry" was just a misspelling for "going awry"
"awry |əˈrʌɪ| adverb & adjective away from the usual or expected course; " 20:03
PerlJam leont: I can get generator.t to random give me "Tests out of sequence", but when I output the data that's about to be sent to the lexer, it always appears in the correct order. However there are some mysterious extra newlines between them sometimes.
FROGGS m: use Test; say Test::functionnotfound(); say "surely not alive"
camelia rakudo-moar 6b8aac: OUTPUT«Could not find symbol '&functionnotfound'␤ in method <anon> at src/gen/m-CORE.setting:13508␤ in any find_method_fallback at src/gen/m-Metamodel.nqp:2662␤ in any find_method at src/gen/m-Metamodel.nqp:972␤ in block <unit> at /tmp/HQSTpime1P:1␤␤»
FROGGS jaffa4: like that ^^
nine m: sub test(*@a) { say @a.perl; }; class Foo { method postcircumfix:<( )>(|args) { test(|args); } }; my $foo = Foo.new; $foo(5); 20:04
camelia rakudo-moar 6b8aac: OUTPUT«Array.new(Capture.new(list => (5,)))␤»
nine lizmat: ^^^ this is what I have 20:05
20:05 xragnar_ joined, xragnar left, xragnar_ is now known as xragnar
PerlJam std: class Foo { method postcircumfix:<( )>(|args) { test(|args); } } 20:05
20:05 camelia left
jaffa4 FROGGS: yes 20:06
lizmat SERVICE ANNOUNCEMENT: "std:" kills camelia at the moment, please don't use until further notice
20:07 camelia joined
PerlJam nine: in any case, method postcircumfix:<( )>(|args) looks wrong. 20:07
FROGGS jaffa4: where is the bug?
20:07 Woodi left
PerlJam m: sub test(*@a) { say @a.perl; }; class Foo { method postcircumfix:<( )>(\args) { test(|args); } }; my $foo = Foo.new; $foo(5); 20:07
jaffa4 the function exsts
one should be able to call it in that way too? 20:08
FROGGS jaffa4: ahh.... did you declare it 'our'?
camelia std : OUTPUT«Can't chdir to '/home/p6eval/std/snap': No such file or directory at lib/EvalbotExecuter.pm line 163.␤ EvalbotExecuter::_auto_execute('HASH(0x1944cf0)', 'class Foo { method postcircumfix:<( )>(|args) { test(|args); } }', 'GLOB(0x1b98108)', '/tmp/M5sMDZ_sp7', 'std') ca…»
20:08 ChanServ sets mode: +v camelia
camelia rakudo-moar 6b8aac: OUTPUT«Array.new(5)␤» 20:08
20:08 Woodi joined
jaffa4 FROOGS: I can call it without namespace designation, but not with namespace 20:09
no our
FROGGS jaffa4: you have to declare it 'our' scoped to do that
jaffa4: you probably put an 'is export' trait on it, that's why you can call it without the namespace in front of it
nine PerlJam: that's it! 20:10
jaffa4 I did not use export, yet I could call it in short form
I did not put export 20:11
dalek line-Perl5: 8462b03 | nine++ | / (3 files):
Allow passing code refs from P5 to P6 and call them from P6.

Thanks to PerlJam++ and lizmat++ for helping with Perl 6 syntax.
nine ^^^ this was the last big feature on my list. 20:13
carlin golf of what in Inline::Perl5 does that stops precomp: gist.github.com/carbin/25b38908d8df607c33ee 20:14
dalek ast: cc38937 | (Elizabeth Mattijsen)++ | S17-procasync/kill.t:
Make sure we will never hang
carlin if have a file that uses a file that uses Inline::Perl5 it won't precompile
lizmat carlin: is the add_fallback needed for this problem? 20:16
carlin lizmat: yes. removing the add_fallback lets it precompile 20:17
lizmat and Kaboom by itself precomps ok
20:18 brrt left, vikeOne left
carlin yep 20:19
and you can 'use kaboom' directly and it works
it's only when using a file that has `use Kaboom`
(or `use Inline::Perl5`)
lizmat no, it's the Bar that blows up, so it's one use removed from that, no? 20:20
carlin: anyway, this should work, afaics
so please rakudobug it
20:21 slmult0 left, virtualsue joined
lizmat perhaps rewrite it using CompUnit.new('lib/Kaboom.pm6').precomp 20:21
for simplicity (then you shouldn't need Panda
)
20:26 cibs joined 20:29 virtualsue left
gtodd any suggestions for a terminal font (i.e. for use with vim or emacs -nw) that will show 「」? on a modernish Xorg / xterm on Unix 20:30
cognome levien.com/type/myfonts/inconsolata.html 20:31
colomon tony-o: BTW, after I generated a fresh projects.json I ran the module smoke test, and Pluggable passes nicely. :) 20:32
gtodd well notjust 「」 but other cool perl6 syntax bits ..\
cognome: cool thanks
nine uses Deja Vu Sans Mono 20:34
cognome gtodd, apparently it has not 「」
gtodd 「 right
cognome I have lost track what fonts my different tools use :( 20:35
20:35 vike joined
tony-o colomon: thank you!!! 20:35
20:35 ggoebel11111110 left 20:36 cognome_ joined, ggoebel11111110 joined
dalek ast: c41eb8a | (Elizabeth Mattijsen)++ | S17-procasync/kill.t:
It helps if you actually try to kill the process
20:36
20:37 spider-mario left
timotimo ohai tony-o 20:37
20:39 cognome left
timotimo i feel like the .IO method on Cool should accept named parameters and pass them on to the open call 20:42
so i could do things like "my @lines_with_nl = 'foobar.txt'.IO(:!chomp).lines" 20:43
lizmat fwiw, I feel that .IO should return a IO::Path, rather than an unopened IO::Handle
gtodd that's one that doesn't show up often ... was thinking of making a multi-key dead-key combo for inserting 「 and 」 but they won't show up in a terminal
timotimo er, .IO gives you an *unopened* handle?
20:43 grondilu left
timotimo indeed it does 20:43
fortunately, lines() on an unopened handle opens it for you
so that's nice
20:44 zakharyas left
lizmat yes, but it makes it hard to make a difference between a path and an open handle 20:44
you can't see from the type of object
which is really yuck if you think about it
timotimo um
i'm not really sure i understand that correctly?
lizmat "foo".IO.e is used to check for existence of a file 20:45
it will never open the file, just check the FS for existence
still, we create an IO::Handle for that, and then don't use any of the feature of an IO::Handle, just it's path 20:46
*its
I'm *this* close to overhauling the IO spec (of which TimToady claims he lost track some years ago) 20:47
timotimo mhm mhm
lizmat if IO returns an IO.path, we could e.g. only once make sure it's absolute
Timbus_ do it!
lizmat instead of over and over again
Timbus_ i patched the isDir and PIO checks out of .get and sped it up.. i thought the same thing 20:48
20:50 Ven left
Timbus_ timotimo, the scheduler for GTK::Simple doesnt work, btw 20:51
timotimo why not? :(
Timbus_ you attach an idle handler but since it returns false, it detaches immediately.
timotimo oh!
20:51 kaare_ left
timotimo didn't know that (also, i didn't implement that :P) 20:51
Timbus_ oh
timotimo feel free to pullrequest or would you like a commit bit instead? 20:52
Timbus_ well, i fixed it but its still broken D;
timotimo damn :( 20:53
i have no past experience with gtk3, sadly ;(
Timbus_ i made .cue attach an idle handler every time theres an event to process -- which is the best way to do it really. but it often simply wont call .cue?
i dont fully understand the scheduler role. also gtk is 'pausing' threads. its very confusing 20:54
timotimo :\
20:55 mst left, mst joined 20:56 jaffa4 left
lizmat wonders ho much of moar's async stress breakage is really libuv immaturity :-( 20:57
*how
timotimo hopefully not much 20:58
lizmat hopes so too 20:59
21:00 DarthGandalf left
Timbus_ also if i make the idle handler return 'true' to work around it the other way, ignoring that that is pretty inefficient to have a permanent idle handler.. it crashes for some reason. i guess perl6 cant return values to a C library? 21:00
perl6 callbacks*
timotimo it should be able to
diakopter I don't think it's libuv immaturity; these cases sound like things for which there are quick-for-jnthn-to-find-given-suitable-available-attention corner cases with obvious fixes. :) 21:01
timotimo you put a "returns" thingie there, right?
diakopter [and/or corrective user education]
21:02 [Sno] left
dalek kudo/nom: fa7a1cc | (Elizabeth Mattijsen)++ | src/core/Proc/Async.pm:
Bring Proc::Async up to spec

I wanted to make sure we don't bring out a documented release of Proc::Async of which the API may change later.
21:07
ast: 52c0144 | (Elizabeth Mattijsen)++ | S17-procasync/ (3 files):
Bring Proc::Async tests in line with specced API
21:08
lizmat leont: ^^^^ Proc::Async flag day
[Coke] lizmat: an appropriate phrase to spell wrong! :)
(mono font) source code pro is nice. 21:09
lizmat it made me chuckle when I fixed that in the spec :-)
[Coke] diakopter: did you have to kill anything gone wild on host08 today? 21:10
or did the rakudo-jvm tests eventually just starve? 21:11
leont Hmmm, I just sent a patch for Proc::Async, but I now have the impression it would no longer apply :-s
[Coke] (the machine was nearly dead after I tried to run just the jvm tests, and when I could finally get back in, the tests had failed). Assuming there's some nasty spectest.
leont (my checkout was only a few days old) 21:12
PerlJam lizmat: does this mean that jnthn's slides from YAPC::EU on Proc::Async will no longer work?
21:13 mst left
lizmat PerlJam: yes 21:14
leont: where did you send it ?
leont rt.perl.org/Ticket/Display.html?id=122722 21:15
lizmat PerlJam: jnthn has had to change slides after changes before...
FROGGS his slides are not made of stone after all :o) 21:16
PerlJam aye. I was just thinking that those slides are probably the most wide-spread example and now it's (perhaps temporarily0 broken.
lizmat I could add a deprecation cycle 21:17
leont But I don't think anyone was using them for serious things, except me.
If they were, they would have reported the bugs I reported
lizmat but it felt premature for thst 21:18
PerlJam leont: good point.
lizmat *that
leont: looking at applying your patch
21:25 mr-foobar left, BinGOs left
dalek kudo/nom: 124893c | (Elizabeth Mattijsen)++ | src/core/Proc/Async.pm:
Add deprecation cycle for Proc::Async

So that jnthn's examples from the YAPC::EU presentation still work
21:38
lizmat but with a deprecation message :-) 21:39
$ 6 'my $pc=Proc::Async.new(:path<echo>,:args<Hello World>)'
Saw 1 call to deprecated code during execution.
================================================================================
new(:path(),:args()) (from Proc::Async) called at:
-e, line 1
Please use new($path,@args) instead.
continuing to look at leont's patch 21:40
leont Actually, it looks like it should still apply cleanly :-) 21:44
21:45 avuserow left
lizmat yes, but I'm not sure about the sanity of the patch yet 21:46
leont neither. I think the current behavior is wrong, and your fix didn't really fix it. Not entirely sure what else it should do. 21:50
Fix is the other way around (call done when done reading, not when process ended) would be another option 21:51
21:51 [Sno] joined
leont s/is/it/ 21:51
lizmat leont: I'm just adding sanity checks atm 21:54
like not being able to print if not opened with :w
and not being able to print until started
timotimo IMO you shouldn't conflate "process exited" and "finished reading from stdout/stderr"
but "process exited" should close the async stdin part
dalek kudo/nom: b33f353 | (Elizabeth Mattijsen)++ | src/core/Proc/Async.pm:
Put in sanity checks and appropriate exceptions
21:58
kudo/nom: 4c79228 | (Tobias Leich)++ | src/core/Cursor.pm:
port MATCH object construction patch from nqp

I cannot see a speed improvement, but we allocate less objects. Hopefully the jvm specific fudges can be removed by a more smarter hacker. :o)
22:02
22:02 bjz_ joined, bjz left
FROGGS tomorrowish I'll look into the nqp::substr optimizations on hot paths 22:02
gnight #perl6 22:03
lizmat good night FROGGS++
dalek kudo/nom: 5620d40 | (Elizabeth Mattijsen)++ | src/core/Proc/Async.pm:
Oops, forgot one sanity check
22:08
lizmat .tell FROGGS feels like 4c7922850a is adding ~ .5 second to setting parsing 22:10
yoleaux lizmat: I'll pass your message to FROGGS.
22:12 treehug88 left
ingy vendethiel: re:lisp, most certainly 22:24
attempt to do it using similar OO idioms if possible
is there a regex lib you can pull in?
vendethiel: also I just added Bash: github.com/ingydotnet/pig-latin-ac...Latin.bash 22:25
OO Bash!
I gave a talk on OO Bash last spring in Taiwan
lizmat leont: I'm wondering whether the problem isn't deeper with Supply 22:26
specifically, if a .done is executed before all pending .more's are done 22:27
leont I have been wondering the same
I think that would require 'done' to also use 'on', but I'm not fully understanding 'on' yet 22:28
But in this case P::A can legitimately give data after the process is ended, so fixing only Supply isn't good enough 22:29
22:31 Psyche^_ joined 22:36 Psyche^ left, mls left
lizmat seems the difference in handling 'seq' between stdout and stderr is bogus, so I will at least fix that 22:36
22:36 mls joined 22:37 telex left 22:38 telex joined
lizmat I'm also not sure whether .start will wait until the process has actually been spawned 22:38
leont spawning is not well defined across platforms, but on unix there's not reason to wait after the fork, really 22:42
lizmat if not, we have a race conditiion wrt to print/say/write
leont Yeah, the difference in seq handling is silly
Why? As soon as the pipes are set up, you could write to them. I'd assume libuv is at least that sane. 22:43
lizmat ok, let's assume that sanity is there :-) 22:44
hmm... it looks like the callbacks.done is never called 22:48
22:49 ivanshmakov left, firnsy joined
leont Huh? 22:49
lizmat if you do "await $pc.start", you are waiting for the promise to be kept 22:50
but apparently, if the promise disappears too soon, the "done" is not done
hmmm... not true 22:51
it's just flapping :-(
22:54 ivanshmakov joined 22:55 ponbiki left 22:56 ponbiki joined 22:58 aborazmeh joined 23:01 ajr_ left
lizmat ok, something definitely wrong in the order of things: 23:02
every now and then I get 'Hello World\nStarted\nDone"
which would indeed imply that the channel back to the P:A object is not being fed in order 23:03
dalek kudo/nom: ee805ae | (Elizabeth Mattijsen)++ | src/core/Proc/Async.pm:
Make stdout handling same as stderr handling
lizmat $ perl6 t/spec/S17-procasync/print.t 23:04
23:04 cognome_ left
lizmat run that a few times, and you should see it about 1 in 10 times 23:04
23:05 cognome joined
diakopter [Coke]: no, I didn't; someone else may have though 23:05
lizmat ok, maybe 1 in 20
leont lizmat: I still suspect that is the wrong fix. It means P::A done will call the Supply's done even though there may still be data in the pipe. 23:07
lizmat but your solution blocks on the $proc.start 23:08
and that's not good either
it should block awaiting on the returned promise
leont Ah, I see 23:09
Then I had misunderstood how .then works
lizmat well, maybe I'm not reading it right
23:10 cognome left
lizmat ah, no, your idea is sound 23:10
in any case, this would still not explain the order issues I've seen 1/20 times 23:11
23:13 ivanshmakov left, xragnar left
diakopter [Coke]: p6eval user is monopolizing the cpu with oodles of java processes 23:13
23:15 rurban left, jantore left 23:16 jantore joined, ivanshmakov joined
leont I mentioned my theory about that. If they're read separately, there may be two tasks for different pieces of data. If they're not scheduled in the right order… 23:17
23:17 xragnar joined 23:18 raiph joined, raiph left, raiph joined
leont But moar's async code is not particularly accessible, haven't been able to test my hypothesis. 23:23
23:29 maxp joined
lizmat leont: I think I've pulled in your code now, with small changes 23:30
leont :-) 23:31
lizmat hmm... sort of expected that Promise.keep would default to True, and break to False 23:32
I guess for later :)
23:35 jerrycheung joined
dalek kudo/nom: 567da3e | (Elizabeth Mattijsen)++ | src/core/Proc/Async.pm:
Basically pull patch of leont++ (RT #122722)
23:37
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122722
lizmat leont: I hope this brings improvement for you 23:38
I'm not seeing it yet
but it makes sense :-) Hope it does for jnthn as well 23:39
for now, I'm going to get some shuteye
good night, #perl6!
diakopter o/
leont My version brought me improvements in the test that I also posted in that ticket 23:43
Unlike before, the done is always after the associated output 23:48
23:49 bjz_ left 23:50 geekosaur left 23:51 BenGoldberg joined, geekosaur joined 23:54 anaeem1 left 23:55 maxp left