»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, std:, or /msg camelia p6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by masak on 12 May 2015.
Mouq doc's htmlify.pl seems to be broken on perl6 version 2015.05-114-g5afe889 built on MoarVM version 2015.05-43-gdb72ab9 00:21
Ah, perhasp only without Inline::Python. It currently dies with "const_iX NYI", but I suspect it'll work after installing I::P 00:23
Hm. Nope 00:27
timotimo huh? did you rebuild stuff? 00:42
grondilu just added '^arm' in Configure.pl to see if JIT would work on his Raspberry Pi 00:43
timotimo we shouldn't be emitting const_i8, const_i16 or const_i32 ops at all
except maybe we do?
timotimo didn't see anything of that sort 00:45
they are not even mapped on rakudo or nqp 00:46
timotimo Mouq, the only way i could explain that would be a stale bytecode file or something .. ?! 00:47
ugexe you might want to double check that regex. i made a pr before which corrected a similar regex meant for rpi which should have been ^earm 00:49
colomon ah crap, updating rakudo broke one of my $work scripts 00:54
timotimo dang! 00:56
can you tell us what went wrong? 00:57
did you hit a fresh deprecation?
timotimo i hope you noticed it through a harmless action, or a test suite 01:00
and not by breaking something
aaaah. much better. 01:08
grondilu got a segfault. So no JIT for my Pi 01:13
timotimo we can't jit arm in moarvm anyway 01:17
of course you can try to run x86_64 bytecode on your Pi ;) 01:23
grondilu that would not halt and catch fire, would it? :) 01:26
timotimo dunno
SIGBUS or something? :)
dalek kudo/nom: 166d04a | timotimo++ | src/Perl6/Optimizer.nqp:
can optimize METAOP_ASSIGN even for attributes

