»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by sorear on 4 February 2011.
lue threads as in a computer's, right? (/me only knows them from extensively reading N64 system documentation) 00:01
flussence threads as in "if you segfault here, the rest of it comes crashing down" :) 00:13
lue Ooh, then I guess that was a segfault in the most recent Doctor Who episode... 00:15
sorear good * #perl6 00:18
lue hello sorear o/ 00:19
colomon \o 00:27
sorear: it seems declaring the basic arithmetic operators as multi subs is enough to bring niecza to its knees
sorear I'm not suprised 00:28
sorear so I'm now awake and have no remaining major obligatons today. perl6 time :D 00:30
colomon \o/ 00:30
huh. I tried making just infix:<+> and infix:<*> multi, but it still worked. But if you make all of infix:<->, infix:</>, infix:<%>, and infix:<**> multi too, "mono run/Niecza.exe" just hangs. 00:32
sorear phenny: tell masak to read about --author and --date in git-commit(1) 00:34
phenny sorear: I'll pass that on when masak is around.
colomon It's multi sub infix:</> that's the culprit, it seems 00:39
colomon crap. you get the command line with + - * multi, but t/fudgeandrun t/spec/S03-metaops/reduce.t just hangs. sigh. 00:47
sorear colomon: can you actually do any math that way? 00:54
I'm suprised it works at all
sorear and it'll definitely be very slow - niecza's inlining mechanism doesn't work with multis yet 00:54
colomon ah. 00:55
well, I guess I won't be fixing this bug tonight, then.
the good news: my wife just declared she is too tired to watch the dreary romantic comedy we were just watching, so I'm able to switch to the football game. :) 00:59
lue
.oO(You can't be watching it *that* closely if you have time for #perl6)
01:00
colomon it wasn't the sort of film that required close watching. 01:02
in fact, it was the sort of film that was worse the closer you were paying attention, I think.
sorear heh, the issue was I broke C3 01:28
or did I? 01:29
sorear ...yes, I did. 01:36
disagrees with Perl5's C3 01:37
dalek ecza/serialize: 049b617 | sorear++ | lib/ObjModel.cs:
Fix misreimplementation of C3 MRO
01:43
dalek ecza/serialize: a3850e3 | sorear++ | lib/Cursor.cs:
Reimplement LTM handling for parametric role variables
02:11
sorear \o/ All tests successful.
now for the things that test.pl (deliberately) doesn't test..
colomon sorear: If you're there at the moment, any idea how to get access to msdn.microsoft.com/en-us/library/mi....110).aspx (FileSystem class) from mono? 02:32
I'm trying to get at a mkdir command (like FileSystem.MkDir) 02:33
hmmm, maybe System.IO.Directory.CreateDirectory instead? 02:34
sorear yes, use System.IO.Directory 02:35
sorear wanders back
colomon sorear++ 02:36
dalek ecza: 8b9e1af | (Solomon Foster)++ | lib/ (2 files):
Add simple form of mkdir.
02:44
dalek ast: 02c1b47 | Coke++ | S0 (5 files):
rakudo fudging
04:06
dalek kudo/nom: 1937529 | Coke++ | t/spectest.data:
run fudged tests
04:29
sorear perl6: say 5 || 2 ?? 1 !! 0; 05:51
p6eval pugs b927740, rakudo 193752, niecza v10-60-g8b9e1af: OUTPUT«1␤»
dalek ecza/serialize: d0a95e5 | sorear++ | / (6 files):
Reimplement eval. Currently breaks stash merging when used
06:23
snarkyboojum what's the time line for current master to get back to the kind of regex support that ng enjoyed? 08:05
I ask, because this lack of regex goodness is blocking most of my private projects currently - and nom rocks, so I want to use it ;) 08:07
tadzik we're blocking on pmichaud++ 08:10
Woodi Hi today :) 08:23
again about git/rakudo/nqp... cat rakudo/tools/build/NQP_REVISION -> 2011.09-31-gd2d759f 08:24
cd nqp ; git log | grep gd2d759f -> null
it means: git log do not look enough long in back ? or other branch or something ? 08:25
moritz Woodi: the leading 'g' is not part of the sha1 08:26
Woodi oops :) didn't know that... 08:28
now works :) thanx 08:30
grondilu I wrote four sentences to help remember operator precedence in Perl6 08:32
s0.barwen.ch/~grondilu/methodist.txt 08:34
sirmacik s0.barwen.ch/~grondilu/methodist.txt 08:35
ops, sorry ;x
grondilu (that was weird)
moritz nice :-)
grondilu it almost sound like a poem, doesn't it? :) 08:36
sirmacik grondilu: I'm not used to putty :/
snarkyboojum sirmacik: enjoyable read :D 09:08
"tights" == "tightens"? 09:09
manildomin hi everyone 09:17
tadzik hi manildomin 09:18
manildomin I am reading Using Perl6 but I've got a few issues with the first example
can you give me some help? 09:19
snarkyboojum manildomin: I reckon you should just ask ;) 09:21
manildomin ok, I have tried to run the first example in the book "Using Perl6", which is about parsing a file containing scores of a table tennis tournament 09:22
when I try to run it with "perl6 test.pl", I get:
Use of uninitialized value in numeric contextUse of uninitialized value in numeric context
and the code I strive to run is exactly the same as the code given in the book 09:23
tadzik it appears that the book examples need some review, ney? We should probably turn them into tests or such
manildomin: it may be that the code did not follow the latest compiler changes, sorry for that 09:24
I'll take a look at it now
manildomin ok thanks
I'm using rakudo 2011.09
tadzik manildomin: I just tried it and it works fine for me 09:25
tadzik the code starting with my $file = open 'scores';, right? 09:25
manildomin no, mine start with "use v6;" 09:26
but the next line is the one you put
tadzik yeah, that's fine
use v6 doesn't really matter
manildomin: gist.github.com/1307166
I'm using a bit newer Rakudo, but I don't think that matters. Are you sure you're running the same code with the same data? 09:27
manildomin yes 09:28
I replaced my code with yours and I've got the same result
perl6 --version gives me: 09:29
This is perl6 version 2011.09 built on parrot 3.8.0 revision 0
tadzik snarkyboojum: do you have 2011.09 in handy, maybe?
sirmacik: or you?
snarkyboojum tadzik: nope - just latest master 09:30
tadzik manildomin: that may be the version issue then, do you haev a possibility to upgrade to 2011.10?
manildomin I will have to compile the new version manually then 09:31
colomon are you sure there's not an extra blank line or two at the end of the data file?
manildomin there are no extra blank lines
TiMBuS hey, is there a version of p6eval on github somewhere? i wanna run it on another server..
also hi
tadzik TiMBuS: isn't that perl6/evalbot or so?
moritz it is 09:32
TiMBuS probably!
snarkyboojum we should definitely have tests run as part of 'make'ing the book imo
TiMBuS is it safe or do i gotta jail it etc
moritz it's not safe at all.
TiMBuS :<
moritz I run it as a separate user in a chroot on a VM that isn't used for important stuff 09:33
TiMBuS i guess i might do that 09:35
snarkyboojum manildomin: fwiw, I get errors trying to run that example too :) 09:37
manildomin ah
I will compile the latest rakudo release 09:38
snarkyboojum and my perl 6 isn't that old either
moritz works on current rakudo 09:39
what's the error message you get? 09:40
snarkyboojum gist.github.com/1307178
tadzik trailing blank lines
oh, it's something different 09:41
masak morron, #perl6 09:42
phenny masak: 00:34Z <sorear> tell masak to read about --author and --date in git-commit(1)
masak sorear: I did, but decided against that option. 09:43
snarkyboojum tadzik: trailing blank lines?
masak mostly because it felt like I'd have to clear that before TheDamian before making commits in his name.
s:1st/before/with/
tadzik snarkyboojum: in scores, maybe? 09:44
snarkyboojum tadzik: nope
tadzik: just using space in gist for clarity ;)
tadzik ok ;) 09:45
I should probably write a blogpost about MuEvent
snarkyboojum what's MuEvent? :D 09:48
tadzik yes, I should :)
this: gist.github.com/1305904
it's an anyevent lookalike
snarkyboojum ah - I thought it was a new cool Perl6 conference :D 09:49
but this is a new cool anyevent lookalike
awesome
masak we should totally have a MuEvent Perl 6 event ;) 09:51
tadzik :)
let's define it. Oh, wait 09:52
masak I object!
snarkyboojum tadzik: look forward to the post 10:02
masak man, Yudkowsky keeps rocking my world.
masak "If you want to sound deep, you can never say anything that is more than a single step of inferential distance away from your listener's current mental state." :) 10:06
tadzik heh
phenny: "mów do głupca mądrze a nazwie cię idiotą"?
phenny tadzik: "Speak to the wise fool and called you an idiot" (pl to en, translate.google.com)
tadzik not really
"speak wisely to the fool, and he'll call you an idiot"
masak maybe "wisely" could be taken as "taking more than a single step of inferential distance away from the fool's current mental state", then. 10:10
tadzik probably 10:11
masak I see the same things happening in understanding programming and design concepts.
first you need to understand that DRY is everything.
*then* you need to understand that DRY isn't everything. :)
but it's quite important to learn it in that order. 10:12
tadzik like with optimization
masak how is it like with optimization?
tadzik "don't do it", is the first rule 10:13
then, how do I wrap it in words
if you're wise enough to optimize correctly, then you're wise enough to know when to break the first rule
masak rightright. 10:15
it's interesting what topics are like that, where people need to be *told* that they aren't competent enough to do a good enough job. 10:17
security/encryption seems to be another.
perl6: my $a = 1; my $b = 2; ($a, $b) = $b, $a; say $a; say $b 10:28
p6eval pugs b927740, rakudo 193752, niecza v10-60-g8b9e1af: OUTPUT«2␤1␤»
masak \o/ 10:29
masak perl6: say 1 +^ 2 +^ 3 10:46
p6eval pugs b927740, rakudo 193752, niecza v10-60-g8b9e1af: OUTPUT«0␤»
masak perl6: say 1 +^ 4 +^ 5
p6eval pugs b927740, rakudo 193752, niecza v10-60-g8b9e1af: OUTPUT«0␤» 10:47
masak wonders if it'd be worth it to manually translate his June blogging games into JavaScript, so they can be played online 10:49
maybe I should translate them into Dart. ;) 10:51
manildomin I'm back 10:52
masak re-greetings, manildomin 10:53
manildomin I compiled an older version of rakudo (This is Rakudo Perl 6, version 2011.04 built on parrot 3.8.0 0) and the source code doesn't work either!!
I get :
Method 'split' not found for invocant of class '' in <anon> at line 12:test.pl in main program body at line 1:src/metamodel/RoleToInstanceApplier.nqp
masak yeah, I saw in the backlog that you had problems with the first example in the book.
allow me to try it out locally to see if I can reproduce your warnings. 10:54
manildomin yes
ok
masak I'm running Rakudo 2011.06 here, for some reason.
ooc, how did you copy the source code? from the PDF? 10:55
manildomin I wrote it myself
masak how diligent. :)
manildomin and I checked for errors
masak I'll take a shortcut and copy it from the source repository.
manildomin ok
masak hm. no warnings here. 10:57
how about I make a gist of the contents of my two files, and then you can compare at your leisure?
manildomin which version of parrot and rakudo do you have ?
ok
masak Rakudo 2011.06, and the Parrot that goes with that release, 3.5.0. 10:58
manildomin: gist.github.com/1307245 10:59
I didn't even de-indent things, so everything has a four space indentation. but I don't think it much matters one way or another. 11:00
manildomin thanks I try it 11:01
masak the script also works fine on current HEAD revision. no warnings. 11:02
manildomin it works with (Rakudo Perl 6, version 2011.04 built on parrot 3.8.0 0) 11:08
I understood the problem:
I have a blank line at the beginning of the 'scores' files 11:09
how stupid i am
masak not to worry.
you found the problem :)
manildomin I will try this again with the newer rakudo 2011.09
thanks 11:10
masak I think it'll work there. it works fine on HEAD.
no problemo.
masak std: my @names; my @sorted = @names.sort({ %sets{$_} }).sort({ %matches{$_} }).reverse; say @sorted.perl 11:13
p6eval std 580b69a: OUTPUT«===SORRY!===␤Variable %sets is not predeclared at /tmp/6FwKmw6DRP line 1:␤------> my @names; my @sorted = @names.sort({ ⏏%sets{$_} }).sort({ %matches{$_} }).reve␤Variable %matches is not predeclared at /tmp/6FwKmw6DRP line 1:␤----…
masak std: my (@names, %sets, %matches); my @sorted = @names.sort({ %sets{$_} }).sort({ %matches{$_} }).reverse; say @sorted.perl 11:14
p6eval std 580b69a: OUTPUT«ok 00:01 125m␤»
masak std: my (@names, %sets, %matches); my @sorted = @names.sort: { %sets{$_} }.sort: { %matches{$_} }.reverse; say @sorted.perl
p6eval std 580b69a: OUTPUT«ok 00:01 125m␤»
masak std: my (@names, %sets, %matches); @names ==> sort: { %sets{$_} } ==> sort: { %matches{$_} } ==> reverse ==> my @sorted; say @sorted.perl
p6eval std 580b69a: OUTPUT«===SORRY!===␤Illegal redeclaration of symbol 'sort' (see line 1) at /tmp/YWCtyqEueC line 1:␤------> names ==> sort: { %sets{$_} } ==> sort: ⏏{ %matches{$_} } ==> reverse ==> my @sor␤Preceding context expects a term, but found infi…
masak std: my (@names, %sets, %matches); @names ==> sort { %sets{$_} } ==> sort { %matches{$_} } ==> reverse ==> my @sorted; say @sorted.perl 11:15
p6eval std 580b69a: OUTPUT«===SORRY!===␤Preceding context expects a term, but found infix ==> instead at /tmp/_6mh8ci_7D line 1:␤------> } ==> sort { %matches{$_} } ==> reverse ⏏==> my @sorted; say @sorted.perl␤Parse failed␤FAILED 00:01 126m␤»
masak std: my (@names, %sets, %matches); @names ==> sort({ %sets{$_} }) ==> sort({ %matches{$_} }) ==> reverse ==> my @sorted; say @sorted.perl
p6eval std 580b69a: OUTPUT«===SORRY!===␤Preceding context expects a term, but found infix ==> instead at /tmp/OndsN7L2vG line 1:␤------> ==> sort({ %matches{$_} }) ==> reverse ⏏==> my @sorted; say @sorted.perl␤Parse failed␤FAILED 00:01 126m␤» 11:15
masak hm.
im2ee nom: class a { method abc ( @l ) { say @l.perl; }; }; my $a = a.new; $a.abc(<a b c>); 11:26
p6eval nom 193752: OUTPUT«("a", "b", "c")␤»
im2ee nom: class a { method abc ( @l is rw ) { say @l.perl; }; }; my $a = a.new; $a.abc(<a b c>);
p6eval nom 193752: OUTPUT«("a", "b", "c")␤»
Manildomin hi again 11:42
I confirm that with rakudo 2011.09, the code works too
masak \o/ 11:48
im2ee masak, that bug, which we found yesterday is repaired? :) 12:07
flussence anyone remember that thing TimToady++ said about most of the helpful errors just being TTIAR rephrased in context? Maybe that'd be a good idea for undef errors too... 12:08
snarkyboojum I definitely found the first book example breaking on my Rakudo, until I updated to latest nqp, parrot, rakudo 12:09
fwiw
masak im2ee: you will have to be more specific :) which bug?
rt.perl.org/rt3/Ticket/Display.html?id=101964 ? 12:10
im2ee masak, yes. This one. :) 12:11
masak it hasn't been fixed yet. but I could debug it with you, if you want. 12:12
im2ee masak, it'll be great, if so. :) 12:12
masak, but.. how? :)
masak well, we should probably start by generating out the PAST. 12:14
the interesting question is "why do attribute arrays behave differently when passed to a method?"
im2ee Right.
masak nom: class A { has @!c is rw; method foo { self!bar(@!c) };
p6eval nom 193752: OUTPUT«===SORRY!===␤Unable to parse blockoid, couldn't find final '}' at line 1␤»
masak hrm. 12:15
nom: class A { has @!c is rw; method foo { self!bar(@!c) }; method !bar(@r is rw) { say "OH HAI" } }; A.new.foo
p6eval nom 193752: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in method bar at /tmp/qIZtOSVxUz:1␤ in method dispatch:<!> at src/gen/CORE.setting:710␤ in method foo at /tmp/qIZtOSVxUz:1␤ in block <anon> at /tmp/qIZtOSVxUz:1␤ in <anon> at /tmp/qIZtOSVxUz:1␤»…
masak nom: class A { has @!c is rw; method foo { bar(@!c) } }; sub bar(@r is rw) { say "OH HAI" }; A.new.foo
p6eval nom 193752: OUTPUT«OH HAI␤»
masak so it has to be a method.
nom: class A { has @!c is rw; method foo { self.bar(@!c) }; method bar(@r is rw) { say "OH HAI" } }; A.new.foo 12:16
p6eval nom 193752: OUTPUT«OH HAI␤»
masak and it has to be a private method. 12:16
then my hunch is that we'll find the problem somewhere in the code that handles private method invocation.
Thrawn hey everyone 12:17
im2ee Where is it?
masak, will it be rakudo's code? 12:18
masak im2ee: the bug is inside Rakudo, most likely, yes. 12:24
finanalyst rakudo: my $x = 1.2345678912 12:56
p6eval rakudo 193752: ( no output )
finanalyst rakudo: my $x = 1.234567891
p6eval rakudo 193752: ( no output )
finanalyst rakudo: my $x = 1.2345678912 ; $x.say 12:57
p6eval rakudo 193752: OUTPUT«1.2345678912␤»
finanalyst rakudo: my $x = 1.2345678912345 ; $x.say
p6eval rakudo 193752: OUTPUT«1.2345678912345␤»
finanalyst hello. I seem to have a problem on rakudo on my machine that is not happening here 12:59
I am getting an error message: "no bigint lib loaded" when i assign 1.2345678912 to a variable 13:00
masak that's because you didn't compile Parrot with the biging library.
bigint*
finanalyst i used the standard perl Configure.pl --gen-parrot 13:01
what else do i need to add?
masak which OS/distro are you on?
finanalyst linux ubuntu 13:01
masak ISTR there's a package you download to get the bigint functionality. 13:02
but I might be mistaken.
finanalyst its never happened before
masak I can't seem to get at the IRC logs right now to confirm this.
finanalyst and perl6 code that was working stopped working 13:03
couldnt work out why. seems a simple multiplication failed because there was a number with lots of decimal positions 13:04
gfldex finanalyst: 32 or 64bit?
finanalyst i dont even need the precision: the data was generated by perl 5 script
flussence reproducible on 32bit 13:05
finanalyst does it matter 32/64 bit?
why should $x=1.234567891 be acceptible, but $x=1.2345678912 not?
flussence > my $x = 1.2345678912 ␤bigint_get_long: number too big 13:06
version string here - This is perl6 version 2011.09-173-g5af761e built on parrot 3.9.0 revision RELEASE_3_9_0
finanalyst I have: This is perl6 version 2011.10-7-g142c416 built on parrot 3.9.0 revision RELEASE_3_9_0 13:08
flussence parrot 3.9 bug?
finanalyst so why do i get it on my computers (both home and work) and not reproducible here? 13:09
flussence p6eval runs on x86-64
Manildomin I've got another issue with another piece of code from the book "Using Perl6" ><
flussence there's lots of problems with numeric data on 32bit right now
Manildomin can someone try to run the piece of code I put there : pastebin.com/PNLUTxvy ?
when I try it I have no error message but the program does nothing and never ends 13:10
finanalyst flussence: I have a samsung laptop. is that 32 or 64 bit? how do i test?
flussence finanalyst: if this hangs on the REPL, it's 32-bit: 13:11
Manildomin uname -m in the terminal to know whether it's 32 or 64 bits
flussence perl6: say now
p6eval rakudo 193752: OUTPUT«Instant:1319375514.09358␤»
..pugs b927740: OUTPUT«*** No such subroutine: "&now"␤ at /tmp/aCbE1Fx9AJ line 1, column 5 - line 2, column 1␤»
..niecza v10-60-g8b9e1af: OUTPUT«Instant.new(...)␤»
finanalyst uname -m => i686 13:12
Manildomin 32 bits
finanalyst thanx
how far back do i need to go to get a rakudo that starts working again? Lots of problems and I wanted this code to work 13:13
that is, working code stopped working fairly recently 13:14
flussence try 2011.07 or 04 from github.com/rakudo/star/downloads 13:16
Manildomin: on line 8 you have a space between - and ' that shouldn't be there
oh wait, never mind 13:17
that code all looks right to me.
Manildomin ok 13:18
jnthn finanalyst: If you are mostly concerned with stuff keeping working, then the star releases are the best bet. There's a reason we haven't done one from nom yet: as you've noticed, there are some areas where things aren't working as well as they should be yet (of note, protoregexes and some numeric bits)
phenny jnthn: 21 Oct 21:02Z <[Coke]> tell jnthn --gen-parrot is definitely easier with activestate if you're using msvc.
jnthn: 21 Oct 21:08Z <[Coke]> tell jnthn (except that the build failed. hurm.)
jnthn: 22 Oct 01:27Z <[Coke]> tell jnthn there are like 4 tickets that all involve weird issues when defining a sub called "if".
jnthn: 22 Oct 11:21Z <masak> ask jnthn if I read dispatch:<.*> correctly, callsame/nextsame has nothing whatsoever to do with .* dispatch. is that right?
jnthn phenny: tell masak yes
phenny jnthn: I'll pass that on when masak is around.
jnthn masak: The reason being that whether a method chooses to defer is a decision of the method itself - that is, an implementation detail of it. .+ and .* are saying "I want to call all method up the chain". You shouldn't be concerning yourself with their internal implementation details. 13:19
masak phenny: you don't need to tell me yes. 13:21
phenny masak: 13:18Z <jnthn> tell masak yes
masak jnthn: makes sense.
jnthn: so there are only two types of dispatchers, then. not three. 13:22
the (outer) mro dispatchers, and the (inner) proto dispatchers.
no, wait. there's wrapper dispatchers too, I guess.
flussence rakudo: my $bar-graph = 'X' x *; say $bar-graph(5) 13:23
jnthn .?, .* and .+ are just different outer mro dispatchers really.
p6eval rakudo 193752: OUTPUT«XXXXX␤»
finanalyst jnthn: thanx
masak if they're dispatchers, they're dispatchers without any effect on 'nextsame' et al. 13:23
I always thought all dispatchers had that.
jnthn masak: I'm not sure what you mean by "without any effect" 13:24
Oh, I think I see what you might be getting at... 13:25
masak oh phew.
because it's what we were just talking about ;)
jnthn masak: Is there something you'd expect to work that doesn't? 13:26
I'd not expect nextsame et al to mean you don't visit things in the "top level" list of things .+ and .* work through just because you deferred to them
But the individual methods, when visited, should be able to nextsame as an implementation detail. If they can't, then that's a bug. 13:27
masak jnthn: I'm just trying, as I have been for the past three years, to build an accurate model of 'nextsame' et al.'s semantics. without that, I won't feel comfortable using them, or explaining them to others. 13:32
masak for some reason I had assumed until now that .* would have something to do with nextsame. I see now that it doesn't. 13:35
jnthn masak: Well, generally you should be able to work out what nextsame will do from relatively local context
masak aye.
jnthn If you're in a multi, then you know it's going to defer to the next multi candidate. If you're in an only method, you know it's going to defer to the next thing in the MRO. If you're in a wrapper, you know it's going to go to the inner wrapper or original. 13:36
masak jnthn: on a different note: im2ee and I are investigating rt.perl.org/rt3/Ticket/Display.html?id=101964 -- we've found so far that in dispatch:<!> in core/Mu.pm, @pos is empty. I suspect that there's something odd with the PAST. 13:37
care to have a look?
jnthn The problem with tying it to .* and .+ is that you as the method don't know that you're under a different dispatcher than the one you expected, so it's probably better to leave the two disassociated, and each method call gets a "fresh"dispatcher.
(for the purposes of nextsame) 13:38
masak I agree.
the more predictable, the better.
jnthn (101964) weird. 13:39
nom: class A { has @!c is rw; method foo { self!bar(@!c) }; method !bar(@r is rw) { say "OH HAI" } }; A.new.foo 13:40
p6eval nom 193752: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in method bar at /tmp/RoP9N2aq9m:1␤ in method dispatch:<!> at src/gen/CORE.setting:710␤ in method foo at /tmp/RoP9N2aq9m:1␤ in block <anon> at /tmp/RoP9N2aq9m:1␤ in <anon> at /tmp/RoP9N2aq9m:1␤»…
jnthn nom: class A { has @!c is rw; method foo { self!bar(@!c) }; method !bar(@r) { say "OH HAI" } }; A.new.foo
p6eval nom 193752: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in method bar at /tmp/0Ac5k5z8qO:1␤ in method dispatch:<!> at src/gen/CORE.setting:710␤ in method foo at /tmp/0Ac5k5z8qO:1␤ in block <anon> at /tmp/0Ac5k5z8qO:1␤ in <anon> at /tmp/0Ac5k5z8qO:1␤»…
jnthn nom: class A { has @!c; method foo { self!bar(@!c) }; method !bar(@r) { say "OH HAI" } }; A.new.foo
p6eval nom 193752: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in method bar at /tmp/nOzwVfg1FQ:1␤ in method dispatch:<!> at src/gen/CORE.setting:710␤ in method foo at /tmp/nOzwVfg1FQ:1␤ in block <anon> at /tmp/nOzwVfg1FQ:1␤ in <anon> at /tmp/nOzwVfg1FQ:1␤»…
jnthn nom: class A { has @!c; method foo { self!A::bar(@!c) }; method !bar(@r) { say "OH HAI" } }; A.new.foo
p6eval nom 193752: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in method bar at /tmp/eeBSmJQvqW:1␤ in method dispatch:<!> at src/gen/CORE.setting:710␤ in method foo at /tmp/eeBSmJQvqW:1␤ in block <anon> at /tmp/eeBSmJQvqW:1␤ in <anon> at /tmp/eeBSmJQvqW:1␤»… 13:40
masak we've isolated the necessary ingredients: private method call, array attribute. 13:41
hm, did I ever check whether't needed to be an array?
yes, I think I did.
jnthn yeah, think I see it 13:42
masak wow.
do explain.
jnthn nom: sub foo($a, :$b) { say "$a $b" }; sub bar(|$c) { foo(|$c) }; bar(1, :b<2>) 13:43
p6eval nom 193752: OUTPUT«1 2␤»
jnthn The dispatchers should be using |$c to get the args to pass on 13:44
But that wasn't implemented when they were written.
Which causes horrible wrongness.
masak nom: class A { has @!c; method foo { self!bar(@!c) }; method !bar(@r) { say "OH HAI" } }; A.new.foo 13:45
p6eval nom 193752: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in method bar at /tmp/uX2c_xedpk:1␤ in method dispatch:<!> at src/gen/CORE.setting:710␤ in method foo at /tmp/uX2c_xedpk:1␤ in block <anon> at /tmp/uX2c_xedpk:1␤ in <anon> at /tmp/uX2c_xedpk:1␤»…
jnthn You don't need the attribute.
masak oh?
I haven't been able to produce it without the attribute.
jnthn nom: class A { method foo { self!bar([]) }; method !bar(@r) { say "OH HAI" } }; A.new.foo
p6eval nom 193752: OUTPUT«OH HAI␤»
jnthn hm 13:46
masak nom: class A { method foo { my @c; self!bar(@c) }; method !bar(@r) { say "OH HAI" } }; A.new.foo
p6eval nom 193752: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in method bar at /tmp/bSxfrTQ8VY:1␤ in method dispatch:<!> at src/gen/CORE.setting:710␤ in method foo at /tmp/bSxfrTQ8VY:1␤ in block <anon> at /tmp/bSxfrTQ8VY:1␤ in <anon> at /tmp/bSxfrTQ8VY:1␤»…
masak oh.
jnthn Right.
masak there we go :)
whassedifference?
masak between [] and @c, I mean. 13:46
jnthn One is marked with flatten
masak ah. 13:47
eventually I'll get the hang of flatten, I'm sure.
ok, is there anything I can do to patch this?
change *@pos to |$c ? 13:48
jnthn spectesting a patch now
crap, I mussed it to master, not nom 13:51
dalek kudo: d7f45ff | moritz++ | src/core/Cool.pm:
Cool.eval
masak jnthn: good thing there's cherry-pick.
jnthn think I stopped it just in time 13:52
masak :) 13:53
dalek kudo/nom: ca26563 | jnthn++ | src/core/Mu.pm:
Fix various dispatchers.
13:54
jnthn ...mussed...messed + pushed :)
jnthn
.oO( dammit, my fingers pun when my brane is too tired to... )
13:55
masak it's interesting that dalek's reaction to your mussing was to publish the last commit that went into master, one from 19 September.
jnthn hm, I guess I shoulda tested that the patch actually fixed the bug 13:56
> class A { has @!c is rw; method foo { self!bar(@!c) }; method !bar(@r is rw) { say "OH HAI" } }; A.new.foo
yes, it does :)
OH HAI
masak \o/ 13:57
jnthn++
ah, so anything empty that flattened turned into 0 positional parameters?
I think I get it now.
jnthn
.oO( pushed to wrong branch, didn't actually check my patch fixed the bug...yeah, maybe I shouldn't touch my keyboard much more today :) )
13:58
masak: yes, that.
masak yay
jnthn ticket updated
oh my 13:59
nom: say 699 - 102
p6eval nom 193752: OUTPUT«597␤»
jnthn Wow. :)
It's also a nice sign that the oldest bug on the final page on RT is from 3 months ago 14:01
Put another way, many new bugs getting filed are getting dealt with.
im2ee jnthn++, what is |$c? :) 14:02
jnthn im2ee: It means "put all the arguments not bound yet into a Capture
"
(when ti's in the signature)
When it's in a call it means "take all the arguments from this capture and flatten them into this call's arguments" 14:03
im2ee Thanks jnthn :) 14:04
Hmm, what means the "proto" keyword before a method?
jnthn im2ee: Means that it is a dispatcher; you normally don't write one as writing multi methods causes a proto to be auto-generated for you. 14:07
masak im2ee: it means that method dispatches to several 'multi' methods, possibly in subclasses.
jnthn afk for a little bit
im2ee Thanks ! :) 14:08
moritz was kinda surprised to see a commit to rakudo/master, and even more surprised who the author was :-) 14:53
masak just a dalek hiccup ;) 14:54
moritz my first thought was that maybe somebody had cherry-picked a commit of mine to master
jnthn I think it was a jnthn hiccup... :) 14:59
jnthn grr, I can't reproduce the Buf segfault here 15:11
I can, it seems, make Buf a bunch faster though...
moritz that would be welcome too :-) 15:16
jnthn: fwiw I've re-coded the same logic in PIR, and there it didn't segfault
jnthn moritz: I can't make it segfault on this box :( 15:17
moritz jnthn: nopaste.snit.ch/89845 is the backtrace I get 15:19
jnthn wow. 15:21
moritz what's impressive about it? that it's not the GC? 15:22
masak ;)
jnthn hmm 15:23
In VTABLE INTVAL get_integer_keyed_int(INTVAL position) it dereferences content without ensuring it's not null.
jnthn oh, also 15:24
set_string_native is wrong. 15:25
It doesn't zero allocated_size
moritz it has 15:26
SET_ATTR_allocated_size(INTERP, SELF, 0);
jnthn oh, yes
ah, it's not that then. 15:27
moritz would love to see mls_++' exception and ENTER/LEAVE work merged 15:28
jnthn moritz: I've got plenty of time in the next couple of days. I'll look at it then. 15:29
I may look later today, but I'm a little headachey and can't concentrate as much as that patch needs 15:30
moritz jnthn: don't hurry, BUT DO IT SOON :-) 15:35
jnthn :P
Got a patch that makes that code get up to the first 25 iterations 3 times faster.
spectesting it now
benabik has had a boss tell him "no hurry, but we needed it by the end of today." 15:36
jnthn Runs in 9ish seconds instead of 27
That's still too slow but it's an improvement.
moritz \o/
moritz wonders what stupid things he did
jnthn .keys
jnthn Granted this was almost certainly written before we had nice things like native ints so we could do fast lops 15:37
*loops 15:38
dalek p: 5ed5bc0 | jnthn++ | src/PAST/NQP.pir:
Fill out nqp op space a little more.
kudo/nom: 977b33b | jnthn++ | tools/build/NQP_REVISION:
Bump NQP revision.
15:41
kudo/nom: 7ac6d1e | jnthn++ | src/core/Buf.pm:
Improve performance of Buf creation and listification.
moritz jnthn: I just wondered if we have a nice, efficient path for Array.[int] 16:02
jnthn moritz: not yet 16:03
moritz starts with a small benchmark 16:05
moritz nom: multi f(Int $x) { 'Int' }; multi f (int $x) { 'int' }; say f 3 16:05
p6eval nom 7ac6d1: OUTPUT«int␤»
moritz nom: multi f(Int $x) { 'Int' }; multi f (int $x) { 'int' }; say f 3 + 3
p6eval nom 7ac6d1: OUTPUT«int␤»
moritz nom: multi f(Int $x) { 'Int' }; multi f (int $x) { 'int' }; say f 3 + 3 * 5
jnthn Yes but...it's a method call
p6eval nom 7ac6d1: OUTPUT«int␤»
moritz I know
jnthn The optimizer can't resolve those
I think at the moment the assumption is "we have to box" 16:06
moritz but the dispatcher can distinguish them, right?
jnthn Hm
Potentially
It should be doable now
I'll have to check exactly what it's doing with code-gen there.
moritz I'm thinking of a multi method postcifucmix:<[ ]>(int $pos) is rw { ... } 16:07
jnthn *nod*
moritz in Any
and a List.at_pos(int)
jnthn Sounds sane. 16:09
Just need to check the generated code to ensure it's as efficient as we'd actually like it to be.
moritz well, I'd benchmark :-)
jnthn sure :)
Well, looking at the generated PIR will probably be telling too :) 16:10
Feel free to work on it; I'm happy to help if the code gen side needs tweaks.
I think there's still some bits from the time when the binder and multi dispatcher didn't know how to handle natives.
OK, got some more speedups :) 16:12
Got it over 5 times faster getting up to 25 now :)
moritz it seems we will box eventually, because I'm not going to write native int variants of all the methods involved (exists, gimme) 16:13
jnthn *nod* 16:14
moritz but we can save a method call to .Int at least 16:15
jnthn Well, checking if $!items is already long enough to give us the index we want without having to gimme is probably doable without boxing too
dalek kudo/nom: fc3d314 | jnthn++ | src/core/Buf.pm:
Eliminate unrequired slurpiness.
16:16
kudo/nom: f7995a5 | jnthn++ | src/core/metaops.pm:
Optimize reduction meta-op by avoiding inferior runloop for boolification - just do what .Bool does anyway.
kudo/nom: f7d3d5d | jnthn++ | src/core/List.pm:
Optimize push a little.
kudo/nom: 81ce668 | jnthn++ | src/core/Buf.pm:
Don't use .push in Buf.list when we already know exactly what index we're going to use.
16:17
jnthn ooh, I got the segfault 16:21
Looks like memory corruption. 16:22
abercrombie Hi, is the lookaround not implemented yet in nom/rakudo?
tadzik lookahead is, methinks 16:23
abercrombie Oh, yes, I was tring to use <!before> and <?before> 16:24
[Coke] phenny: ask moritz if 5fe92c09 on roast is another example of the eval issue. (had to todo this for niecza.)
phenny [Coke]: I'll pass that on when moritz is around.
moritz [Coke]: no, eval_dies_ok needs to catch exceptions, and does 16:27
phenny moritz: 16:24Z <[Coke]> ask moritz if 5fe92c09 on roast is another example of the eval issue. (had to todo this for niecza.)
moritz .u plus minus 16:55
phenny U+00B1 PLUS-MINUS SIGN (±)
dalek ast: 1c1df5b | Coke++ | S (3 files):
niecza fudging
16:57
dalek ecza: bacff10 | Coke++ | t/spectest.data:
Skip this test.

  (too many failures, test has platform based skips instead of impl-based)
