»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by sorear on 25 June 2013.
00:01 k1lldash9 joined
k1lldash9 hi there 00:01
Mouq hello
k1lldash9 any recommendtations to the best "distro" to attempt perl 6 on? 00:02
I mainly use centos 6
I am very curious to see it! 00:03
timotimo if you're on linux, it's easy enough to build stuff for yourself if your distro doesn't have up-to-date packages for you
k1lldash9 ahh okay, I wasn't sure if there were maybe glibc or gcc dependencies that I may not have on cent 6
timotimo you could just build a java rakudo and not need gcc at all :) 00:04
k1lldash9 ahh okay, that makes sense :)
timotimo but you will need a java that's new enough to have invokedynamic and that stuff, i think that's java 7?
k1lldash9 I do have java 7
guessing if you can do that.. you could then run it under Windows, yeah? 00:05
(not that I want to, just curious)
timotimo great. all you need in that case is a clone of github.com/rakudo/rakudo and run ConfigureJVM.pl - i *think* it will give you the option to run --gen-nqp for java as well, though if it won't, just get a checkout of github.com/perl6/nqp in place and run ConfigureJVM.pl there, then "make all install" 00:06
(no need to sudo make install, it'll just install inside the checkout by default)
rakudo on jvm will give you terrible startup times, though :( 00:07
and you can use our evalbot to run snippets of code in here by starting lines with r:
r: "greetings kill -9".words.perl.say 00:08
camelia rakudo e55c66: OUTPUT«(signal SEGV)»
timotimo
r: say "hello?"
camelia rakudo e55c66: OUTPUT«hello?␤»
timotimo r: say "foo bar baz".words
camelia rakudo e55c66: OUTPUT«foo bar baz␤»
timotimo r: say "foo bar baz".words.perl
camelia rakudo e55c66: OUTPUT«("foo", "bar", "baz").list␤»
timotimo r: "foo bar baz".words.perl.say
camelia rakudo e55c66: OUTPUT«("foo", "bar", "baz").list␤»
timotimo r: "greetings kill -9".words.perl.say
camelia rakudo e55c66: OUTPUT«("greetings", "kill", "-9").list␤»
timotimo well, whatever that was didn't happen twice
jnthn Maybe got unlucky when it was part way through installing the latest build or something 00:09
00:11 sftp left
k1lldash9 wow thanks for the input! 00:12
timotimo good sources for example code and things to try are rosettacode and the perl6 advent calendar
TimToady factored out common code on rosettacode.org/wiki/Zhang-Suen_thi...thm#Perl_6 00:23
timotimo gather for 1..v-2 X 1..h-2 -> \y,\x { take y*h + x } - is this not the same without the gather and take? 00:26
dalek rl6-roast-data: f617131 | coke++ | perl6_pass_rates.csv:
today (automated commit)
00:30
00:30 sftp joined
lue TimToady: do I do 'perl6 zst.p6 FILE' or 'FILE > perl6 zst.p6' ? (I'm guessing the first one) 00:35
nvm, it just took a while to start :)
Mouq I like how rosettacode.org/wiki/Hofstadter_Q_s...nce#Perl_6 has an OO version about the same size as all the other languages, and then it has this increadibly tiny, easier to understand, idiomatic solution 00:36
timotimo those methods for postcircumfix will no longer work, though
lue
.oO(If only there were an antithesis to U+2588 FULL BLOCK for monospacing purposes, Timtoady's solution with " █" would align)
00:42
timotimo: wait, why wouldn't those multi methods work? Seem fine to me. 00:43
timotimo spec change
postcircumfix:<[ ]> is now a sub with multi dispatch rather than a method
i thought it got committed into nom alread
lue Why could it not simply be specified as a method though? Is it just more annoying to generate or something? 00:44
Mouq If so, S13 hasn't been updated: perlcabal.org/syn/S13.html#Type_Casting
(I don't think those pretty "@.[ **@slice ]" methods have been implemented anywhere though) 00:45
grondilu TimToady: why not 'constant DEBUG = True' instead of 'my $DEBUG = 1;'? 00:46
timotimo good point.
lue: all i know is that methods cannot easily be dispatched at compiletime, whereas subs can
jnthn Yeah, it's a performance thing, largely 00:47
Also consistency: postfixes are subs, so why not postcircumfixes?
But we really want the inlining for native arrays.
When somebody finally gets around to implementing them. ;) 00:48
TimToady don't use the csv file, use an image of the .# file 00:49
lue Oh. Too late :) 00:50
lue hopes image wasn't meant in the .png sense
TimToady no, just ascii graphics
lue that's what I thought :) 00:52
actually, I did take the image, and not the csv file. 00:54
lue is a couple minutes away from a fun gist :)
Incidentally, you can do the low bit/high bit thing with a couple of particular characters: gist.github.com/lue/7063531 (I only changed the output here, not the original file's .# usage) 01:01
TimToady unfortunately, FULL BLOCk is 0 :/ 01:04
lue :( Not like it mattered, there's no guaranteed-same-width EMPTY BLOCK 01:05
jnthn Hah! Snowmen and comets! :P 01:07
TimToady okay, modified to use contant and avoid gather/take where list comprehension works
(still needs a "do" though)
tried ==> but it isn't a statement separator in rakudo yet 01:08
jnthn Will try and get to that during my upcoming vacation/hacking 01:09
'cus I want to work on the parallelism aspects of ==> too
lue jnthn: annoyingly, the bits mean it has to be COMET SNOWMAN for low/high, instead of the right way 'round. But other than that, :)
jnthn I'm pretty sure the average comet has a lower temperature than the average snowman... :P
Been pondering what the API is for a ==> chain 01:10
geekosaur maybe they're measuring ISON :p
jnthn I'm wondering if we should do a Linq-ish thing where you use the type of the first thing to choose the monad or something...
So we can maybe do the observer pattern for reactive programming in a robuster way than I did in my YAPC::NA talk... 01:11
Wiring the subscriptions up with ==> I mean
In fact, I think it was that talk that motivated the change of ==> to a statement sep... :) 01:12
01:13 telex left
TimToady well, my motivation had nothing to do with that, and everything to do with statement-terminating right curly working as expected when ==> is on the next line 01:13
01:14 telex joined
TimToady and also just a general feeling that pipes should connect larger pieces than mere expressions 01:14
after all, they connect entire processes in shell programming 01:15
jnthn TimToady: Oh, I know that was the motivation for the fix, I just recalled it was me writing parens in a bunch of examples that were the trigger :)
TimToady and we want more control of scoping into the sides of feeds ops
ah, that may well be :) 01:16
jnthn It caught me out, so I'm happy to see that bit fixed
Just pondering the rest :)
Though, I've gotta catch a train at some point tomorrow, so maybe I should be pondering sleep... )) 01:17
'night o/
TimToady if we need to make guarantees about external data structures are readable/writeable to one of the feed or the other 01:18
in order to preserve sanity, then we can do so
o/
*one side
01:30 PZt left 01:31 ssutch left 01:32 ssutch joined 01:37 berekuk left 02:17 benabik joined 02:20 grondilu left 02:25 PZt joined 02:43 benabik left 02:46 cognominal left 02:47 {amon} joined 02:49 LWA left 02:55 REPLeffect left 03:08 REPLeffect joined 03:40 preflex left 03:42 preflex joined, ChanServ sets mode: +v preflex 04:07 xinming joined 04:11 xinming_ left 04:20 raiph left 04:40 rindolf joined 04:41 rindolf left
[Coke] nqp-j: say(nqp::jvmeqaddr(Int,Num)) 04:46
camelia: help
camelia [Coke]: Usage: <(rakudo-jvm|nqp-jvm|star|pugs|nqp|std|niecza|rakudo|p5-to-p6|b|nqp-moarvm|nom|r|j|nqp-m|nqp-mvm|pnr|p6|nr|npr|n|perl6|rj|p56|prn|rn|r-j|r-jvm|p|rnp|nrp|rpn)(?^::\s) $perl6_program>
[Coke] nqp-jvm: say(nqp::jvmeqaddr(Int,Num))
camelia nqp-jvm: OUTPUT«1␤»
[Coke] .to jnthn : is this a bug? say(nqp::jvmeqaddr(Int,Num)) - returns true if they are both type objects, even if they aren't the same type 04:47
yoleaux [Coke]: I'll pass your message to jnthn.
diakopter :-)=-O 05:12
05:14 bruges left, bruges joined
TimToady updated the OO solution for rosettacode.org/wiki/Hofstadter_Q_s...nce#Perl_6 05:15
but the idiomatic solution *still* doesn't work under rakudo
Mouq r: my @Q = 1, 1, -> $a, $b { (state$n=1)++; @Q[$n-$a] + @Q[$n-$b] } ... *; 05:18
camelia ( no output )
Mouq rakudo doesn't like recursive constants, it seems
r: my @Q = 1, 1, -> $a, $b { (state$n=1)++; @Q[$n-$a] + @Q[$n-$b] } ... *; @Q[^10].say 05:19
camelia rakudo e55c66: OUTPUT«1 1 2 3 3 4 5 5 6 6␤»
Mouq n: constant @Q = 1, 1, -> $a, $b { (state$n=1)++; @Q[$n-$a] + @Q[$n-$b] } ... *; @Q[^10].say
camelia niecza v24-98-g473bd20: OUTPUT«1 1 2 3 3 4 5 5 6 6␤»
TimToady recursive constants are, like, 90% of Haskell... 05:21
Mouq I think the it's just not being added the scope soon enough 05:26
TimToady agreed
moritz \o 05:28
Mouq o/
TimToady the my form happens to work because it notices that it's infinite and de-eagerizes it 05:29
Mouq r: constant @time-out = 1...*; 05:30
camelia ( no output )
TimToady constant = is really more like a binding or a definition 05:31
not really assignment, so not eager
the semantics of pseudoassignment to any declaration depends on the declarator 05:33
05:36 odoacre left
TimToady for a constant, it's purely definitional, not even binding, since binding changes the meaning of the symbol after the fact, which keeps recursion from working 05:39
it has to be kind of a before-the-fact binding, if it's a binding 05:42
05:54 SamuraiJack joined 06:09 BenGoldberg left
Mouq hates emitting tons of debugging statements only to realize that the mistake is a dumb typo 06:17
06:21 {amon} left
moritz Mouq: that's an experience we have all made several times :-) 06:21
06:22 LWA joined 06:40 silumantengkorak joined 06:41 silumantengkorak left 06:42 kaare_ joined 06:45 LWA left, LWA joined 06:47 rhr left 06:53 rhr joined
lue suddenly envisioned a module that adds a say statement after every existing statement, emitting the state of variables used in the previous statement 06:58
07:06 ssutch left 07:21 clkao left 07:30 darutoko joined 07:49 denisboyun joined 07:55 SamuraiJack left
yogan I'm trying a little tail recursion example with pattern matching, and can't get it to work. I have those two multi subs: 07:57
multi sub sum () returns Int { 0 }
multi sub sum (*$x, *@xs) returns Int { $x + sum(@xs) }
sum(1, 2, 3); # gives me "max. recursion depth exceeded" with rakudo 07:58
Is my syntax wrong, or is this not supported?
Mouq r: multi sum(){0}; multi sum ($x, *@xs) { $x + sum(|@xs) }; say sum(1,2,3) 08:07
camelia rakudo e55c66: OUTPUT«6␤»
Mouq n: multi sum(){0}; multi sum ($x, *@xs) { $x + sum(|@xs) }; say sum(1,2,3)a
camelia niecza v24-98-g473bd20: OUTPUT«===SORRY!===␤␤Two terms in a row at /tmp/zpwCmOBhdn line 1:␤------> *@xs) { $x + sum(|@xs) }; say sum(1,2,3)⏏a␤␤Parse failed␤␤»
Mouq n: multi sum(){0}; multi sum ($x, *@xs) { $x + sum(|@xs) }; say sum(1,2,3)
camelia niecza v24-98-g473bd20: OUTPUT«6␤»
Mouq r: multi sum(--> Int){0}; multi sum (Int $x, *@xs --> Int) { $x + sum(|@xs) }; say sum(1,2,3) # still works 08:08
camelia rakudo e55c66: OUTPUT«6␤»
Mouq yogan: In Perl 5 something like what you wrote would work. Perl 6, however, doesn't automatically flatten lists (for good reason), and so @xs ends up getting assigned to $x. |@xs flattens it 08:11
08:12 Rotwang joined
yogan Mouq: Ah, got it! So I ended up with the whole list in $x on every call... no wonder it won't terminate. :-) 08:13
Oh, and making $x slurpy was also redundant. That made no sense. 08:15
Mouq Yeah, that confused me. I'm surprised it's valid 08:16
std: sub w (*$x) { 1 } 08:17
camelia std a0bcfb1: OUTPUT«Potential difficulties:␤ $x is declared but not used at /tmp/p6na5bgWfa line 1:␤------> sub w (*⏏$x) { 1 }␤ok 00:01 124m␤»
Mouq std: sub w (*$x) { $x }
camelia std a0bcfb1: OUTPUT«ok 00:01 125m␤»
yogan Makes only sense for @ and %... 08:18
Mouq Oh, nvm
yogan Well, I guess it doesn't hurt, either.
FROGGS r: sub w(*$x) { say $x }; w()
camelia rakudo e55c66: OUTPUT«===SORRY!===␤CHECK FAILED:␤Calling 'w' will never work with no arguments (lines 1, 1)␤ Expected: :($x)␤»
Mouq "To match the first element of the slurpy list, use a "slurpy" scalar: sub quicksort (:$reverse, :$inplace, *$pivot, *@data)"
FROGGS r: sub w(*$x) { say $x }; w(1)
camelia rakudo e55c66: OUTPUT«1␤»
FROGGS r: sub w(*$x) { say $x }; w(1, 2)
camelia rakudo e55c66: OUTPUT«===SORRY!===␤CHECK FAILED:␤Calling 'w' will never work with argument types (Int, Int) (lines 1, 1)␤ Expected: :($x)␤»
08:18 berekuk joined
FROGGS okay, it doesn't affect $x on rakudo 08:19
n: sub w(*$x) { say $x }; w()
camelia niecza v24-98-g473bd20: OUTPUT«␤»
FROGGS n: sub w(*$x) { say $x }; w(1)
camelia niecza v24-98-g473bd20: OUTPUT«1␤»
FROGGS n: sub w(*$x) { say $x }; w(1, 2)
08:19 donaldh left
camelia niecza v24-98-g473bd20: OUTPUT«1 2␤» 08:19
FROGGS interesting
so, both are wrong 08:20
08:20 berekuk left
FROGGS nn: sub w(*$x) { say $x }; w([1, 2]) # should say 1, right? 08:20
nr: sub w(*$x) { say $x }; w([1, 2]) # should say 1, right?
camelia rakudo e55c66, niecza v24-98-g473bd20: OUTPUT«1 2␤» 08:21
FROGGS no
nr: sub w(*$x) { say $x }; w(1, 2) # but this
camelia niecza v24-98-g473bd20: OUTPUT«1 2␤»
..rakudo e55c66: OUTPUT«===SORRY!===␤CHECK FAILED:␤Calling 'w' will never work with argument types (Int, Int) (lines 1, 1)␤ Expected: :($x)␤»
08:21 donaldh joined
Mouq nr: sub w(*$x,*@x) { say $x; say @x }; w(1, 2) 08:21
FROGGS needs moar coffee
camelia rakudo e55c66: OUTPUT«1␤2␤»
yogan Adding a slurpy array as Mouq showed in the quicksort example helps. 08:22
camelia ..niecza v24-98-g473bd20: OUTPUT«1 2␤␤»
FROGGS ahh, yes
Mouq++
Mouq nr: sub w($x,*@x) { say $x; say @x }; say &w.candidates 08:26
camelia rakudo e55c66: OUTPUT«sub w($x, *@x) { ... }␤»
..niecza v24-98-g473bd20: OUTPUT«sub w(Any $x, *@x) { ... }␤»
Mouq nr: sub w(*$x,*@x) { say $x; say @x }; say &w.candidates
camelia niecza v24-98-g473bd20: OUTPUT«sub w(Any *$x, *@x) { ... }␤»
..rakudo e55c66: OUTPUT«sub w($x, *@x) { ... }␤»
Mouq nr: sub w(*@x) { say @x }; w() 08:27
camelia rakudo e55c66, niecza v24-98-g473bd20: OUTPUT«␤»
dalek p: cfaf30e | dwarring++ | examples/rubyish/ (7 files):
rubyish - added .nil? method. removed non-standard // op
retupmoca is there a good way to get the local machine's hostname in perl6? 08:38
I have some code that's calling out to /bin/hostname, but that just feels like a bad idea
and won't work on windows
k1lldash9 look for the reverse DNS resolution maybe? 08:39
that's of course if the RDNS is setup correctly, so that might be a bad idea as well
retupmoca Ideally there would be something similar to perl5's Sys::Hostname 08:40
maybe I'll have to write that 08:41
k1lldash9 ahh good point
FROGGS nr: say gethost # this is what is specced at S29:488 08:43
synopsebot Link: perlcabal.org/syn/S29.html#line_488
camelia niecza v24-98-g473bd20: OUTPUT«===SORRY!===␤␤Undeclared routine:␤ 'gethost' used at line 1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1502 (die @ 5) ␤ at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.com…»
..rakudo e55c66: OUTPUT«===SORRY!===␤no ICU lib loaded␤»
retupmoca my local rakudo says gethost is undeclared 08:45
since that's in the spec, I'll just run /bin/hostname until gethost is implemented then 08:48
FROGGS on the other hand you could implement it :o) 08:49
retupmoca could do that too 08:50
it would be a good excuse to open up rakudo's source 08:51
08:51 dmol joined 09:00 denisboyun left 09:31 Mouq left 09:35 pecastro joined 09:57 Rotwang left 10:00 Rotwang joined
arnsholt jnthn: I think I've binary-searched my way to the appropriate patch for the bug from last night 10:01
I don't understand the inner workings of P6Opaque.class and friends well enough to understand *why*, but it seems we need to create a new delegate in change_type if the original object has a delegate, even though the derived type has the same number of attributes 10:03
That sound reasonable?
10:04 spider-mario joined 10:08 denis_boyun joined 10:13 benabik joined, benabik left 10:30 berekuk joined 10:37 denis_boyun__ joined 10:39 denis_boyun left 10:44 dmol left
jnthn arnsholt: That sounds like we might be hiding/working around a real bug... 10:44
yoleaux 04:47Z <[Coke]> jnthn: : is this a bug? say(nqp::jvmeqaddr(Int,Num)) - returns true if they are both type objects, even if they aren't the same type
jnthn arnsholt: If they're the same number of attributes they should also be the exact same attributes...
10:45 berekuk left, dmol joined
jnthn arnsholt: If you put in such a fix, I'd file an issue saying that it needs a closer look 10:46
arnsholt Hmm. Right
I'll pick at it some more then 10:49
10:49 dmol left
jnthn What does the patch that you have that avoids the problem look like, ooc? 10:50
arnsholt gist.github.com/arnsholt/7068002 10:51
The only thing that's really changed is the if condition 10:52
I factored out the repeated casts to P6OpaqueBaseInstance while I was at it, since the condition wouldn't gotten really overlong 10:53
*would've gotten
jnthn yeah, that's the kinda thing I thought you meant. Hm 11:00
11:04 berekuk joined
arnsholt I tried just redoing the loop setting the delegate thingies, but that didn't work 11:08
For some reason it has to create a new delegate
Oh, but the old delegate has the wrong type, doesn't it? 11:10
Could it be that inside the postcircumfix:<( )> it tries to look up the method via the delegate?
11:12 xenoterracide left 11:15 PacoAir joined
jnthn arnsholt: Method dispatch *shouldn't* ever do that... 11:23
arnsholt Hmm 11:24
11:24 sqirrel joined
jnthn That is, it's meant to look at the st 11:24
Which is update din the top-level object
arnsholt Yeah
jnthn The delegate should only be known on the inside of P6opaque
That is, if we're screwing something up with it, it should most probably be something in one of the REPR methods not checking for the delegate, or something... 11:25
arnsholt Yeah, that makes sense 11:26
11:28 berekuk left 11:29 berekuk joined 11:31 hummeleB1 joined 11:39 colomon left 11:47 SamuraiJack joined
jnthn travel & 11:53
FROGGS jnthn: have fun
11:57 colomon joined 12:02 SamuraiJack left 12:11 zakharyas joined 12:17 cognominal joined 12:23 kaare_ left 12:27 berekuk left 12:38 hummeleB1 left, dmol joined 12:39 hummeleB1 joined 12:43 hummeleB1 left
dalek p/unified-build: 43315a1 | moritz++ | / (8 files):
factor out common definitions from the Makefile-$backend.in files to a Makefile-common.in
12:49
moritz 8 files changed, 103 insertions(+), 202 deletions(-) 12:50
arnsholt Nice!
13:07 denis_boyun__ left 13:08 denis_boyun joined 13:09 zakharyas left 13:10 sqirrel left 13:13 GlitchMr left, GlitchMr joined 13:20 denis_boyun left 13:23 stevan_ left 13:31 grondilu joined 13:36 xinming left 13:38 xinming joined 13:45 kaare_ joined 13:58 ggoebel10 joined 13:59 berekuk joined, ggoebel9 left 14:00 ajr joined, berekuk left, ajr is now known as Guest73241, Guest73241 is now known as ajr_ 14:07 ggoebel11 joined 14:10 ggoebel10 left 14:11 BenGoldberg joined
dalek p/unified-build: bc9e3ce | moritz++ | tools/build/Makefile-Moar.in:
[moar] start to move generated files to gen/moar
14:22
p/unified-build: 0dee6c2 | moritz++ | tools/build/Makefile-Moar.in:
[moar] move moar generated files to gen/moar/
p/unified-build: 9b35f5d | moritz++ | / (2 files):
[parrot] get rid of useless gen/ subdirs