before this, we only "inlined" (manually) METAOP_ASSIGN if the target of the assignment is a $-sigil'd variable.
now we also allow the target to be a callmethod - on anything, really. hopefully this is right. it doesn't break any spec tests, at least.
01:30
p: fb4892f | Coke++ | ports/macports/ (2 files):
Add sample nqp port
01:31
[Coke] ^^ work in progress. Don't yet have a port created, so we can't do updates post release. Also, need to add nqp-jvm
timotimo used to be: 01:34
19.76user 0.03system 0:19.81elapsed 99%CPU (0avgtext+0avgdata 85432maxresident)k
14.79user 0.01system 0:14.81elapsed 99%CPU (0avgtext+0avgdata 80348maxresident)k
^- is now
timotimo 36.76user 0.02system 0:36.80elapsed 99%CPU (0avgtext+0avgdata 96836maxresident)k 01:38
^- in the very beginning
Mouq timotimo: An edge case: 01:39
m: my class Foo { method bar is rw { (state $b)++; $b } }; my $f = Foo.new; Foo.bar += 15; say Foo.bar
camelia rakudo-moar c2a57e: OUTPUT«17␤»
Mouq Local, 18
Dunno how stupid that case is, but just noting it changes the behavior slightly 01:40
timotimo hold on, i'll investigate
basically we used to evaluate Foo.bar twice?
Mouq Other way around
timotimo we used to evaluate it three times? 01:41
Mouq haha
timotimo so we're actually doing better now, because of the optimizer
Mouq It used to be evaluate Foo.bar, then do += on the resulatant container. Now it's optimized to Foo.bar = Foo.bar + 15 01:42
*resultant
timotimo ah
dalek p: 7a19c01 | Coke++ | ports/macports/Portfile:
Add support for nqp-jvm subport
Mouq camelia is old
timotimo ah, "local" is your local machine that has the patch
i thought you kept the old one
[Coke] Which fails during config time here since I don't have java 7 installed.
Mouq sorry for being unclear
timotimo it's all right
[Coke] will test that at work tomorrow and hopefully get it into the port system.
timotimo but i'm going to drive me and my guests home and have a sleep
are you QAST::able? 01:43
Mouq me?
timotimo if you could QAST::Op( :op('bind'), QAST::Var.new( :name($some_qast_node.unique('metaop_assign_thingie')), :decl<local> ), $the_qast_of_the_thing_to_bind_to ) 01:44
er, hold on
timotimo :decl(var), :scope('local') 01:45
and use that as the value to change, but then without the :decl
that would be fantastic :)
bbl or bbiab or bbtomorrow
Mouq I'll try to look into it. o/ timotimo
timotimo thank you! :) 01:51
--target=ast and --target=optimize are your friend
o/
mr_ron m: my class Foo { my $b; method bar is rw { $b++ } }; my $f = Foo.new; Foo.bar += 15 02:41
camelia rakudo-moar c2a57e: OUTPUT«Cannot modify an immutable Int␤ in block <unit> at /tmp/HRYSrmrUVM:1␤␤»
mr_ron not the best coding idea but LTA response
hoelzro I was thinking about a similiar issue just yesterday 02:43
m: sub foo(Str $in) { $in .= substr(0, 3) }; foo('baz')
camelia rakudo-moar c2a57e: OUTPUT«Cannot modify an immutable Str␤ in block <unit> at /tmp/iE1ejxi3kn:1␤␤»
hoelzro I was wondering if Rakudo should recommend 'is copy'
raydiak .tell FROGGS weird thing...'say EVAL "(:a(1):b(2))"' gives 'a => 1 b => 2' as expected, but the same with $*RESTRICTED set only gives 'a => 1' 03:18
yoleaux raydiak: I'll pass your message to FROGGS.
skids Maybe MAIN should "assume a separate argument" for things like "-k foo" iff they are defined as e.g. "Str:D :$k". Practically any script emulating legacy commandline syntax won't be able to use MAIN otherwise. 03:54
or maybe a trait. 03:56
jdv79 skids: huh? 04:00
skids currently MAIN won't parse commandline arguments that are one-dash followed by a value as named parameters. 04:01
(sub MAIN I mean)
jdv79 ah
dalek ast: 8319ef6 | moritz++ | S02-names/is_default.t:
RT# 125324: "is default" should distribute over a list of variables
05:31
moritz should "is default" work on attributes too? 05:37
FROGGS good morning 06:07
yoleaux 03:18Z <raydiak> FROGGS: weird thing...'say EVAL "(:a(1):b(2))"' gives 'a => 1 b => 2' as expected, but the same with $*RESTRICTED set only gives 'a => 1'
FROGGS raydiak: WAT 06:08
raydiak that's what I thought, even double-checked to make sure I was using the right rakudo both times...
raydiak gist.github.com/raydiak/46b0727fddfd3c0b659e 06:11
FROGGS that does not make sense 06:13
raydiak yeah I looked at your moar commit, I totally don't get it either if it makes you feel any better :)
FROGGS raydiak: what about this: MVM_UNSAFE_DISABLE=1 perl6 -e 'say EVAL "(:a(1):b(2))"'
raydiak Unhandled exception: Operation 'stat' is not allowed in a restricted environment 06:14
FROGGS hmmm, what does it try to stat?
raydiak: are you on darwin? 06:15
raydiak it's in load_setting in ModuleLoader
nope linux
FROGGS ohh, it... yeah
I see it here too 06:16
raydiak pickes the env var up early enough to refuse to load core?
*picks
FROGGS probably yes 06:17
btw, your first example from the gist segfautls here :S
MVM_string_ascii_decode (tc=tc@entry=0x603730, result_type=0x0, ascii=ascii@entry=0x7ffff5caffc8 "rakudo_scalar", bytes=13) at src/strings/ascii.c:6
6 MVMString *result = (MVMString *)REPR(result_type)->allocate(tc, STABLE(result_type));
raydiak wow 06:18
FROGGS so the rakudo scalar result type is NULL
raydiak: did you recompile nqp and rakudo?
raydiak oh probably important to note I merged nom into the branch after I noticed this, seeing if it'd fix/change anything but it didn't 06:19
yes recmopiled all
recompiled
FROGGS hmmm
maybe the moarvm branch needs changes from master
raydiak by hand because rakudobrew was being fussy or I don't know how to use the triple command :)
erm, right, not merged nom, but merged moarvm/master into moarvm/restricted 06:21
FROGGS yeah, realised that just a second ago 06:22
raydiak haven't tried spectesting it 06:24
wonder if something is silently failing under restriction, deep in the bowels of who-knows-what 06:25
jdv79 moritz: interesting idea. is there a way now, without "is default", to get back the to an attr's default value?
FROGGS raydiak: that's also my suspicion 06:38
raydiak FROGGS: sanity test is clean, spectest is clean up to S06 so far
though, I guess it won't be triggered by any of the tests 06:40
FROGGS $ perl6 -e 'my $*RESTRICTED; say EVAL "(:a(1):b(2))"'
getenvhash is unsafe
a => 1
found it
raydiak \o/
nice catch
FROGGS fprintf debugging ftw
I just put "fprintf(stderr, "%s is unsafe\n", info->name); \" in MoarVM/src/interp.c at line 36 06:41
now this one works:
$ perl6 -e 'my $*RESTRICTED; say EVAL "(:a(1):b(2))"'
a => 1 b => 2
raydiak ah ha, cool 06:42
FROGGS would be nice to not need that op though
raydiak are env var checks common in the code though? dunno how we'd handle that if they're scattered all over 06:44
FROGGS there is not much that uses ENV at all... and none of them should be hit in our test case here 06:45
raydiak also, shouldn't it like...break loudly when it hits one of those instead of silently doing something weird?
FROGGS ohh, found it
rakudo/src/Perl6/Actions.nqp:4825: if nqp::getenvhash<COLONPAIR> eq 'trace' { say($/.dump) }
moritz jdv79: not that I'm aware of 06:46
raydiak FROGGS: maybe it'd be better for some of the ops to do something besides throw an exception...like return an empty env hash 06:49
raydiak \o g'night FROGGS, #perl6 07:21
Ven o/ #perl6! 07:24
jnthn morning o/ 07:31
FROGGS raydiak: yeah... we need to discuss that I think 07:50
morning Ven and jnthn
FROGGS m: use nqp; my $v is default(42) = 21; say $v; say nqp::getattr($v,$v.VAR.WHAT.^mixin_base,'$!descriptor').default # jdv79: we potentially can make it available 07:58
camelia rakudo-moar c2a57e: OUTPUT«21␤42␤»
liztormato waves from AMS 08:14
jnthn Yays, my 120 mbit/s internets are installed :) 08:23
nwc10 could you even get that in Sweden? 08:26
are you trying to make everyone outside of South Korea and Japan jealous?
(and obviously the appropriate part of Prague)
jnthn Somewhere in Sweden probably, where I was I don't think so :) 08:27
jnthn Had something like 40 in Sweden. 08:28
And paid twice as much for it as I'm paying for the 120 here in Prague :)
nwc10 and we thought that you were only moving because of the beer 08:29
what speed is your beer connection?
or is that still sneakernet? 08:30
jnthn Sneakernet, but the latency is way lower :) 08:30
There's a small bar with a 4-table outdoor terrace right outside of my building, which serves beer and, among over things, čevapčiči. :) 08:32
FROGGS jnthn: and you wife is from .cz? is that right? 08:34
your*
moritz jnthn: are you moving to Prague permanently?
erm, wait, Prague was nwc10
FROGGS moritz: he did... he's the first employee of the edument++ .cz office IIRC 08:35
moritz cool
but, but, but, "Czech Republic" doesn't match /^S/ 08:36
moritz confused
jnthn FROGGS: No, .ua 08:36
moritz: Yes :)
I...suspect *some* language manages the spelling enough to match /^S/ :) 08:37
FROGGS that was what I was thinking :o) 08:37
jnthn Hm...but none of the ones listed on Wikipedia 08:38
en.wikipedia.org/wiki/Name_of_the_C..._languages
nwc10 I like čevapčiči 08:39
jnthn .tell lizmat I get a failure on Windows in 55-use-trace.t; I thought it may just be line endings, but it looks like some weird path mangling issue... gist.github.com/jnthn/2b4565199f93e5f52cdd 08:42
yoleaux jnthn: I'll pass your message to lizmat.
bbkr_ perl6 -e 'loop { $_ ~~ /.+/ }' # returns two different warnings randomly: "Use of uninitialized value of type Any in string context in block at -e:1" or "Use of uninitialized value of type Any in string context in method Str at /home/ppabian/.rakudobrew/moar-2015.05/install/share/perl6/runtime/CORE.setting.moarvm:1" 08:52
is one of them GC related? quite weird behavior 08:53
jnthn Looks odd indeed 08:56
Please RT it 08:57
bbkr_ done 09:00
jnthn Thanks! 09:02
RabidGravy is anyone that anyone knows of working on an XPath thing? I'm having a yak-a-day period 09:07
bbkr_ how to properly free CPointer class in NativeCall? I have following code: gist.github.com/bbkr/4930c5bb9abaa2211756 and it never reaches DEMOLISH sub, just eats up all machine memory 09:14
bbkr_ s/DEMOLISH/DESTROY/ #moose habits 09:22
FROGGS RabidGravy: started to make bindings to libxml2... 09:30
cognominal m: say Cool.^methods>>.WHAT 09:34
camelia rakudo-moar c2a57e: OUTPUT«(Parcel)␤»
cognominal weird
RabidGravy FROGGS, yeah I've seen ;-) I may just work up an XPath expression grammar on the side 09:49
Mouq .tell timotimo BTW, gist.github.com/Mouq/815d79940dd964711e90 is my solution, but maybe you can make it more DRY? 10:33
yoleaux Mouq: I'll pass your message to timotimo.
andreoss is .sort(:by<key>) the same as .sort(*key)? 10:45
*.key 10:46
dalek ast: 5f50466 | jnthn++ | S15-nfg/many-combiners.t:
Add tests to cover RT #125248.
10:50
synbot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=125248
smls_ andreoss: I don't think .sort supports the :by adverb at all 11:17
ssqq How to get all token name of grammar? 11:31
moritz ssqq: tokens are just methods, so the typical introspection facilities (.^methods at all) apply 11:32
ssqq p6: grammar G { token id { id } }; import G; say G.^methods 11:35
camelia rakudo-moar c2a57e: OUTPUT«Method 'gist' not found for invocant of class 'NQPRoutine'␤ in block <unit> at /tmp/tmpfile:1␤␤»
moritz p6: grammar G { token id { id } }; import G; say G.^methods>>.name 11:36
camelia rakudo-moar c2a57e: OUTPUT«id parse parsefile subparse FAILGOAL upper CAPHASH CALL_SUBRULE !reduce_with_match !protoregex DYNQUANT_LIMITS !fresh_highexpect !DYNQUANT_LIMITS orig !cursor_start !protoregex_nfa !protoregex_table MATCH_SAVE RECURSE !cursor_more !cursor_pass !clear_highw…»
ssqq moritz: thank you, 11:39
andreoss m: my @x = -1,2,-3,4,-5; say @x.sort(:by<abs>); 11:53
camelia rakudo-moar c2a57e: OUTPUT«-5 -3 -1 2 4␤»
andreoss m: my @x = -1,2,-3,4,-5; say @x.sort(*.abs);
camelia rakudo-moar c2a57e: OUTPUT«-1 2 -3 4 -5␤»
andreoss m: my @x = -1,2,-3,4,-5; say @x.sort(:xyz<abc>); 11:54
camelia rakudo-moar c2a57e: OUTPUT«-5 -3 -1 2 4␤»
ssqq When I use REPL, how to reset ENV just like `p6:` in IRC?
timotimo you mean "have all variables and everything cleared out"? 11:58
yoleaux 10:33Z <Mouq> timotimo: BTW, gist.github.com/Mouq/815d79940dd964711e90 is my solution, but maybe you can make it more DRY?
andreoss ssqq: --setting=RESTRICTED
moritz ssqq: start a new REPL :-) 11:59
ssqq: camelia doesn't use the REPL feature; it write a temp file and runs it
andreoss m: say %*ENV 12:00
camelia rakudo-moar c2a57e: OUTPUT«HOME => /home/camelia, LANG => POSIX, LC_CTYPE => en_US.UTF-8, LOGNAME => camelia, MANPATH => /home/camelia/perl5/perlbrew/perls/perl-5.20.1/man:, PATH => /home/camelia/perl5/perlbrew/bin:/home/camelia/perl5/perlbrew/perls/perl-5.20.1/bin:/usr/local/sbin:/…»
andreoss --setting option is undocumented 12:02
ssqq timotimo: yes, then would not have 'redeclaration error'. 12:27
cognominal m: '' ~~ / <?before foo-bar> / 12:27
camelia rakudo-moar c2a57e: OUTPUT«5===SORRY!5===␤Unrecognized regex metacharacter - (must be quoted to match literally)␤at /tmp/VVJxoE4xOL:1␤------> 3'' ~~ / <?before foo7⏏5-bar> /␤Unable to parse expression in metachar:sym<assert>; couldn't find final '>' ␤at /tmp/VVJx…»
ssqq andreoss: p6 --setting=RESTRICTED
cognominal m: '' ~~ / <?before <foo-ba>r> / 12:29
camelia rakudo-moar c2a57e: OUTPUT«Method 'foo-ba' not found for invocant of class 'Cursor'␤ in block <unit> at /tmp/qK9GGQvzTu:1␤␤»
cognominal better :)
timotimo > my $foo = 10
10
> my $foo = 20
20
no redeclaration error here :S
smls_ Why don't we have lazy Scalar's? :P 12:32
this: 12:33
has $!attr = lazy do-some-calculation;
would look nicer than this:
has $!attr; method attr { $!attr //= do-some-calculation }
moritz because methods make it much more explicit when its being accessed
scalars are evaluated on every type check, for example 12:34
but there's a has $!attr will lazy do-some-calculation;
smls_ there is?
moritz possibly with parens around the calculation
smls_ When it's just done for performance reasons (don't do the calculation when the result is never accessed), I don't think it needs to be explicit 12:35
moritz seems "will lazy" was backed out of core 12:36
timotimo yes, to be put into a module 12:37
hoelzro o/ #perl6 12:50
timotimo o/ hoelzro 12:54
hashtag-hoelzro
hoelzro ahoy timotimo
smls_ Hm, has signal(SIGINT).tap({ }) stopped working? 13:10
jnthn works for me 13:12
smls_ re-rakudobrews 13:13
jnthn just tried it :)
I am on a not-yet-updated-to MoarVM
smls_ ➜ perl6 -e 'signal(SIGINT).tap({ say "SIGINT" }); prompt(":");' 13:21
:^C
jnthn: ^^ still no luck after 'rakudobrew triple nom master master'
jnthn smls_: Very odd...I try exactly that example and it works here 13:22
On Windows, fwiw.
smls_ Linux here 13:23
AlexDaniel m: my $test; my $test 13:24
camelia rakudo-moar c2a57e: OUTPUT«Potential difficulties:␤ Redeclaration of symbol $test␤ at /tmp/W51V_BtMB5:1␤ ------> 3my $test; my $test7⏏5<EOL>␤»
AlexDaniel is it possible to make it tell the line number of the first declaration? Should I report that? 13:25
geekosaur it did, sort of? ":1" suffix 13:35
_itz I think rt.perl.org/Ticket/Display.html?id=123728 can be closed as done (?)
geekosaur LTA perhaps though
AlexDaniel geekosaur: that's not the first declaration 13:36
geekosaur hm, right 13:37
AlexDaniel not that it is very critical, but still. I will report it then 13:38
m: my $foo = 'a'; my $bar = 'a'; say min(+$foo, +$bar); 13:40
camelia rakudo-moar c2a57e: OUTPUT«Inf␤»
AlexDaniel why Inf?
arnsholt m: say +"a" 13:41
camelia rakudo-moar c2a57e: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏a' (indicated by ⏏)␤ in block <unit> at /tmp/o8dIqJU3sY:1␤␤»
geekosaur that seems like it should report the conversion errors, at the very least
arnsholt Yeah, that's odd
m: my $a = 'a'; say +$a; # What about this? 13:42
camelia rakudo-moar c2a57e: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏a' (indicated by ⏏)␤ in block <unit> at /tmp/Xf7CaqKsIj:1␤␤»
AlexDaniel m: say min(+'a', +'a');
camelia rakudo-moar c2a57e: OUTPUT«Inf␤»
AlexDaniel how short
:)
geekosaur yug
AlexDaniel ok, gonna report that as well
arnsholt sub foo($x) { say $x }; foo(+'a'); # ? 13:43
m: sub foo($x) { say $x }; foo(+'a'); # ?
camelia rakudo-moar c2a57e: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏a' (indicated by ⏏)␤ in block <unit> at /tmp/H8jBr_LI7i:1␤␤»
AlexDaniel done 13:52
AlexDaniel m: say +"\b"; 13:55
camelia rakudo-moar c2a57e: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏' (indicated by ⏏)␤ in block <unit> at /tmp/9Ce8_YOvw3:1␤␤»
smls_ m: Supply.interval(1).tap({ say $_ }); sleep 3 13:56
camelia rakudo-moar c2a57e: OUTPUT«0␤1␤2␤3␤»
smls_ ^^ jnthn: This produces no output for me either, locally
AlexDaniel that's kinda funny, on some terminals it removes ⏏ character 13:57
so you see in '' (indicated by ⏏), yeah, indicated by, but you can't see it :) 13:58
and I'm thinking, is it a bug? 14:00
moritz if the terminal eats it, it's a bug in the terminal
AlexDaniel what do you mean by "eats it" 14:01
interprets it?
moritz removes it
AlexDaniel why?
moritz doesn't show it
because it's supposed to show it :-)
AlexDaniel moritz: well, if you were a terminal, how would you print \b?
moritz AlexDaniel: what's ⏏ got to do with \b ? 14:02
AlexDaniel well, \b is a backspace if I get it right, so it moves back by one character
moritz oh, now I understand 14:03
AlexDaniel then prints more stuff on top of what existed
moritz you mean that rakudo should escape the \b in the error message?
AlexDaniel I feel like perl6 should actually print '\b'
yeah
moritz yes, that's reasonable
AlexDaniel okay, gonna report that
let's see what else can I find today :D 14:04
masak afternoon, #perl6 14:25
PerlJam masak: good morning from Texas :) 14:27
timotimo i've just learnt there will be gulasch every day at the GPN 14:29
nwc10 timotimo: that presumably is a good thing. As it justifies the G 14:30
timotimo definitely
during the last years there was only gulasch on a single day 14:31
masak what a planning mishap 14:32
PerlJam Isn't "nacht" singular? Seems like they only promised one "day" 14:35
timotimo haha 14:42
well, the initial gpn was just a single night
it also didn't have ~500 attendees
zostay m: class { method postcircumfix:<( )>($test) { } }.^can('postcircumfix:<( )>').perl.say; 14:56
camelia rakudo-moar c2a57e: OUTPUT«(method postcircumfix:<( )> (<anon> $: Any $test, *%_) { #`(Method|55958080) ... },)␤»
zostay m: class { method postcircumfix:<( )>($test) { } }.^can('postcircumfix:<()>').perl.say;
camelia rakudo-moar c2a57e: OUTPUT«()␤»
zostay m: class { method postcircumfix:<()>($test) { } }.^can('postcircumfix:<()>').perl.say;
camelia rakudo-moar c2a57e: OUTPUT«(method postcircumfix:<()> (<anon> $: Any $test, *%_) { #`(Method|56497088) ... },)␤»
zostay m: class { method postcircumfix:<()>($test) { } }.^can('postcircumfix:<( )>').perl.say;
camelia rakudo-moar c2a57e: OUTPUT«()␤»
zostay that feels like a bug to me
Ven m: say <()>.perl; say <( )>.perl; # zostay 14:57
camelia rakudo-moar c2a57e: OUTPUT«"()"␤("(", ")")␤»
zostay m: class { method postcircumfix:<( )>($test) { } }.^can('postcircumfix:<( )>').perl.say; 14:59
camelia rakudo-moar c2a57e: OUTPUT«(method postcircumfix:<( )> (<anon> $: Any $test, *%_) { #`(Method|47934080) ... },)␤»
ugexe anyone know if a pure p6 gzip/deflate would likely be too slow to be useful for a useragent?
zostay i see
nm
smls Also, I think classes are supposed to implement method CALL-ME instead of implementing method postcircumfix:<( )> directy.
masak zostay: probably there should at least be a warning at parse time for creating a method postcircumfix:<()> 15:00
warning or even error
smls m: sub postcircumfix:<()> { } 15:01
camelia rakudo-moar c2a57e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/6aye1DAq2o␤Not enough symbols provided for categorical of type postcircumfix; needs 2␤at /tmp/6aye1DAq2o:1␤------> 3sub postcircumfix:<()>7⏏5 { }␤»
zostay why is CALL-ME preferred?
Ven zostay: because operators are defined as subs, usually 15:02
(the reasoning is that we can statically dispatch those. it has drawbacks, though)
smls I guess because there are other ways to invoke something than literally writing () parens after it
and CALL-ME would make them work for your class like it does for buil-in callables 15:04
zostay that makes sense, documentation for CALL-ME, AT-POS, ASSIGN-KEY, etc. is conspicuously absent from docs.perl6.org and design.perl6.org
smls yeah 15:05
zostay the old lowercase versions on S99, i think
smls I kind of figured out how to use the ones for postcircumfix:<{ }> by looking at the Rakudo source code 15:06
github.com/smls/undef/blob/master/...ivehash.p6 <-- used them here
haven't played with the ones for [ ] and ( ) yet.
zostay yeah, most of what i've learned of perl6 has come from reading rakudo source... the docs are still too lean to depend on 15:07
or reading roast tests
which are sort of part of the docs 15:08
ugexe i really like how the design docs link to approriate roast files 15:23
moritz m: for <a b c>.kv -> $k, $v { say "$k: $v" } 15:24
camelia rakudo-moar c2a57e: OUTPUT«0: a␤1: b␤2: c␤»
ugexe i also like golang's online docs where, method name headers for example, link to the source 15:25
masak I must say I found github.com/github/linguist/issues/2149 an interesting read 15:28
especially the p5ers who go "but p5 is so much more common, y u do this?"
masak (which is true, but not really adressing the actual problem of distinguishing well between Perl 5 and Perl 6 code.) 15:29
dalek c: 73e57a9 | moritz++ | lib/ (2 files):
Describe postcircumfix:<[ ]> in much greater detail
AlexDaniel m: my $x = "abc"; given $x { when 5 { say 'a' }; when "abc" { say 'b' }; when Bool { say 'c' }; } 15:31
camelia rakudo-moar c2a57e: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏abc' (indicated by ⏏)␤ in block <unit> at /tmp/8oO28ZVK1r:1␤␤»
AlexDaniel what's wrong here? Is it a bug or I am doing it wrong?
dalek pan style="color: #395be5">perl6-examples: 49eeb3a | andreoss++ | lib/Pod/Htmlify.pm6:
Explicit alphanumeric sorting of files and categories
AlexDaniel because I took that example from en.wikibooks.org/wiki/Perl_6_Progr...n_.2F_When
AlexDaniel if it is supposed to throw an error then somebody has to fix that example, I guess? 15:31
moritz AlexDaniel: you're checking 'abc' and 5 for numeric equality, which tries to coerce 'abc' to a number, which fails 15:32
yes
should be when '5' I guess
ugexe alternatively you can do an additional check 15:34
m: my $x = "abc"; given $x { when Int { when 5 { say 'a' }; }; when "abc" { say 'b' }; when Bool { say 'c' }; }
camelia rakudo-moar c2a57e: OUTPUT«b␤»
masak _sri++ for contributing that github issues link, and for contributing to the general p5er dissatisfaction that "Perl 6 ruins Perl 5 stats" 15:35
I understand that a Bayesian filter might have a hard time distinguishing the two, but it doesn't sound like an unsolvable problem to me. just a generally interesting one. 15:36
andreoss m: my $x = 1; say $x.^methods.sort; 15:37
camelia rakudo-moar c2a57e: OUTPUT«Code object coerced to string (please use .gist or .perl to do that) in any p6sort at src/vm/moar/Perl6/Ops.nqp:349␤Code object coerced to string (please use .gist or .perl to do that) in any p6sort at src/vm/moar/Perl6/Ops.nqp:349␤Code object coerce…»
AlexDaniel ugexe: I edited it using your solution 15:38
andreoss it segfaults
grondilu m: say (^1000).pick.polymod(2 xx *);
camelia rakudo-moar c2a57e: OUTPUT«0 1 0 1 0 0 0 1 0 1␤»
grondilu m: say .polymod(2 xx *) for ^100; 15:39
camelia rakudo-moar c2a57e: OUTPUT«␤1␤0 1␤1 1␤0 0 1␤1 0 1␤0 1 1␤1 1 1␤0 0 0 1␤1 0 0 1␤0 1 0 1␤1 1 0 1␤0 0 1 1␤1 0 1 1␤0 1 1 1␤1 1 1 1␤0 0 0 0 1␤1 0 0 0 1␤0 1 0 0 1␤1 1 0 0 1␤0 0 1 0 1␤1 0 1 0 1␤0 1 1 0 1␤1 1 1 0 1␤0 0 0 1 1␤1 0 0 1 1␤0 1 0…»
grondilu I have much weirder locally
grondilu gist.github.com/grondilu/d33f57b8820cc5fd4562 15:41
andreoss m: my @x = Method.new for 1..3; say @x.perl; 15:43
camelia rakudo-moar c2a57e: OUTPUT«(signal SEGV)»
andreoss m: my $x = Method.new; say $x.perl;
camelia rakudo-moar c2a57e: OUTPUT«(signal SEGV)»
ugexe i ran that locally and do not get the same result as your gist either
andreoss m: Method.new.perl.say
camelia rakudo-moar c2a57e: OUTPUT«(signal SEGV)»
andreoss m: Method.new 15:44
camelia ( no output )
AlexDaniel m: say ^10; say 0..10 15:54
camelia rakudo-moar c2a57e: OUTPUT«0..^10␤0..10␤»
AlexDaniel what's the difference?
PerlJam m: .say for 0..^10; 15:55
camelia rakudo-moar c2a57e: OUTPUT«0␤1␤2␤3␤4␤5␤6␤7␤8␤9␤»
PerlJam m: .say for 0..10;
camelia rakudo-moar c2a57e: OUTPUT«0␤1␤2␤3␤4␤5␤6␤7␤8␤9␤10␤»
AlexDaniel oh
right 15:56
ok
AlexDaniel yay, smileys 15:58
m: .say for (6^..^9)
camelia rakudo-moar c2a57e: OUTPUT«7␤8␤»
AlexDaniel what about ranges that are in the backward order? like 16:00
m: .say for 10..1
camelia ( no output )
AlexDaniel not even a warning
hm, that's probably OK 16:01
m: .say for Inf..1
camelia rakudo-moar c2a57e: OUTPUT«(signal XFSZ)-9223372036854775808␤-9223372036854775808␤-9223372036854775808␤-9223372036854775808␤-9223372036854775808␤-9223372036854775808␤-9223372036854775808␤-9223372036854775808␤-9223372036854775808␤-9223372036854775808␤-922337203685…»
AlexDaniel what is this? 16:02
timotimo range is strictly a minimum and maximum thing
AlexDaniel okay, why does it hang on Inf..1 ? 16:02
timotimo sequence still exists for backwards and more complex things 16:03
andreoss m: say Inf after (Inf-1)
camelia rakudo-moar c2a57e: OUTPUT«False␤»
andreoss m: say (Inf - 1).succ 16:04
camelia rakudo-moar c2a57e: OUTPUT«Inf␤»
timotimo it seems it uses the smallest integer it can find as the start point
AlexDaniel timotimo: bug?
timotimo dunno
AlexDaniel this one is also interesting: .say for -Inf..1
it prints Inf a couple of times and then starts printing -9223372036854775808
timotimo ranges starting at negative inf are mostly useful for matching I imagine
andreoss shouldn't it go like Inf, Inf - 1 , Inf -2 ... 1? 16:05
AlexDaniel andreoss: well, if 5..1 does not go 5 4 3 2 1 then no, it shouldn't
timotimo oh wait
I misread your first code
andreoss m: .say for 5...1
camelia rakudo-moar c2a57e: OUTPUT«5␤4␤3␤2␤1␤»
andreoss m: .say for Inf...1
AlexDaniel it works fine with three dots 16:06
camelia rakudo-moar c2a57e: OUTPUT«(timeout)Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤Inf␤I…»
timotimo ... is smart
it uses succ in this case 16:07
i wonder what exactly .. did
AlexDaniel frankly speaking I don't know the difference, I'm just poking rakudo with a knife and look what happens 16:08
andreoss m: .say for -5..1
camelia rakudo-moar c2a57e: OUTPUT«-5␤-4␤-3␤-2␤-1␤0␤1␤»
AlexDaniel timotimo: -Inf..1 is even more interesting
does not make any sense at all to me 16:09
why would -Inf become -9223372036854775808 at some point...
NaN..1 works exactly the same way
whatever this is, I'm going to report it, it does not feel right 16:11
it prints -9223372036854775808 exactly 1024 times :) 16:15
andreoss m: use nqp; say nqp::p6box_n(Inf)
camelia rakudo-moar c2a57e: OUTPUT«Inf␤»
smls m: say ((1, 2), (3, 4))>>.join.perl 16:16
camelia rakudo-moar c2a57e: OUTPUT«("1", "2", "3", "4")␤»
smls ^^ Are hypers *supposed* to flatten?
ugexe m: say Parcel.new.max 16:17
camelia rakudo-moar c2a57e: OUTPUT«-Inf␤»
AlexDaniel Hahahaha! 16:18
This one actually counts up! .say for NaN..NaN 16:19
m: .say for NaN..NaN
camelia rakudo-moar c2a57e: OUTPUT«(signal XFSZ)NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN…»
colomon smls: hypers are supposed to keep the same structure as the original
AlexDaniel ah no, first it prints 1024 NaNs
andreoss m: use nqp; say nqp::sub_n(Inf, 1e0); 16:20
camelia rakudo-moar c2a57e: OUTPUT«Inf␤»
colomon m: say ((1, 2), (3, 4))>>++
camelia rakudo-moar c2a57e: OUTPUT«Cannot assign to an immutable value␤ in block <unit> at /tmp/GXPlY9dxkQ:1␤␤»
colomon m: say ((1, 2), (3, 4))>>.succ
camelia rakudo-moar c2a57e: OUTPUT«2 3 4 5␤»
colomon m: say ((1, 2), (3, 4))>>.succ.perl
camelia rakudo-moar c2a57e: OUTPUT«(2, 3, 4, 5)␤»
andreoss AlexDaniel: you might want to look at Range.pm 16:27
Ven AlexDaniel: Batman! 16:27
m: say NaN..NaN ~ ' batman`
camelia rakudo-moar c2a57e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/voXocMsJon␤Unable to parse expression in single quotes; couldn't find final "'" ␤at /tmp/voXocMsJon:1␤------> 3say NaN..NaN ~ ' batman`7⏏5<EOL>␤ expecting any of:␤ single quotes␤ …»
AlexDaniel Ven: not batman, just -9223372036854775808
Ven m: say NaN..NaN ~ ' batman'
camelia rakudo-moar c2a57e: OUTPUT«Earlier failures:␤ Cannot convert string to number: trailing characters after number in 'NaN⏏ batman' (indicated by ⏏)␤ in block <unit> at /tmp/PiNKtOIfwo:1␤␤Final error:␤ Cannot call Real(Failure: ); none of these signatures match:␤ (M…»
andreoss i did, and it seems to try using int if possible when reifies 16:28
AlexDaniel andreoss: well, somehow I don't think that I am ready for this 16:30
andreoss me neither
but -9223372036854775808 comes from coercing to native integer for sure 16:33
AlexDaniel umm
m: .say for Inf..0
.say for Inf..0.1
m: .say for Inf..0.1 16:34
camelia rakudo-moar c2a57e: OUTPUT«(signal XFSZ)-9223372036854775808␤-9223372036854775808␤-9223372036854775808␤-9223372036854775808␤-9223372036854775808␤-9223372036854775808␤-9223372036854775808␤-9223372036854775808␤-9223372036854775808␤-9223372036854775808␤-922337203685…»
rakudo-moar c2a57e: OUTPUT«(signal XFSZ)-9223372036854775808␤-9223372036854775807␤-9223372036854775806␤-9223372036854775805␤-9223372036854775804␤-9223372036854775803␤-9223372036854775802␤-9223372036854775801␤-9223372036854775800␤-9223372036854775799␤-922337203685…»
andreoss m: my int $x = 2 ** 63; say $x;
camelia rakudo-moar c2a57e: OUTPUT«-9223372036854775808␤»
AlexDaniel m: .say for 1...NaN; 16:43
camelia rakudo-moar c2a57e: OUTPUT«(timeout)1␤0␤-1␤-2␤-3␤-4␤-5␤-6␤-7␤-8␤-9␤-10␤-11␤-12␤-13␤-14␤-15␤-16␤-17␤-18␤-19␤-20␤-21␤-22␤-23␤-24␤-25␤-26␤-27␤-28␤-29␤-30␤-31␤-32␤-33␤-34␤-35␤-36␤-37␤-38␤-39␤-40␤-41␤-4…»
AlexDaniel why?
tony-o_ m: .say for NaN...1; 16:44
AlexDaniel Nanananananana
camelia rakudo-moar c2a57e: OUTPUT«(timeout)NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤N…»
tony-o_ m: say 'batman' 16:45
camelia rakudo-moar c2a57e: OUTPUT«batman␤»
tony-o_ perl6 bot game is tight
AlexDaniel tony-o_: what kinda bothers me is that it is not an infinite list
so if you attempt to do something like my @a = NaN...1; 16:46
it will just get stuck on it eating your memory
tony-o_ isn't that a lazy list?
AlexDaniel I mean, yes, it should be lazy 16:46
but it isn't
m: my @a = NaN...1;
tony-o_ oh, it's not 16:47
AlexDaniel my @a = 1...NaN;
m: my @a = 1...NaN;
camelia rakudo-moar c2a57e: OUTPUT«(timeout)»
HuStmpHrrr hi guys, any recent benchmark on rakudo? 16:50
AlexDaniel HuStmpHrrr: you mean that perlbench thing? 16:51
HuStmpHrrr i mean the performance report type of thing on current rakudo implementation 16:52
[Coke] say uses .gist which doesn't print out infinite lists. 16:53
you'll get only the gist of it, not the whole thing.
m: say (Inf...1)[20000] 16:54
camelia rakudo-moar c2a57e: OUTPUT«Inf␤»
[Coke] m: say (Inf...1)[Inf]
camelia rakudo-moar c2a57e: OUTPUT«Cannot coerce Inf or NaN to an Int␤ in block <unit> at /tmp/96GKDBZIjW:1␤␤»
AlexDaniel [Coke]: how is this relevant? The problem is that NaN...1 is not a lazy list 16:55
oh wow, an error
Inf...1 is not lazy as well 16:58
[Coke] Someone was complaining that they only got X elements from the list. 17:10
m: my $a = NaN...1; 17:11
camelia rakudo-moar c2a57e: OUTPUT«(timeout)»
[Coke] m: my $a := NaN...1; 17:12
camelia rakudo-moar c2a57e: OUTPUT«(timeout)»
[Coke] Yup, those should die asap, IMO.
PerlJam die? Or produce an infinite list of NaN? 17:15
liztormato waves from 38000 feet
PerlJam waves back from approximately 20 feet 17:17
geekosaur arguably NaN should not participate in ranges
PerlJam those are sequences, not ranges
AlexDaniel geekosaur: what about Inf...1 ?
geekosaur was trying to compose a "that's a harder question" 17:17
Ven liztormato: that's pretty high :) 17:18
geekosaur I think Inf has to not be part of a range or sequence as well, since there isn't really a meaningful *range*
Ven m: class Feet{has $.val}; say (^10000).map(Feet.new(val => *)).map(&say)
camelia rakudo-moar c2a57e: OUTPUT«Method 'count' not found for invocant of class 'Feet'␤ in block <unit> at /tmp/SxGh2KwUf5:1␤␤»
Ven ( guess it should be Foot. 17:19
liztormato Ven: courtesy of Delta
liztormato Only 1:15 hour to go and I'm bored :-) 17:21
timotimo super expensive and slow WiFi?
liztormato 4$ per hour 17:22
liztormato Figured I'd be online for the last hour 17:23
AlexDaniel OH COME ON 17:26
m: my @a = 1...Inf
camelia ( no output )
AlexDaniel cool, rightL
?
m: my @a = 1...-Inf 17:27
AlexDaniel boom. 17:27
camelia rakudo-moar c2a57e: OUTPUT«(timeout)»
PerlJam AlexDaniel: I don't see how that differs substantially from Inf...1
I mean if one behaves badly, I'd expect the other to do so as well. 17:28
liztormato m: my @a := -Inf ... 1
Hmmmmm...
camelia rakudo-moar c2a57e: OUTPUT«(timeout)»
AlexDaniel liztormato: rt.perl.org/Public/Bug/Display.html?id=125337 17:29
liztormato: there is a small list of non-lazy stuff 17:30
PerlJam AlexDaniel: liz did binding though, not assignment. Do you mean she should add to the ticket?
AlexDaniel PerlJam: actually, I've not noticed it 17:31
and felt like "oh, I already tested that"
sorry
PerlJam (I'mguessing that the GLR will take care of that particular wart though)
liztormato Yeah, please add to the ticket
AlexDaniel ok
liztormato Thanks! 17:32
liztormato moritz: will lazy was removed before 2015.05 came out 17:35
liztormato Seems like the satellite is wonky 17:46
PerlJam liztormato: how can you be bored with the excitement of potential network difficulty at any second? :) 17:47
liztormato :-). Yeah. DevOps heaven here ;-) 17:47
hoelzro does panda cause a segfault on Windows when installing one of its own dependencies (ex. panda install JSON::Tiny)? 18:31
I fixed that for *nix last night, but I'm not sure how one would approach a fix for Windows, if it's broken at all
jnthn hoelzro: Didn't last I tried it, but that was some days ago 18:32
hoelzro jnthn: it's been doing it on Linux for about a week, I think
according to others I've asked, anyway =)
my Win32 fu is very weak
interestingly enough, libuv allows other processes to delete files that uv_fs_open opens 18:34
but I don't know if the reference counting POSIX semantics happen in this case on Win32
dalek p: 6da0dea | jnthn++ | tools/build/MOAR_REVISION:
Bump MOAR_REVISION for event loop fixes.
18:36
liztormato waves from SLC 18:36
dalek kudo/nom: 129a909 | jnthn++ | tools/build/NQP_REVISION:
Get MoarVM with eventloop, normalization fixes.
18:37
kudo/nom: 97b27a5 | jnthn++ | t/spectest.data:
Run S15-nfg/many-combiners.t.
skids I never got a segv with panda yesterday. It is, however, currently doing something that results in a "cannot invoke null object" when it tries to strip pod out of Sum.
hoelzro skids: I see the same issue with Linenoise 18:39
cognominal skiids: got the same message when trying to install Linenoise
hoelzro that's been happening over the last few days
jnthn hoelzro: Panda passes tests and installs for me (on Win) 18:40
hoelzro jnthn: that should work fine; try "panda install JSON::Tiny" with a freshly bootstrapped panda
that triggered the segfault for me
or sometimes it was a bytecode decoding freak out 18:41
skids I got the bytecode thing yesterday while trying to run doc/htmify.pm on Linux. 18:42
hoelzro that's odd 18:43
then again, I don't fully understand how this just started happening recently
jnthn hoelzro: No SEGV but I see things like this: 18:45
WARNING: unhandled Failure detected in DESTROY:
Failed to copy 'C:\consulting\perl6\panda\.panda-work\1433529896_2\blib\lib\Panda\Ecosystem.pm.moarvm' to 'C:\consulting\MoarVM\install/share/perl6/site/lib\Panda\Ecosystem.pm.moarvm': Failed to copy file: unknown error
hoelzro eesh
jnthn When I install JSON::Tiny it then does something involving reverse deps? 18:46
And so goes re-installing Panda itself
hoelzro yeah, that's the part that would break for me
jnthn We mmap the bytecode file
hoelzro right, that's why it was segfaulting on *nix 18:47
jnthn I *think* you can't go overwriting a file you're currently got mmap'd on Windows.
How did you fix it on *nix?
skids Yeah same problem with a build made just before those last two commits -- same bytecode problem as gist.github.com/skids/7ba5cc3b031e69abcf83 ?
hoelzro the MapFileView docs say the behavior is undefined =(
jnthn: unlink before the copy
jnthn Don't think that's going to work out on Windows... 18:48
hoelzro open files are sort of reference counted on *nix, so you can delete a mmap'd file
no, I don't think so =(
I've been thinking about it all morning
while eating lunch, I was thinking of instead creating entirely new files in the comp unit repo, and atomically updating the database to point to the new versions 18:49
but that would then require some clean up of old files later =(
hoelzro .oO( are we still using a JSONy database to resolve unit locations? )
jnthn No, we us the serialization stuff for it now
At least, I'm pretty sure that landed 18:50
hoelzro oh, ok
jnthn: but it's still some sort of DB, right?
jnthn Right 18:51
hoelzro ok, so we could go with that approach
hoelzro this article is interesting: www.catch22.net/tuts/self-deleting-executables 18:53
FROGGS o/ 19:03
hoelzro o/ FROGGS 19:05
FROGGS hi hoelzro :o)
[Coke] so, when installing nqp (moarvm) or nqp-jvm, we end up with no nqp, but an nqp-m or nqp-j - any suggestions on how to decide what ends up getting the coveted "nqp" executable, or if we should encourage using the vm specific name? 19:07
also, you can't tell macports to depend on particular versions of other macports. might end up with some upgrade pain there at some point. 19:11
jnthn [Coke]: Not sure this helps with macports much, but iirc the approach source builds take is that the one you mention first in the backends list is the one that gets the short alias 19:14
[Coke] the wierd thing is that that file doesn't seem to get installed. 19:15
*weird*
the config is specified by me in the portfile. pretty sure the defaults for building are "make" and "make install" 19:16
it's not even in /opt/local/bin/nqp without exec bits, just not there.
[Coke] I would be mostly ok with "last installed wins" 19:17
(and with ports, if you want both, you install them both. there isn't a nqp-moar&jvm port)
FROGGS hmmmm, my first thought was that the nqp-* binaries suffice 19:23
geekosaur the macports method is that you have a port foo_select which installs a template selection configuration; each port that can apply to that selection installs a selection data file, and then port select is used to select which selection configuration is used
[Coke] ah. 19:24
I can probably make that work. 19:25
geekosaur so for example nqp_select defines the nqp select group; nqp-jvm installs nqp-j and an nqp select data file pointing nqp to nqp-j; user uses port select to specify which if any of those gets to be nqp
geekosaur see for example what the db* ports do (e.g. db46, db48; db_select) 19:26
FROGGS $ perl6 -Ilib -e 'use IO::Pipe; my $p = pipe("wc", :in, :out); $p.in.say: "hello world\nabc"; say $p.in.close; say $p.out.slurp-rest' 20:01
Proc::Status.new(exitcode => 0, pid => Any, signal => 0) 20:02
2 3 16
what'ya think, api wise?
I think I like it
jnthn Is there a .err too?
FROGGS but I'm prejudiced
FROGGS jnthn: there is 20:02
jnthn Is there a :err-out to make :err and :out be bound to the same thing? :) 20:03
FROGGS $ perl6 -Ilib -e 'use IO::Pipe; my $p = pipe("dang", :in, :out, :err); $p.in.say: "hello world\nabc"; say $p.in.close; say $p.out.slurp-rest; say $p.err.slurp-rest' 20:04
Proc::Status.new(exitcode => 127, pid => Any, signal => 0)
/bin/sh: 1: dang: not found
FROGGS jnthn: no, since I dunno how to do that with libuv 20:04
hmmm, there seems to be a race condition...
the last thing I posted sometimes print nothing
hoelzro I would prefer the module to not be called IO::Pipe, or the sub not to be called pipe 20:05
at first glance, I would expect the module just to deal in pipes, not necessarily in spawning processes 20:06
</2c>
FROGGS umm, wat? 20:07
that's the code btw: gist.github.com/FROGGS/257e55328027c3be0652
hoelzro: IO::Pipe wont be a module, but the class that pipe() returns
hoelzro but is that object really a pipe? it's more like a subprocess that has pipes attached to it, isn't it? 20:08
maybe I'm being overly pedantic
FROGGS yes, you are right
but pipe is such a nice four letter word :S
hoelzro proc is a nice four letter word too! 20:09
but that might confuse Rubyists?
ugh
naming things is hard 20:10
FROGGS yes, but proc does not tell that you can read from it or write to it
hoelzro true
well, other than the naming, I like the interface
FROGGS so it should line in with open(), shell() and run()
\o/
hoelzro run-pipe?
FROGGS too long 20:11
hoelzro there's no select() interface for reading from both out and err yet, is there?
FROGGS I don't know what you mean tbh
hoelzro FROGGS: wrt. select()? 20:12
FROGGS aye
hoelzro it's important to be able to check both out and err for activity, or at least poll them individually
otherwise, you could create a run-pipe (for lack of a better name) construction that deadlocks 20:13
FROGGS btw, the current pipe() code could replace run() and shell() maybe..., in a way that when pipe() inherits the filehandles it acts like run/shell anyway
hoelzro true
that's nice
FROGGS hoelzro: why should it deadlock?
hoelzro I like having a flexible process execution mechanism =)
FROGGS can you try to make that happen?
hoelzro yeah 20:14
hang on
FROGGS you need the openpipe3 branches though
hoelzro ok
FROGGS and... I'm tired ó.ò
hoelzro is Configure.pl in openpipe3 smart enough to build a MoarVM/NQP with openpipe3? 20:15
FROGGS hoelzro: no
hoelzro =(
don't stay up on my account; I can create a deadlocking example and you'll see it tomorrow
jnthn You can --gen-nqp=openpipe3 --gen-moar=openpipe3 iirc
hoelzro I'll try that 20:16
FROGGS ahh, that's true 20:17
gnight 20:18
jnthn 'night, FROGGS++
hoelzro night FROGGS 20:20
hoelzro ok, I did not get it to segfault 20:27
er, deadlock
and that's because I forgot libuv schedules work to be done rather than doing it right away!
the idea was that if the parent is blocking on $p.out, and the child writes enough to $*ERR to fill the pipe, that should cause a deadlock. 20:28
jnthn The may progress report I didn't get to: 6guts.wordpress.com/2015/06/05/tha...-and-more/ 20:35
*May
[Coke] m: my @a; say length @a; 20:44
camelia rakudo-moar c2a57e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/GJbh7pTMw2␤Undeclared routine:␤ length used at line 1. Did you mean 'elems', 'chars', 'graphs', 'codes'?␤␤»
[Coke] ^^ graphs is gone, yes?
jnthn [Coke]: yes 20:48
[Coke] m: say "stuff".codes; 20:52
camelia rakudo-moar c2a57e: OUTPUT«5␤»
[Coke] fixing... 20:53
[Coke] Looks like no tests depend on that particular wording. 20:55
[Coke] ok. I changed src/core/Exception. rebuilt. it's still giving the same old error message. 21:04
jnthn Odd 21:05
Time for sleep here...'night 21:06
[Coke] mmm. that text doesn't appear anywhere in src now.
AlexDaniel m: take 'foo' 22:04
camelia rakudo-moar c2a57e: OUTPUT«take without gather␤␤»
AlexDaniel "take without gather"? And that's it?
no line number, no nothing?
lizmat even with --ll-exception, the trace is weird :-) 22:12
yoleaux 4 Jun 2015 23:01Z <Mouq> lizmat: So is #125312 (start 41 + 2) closable?
synbot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=125312
yoleaux 08:42Z <jnthn> lizmat: I get a failure on Windows in 55-use-trace.t; I thought it may just be line endings, but it looks like some weird path mangling issue... gist.github.com/jnthn/2b4565199f93e5f52cdd
lizmat .tell Mouq #125312 can be closed 22:13
synbot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=125312
yoleaux lizmat: I'll pass your message to Mouq.
AlexDaniel lizmat: yea I created an issue already
lizmat AlexDaniel: I just saw it come in 22:14
AlexDaniel m: my @a = gather { take; }; say @a[0]; 22:15
camelia rakudo-moar c2a57e: OUTPUT«(Any)␤»
AlexDaniel Any? Interesting 22:16
(Mu) on my machine
AlexDaniel what's the point of take; without arguments anyway? 22:17
lizmat m: take 42'
camelia rakudo-moar c2a57e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/2bY5urW2G3␤Two terms in a row␤at /tmp/2bY5urW2G3:1␤------> 3take 427⏏5'␤ expecting any of:␤ infix␤ infix stopper␤ postfix␤ statement end␤ statement …»
lizmat m: take 42
camelia rakudo-moar c2a57e: OUTPUT«take without gather␤␤»
AlexDaniel maybe it should produce an error when your run take; without args? 22:18
spintronic m: await do for 1 .. 100 { start { rand.sleep }} 22:19
camelia rakudo-moar c2a57e: OUTPUT«Memory allocation failed; could not allocate 656 bytes␤»
spintronic m: for 1 .. 100 { start { rand.sleep } } 22:20
camelia rakudo-moar c2a57e: OUTPUT«Memory allocation failed; could not allocate 656 bytes␤»
spintronic m: for 1 .. 100 { rand.sleep }
camelia rakudo-moar c2a57e: OUTPUT«(timeout)»
spintronic m: await do for 1 .. 4 { start { rand.sleep }} 22:21
camelia rakudo-moar c2a57e: OUTPUT«Saw 1 occurrence of deprecated code.␤================================================================================␤Method sleep (from Real) seen at:␤ /tmp/MUJhF1K9iT, line 1␤Deprecated since v2015.2, will be removed with release v2015.9!␤Plea…»
spintronic what are the maximum number of threads that can be started under Moar? 22:22
AlexDaniel and I'm actually thinking about all of the other functions out there, why do we allow to run them without any args? 22:24
m: say min;
camelia rakudo-moar c2a57e: OUTPUT«Inf␤»
AlexDaniel great, Inf
and if you wonder what max would return 22:25
m: say max;
camelia rakudo-moar c2a57e: OUTPUT«-Inf␤»
AlexDaniel sure it makes sense internally, but why should it throw all of this internall stuff right into my face? :) 22:26
dalek kudo/nom: 3b5c4a8 | lizmat++ | src/core/control.pm:
Die on bare take/take-rw, AlexDaniel++
22:28
AlexDaniel lizmat: that was quick 22:29
lizmat it was easy :-)
AlexDaniel lizmat: what about this min/max thing? 22:30
lizmat that is a bit trickier, by the looks of it 22:31
AlexDaniel m: my $x = min; #`{ some code here, but then we start calculating $x value } $x = min($x, 5); $x = min($x, 8); say $x 22:32
camelia rakudo-moar c2a57e: OUTPUT«5␤»
AlexDaniel so if you plan to have some variable that will be the min value of something, then you can set it to min() without thinking at all 22:33
lizmat m: multi a(*@a) { }; multi a(*@a,:$by!) { }; a 22:34
camelia rakudo-moar c2a57e: OUTPUT«Ambiguous call to 'a'; these signatures all match:␤:(*@a)␤:(*@a, Any :by($by)!)␤ in block <unit> at /tmp/zMH8POVKA0:1␤␤»
AlexDaniel but somehow I don't think that this kind of hacky bug-riding will be popular
lizmat that's what's stopping us to use a true MMD for min/max
lizmat I feel that this is a bug, but I have been wrong about MMD before, so I would like to hear what jnthn thinks about it first 22:36
AlexDaniel: I cannot just die on no params, as that is used internally
AlexDaniel I'll just submit a bug report then 22:37
otherwise we will just forget, I think
m: say 1/-Inf;
camelia rakudo-moar c2a57e: OUTPUT«-0␤»
AlexDaniel oh, that negative zero thing is not fixed? 22:38
lizmat shouldn't that be NaN ? 22:39
AlexDaniel why?
mathematically it is 0
lizmat m: say 1/0 22:40
camelia rakudo-moar c2a57e: OUTPUT«Divide by zero␤ in block <unit> at /tmp/Zjs8vNyV_4:1␤␤»
lizmat AlexDaniel: don't think so 22:41
I mean, if 1/Inf == 0
then 2/Inf would also == 0
then Inf/Inf would also be 0
AlexDaniel no, Inf/Inf is not defined 22:42
lizmat but N/N is defined as 1
AlexDaniel lizmat: that thing en.wikipedia.org/wiki/Indeterminate_form 22:44
surprisingly 0/0 is an error and not NaN 22:45
m: say 0**0 22:46
camelia rakudo-moar c2a57e: OUTPUT«1␤»
AlexDaniel but should be NaN as well, huh
AlexDaniel or should it 22:47
I'm confused now
jercos 0/0 should obviously return a Whatever :p 22:51
timotimo AlexDaniel: i think it's very good that min() and max() return their neutral element 22:52
jercos while other cases of x/0 being an Inf with the same sign as x is quite reasonable for most cases imo >.>
lizmat has had a long day already, so is not thinking too clearly perhaps
jercos Of course, if you ask your friendly local JavaScript implementation what 1/-0 and 1/0 are... the answers are different :)
(But no, 0/0 should totally be NaN in any case) 22:54
AlexDaniel timotimo: how is that useful?
AlexDaniel and why? 22:55
timotimo it gives you a sensible value that you can combine with other calls to min() 22:56
also, we have metaops that rely on operators telling their neutral element
m: say &infix:<+>()
camelia rakudo-moar c2a57e: OUTPUT«0␤» 22:57
timotimo m: say &infix:<*>()
camelia rakudo-moar c2a57e: OUTPUT«1␤»
timotimo m: say &infix:</>()
camelia rakudo-moar c2a57e: OUTPUT«No zero-arg meaning for infix:</>␤ in block <unit> at /tmp/OPLUvc6jqU:1␤␤»
dalek kudo/nom: 501bad2 | lizmat++ | src/core/Any.pm:
Make bare min/max/minmax fail

Please note that min/max/minmax(my @) still returns Identity
AlexDaniel hm...
lizmat no spectest breakage with this 22:58
timotimo though if you write it "just like that", not so helpful
lizmat please revert if not applicable :-)
running errands&
timotimo i'll build it and check it out 23:02
timotimo hm. that "without parameters doesn't make sense" warning is hard to suppress 23:12
like, it's hard to get the zero-arg meaning without going indirect 23:13
hoelzro m: gist.github.com/hoelzro/01e63a89c104b2b50a7c 23:34
camelia rakudo-moar c2a57e: OUTPUT«gist not found»
hoelzro m: gist.githubusercontent.com/hoelzro...failure.p6
camelia rakudo-moar c2a57e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/POaEorRvIT␤Confused␤at /tmp/POaEorRvIT:1␤------> 3https:7⏏5//gist.githubusercontent.com/hoelzro/01e␤ expecting any of:␤ colon pair␤»
hoelzro hmm
oh, it's trying to parse the URL =P
raydiak that breaks every few months when something changes on github :P 23:35
(also, github seems to find a way to break our entire ecosystem about once every year or two) 23:36
also...3-inch screws do not play well with pneumatic tires 23:41
hoelzro o_O
bad luck?
camelia: help 23:42
camelia hoelzro: Usage: <(std|prof-m|rakudo-moar|star-j|pugs|nqp-js|rakudo-jvm|p5-to-p6|debug-cat|nqp-jvm|nqp-parrot|star-m|nqp-moarvm|niecza|sm|rnP|nqp-q|Prn|r-jvm|star|sj|rn|nqp-j|p56|rakudo|nr|perl6|P|j|m|nqp|nom|Pnr|r-m|nPr|r|n|rPn|nrP|nqp-m|rm|p6|nqp-p|r-j|rj|nqp-mvm)(?^::\s) $perl6_program>
hoelzro camelia: source
raydiak aye...our irclog contains a nearly-complete history of my troubles with this particular vehicle, so I didn't want to leave today's fun out :)
hoelzro raydiak: you know, some people just keep a logbook in the glove compartment =) 23:43
raydiak true true. but it's not intentional...or at least it didn't start out that way, it started with me whining, and somehow feels like I should keep the ball rolling on this epic saga now that I'm aware that I've started it :) 23:45
we all have our little traditions...I guess telling brilliant people across the world when my car breaks has emerged as one of mine 23:47
geekosaur well trained by twitter? >.> 23:53
hoelzro hahah
hoelzro m: sleep 60 23:55
camelia rakudo-moar c2a57e: OUTPUT«(timeout)»
hoelzro camelia doesn't run on hack.p6.org, does she? 23:56
timotimo iirc nine hosts her 23:59
you can whois her to find out for sure