16:59
p: d7cec32 | jnthn++ | src/6model/reprs/P6opaque.c:
Ensure we don't try to change the type of a type object.
17:01
p: bbe37f3 | jnthn++ | src/6model/reprs/P6opaque.c:
Ensure that when a type object is cloned, we don't lose the type object flag.
p: 7bc5fcd | jnthn++ | src/ops/nqp.ops:
Add a missing write barrier.
kudo/nom: ecc293a | jnthn++ | src/ (2 files):
Add write barriers in a couple of places they are potentially needed.
17:06
kudo/nom: ee65d38 | jnthn++ | tools/build/NQP_REVISION:
Bump NQP_REVISION to get fix for the mixin to type object segfault issue.
arnsholt masak: Thanks for mentioning MJD's blog yesterday. Even though I probably don't have time to read all the archives =) 17:11
cognominal why List.Bool code is not { self.elems.Bool } ? self.gimme(1).Bool does not make any sense to me. 17:12
sorear good * #perl6
cognominal: .elems would hang with an infinite list
moritz .u sigma 17:13
phenny U+03C3 GREEK SMALL LETTER SIGMA (σ)
cognominal ok, what if the first element has a false value? 17:14
I suppose List.Bool returns thru if List has a least one element (or can generate one)? 17:15
masak arnsholt: they're worth reading.
when I grow up, I want to be like MJD. 17:16
cognominal ok, I did not understandd what gimme does
jnthn cognominal: gimme gives you the number of elements it can actually give.
masak rakudo: my @a = <a b c d e>; say @a.gimme 17:17
p6eval rakudo 81ce66: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in method gimme at src/gen/CORE.setting:4304␤ in block <anon> at /tmp/m072rwC3DO:1␤ in <anon> at /tmp/m072rwC3DO:1␤»
masak rakudo: my @a = <a b c d e>; say @a.gimme(5)
p6eval rakudo 81ce66: OUTPUT«5␤»
masak rakudo: my @a = <a b c d e>; say @a.gimme(10)
p6eval rakudo 81ce66: OUTPUT«5␤»
masak rakudo: my @a = <a b c d e>; say @a.gimme(Inf)
p6eval rakudo 81ce66: OUTPUT«5␤»
masak rakudo: my @a = <a b c d e>; say @a.gimme(-5)
p6eval rakudo 81ce66: OUTPUT«5␤»
masak rakudo: my @a = <a b c d e>; say @a.gimme(*)
p6eval rakudo 81ce66: OUTPUT«5␤»
masak rakudo: my @a = <a b c d e>; say @a.gimme(1i)
p6eval rakudo 81ce66: OUTPUT«5␤»
masak what a boring function ;)
jnthn Is somebody hunting for a rakudobug? :P
masak I would never...! 17:18
:P
jnthn "How boring, I can't make it explode!" 17:18
arnsholt masak: That's pretty much one of my thoughts as well. "MJD is really cool. I wouldn't mind being like that."
jnthn moritz: What exactly did your PIR version of the segfaulting program do? 17:26
(the buf one)
moritz: I can reliably segfault it also in ByteBuffer with my $b = Buf.new(1); for ^5000 { $b~=Buf.new(1..100); } 17:28
im2ee What means *? The same what in unix system? 17:31
And "
"li"?
From @a.gimme(1i)
oh, its 1 not l. :)
tadzik 1i, like i, which is sqrt(-1)
moritz jnthn: nopaste forthcoming 17:32
tadzik yes, in school they tell you there can be no sqrt(-1). They lie. I was disappointed too
moritz jnthn: gist.github.com/1307615
sorear wait, wait, what? gimme takes Complex? 17:34
moritz uhm, where?
sorear 10:31 < im2ee> From @a.gimme(1i)
moritz yes, but where is that code from? 17:35
tadzik masak wrote that
moritz jnthn: gist.github.com/1307619
moritz jnthn: so with the patch it seems to be a wee bit faster, erm wait, I may not call it "faster", becaues it's not statistically significant 17:37
jnthn moritz: Erm.
I get 5 times faster here with the bunch of patches I've put in for Buf today.
(was testing it up to 25) 17:38
moritz jnthn: that patch is not related to Buf at all
jnthn moritz: oh, wait
moritz: What are we talking bout? :)
moritz just postcircumfix:<[ ]>
jnthn moritz: The array access?
oh!
moritz the patch is in the gist :-)
jnthn moritz: oooh!
You gisted me two things
I missed the second one :)
moritz: On gist.github.com/1307615 - byte buffer one 17:39
moritz: I can make it segfault here by upping the iteration count.
moritz: Changing it to:
unless $I0 == 10000 goto loop
(e.g. 10 times more iterations) 17:40
gets the segfault here
Guess in Rakudo we just have more GC churn going on so it needs less.
masak im2ee: 1i is a en.wikipedia.org/wiki/Complex_number 17:41
sorear: I just wanted to see what .gimme did about a Complex. seems it did pretty OK. 17:42
jnthn moritz: I *think* that you'd need to have an at_pos variant in Array.pm too, not just List.pm
moritz jnthn: doesn't segfault with 1000 iterations here
jnthn moritz: 10000 17:43
moritz my OOM killer just shot down thunderbird :-)
tadzik :P 17:44
jnthn ouch
moritz and before dying, it printed
this should not be happening! arrgggggh!
several times :-)
jnthn lol
jnthn moritz: I've got a rough guess at what is going on. 17:45
moritz: It looks like Parrot does string heap compaction.
That means it may move strstart...but ByteBuffer caches that.
masak very nice "how do I fix my git mess?" flow chart: justinhileman.info/article/git-pret...pretty.png
moritz nice indeed 17:48
benabik masak: Important question there: "Enough to form a lynch mob?"
moritz I menat to make similar instructions one day, in form of a blog post
*meant
jnthn The bottom left hand corner is great :) 17:49
jnthn moritz: Did you manage to get the segfault with 10000 iterations? 17:50
jnthn moritz: I did so I guess I can file a ticket somewhere ;) 17:50
Where am I meant to file tickets on Parrot things these days?
moritz jnthn: no, I did not. Aborted before it ate all of my RAM
jnthn: github
jnthn moritz: heh. Some days 16 gigs come in handy :) 17:51
jnthn Only ate 2.7 gigs before it explodes :) 17:51
jnthn but wait a moment... 17:52
jnthn nom: say 100 * 10000 17:52
p6eval nom 81ce66: OUTPUT«1000000␤»
jnthn The largest string we get up to should be about a meg in size?
moritz I think I had another factor of 10 somewhere 17:53
still, 10M shouldn't be too bad
jnthn right
something is horribly wrong if it's getting into the gigs range then.
jnthn Filed github.com/parrot/parrot/issues/182 17:58
sorear I s'pose we need a dalek thingie for reporting on github issues 17:59
sorear
.oO( luckily, github just added push notification for those )
17:59
tadzik the more I look at the parameter documenting syntax the more I fell that not many people will like it and use it 18:00
sorear what syntax? 18:00
tadzik sorear: perlcabal.org/syn/S26.html#Declarator+blocks scroll to 'sub fu' 18:01
tadzik I suppose people will just put everything into the sub documentation, it seems easier and more convenient 18:01
tadzik that's how I fell when documenting MuEvent 18:02
masak tadzik: the advantage of documenting the paramters is that you don't have to repeat their names. 18:02
tadzik well, I suppose it's still less typing than #= and whitespace you have to put there to make those things work *and* not look like *&!#^*!$^ 18:03
sorear ponders banning dukeleto 18:05
tadzik I wish Pod and Declarators were convenient enough for people to prefer them to plain old... well, pod
jnthn afk, shop
tadzik sorear: ever tried turning off join/part events?
tadzik I did that some time ago and I don't think I ever regretted that 18:05
it still displays those if this person was active a short enough while ago 18:06
sorear tadzik: I *did* regret it. 18:06
tadzik ok then 18:07
sorear tadzik: I beleive in fixing problems at their source, not forcing 100s of downstream users to implement countermeasures
masak dukeleto: hey! you're doin' it again! :( 18:07
colomon dukeleto!! 18:08
sorear o/ colomon
tadzik sorear: I agree with that
moritz ignores joins and leaves/quits in #perl6, and consults the IR clogs when he's interested in joins/leaves 18:08
sorear moritz: the irclogs have reliable join/part data now? 18:09
moritz sorear: reliable joins and leaves; not quite^Hs
*quits
nornagest Hi 18:13
moritz hi nornagest 18:14
jnthn: added at_pos to List, still not significant (this time 0.4 sigma slower)
sorear o/ nornagest 18:17
nornagest \o 18:19
[Coke] sorear,colomon: had to comment out an IO test today from niecza spectest. dunno if it was new tests or what. 18:20
colomon more details?
sorear, \o
sorear hmm, nornagest != nornagon 18:21
welcome, nornagest
nornagest indeed - thanks
masak hi nornagest 18:32
jnthn moritz: try this patch: gist.github.com/1307684 18:35
moritz: And explicitly write out the postcircumfix call
dalek ecza/serialize: 8edc022 | sorear++ | / (4 files):
Starting inventory of globals that need isolation
jnthn moritz: e.g. instead of @a[$j] do @a.postcircumfix:<[ ]>($j) 18:36
(yes, I can fix the other case up too...it's just a tad more involved)
oh, that patch causes issues :( 18:38
im2ee Does "do" exists in p6? :) 18:41
tadzik yep
im2ee And how to include, just like perl5 ?
include some code
masak im2ee: 'require' or 'use' 18:42
im2ee Great. :)
masak but, hm, that's for modules. 18:42
maybe you mean just a regular script file?
then it's probably eval(slurp("file.pl"))
im2ee masak++, thanks. :) 18:44
im2ee do doesn't include the code? (like in p5) 18:44
moritz im2ee: there are two 'do's in Perl 5, a do BLOCK and a do EXPR. The former still persists in Perl 6 18:45
rakudo: do { say 1 }
p6eval rakudo ee65d3: OUTPUT«1␤»
sorear do EXPR is very strongly deprecated in Perl 5
im2ee Where the do functions is declared? 18:46
function*
moritz sorear: that's not what perldoc -f do says
sorear im2ee: do isn't a function, it's a special syntactic form 18:48
jnthn moritz: Here's another patch that doesn't mess up setting compilation and that means you can leave it as @a[$j]: gist.github.com/1307705 18:51
GlitchMr perl6: (*..3).perl.say 18:52
p6eval niecza v10-61-gbacff10: OUTPUT«-Infinity..3␤»
..rakudo ee65d3: OUTPUT«-Infe0..3␤»
..pugs b927740: OUTPUT«()␤»
GlitchMr I know it doesn't make sense :P
masak im2ee: 'do' in Perl 6 has a different function than in Perl 5. in Perl 6, it's used for turning a statement into (part of) an expression.
why does Rakudo do Infe0? 18:53
GlitchMr Because it's garbage?
There is no way of accessing that 3 which I have specified 18:54
perl6: (*..*).perl.say
jnthn rakudo: say -Inf
p6eval niecza v10-61-gbacff10: OUTPUT«-Infinity..Infinity␤»
..pugs b927740: OUTPUT«pugs: out of memory (requested 1048576 bytes)␤»
..rakudo ee65d3: OUTPUT«Failure.new()␤»
rakudo ee65d3: OUTPUT«-Inf␤»
jnthn rakudo: say ~(-Inf)
benabik *..* is Failure?
p6eval rakudo ee65d3: OUTPUT«-Inf␤»
jnthn Hmm
Wonder how on earth it ends up with the e0 18:55
benabik nom: Int.WHAT.say
p6eval nom ee65d3: OUTPUT«Int()␤»
benabik nom: Inf.WHAT.say
p6eval nom ee65d3: OUTPUT«Num()␤»
im2ee Thanks sorear, masak. :)
and moritz too. :)
jnthn rakudo: say (*..3).from 18:56
p6eval rakudo ee65d3: OUTPUT«Method 'from' not found for invocant of class 'Range'␤ in block <anon> at /tmp/Co5C5txBKZ:1␤ in <anon> at /tmp/Co5C5txBKZ:1␤»
jnthn rakudo: say (*..3).min
p6eval rakudo ee65d3: OUTPUT«-Inf␤»
GlitchMr perl6: (0, *+0.1...100).perl.print
jnthn rakudo: say ~(*..3)
oh, that may take a while... :)
duh. :)
p6eval niecza v10-61-gbacff10: OUTPUT«␤Unhandled Exception: Unable to resolve method print in class Str␤ at /tmp/7MOOYyOz5J line 1 (MAIN mainline @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2181 (CORE C1041_ANON @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2182 (CORE module-C…
..rakudo ee65d3: OUTPUT«(0, 1/10, 1/5, 3/10, 2/5, 1/2, 3/5, 7/10, 4/5, 9/10, 1/1, 11/10, 6/5, 13/10, 7/5, 3/2, 8/5, 17/10, 9/5, 19/10, 2/1, 21/10, 11/5, 23/10, 12/5, 5/2, 13/5, 27/10, 14/5, 29/10, 3/1, 31/10, 16/5, 33/10, 17/5, 7/2, 18/5, 37/10, 19/5, 39/10, 4/1, 41/10, 21/5, 43/10, 22/5,…
..pugs b927740: OUTPUT«*** ␤ Unexpected "100"␤ expecting operator or ")"␤ at /tmp/cIvAuZtnNx line 1, column 13␤»
rakudo ee65d3: OUTPUT«(timeout)» 18:57
GlitchMr perl6: (2, *+0.05...3).perl.say
p6eval rakudo ee65d3, niecza v10-61-gbacff10: OUTPUT«(2, 41/20, 21/10, 43/20, 11/5, 9/4, 23/10, 47/20, 12/5, 49/20, 5/2, 51/20, 13/5, 53/20, 27/10, 11/4, 14/5, 57/20, 29/10, 59/20, 3/1).list␤»
..pugs b927740: OUTPUT«*** ␤ Unexpected "3"␤ expecting operator or ")"␤ at /tmp/4NKFB9z28X line 1, column 14␤»
GlitchMr perl6: (reverse 1..*).perl.say 18:59
I'm probably crazy, but whatever
p6eval niecza v10-61-gbacff10: OUTPUT«(timeout)»
..pugs b927740: OUTPUT«pugs: out of memory (requested 1048576 bytes)␤»
..rakudo ee65d3: OUTPUT«Failure.new()␤»
GlitchMr perl6: 1>2>print('wrong') 19:00
p6eval pugs b927740, rakudo ee65d3, niecza v10-61-gbacff10: ( no output ) 19:01
GlitchMr perl6: 'a' ==> print() 19:02
p6eval niecza v10-61-gbacff10: OUTPUT«␤Unhandled Exception: Feed ops NYI␤ at /home/p6eval/niecza/lib/CORE.setting line 790 (CORE die @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line 1955 (CORE infix:<==>> @ 2) ␤ at /tmp/756_KL3OMT line 1 (MAIN mainline @ 1) ␤ at /home/p6eval/niecza/lib/…
..pugs b927740: OUTPUT«*** ␤ Unexpected " print"␤ at /tmp/mQV4bebEZv line 1, column 8␤»
..rakudo ee65d3: OUTPUT«a»
GlitchMr perl6: 'a' ==> print
p6eval niecza v10-61-gbacff10: OUTPUT«===SORRY!===␤␤Unsupported use of bare 'print'; in Perl 6 please use .print if you meant $_, or use an explicit invocant or argument at /tmp/EYpE8bKX0S line 1 (EOF):␤------> 'a' ==> print⏏<EOL>␤␤␤Unhandled Exception: Che…
..pugs b927740: OUTPUT«*** ␤ Unexpected " print"␤ at /tmp/2qkwFVA1lc line 1, column 8␤»
..rakudo ee65d3: OUTPUT«a»
GlitchMr ... ok...
GlitchMr perl6: [Z].perl.say 19:08
p6eval rakudo ee65d3: OUTPUT«Any␤»
..niecza v10-61-gbacff10: OUTPUT«(timeout)»
..pugs b927740: OUTPUT«()␤»
sorear o/ mberends 19:33
diakopter . 19:34
sorear o/ diakopter
diakopter o/
mberends o/ (home in .nl after a week in .si) 19:37
tadzik hello mberends! 19:42
masak welcome home, mberends!
mberends hi tadzik! hi masak! It's nice to catch up the backlog :) 19:43
masak perl6: say 10 ... 0 20:04
p6eval pugs b927740: OUTPUT«*** ␤ Unexpected "0"␤ expecting operator, ":" or ","␤ at /tmp/ZzlEHDRKld line 1, column 12␤»
..rakudo ee65d3, niecza v10-61-gbacff10: OUTPUT«10 9 8 7 6 5 4 3 2 1 0␤»
Manildomin hi everybody 20:07
masak hi Manildomin 20:11
Manildomin I said I have an issue with the second example code given in the book "Using Perl6"
I virtualized Debian Wheezy and installed in it its own version of rakudo and parrot, and with these the same code just works fine 20:12
masak what was your issue? could you perhaps make a gist of the error you get? 20:14
Manildomin I had no error messag
message*
the program ran but never output what it was intended to output 20:15
and it never stopped
masak this is interesting to us. 20:16
Manildomin this is that piece of code : pastebin.com/rnyutrH2
masak any idea what might have differed between the two setups? 20:16
different Rakudo versions?
Manildomin the one I have on my real system (archlinux) is the most up to date
yes
sorear Manildomin: which version is it?
Manildomin rakudo 2011.07 on debian wheezy 20:17
2011.09 on archlinux
parrot 3.8.0 on archlinux
parrot 3.6.0 on debian wheezy
masak aha! seems I need a wrap_return_handler for my macros to fix moritz++' bug. 20:18
Manildomin: I run it locally with no problem on Rakudo HEAD. 20:20
dalek kudo/macros: b1c555f | masak++ | src/Perl6/Actions.pm:
make it possible to return from macros

Kudos to moritz++ for discovering this use case.
20:31
Manildomin I am installing an older version of rakudo (rakudo-star 2011.04) and see if it runs the piece of code
wk Manildomin: i tried your example with rakudo 2011.07 and it worked well (Ubuntu 11.04) 20:34
Manildomin yes, I use rakudo 2011.07 on debian wheezy and it works too 20:35
wk Manildomin: but igot same behaviour with nom snapshot installed about two month ago
Manildomin ok
wk Manildomin: with "same beahaviour" i meant: it runs forever without output
Manildomin nice, so we seem to encounter the same issue 20:36
masak here's the current status of the macros branch: 'my $a = 42; macro foo { quasi { say $a } }; foo' works and prints 42.
'macro foo { my $a = 42; quasi { say $a } }; foo' dies with a Null PMC Access, for fairly obvious reasons.
I feel I should fix the latter before proposing we merge the D1 work. (and I'm going to write tests too, of course) 20:37
soh_cah_toa what's the quasi() subroutine for? never heard of it
masak it's not a subroutine, it's a syntactic form, like 'while' or 'sub'. 20:38
wk Manildomin: i hope it helps to localise period, where it come in, because my nom is installed on YAPC:EU, so around 13th August
Manildomin I installed rakudo 2011.09 from here : aur.archlinux.org/packages.php?ID=29068 20:41
with (Rakudo Perl 6, version 2011.04 built on parrot 3.8.0 0), the same code works fine 20:50
on archlinix
archlinux* 20:51
masak nom: sub foo { my $*a = 42; return { say $*a } }; foo 21:21
p6eval nom ee65d3: ( no output )
masak nom: sub foo { my $*a = 42; return { say $*a } }; my $c = foo; $c()
p6eval nom ee65d3: OUTPUT«Failure.new()␤»
dalek kudo/nom: 18dea93 | jnthn++ | src/ (15 files):
Add an nqp::p6decont and eliminate pir::perl6_decontainerize in the setting in favor of it.
21:25
masak good night, #perl6 21:48
tadzik good night masak
jnthn nom: my $a = 1; my $b = 2; my $c = [$a, $b]; $a++; say $c.perl 21:49
p6eval nom ee65d3: OUTPUT«[2, 2]␤»
jnthn perl6: my $a = 1; my $b = 2; my $c = [$a, $b]; $a++; say $c.perl 21:50
p6eval rakudo ee65d3: OUTPUT«[2, 2]␤»
..pugs b927740, niecza v10-61-gbacff10: OUTPUT«[1, 2]␤»
jnthn b: my $a = 1; my $b = 2; my $c = [$a, $b]; $a++; say $c.perl
p6eval b 1b7dd1: OUTPUT«[1, 2]␤»
jnthn tssk
Turns out that a bug in take and return masked this issue in various tests. 21:52
Now I've fixed take and return I have broken tests, seemingly because of the above.
jnthn perl6: sub foo(*@a) { @a[0]++ }; my $a = 1; foo([$a]); say $a; 22:04
p6eval pugs b927740: OUTPUT«*** Can't modify constant item: VRef <Array:0x7f7a165a3459>␤ at /tmp/aEdoMWmRdK line 1, column 16-24␤»
..niecza v10-61-gbacff10: OUTPUT«␤Unhandled Exception: cannot increment a value of type Array␤ at line 0 (ExitRunloop @ 0) ␤ at /home/p6eval/niecza/lib/CORE.setting line 25 (CORE Mu.succ @ 8) ␤ at line 0 (ExitRunloop @ 0) ␤ at /tmp/tAEBNKPPi_ line 0 (MAIN foo @ 0) ␤ at /tmp/tAEBNKP…
..rakudo 18dea9: OUTPUT«Method 'succ' not found for invocant of class 'Array'␤ in sub postfix:<++> at src/gen/CORE.setting:1065␤ in sub foo at /tmp/M_C4AkFn8l:1␤ in block <anon> at /tmp/M_C4AkFn8l:1␤ in <anon> at /tmp/M_C4AkFn8l:1␤»
jnthn perl6: sub foo(*@a) { @a[0]++ }; my $a = 1; foo($a); say $a;
p6eval niecza v10-61-gbacff10: OUTPUT«2␤»
..rakudo 18dea9: OUTPUT«1␤»
..pugs b927740: OUTPUT«*** Can't modify constant item: VInt 1␤ at /tmp/IiGrqIKufP line 1, column 16-24␤»
jnthn b: sub foo(*@a) { @a[0]++ }; my $a = 1; foo($a); say $a; 22:05
p6eval b 1b7dd1: OUTPUT«1␤»
nornagest Good night! 22:27
lue rakudo: role A { }; role B is A { }; say "alive!"; # I thought roles could only be applied with does. bug? 23:52
p6eval rakudo 18dea9: OUTPUT«alive!␤»