now that we build stuff in gen/parrot, it is redundant
also clean up cleanup list
14:26 aindilis left 14:27 stevan_ joined 14:37 spider-mario left 14:44 rindolf joined 14:47 denisboyun joined 14:54 denisboyun left 14:59 denisboyun joined 15:26 jaffa4 joined
jaffa4 hi all 15:27
does anyone use panda?
timotimo most people here do 15:30
jaffa4 it fails with Failed to remove the file '.work\1382200940_1\.git\objects\pack\pack-0c0f1cd3bec5dca5469eff761cf3bc2ac89d1d61.pack': unlink failed: Access is denied. 15:31
timotimo did you do anything as root recently? with sudo?
jaffa4 that is windows
timotimo rakudo recently learned to really delete files on windows, that should work 15:32
out of curiosity, what did you try to do?
jaffa4 you know top secret, I do not know if I should tell you ,I tried to install a module 15:33
timotimo the exact command please? what module?
that should be happening after the build is complete, right?
jaffa4 not sure maybe it is complete 15:34
How can I check that?
masak jaffa4: I guess the interesting thing is whether you can recreate the exact error. 15:35
timotimo well, what's the output?
there should be many lines of output normally
masak jaffa4: if you can, then someone with their fingers in the panda guts will be able to help you much better.
jaffa4 panda install XML::Writer 15:36
dalek p/unified-build: 4a1558c | moritz++ | tools/build/Makefile-JVM.in:
[JVM] remove useless gen/ dirs

that stuff is in gen/jvm/ anyway
15:37 Mouq joined
jaffa4 where does panda install the modules? 15:37
pastebin.com/Z9MRRtAq 15:39
masak: like who? 15:40
timotimo parrot 5.5, eh? i think you're on an outdated rakudo, but that's understandable, the new compiler is out, iirc, but not our rakudo star release
rm_rf in shell::command has been taught to handle stubborn files on windows recently 15:41
github.com/tadzik/Shell-Command - see if you can get this into panda and bootstrap it again? 15:42
jaffa4 I have ini file module for perl 5, is it worth translating into perl 6? 15:43
japhb__ Those long backtraces are insane, BTW. I see in one of them unlink happening supposedly inside mkdir.
timotimo there is a Config::INI module for perl6, you could see if it lacks features you have
github.com/tadzik/perl6-Config-INI/ 15:44
oh, whaaaat? that's weird, japhb__
jaffa4 yes, mine is different, much more functions
I used mine for a small memory database 15:45
japhb__ Oh, in answer to the question about install location, it installs to the site lib. 15:47
r: say %*CUSTOM_LIB<site>
camelia rakudo e55c66: OUTPUT«/home/p6eval/nom-inst/lib/parrot/5.9.0-devel/languages/perl6/site␤»
15:49 dmol left
jaffa4 C:/rakudo/lib/parrot/5.5.0/languages/perl6/site 15:53
masak jaffa4: like who? tadzik, timo, donaldh, moritz -- or so it seems from the panda commit log. 15:59
jaffa4 timotimo: bootstraping? how do I do that?
timotimo run bootstrap.pl or what it's called
it's just a perl6 script
inside the panda folder
16:00 patspam left, dmol joined
jaffa4 there is no such a file 16:03
timotimo 16:06
timotimo there is not? 16:07
jaffa4 no
timotimo in that case, you have to clone github.com/tadzik/panda
that way you should get a sufficiently up-to-date Shell::Command, too, to get around the rm_rf problem
at least i hope so
for now i gotta run 16:08
japhb__ jaffa4: Remember to clone with --recursive 16:12
16:18 k1lldash9 left 16:19 denisboyun left
Mouq :D 16:32
Mouq figured out how to bootstrap his changes
…And it worked!
moritz \o/ 16:33
16:36 denis_boyun joined, jaffa4 left 16:43 denis_boyun left 16:54 kurahaupo joined 16:56 berekuk joined 16:58 berekuk left 17:00 Vlavv` left 17:07 kurahaupo left, kurahaupo_ joined 17:12 Vlavv` joined 17:13 kurahaupo_ is now known as kurahaupo 17:16 kurahaupo left, kurahaupo joined 17:25 cognominal left 17:26 cognominal joined 17:28 ajr_ left 17:29 kurahaupo left 17:30 kurahaupo joined
masak accidentally trips over a box of pins, dropping some of them on the floor 17:36
oh! by the way,
I had some macro thoughts today. but I haven't had the tuits to write them up yet.
got pulled into a very ambitious dumpling making session. :)
moritz masak: sounds fun :-) 17:42
moritz made some bløtkake for $wife 17:43
17:43 rindolf left 17:46 timotimo left 17:50 timotimo joined
yogan What's the reason that private attributes of classes are undefined by default, but public attributes are initialized with Any? 17:51
timotimo i don't understand. Any is undefined, too 17:52
yogan moritz: Du weißt, wie komisch bløtkake auf deutsch klingt, gell? ;-)
timotimo do you have a snippet of code to show that behavior?
yogan Sure, let me make it compact...
17:53 darutoko left
yogan r: class A { has $.x; has $!y }; A.new.perl.say; 17:53
camelia rakudo e55c66: OUTPUT«A.new(x => Any)␤»
masak yogan: that just means private-only attributes are not visible from the outside. 17:54
yogan: (as they shouldn't be, since they are not public)
yogan Oh, I see. .perl tricked me... 17:55
Is there some built-in way to dump an object?
timotimo there is .DUMP
r: class A { has $.x; has $!y }; A.new.DUMP.say
camelia rakudo e55c66: OUTPUT«A<1>(␤ :x(▶Any),␤ :$!y(Any)␤)␤»
yogan Ha! Nice. 17:56
FROGGS .perl is what Data::Dumper is for p5
masak r: class A { { has $.x; has $!y }; .say for A.^attrs
camelia rakudo e55c66: OUTPUT«===SORRY!=== Error while compiling /tmp/O6vLABCQf_␤Unable to parse expression in block; couldn't find final '}'␤at /tmp/O6vLABCQf_:1␤------> { has $.x; has $!y }; .say for A.^attrs⏏<EOL>␤ expecting any of:␤ …»
timotimo (implementation specific)
Mouq r: class A { has $.x; has $!y }; .say for A.^attrs
camelia rakudo e55c66: OUTPUT«No such method 'attrs' for invocant of type 'Perl6::Metamodel::ClassHOW'␤ in block at /tmp/BaR1tRi6sS:1␤␤» 17:57
timotimo r: class A { has $.x; has $!y }; .say for A.^attributes
camelia rakudo e55c66: OUTPUT«Mu $!x␤Mu $!y␤»
17:59 [Sno] left
dalek p/unified-build: 09388f6 | moritz++ | tools/build/Makefile-Parrot.in:
[parrot] start to rename Makefile variables

the idea is to join the various Makefiles eventually, so we should avoid name collisions.
No functional changes
18:00
18:00 [Sno] joined 18:06 GlitchMr left 18:07 GlitchMr joined
masak moritz++ 18:11
japhb__ Didn't panda used to be able to 18:14
'panda install .'? Or am I just forgetting? 18:15
18:17 kurahaupo left
moritz fiddling that much with the build system isn't all too much fun 18:19
most changes need a full recompile, and error messages are often cryptic 18:20
masak long builds kill the fun of most things. 18:24
humans enjoy rapid feedback.
moritz and that's the second problem
most of my patches don't improve much for themselves 18:25
yogan What is the meaning of ▶ in the output of .DUMP? 18:26
japhb__ yogan: The thing in question is containerized 18:27
moritz yogan: I have no idea, but my guess would be a scalar container
japhb__ (inside a scalar container)
yogan: A few other things are marked tersely like that, such as using the infinity symbol for infinite lists. 18:29
Mouq r: (1...*).DUMP.say 18:31
camelia rakudo e55c66: OUTPUT«∞List<1>(␤ :$!flattens(Mu),␤ :$!items(▶Mu),␤ :$!nextiter(∞ListIter<3>(␤ :$!list(=List<1>),␤ :$!reified(▶Mu),␤ :$!nextiter(▶Mu),␤ :$!rest(QRPA<4>(␤ ∞List<5>(␤ :$!flatten…»
yogan japhb__: Sorry, but what is containerized?
japhb__ moritz: It's definitely really important work, though. It's going to make my life easier. 18:32
18:32 jferrero left
japhb__ yogan: As I said, held inside a scalar container. Basically, held at a level of indirection. 18:32
18:32 jferrero joined
yogan japhb__: As in, lazy evaluated? Or what implications does the holding in a scalar container have? 18:33
Mouq r: (1, * * (1+1/2)...2).DUMP.say
camelia rakudo e55c66: OUTPUT«List<1>(␤ :$!flattens(Mu),␤ :$!items(▶Mu),␤ :$!nextiter(ListIter<3>(␤ :$!list(=List<1>),␤ :$!reified(▶Mu),␤ :$!nextiter(▶Mu),␤ :$!rest(QRPA<4>(␤ List<5>(␤ :$!flattens(Mu),␤…»
japhb__ Mouq: DUMP output can rapidly get really large. Sometimes there's a LOT of magic going in seemingly simple things. 18:35
Hmmm, there are a lot of hits for 'git grep container' in the specs tree. 18:37
yogan: I think any answer I could give would be either oversimplify or else immediately beg another question. I defer to the specs on this. 18:38
yogan japhb__: Sure. I'll read it up. 18:39
Mouq Aha! I can't compile because I did what I was trying to do too well :p / :s $<capture> = [a|b] / means / $<capture> = [[a|b]<.ws>] /, according to the rules. Kinda un-dwimmy though
japhb__ The short answer is that you often don't care about whether something is inside a scalar container or not; they are "translucent" in the sense that most of the time, Perl 6 just sees through scalar containers to whatever is inside. There are of course operations for which it matters (otherwise it wouldn't be visible at all), but the specs will give you the details on that. 18:40
masak interesting, a live programming language: research.microsoft.com/en-us/people...spx?iedz00
research.microsoft.com++ 18:41
lue hello world o/ 18:42
japhb__ If the entire world greets you back, that could get rather deafening. So I'll just say: "o/ lue!" 18:43
18:43 berekuk joined
masak japhb__: that certainly puts the "hello world" program into some perspective. 18:45
lue r: # say "HELLO LUE!" for ^7_000_000_000 18:48
camelia ( no output )
japhb__ :-D
masak well, that's if "world" is "Earth humans", sure... :) 18:50
Mouq r: say "Combined recording of the world saying hello back: {55 + 10*log(7_000_000_000)} decibles"
camelia rakudo e55c66: OUTPUT«Combined recording of the world saying hello back: 281.691759860017 decibles␤»
Mouq I'm sure you'll be fine 18:51
geekosaur iirc 110's enough to cause deafness
18:52 xenoterracide joined 18:53 SamuraiJack joined
masak Mouq++ # science 18:54
19:11 denis_boyun joined 19:16 denis_boyun left 19:18 SamuraiJack left
Mouq un-afk 19:18
www.gcaudio.com/resources/howtos/loudness.html "Loudest sound possible — 194dB"
That doesn't seem right though 19:19
moritz would be surprised if a nuclear bomb produces less than 194dB
jnthn evening, #perl6 19:20
geekosaur exponential scale, remember 19:22
Mouq Ah, apparently after 194dB in air, it stops being 'sound' :p
moritz Mouq: and is "explosion"? 19:23
geekosaur 194dB is probably the point at which molecules stop vibrating because they're completely disrupted
timotimo Mouq: that's probably where air liquefies or something like that :)
geekosaur although technically that doesn't stop sound
Mouq en.wikipedia.org/wiki/Sound_pressu...ure_levels 19:24
geekosaur liquids carry sound though
ah, ok, clipping, that makes sense 19:25
for some reason I thought it would take a higher amplitude than that to lead to vacuum in the troughs 19:27
19:28 Rotwang left 19:30 dmol left
lue
.oO(It should be possible to use either gravitational waves (should they exist) or somehow cause ripples in the fabric of spacetime to send sounds around IN SPACE.)
19:35
timotimo those would still be clipped to the speed of light, though? 19:37
19:44 Rotwang joined
geekosaur unclear 19:47
if general relativity is correct then gravitational waves *are* ripples in the fabric of spacetime, and as such are not constrained by the speed of light 19:49
dalek p/unified-build: 3b237b5 | moritz++ | tools/build/Makefile- (4 files):
put more variables into Makefile-common.in
19:50
p/unified-build: 86406eb | moritz++ | / (6 files):
More Makefile unification and disambiguation

Makefile fix for PERL
19:50 dalek left 19:51 dalek joined, ChanServ sets mode: +v dalek 19:53 denis_boyun joined
japhb__ I have a collection of modules, some of which can be compiled with all rakudo variants, and some of which need concurrency (so don't work on rakudo-parrot). I'd like to be able to install this collection into each rakudo I build, regardless of backend. However, panda will refuse to do the install on rakudo-parrot because some modules don't compile. 19:57
Thoughts on working around this?
I could split into multiple module collections (doesn't represent how I treat them, really), I could hack panda to take some kind of ignore compile failures flag, ... 19:59
masak japhb__: what's the simplest thing that could possibly work? 20:00
moritz eval
20:00 ssutch joined
masak suggestion: make that work now. 20:00
arnsholt jnthn: I've whacked a bit at the bug we talked about, and think I've found something potentially interesting 20:12
Consider the updated version of the test script in gist.github.com/arnsholt/7059777 20:15
20:16 denis_boyun left
arnsholt After the mixin with does, inside the trait handlers, $r has the correct type. But outside of them in the normal script, it's a Sub+{Foo} instead of the Sub+{Foo}+{Bar[Str]} we want 20:16
Does that give you any thoughts?
20:17 denisboyun joined
FROGGS maybe it is just its gistification? 20:19
arnsholt No, there's a behvaiour bug as well 20:20
The bar method isn't visible for some reason 20:22
FROGGS you want to mixin a method into a sub? 20:23
arnsholt I want to add a method to the sub object 20:24
(This is an actual regression in NativeCall on Rakudo/JVM, FWIW) 20:25
I'm just having a devil of a time figuring out what's going on (and whether it's a Rakudo or NQP bug) 20:26
jnthn arnsholt: I wonder if the clone (from taking a closure) is to blame... 20:27
p/unified-build: 1a09cc6 | moritz++ | Configure (2 files):
Unify Configure.pl and ConfigureMoar.pl

now "perl Configure.pl --backends=moar" creates a Makefile suitable for building nqp on Moar
moritz ok, enough build and Configure hacking for today
what's up with dalek? 20:29
jnthn arnsholt: Also, if maybe when we don't make a fresh delegate, it has an .st that needs updating 20:30
20:31 Exodist left
arnsholt Right 20:31
So it's just the subs themselves being closures, or something else I'm not seeing?
masak lol, I... didn't quite blog, but I wrote some thoughts about a possible "each" macro. gist.github.com/masak/7074924 -- comments welcome. 20:32
20:34 Exodist joined
grondilu r: sub f { $^x**2 }; say f each ^10 20:34
camelia rakudo e55c66: OUTPUT«===SORRY!=== Error while compiling /tmp/ZMIa04MpZ8␤Undeclared routine:␤ each used at line 1␤␤»
grondilu std: sub f { $^x**2 }; say f each ^10 20:35
camelia std a0bcfb1: OUTPUT«ok 00:01 125m␤»
grondilu n: sub f { $^x**2 }; say f each ^10
camelia niecza v24-98-g473bd20: OUTPUT«===SORRY!===␤␤Undeclared routine:␤ 'each' used at line 1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1502 (die @ 5) ␤ at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_u…»
masak grondilu: conjectural feature :)
arnsholt & # bedtime 20:36
FROGGS moritz: it is obviously not dalek's day
masak grondilu: especially since it depends (as the gist explains) on a conjectural macro feature... 20:39
lue masak: this is "eager Junction" each, right?
grondilu masak: I was not sure if the gist was suggesting an alternative implementation other an existing one. 20:41
20:43 kaare_ left
masak lue: dunno what you mean by "eager Junction". 20:44
lue: but one of the (small) problems with the each junction is that it's quite different in semantics from the spec'd four.
lue not "eager", but "ordered" rather 20:45
masak I think I see what you mean by "eager" -- an "each" basically "evaporates" wherever you put it -- you can never store an "each" in a container like you can with the other junction types.
lue masak: no, I just misremembered the description of Each. S02 set me straight :P 20:46
masak an "each" is basically a for loop that pretends to be a single item value.
lue that's a better way to describe it actually. An ordered superposition doesn't make much sense outright. 20:48
moritz
.oO( ordered superstition )
20:50
dalek p/unified-build: ef0d520 | moritz++ | Configure (2 files):
munge ConfigureJVM.pl into Configure.pl
20:54
20:55 pmurias joined
FROGGS cool! 20:55
pmurias masak: re the live programming language it would be nice if they provided an executable 20:56
moritz next up: sleep, really & 20:57
FROGGS moritz: sleep well! #parrot spammer
gnight 21:12
timotimo gnite froggs 21:14
21:15 LWA left
Ulti this sounds oddly like all the goals of Perl6... x.rubini.us/ 21:23
which is kind of funny considering the ending 21:24
"Purge the Perl
In general, anything inspired by Perl should be removed"
:S
lue (I almost guarantee the first thing you'll see someone picking up Rubinius-X doing is creating a way to emulate global variables.) 21:28
timotimo thought so as well 21:31
they'll probably get it up and running in less than 13 years, though
jnthn sleep & 21:36
geekosaur but it will be Less Than Awesome 21:37
timotimo maybe we'll have a working implementation of rubinius x on nqp before they do on rubinius :P 21:42
and then we make one more iteration of the design and write "purge all the ruby" where we mention forbidding to open classes at runtime and such 21:43
geekosaur that said, this is about the future of Ruby? I'm actually inclined to agree with removing the Perlisms, because in general Ruby took the worst of Perl instead of the best
timotimo this is more like a fork, actually
21:47 dmol joined 21:50 colomon left 21:51 colomon joined 21:53 Rotwang left 22:05 denisboyun left
dalek p/stdsigspace: 22fc9a6 | Mouq++ | src/QRegex/P6Regex/ (2 files):
Attempt at getting sigspacing right
22:24
p/stdsigspace: 9939724 | Mouq++ | src/ (3 files):
Try to do sigspace better in NQP::Grammar
p/stdsigspace: 729fab5 | Mouq++ | src/QRegex/P6Regex/ (2 files):
Do sigspace even more right

Now only finds sigspace after an allowed metachar
p/stdsigspace: 8ad1461 | Mouq++ | src/ (3 files):
Small fixes to sigspace
p/stdsigspace: 3b73abb | Mouq++ | src/NQP/Grammar.nqp:
Replace sigspace in NQPGrammar so we can bootstrap
p/stdsigspace: 7f835ad | Mouq++ | src/ (11 files):
Bootstrap sigspace and get up to make
Mouq had to push eventually
It doesn't pass make test yet 22:25
timotimo :) 22:27
cool stuff
22:27 d4l3k_ joined, dalek left, d4l3k_ is now known as dalek
pmurias re rubinius x are the issues they claim to solve serious problems in ruby? 22:33
22:33 langdon_ joined
pmurias or is the main reason for the fork to bring interest to rubinius itself? 22:34
22:38 langdon_ left 23:04 berekuk_ joined 23:06 grondilu left, berekuk left
dalek p: d44b791 | Mouq++ | docs/ops.markdown:
[docs] nqp::getcomp and nqp::bindcomp
23:11
timotimo Mouq: it confuses me, that you would do my $lang = My::Lang::Compiler.new() rather than passing just the class 23:17
[Coke] Mouq++ 23:18
dalek p: bc45c01 | Mouq++ | docs/ops.markdown:
[docs] missing apos
Mouq nqp: class A {}; nqp::bindcomp('bla', A.new) 23:19
camelia ( no output )
Mouq nqp: class A {}; nqp::bindcomp('bla', A)
camelia ( no output )
23:20 dwarring left
retupmoca p5eval: print hex("0F"); # what's the perl6 version of this? 23:20
p5eval retupmoca: 151
Mouq nqp: class A {}; nqp::bindcomp('bla', A); say(nqp::what(nqp::getcomp('bla'))) 23:21
camelia nqp: OUTPUT«␤»
Mouq nqp: class A {}; nqp::bindcomp('bla', A.new); say(nqp::what(nqp::getcomp('bla')))
camelia nqp: OUTPUT«␤»
Mouq nqp: class A {}; class bla {}; nqp::bindcomp('bla', A.new); say(nqp::what(nqp::getcomp('bla')))
camelia nqp: OUTPUT«␤»
Mouq Hrm
timotimo: I'm not sure if it makes a difference. HLL::Compiler passes self to it, so I went with a .new()ed class 23:22
retupmoca r: say '0x0f'.Num 23:23
camelia rakudo e55c66: OUTPUT«15␤»
retupmoca oh
ok
timotimo Mouq: ok
Mouq r: say 0x0f 23:24
camelia rakudo e55c66: OUTPUT«15␤»
timotimo since you can call .new on instances usually... yeah
Mouq r: say :16<0f>
camelia rakudo e55c66: OUTPUT«15␤»
Mouq r: say :16<f>
camelia rakudo e55c66: OUTPUT«15␤»
Mouq r: say :16(15) 23:25
camelia rakudo e55c66: OUTPUT«Nominal type check failed for parameter '$str'; expected Str but got Int instead␤ in sub unbase at src/gen/CORE.setting:6446␤ in block at /tmp/9yj7nQt8IN:1␤␤»
Mouq r: say :16('0f')
camelia rakudo e55c66: OUTPUT«15␤»
retupmoca and that works even better 23:26
lue going through the slides again, it's fun to force yourself to not give up on a particular exercise (just because you want to go to the next ones) and then succeed.
r: say "0x0F".Int; say +"0x0F"
camelia rakudo e55c66: OUTPUT«15␤15␤»
23:28 pmurias left 23:32 xenoterracide left 23:34 gshank left
dalek osystem: 1f6efff | (Andrew Egeler)++ | META.list:
Add MIME::QuotedPrint
23:38
retupmoca ^ that code is probably the slow way to do it, but it seems to work 23:39
timotimo yeah, string concat is pretty slow, you'd be better off having the bytes pushed into a list, then joining them at the end 23:40
you can do some timings
23:42 gshank joined
retupmoca so, is there a base64 module that isn't parrot-specific? 23:43
I saw Enc::MIME::Base64, but panda won't compile it here
because there are already two base64 modules - I'd rather not write another one 23:44
dalek rl6-most-wanted: 285a60a | (Andrew Egeler)++ | most-wanted/modules.md:
Update modules.md
23:50
timotimo r: say "retupmoca".list.reverse.join("") 23:52
camelia rakudo e55c66: OUTPUT«retupmoca␤»
timotimo r: say "retupmoca".comb.reverse.join("")
camelia rakudo e55c66: OUTPUT«acomputer␤»
timotimo r: say "retupmoca".reverse
camelia rakudo e55c66: OUTPUT«retupmoca␤»
23:52 dmol left 23:55 colomon left 23:56 colomon joined
retupmoca huh, irssi didn't highlight on that 23:56
and yes, I came up with this name when I was...13 or so?
japhb__ It appears that nqp::copy on JVM does not by default copy over an existing file, while it does on parrot. The JVM behavior results in being unable to successfully update modules installed with panda without manually removing the old installed files first. 23:57
lue r: say "bolton".flip 23:58
camelia rakudo e55c66: OUTPUT«notlob␤»