»ö« 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:07 jeffreykegler joined
jeffreykegler Tweet re Larry & craiglist: twitter.com/jzawodn/status/390609563113631744 00:13
00:14 araujo left, araujo joined, Psyche^ left
jeffreykegler I 00:14
I am assuming it's true, and if so, congrats 00:15
00:18 Psyche^ joined
BenGoldberg So I've got a silly question... I realize of course that the "proper" perl6 idiom for returning a numerically 0 value whose boolean truth-y-ness is True, is "return 0 but True". However, it seems to me that it will probably be faster and more memory efficient to simply " 00:22
to simply "return '0e0';"
grondilu r: say so 0e0 00:23
camelia rakudo e22ac2: OUTPUT«False␤»
00:23 berekuk left
BenGoldberg r: say so '0e0' 00:23
camelia rakudo e22ac2: OUTPUT«True␤»
grondilu oh 00:24
BenGoldberg Quotes matter
grondilu well, that's a neet trick. Maybe the optimizer could turn 0 but True into '0e0'
00:24 nebuchadnezzar joined
grondilu though it would not do the Boolean role. 00:25
r: say '0e0' ~~ Bool
camelia rakudo e22ac2: OUTPUT«False␤»
grondilu r: say (0 but True) ~~ Bool
camelia rakudo e22ac2: OUTPUT«False␤»
grondilu r: say '0e0' ~~ True 00:26
camelia rakudo e22ac2: OUTPUT«Potential difficulties:␤ Smartmatch against True always matches; if you mean to test the topic for truthiness, use :so or *.so or ?* instead␤ at /tmp/hGrSAs45BG:1␤ ------> say '0e0' ~~⏏ True␤0e0True␤»
grondilu r: say (0 but True) ~~ True
camelia rakudo e22ac2: OUTPUT«Potential difficulties:␤ Smartmatch against True always matches; if you mean to test the topic for truthiness, use :so or *.so or ?* instead␤ at /tmp/c7apyxHS64:1␤ ------> say (0 but True) ~~⏏ True␤0True␤»
synopsebot Link: perlcabal.org/syn/S64.html#line_1
grondilu ah nevermind 00:27
BenGoldberg Well, ideally, the optimizer would create a singleton 0 but True object, and all places which do "return 0 but True" would really do "return $zerobuttrue.clone" or some such.
r: say True ~~ Bool 00:28
camelia rakudo e22ac2: OUTPUT«True␤»
BenGoldberg r: say False ~~ Bool 00:29
camelia rakudo e22ac2: OUTPUT«True␤»
BenGoldberg r: say (-1 but False)
camelia rakudo e22ac2: OUTPUT«-1␤»
BenGoldberg r: say (-1 but False) ~~ Bool;
camelia rakudo e22ac2: OUTPUT«False␤»
grondilu r: my $one = "one" but 1; say $one + 2; 00:35
camelia rakudo e22ac2: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏one' (indicated by ⏏)␤ in method Numeric at src/gen/CORE.setting:11892␤ in sub infix:<+> at src/gen/CORE.setting:3884␤ in sub infix:<+> at src/gen/CORE.setting…»
grondilu n: my $one = "one" but 1; say $one + 2;
camelia niecza v24-98-g473bd20: OUTPUT«Unhandled exception: Cannot parse number: one␤ at /home/p6eval/niecza/lib/CORE.setting line 1536 (die @ 5) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3745 (ANON @ 10) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3747 (NumSyntax.str2num @…»
grondilu thought this would work 00:36
diakopter :}
00:38 jeffreykegler left
[Coke] nqp: say(nqp::what(nqp::rand_n(100.2))) 00:39
camelia nqp: OUTPUT«error:imcc:syntax error, unexpected NREG, expecting '(' ('$N5001')␤ in file '(file unknown)' line 60382055␤␤␤»
grondilu r: say 1 but "one" 00:40
camelia rakudo e22ac2: OUTPUT«one␤»
grondilu r: say 2 + (1 but "one")
camelia rakudo e22ac2: OUTPUT«3␤»
grondilu r: say 2 + ("one" but 1)
[Coke] nqp-jvm: say(nqp::what(nqp::rand_n(100.2)))
camelia rakudo e22ac2: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏one' (indicated by ⏏)␤ in method Numeric at src/gen/CORE.setting:11892␤ in sub infix:<+> at src/gen/CORE.setting:3884␤ in sub infix:<+> at src/gen/CORE.setting…»
nqp-jvm: OUTPUT«␤»
[Coke] nqp-jvm: say(nqp::rand_n(100.2))
camelia nqp-jvm: OUTPUT«22.108048225152885␤»
[Coke] nqp-m: say(nqp::rand_i(123124)) 00:41
camelia nqp-moarvm: OUTPUT«7502744162270190791␤»
[Coke] O_o
is that a bug?
nqp-m: say(nqp::rand_n(12.3124)) 00:42
camelia nqp-moarvm: OUTPUT«0.406725␤»
[Coke] nqp-m: say(nqp::rand_n(12.3124))
camelia nqp-moarvm: OUTPUT«0.406725␤»
[Coke] nqp-m: say(nqp::rand_n(12.3124))
camelia nqp-moarvm: OUTPUT«0.406725␤»
[Coke] O_o
nqp-m: nqp::srand();say(nqp::rand_n(12.3124))
camelia nqp-moarvm: OUTPUT«No registered operation handler for 'srand'␤compile_op␤»
[Coke] nqp-m: nqp::seed();say(nqp::rand_n(12.3124))
camelia nqp-moarvm: OUTPUT«Arg count 0 doesn't equal required operand count 1 for op 'seed'␤compile_mastop␤»
[Coke] nqp-m: nqp::seed(124);say(nqp::rand_n(12.3124))
camelia nqp-moarvm: OUTPUT«0.249771␤»
[Coke] nqp-m: nqp::seed(124);say(nqp::rand_n(12.3124)) 00:43
camelia nqp-moarvm: OUTPUT«0.249771␤»
[Coke] nqp-m: nqp::seed(4);say(nqp::rand_n(12.3124))
camelia nqp-moarvm: OUTPUT«0.161399␤»
[Coke] forgets the low level bit. :P
anyway, we have 3 different backends each with 3 different sets of rand*.
Mouq nqp-m: for (0,1,2,3,4,5) { say(nqp::rand_n(12.3124)) } 00:47
camelia nqp-moarvm: OUTPUT«Rebuild in progress␤»
Mouq
.oO( I need to make errors and program output output from camelia differently sometime, but that requires serious code refactoring)
00:48
nqp-m: for (0,1,2,3,4,5) { say(nqp::rand_n(12.3124)) } 00:49
camelia nqp-moarvm: OUTPUT«0.406725␤0.878274␤0.947417␤0.207722␤0.03578␤0.900015␤»
Mouq nqp: say(nqp::rand_n(12.3124)) 00:50
camelia nqp: OUTPUT«error:imcc:syntax error, unexpected NREG, expecting '(' ('$N5001')␤ in file '(file unknown)' line 43759623␤␤␤»
Mouq ...huh? 00:51
TimToady yes, I am now officially at craigslist as Artist in Residence, which is all true, except for the "residence" part, and maybe the "artist" part :) 01:16
01:17 dayangkun left
TimToady I guess I'm just "in", except that doesn't seem too true either... 01:17
01:19 dayangkun joined 01:20 pdurbin joined
[Coke] TimToady++ 01:20
I hope it's a great situation for you. 01:21
TimToady they have real good health insurance :) 01:27
and so far they seem like a great bunch of folks
01:28 jnap left
TimToady the sort of folk who just like to quietly do good in the world :) 01:29
pdurbin TimToady: the best kind. and nice that they mentioned perl6 right in the tweet. congrats! 01:30
TimToady yes, they are intentionally supporting what I am already doing :D 01:31
pdurbin a nice hack
TimToady and put it very plainly that I was not allowed to feel like I was mooching :) 01:32
pdurbin TimToady: after all you've done... mooch a little :)
TimToady I do expect I can help them too, but for now I'm just hanging out on the internal channels too see if there's anything I can give advice on 01:33
also "we're hiring" :) 01:34
pdurbin :)
TimToady but they're also really excited by the potential of Perl 6 to help them down the road 01:36
diakopter o_O 01:38
Mouq Congratulations TimToady! 01:39
pdurbin TimToady: anything in particular they're especially excited about? 01:40
TimToady potential efficiency, concurrency, internationalization 01:41
pdurbin gotcha 01:42
TimToady as with most people in this line of work, they'd like to get more done with less electricity :)
pdurbin oh sure. green computing 01:43
japhb__ Congrats TimToady!
[Coke] checks out the job postings. 01:44
pdurbin I was listening to mostlyerlang.com/2013/10/07/019-eli...ose-valim/ today and twitter.com/joeerl was talking about elixir-lang.org , saying something to the effect that Elixir is the first language he knows of that's designed with so much input from so many people on the Internet... very different than when he designed Erlang in relative isolation. But of course, I was thinking, 01:48
"What about perl6.org/archive/rfc/ ?"
01:56 colomon left 01:57 colomon joined
colomon TimToady++ 02:01
02:40 grondilu left 02:53 sniz joined
Mouq rnp: sub foo (**@slice) { say +@slice }; foo; foo(); 02:55
camelia pugs: OUTPUT«*** ␤ Unexpected "*@"␤ expecting formal parameter␤ at /tmp/MZifywwrna line 1, column 11␤»
..niecza v24-98-g473bd20: OUTPUT«===SORRY!===␤␤Slice parameters NYI at /tmp/q5sm00iBec line 1:␤------> sub foo (**@slice⏏) { say +@slice }; foo; foo();␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setti…»
..rakudo e22ac2: OUTPUT«0␤0␤»
02:57 jeffreykegler joined
Mouq r: sub foo (**@slice) { say +@slice }; foo; foo(); foo('a',('b','c')) 02:57
camelia rakudo e22ac2: OUTPUT«0␤0␤2␤»
03:03 mattp_ left 03:09 xinming left 03:11 xinming joined, xenoterracide joined 03:15 jeffreykegler left 03:20 mattp_ joined 03:43 preflex left 03:45 Myk267 joined 03:46 preflex joined, ChanServ sets mode: +v preflex, xenoterracide left 03:48 mattp_ left 03:50 mattp_ joined 03:56 uvtc joined
uvtc Hi, #perl6. I've seen the term "fakecutable" (fake executable) in the logs here and in #moarvm. What is a fakecutable? 03:57
Also, congratulations on the work news, TimToady. Sounds like a nice company. 03:58
Well, contratulations to them as well, actually. :) 04:02
BenGoldberg A fake executable is a script pretending to be an executable :) For example, a program named 'rakudo' which you can use to run perl6 programs, but which is actually an sh script instead of an executable binary program 04:04
04:07 xinming_ joined 04:08 jeffreykegler joined
uvtc Oh. Thanks, Ben. Yes. Like when you expect the program to be a binary, but it turns out to be a script which delegates to the binary --- or is a symlink to it. 04:09
04:10 xinming left
uvtc So, eventually, there should be a `perl6` fakecuteable which delegates to rakudo, or moar, or whichever Perl 6 impl you've selected/installed. Reminds me of the Debian alternatives system. 04:12
jeffreykegler TimToady: a very classy and assertive move by craiglist. As I understand it, your ability to devote full-time to Perl 6 will be a change, right? 04:13
uvtc r/installed/installed, I'm guessing/ 04:15
TimToady well, getting paid for it will be :) 04:16
jeffreykegler Again, congratulations on this much deserved piece of good fortune 04:18
uvtc Oh, little appearance of Perl 6 in a reply to <news.ycombinator.com/item?id=6559177>. 04:19
04:22 sniz left 04:27 [Sno] left 04:37 PZt left
diakopter uvtc: actually we use fakecuteable to mean an executable compiled from generated C that is a wrapper to launch the VM with your sript precompiled as bytecode or something 04:40
uvtc diakopter, Ah, that's a mouthful. :) Now I remember where I first heard that term. Back when Rakudo on Parrot was just coming on line, or, well, when a perl6 executable was finally becoming available. 04:43
diakopter, Thanks for the clarification. 04:45
diakopter uvtc: mouthful is my middle name 04:46
uvtc :)
04:48 BenGoldberg left 04:51 uvtc left 04:52 fgomez joined, fgomez left
lue
.oO(diamouthfulkopter?)
04:58
05:12 jeffreykegler left 05:13 dwarring joined, genehack joined
dwarring r: say False but True 05:13
camelia rakudo e22ac2: OUTPUT«True␤»
dwarring ;) 05:14
05:28 rindolf joined
diakopter r: say True but False 05:36
camelia rakudo e22ac2: OUTPUT«False␤»
diakopter r: say False but False
camelia rakudo e22ac2: OUTPUT«False␤»
diakopter r: say False but False but False but False but False 05:37
camelia rakudo e22ac2: OUTPUT«===SORRY!=== Error while compiling /tmp/MpBa8Rm41k␤Operators 'but' and 'but' are non-associative and require parenthesis␤at /tmp/MpBa8Rm41k:1␤------> say False but False ⏏but False but False but False␤ expecting…»
lue r: say False but "FILE_NOT_FOUND"
camelia rakudo e22ac2: OUTPUT«False␤»
diakopter r: say False but die
camelia rakudo e22ac2: OUTPUT«␤ in block at /tmp/rx2k5yAdpK:1␤␤»
diakopter r: say False but ...
camelia rakudo e22ac2: OUTPUT«Stub code executed␤current instr.: 'throw' pc 402455 (src/gen/CORE.setting.pir:169079) (src/gen/CORE.setting:10512)␤called from Sub 'sink' pc 438520 (src/gen/CORE.setting.pir:182308) (src/gen/CORE.setting:11902)␤called from Sub 'MAIN' pc 399 (src/gen/perl…»
05:39 rindolf left
diakopter r: say False but but 05:39
camelia rakudo e22ac2: OUTPUT«===SORRY!=== Error while compiling /tmp/K0JB24qy5Z␤Undeclared routine:␤ but used at line 1␤␤»
05:39 rindolf joined
dwarring heh 05:42
JimmyZ r: say False but Pi
camelia rakudo e22ac2: OUTPUT«===SORRY!=== Error while compiling /tmp/e7AiPvaQ2t␤Undeclared name:␤ Pi used at line 1␤␤»
dwarring r: say False but True but False 05:43
camelia rakudo e22ac2: OUTPUT«===SORRY!=== Error while compiling /tmp/uEl3fsPFoa␤Operators 'but' and 'but' are non-associative and require parenthesis␤at /tmp/uEl3fsPFoa:1␤------> say False but True ⏏but False␤ expecting any of:␤ po…»
dwarring nah
r: say ((False but True) but False) but True 05:44
camelia rakudo e22ac2: OUTPUT«True␤»
05:47 [Sno] joined 05:48 DarthGandalf left 05:49 rindolf left 06:05 Myk267 left 06:09 PZt joined 06:13 raiph joined 06:23 raiph left
dwarring r: say True does False but True 06:29
camelia rakudo e22ac2: OUTPUT«===SORRY!=== Error while compiling /tmp/8sNBfloiX8␤Operators 'does' and 'but' are non-associative and require parenthesis␤at /tmp/8sNBfloiX8:1␤------> say True does False ⏏but True␤ expecting any of:␤ p…»
06:29 SamuraiJack_ joined 06:37 FROGGS joined
masak TimToady++ # craigslist 06:59
craigslist++ # TimToady
JimmyZ What does this mean? I can't follow it ... 07:01
07:06 dayangkun_ joined
masak JimmyZ: irclog.perlgeek.de/perl6/2013-10-17#i_7723695 07:08
JimmyZ Yeah, I saw it. But I still don't what it is 07:10
07:10 dayangkun left
JimmyZ don't know 07:10
masak JimmyZ: craigslist? it's a very early c2c site.
powered by Perl.
JimmyZ oh, I never heard about it 07:12
nwc10 JimmyZ: news.perlfoundation.org/2012/01/cra...d-don.html 07:18
masak craigslist++
nwc10 that is pleasing news
masak ss/craigslist has become <(uquibuitous)> with/synonymous/ # :) 07:19
JimmyZ craigslist++ 07:20
07:43 woolfy left, salv0 left
lizmat craigslist++ indeed # TimToady 07:44
07:44 salv0 joined
lizmat continues with decommute& 07:44
07:44 lizmat left 07:48 darutoko joined
masak .oO( $decommute.resume ) 07:51
08:01 iSlug joined 08:05 berekuk joined 08:07 berekuk left 08:08 daxim joined
mathw I think I might know too many cool programming languages 08:09
FROGGS mathw: write slangs for all of them and then you just can mix them properly :o) 08:16
08:17 sqirrel joined 08:26 dakkar joined 08:31 dmol joined 09:03 aindilis` joined 09:04 aindilis left
moritz so, today is rakudo release day, right? 09:10
++[Coke]
09:14 darutoko left 09:16 hlin_ joined 09:17 hlin_ left, hlin_ joined, hlin_ left
mathw FROGGS: ultimately, that'd be really cool :) 09:18
09:18 darutoko joined 09:20 hypolin left 09:22 cognominal left 09:32 dansamo joined, cognominal joined
masak ooh, release day. 09:33
now with more Moar!
hm, at least for the NQP release.
mathw yes, Rakudo on Moar isn't there yet AIUI 09:37
very exciting though
moritz IMHO it would be nice to git-tag moar for the nqp release 09:38
FROGGS doit 09:39
09:39 pernatiy left
FROGGS we are unable to checkout that version though 09:39
or does --gen-moar handle that?
moritz is there a --gen-moar? 09:41
FROGGS I thought there is 09:43
(and I thought you added it fwiw)
sad, there is no such option :/ 09:44
moritz FROGGS: no, I just added --install to moar's Configure.pl 09:48
FROGGS: I meant to do --gen-moar, but so far haven't got around to it 09:49
FROGGS well, I think we won't really need it until rakudo has landed on moar too
09:49 cognominal left 09:55 fhelmberger joined 09:56 nwc10 left, nwc10 joined 09:57 nwc10 left, nwc10 joined
dalek p/unified-build: d9060a7 | moritz++ | / (3 files):
create a ./nqp launcher
09:58
p/unified-build: 4bcb5a1 | moritz++ | tools/build/Makefile-Parrot.in:
build NQP launcher by default; use it in test runs
moritz and with that, the unified-build branch of nqp is testable again
10:01 woosley left
moritz meh, nqp install is broken in that branch :/ 10:05
masak \o/ /o\ 10:06
moritz oh, probably just a stupid thinko on my part, and easy to fix
moritz tries to be optimistic
dalek rlito: 1bbe89c | (Flavio S. Glock)++ | / (4 files):
Perlito5 - perl6 - refactor_range_operator
10:12
rlito: f7a7e8f | (Flavio S. Glock)++ | / (3 files):
Perlito5 - perl6 - refactor_range_operator - use .keys
10:17 iSlug left 10:31 avuserow left
dalek p/unified-build: 5dcc094 | moritz++ | tools/build/Makefile-Parrot.in:
fix installation

also split up "install" in "base-install" and "exec-install". The former installs the binary as nqp-p, the latter as nqp as well
10:38
moritz ok, rakudo build on top of nqp/unified-build succeeded 10:41
now it just needs a .bat launcher on windows 10:43
10:44 avuserow joined 10:47 pdurbin left
dalek Heuristic branch merge: pushed 102 commits to Perlito/replito by creaktive 10:49
11:05 berekuk joined 11:10 berekuk left 11:19 berekuk joined 11:32 grondilu joined
[Coke] thanks moritz++ for reminding him about the release. 11:56
[Coke] warns folks that it will be late in the day here before it happens. 11:57
[Coke] has not scheduled his day well around the release. :)
but I am happy to do it. 11:58
[Coke] scurries away to dayjob.
12:08 cognominal joined 12:09 cognominal left, cognominal joined 12:18 berekuk left
c1sung d 12:27
12:28 ggoebel7 joined, fglock joined 12:30 ggoebel6 left
fglock p56: 0..$#x, 0..$#$x, 0..$#{func()} 12:31
camelia p5-to-p6 : OUTPUT«@x.keys(), $x.keys(), func().keys()␤»
12:31 berekuk joined 12:36 SamuraiJack_ left, SamuraiJack joined 12:39 colomon left 12:40 avuserow left 12:43 pernatiy joined 12:44 PacoAir joined
TimToady those parens are never necessary, btw 12:45
12:47 colomon joined 12:53 avuserow joined
TimToady fglock: because argumentless methods are indistinguishable from attribute accessors, to Perl 6, and accessors are treated more like nouns than like verbs, so the () is really kinda non-idiomatic 12:55
12:59 colomon left 13:00 colomon joined
grondilu p5eval: my @x = 1 .. 3; print join ' ', 0 .. $#x 13:02
p5eval grondilu: 0 1 21
grondilu p5eval: my @x = 1 .. 3; join ' ', 0 .. $#x
p5eval grondilu: 0 1 2
grondilu r: my @x = 1 .. 3; print @x.keys
camelia rakudo e22ac2: OUTPUT«012»
grondilu thought $#x was the number of elements 13:03
FROGGS no, highest index 13:05
scalar @x is the element count
grondilu yeah, makes sense
masak I once read a blog post where someone had found some Perl teaching material that pointed out that $#x returns @x-1 and then went on to say "this is a bug in Perl and will be fixed in the next version" o.O 13:06
13:07 dwarring left
grondilu p56: 1..$#x 13:08
camelia p5-to-p6 : OUTPUT«1 .. @x.end␤»
grondilu p56: 0..* # just curious 13:09
camelia p5-to-p6 : OUTPUT«missing value after operator '..' at perlito5.pl line 1385.␤»
grondilu oops, wrong sense
p65: # testing 13:10
masak p56: my $x = "HAI"; "OH ${x}" 13:11
camelia p5-to-p6 : OUTPUT«my $x = 'HAI';␤'OH ' ~ $x␤»
masak nice.
Util r: my ($x, $y, $dx, $dy) = 15, 25, 1, 10; ($x, $y) = ($x + $dx, $y + $dy); say [$x, $y];
camelia rakudo e22ac2: OUTPUT«16 35␤»
Util r: my ($x, $y, $dx, $dy) = 15, 25, 1, 10; ($x, $y) Z+= ($dx, $dy); say [$x, $y];
camelia rakudo e22ac2: OUTPUT«15 25␤»
Util Is this just due to op+= being NYI? 13:12
masak r: my ($x, $y, $dx, $dy) = 15, 25, 1, 10; ($x, $y) Z[+=] ($dx, $dy); say [$x, $y];
camelia rakudo e22ac2: OUTPUT«15 25␤»
masak r: my ($x, $y, $dx, $dy) = 15, 25, 1, 10; ($x, $y) [Z+]= ($dx, $dy); say [$x, $y];
camelia rakudo e22ac2: OUTPUT«===SORRY!=== Error while compiling /tmp/Z6OMDgPnr0␤Preceding context expects a term, but found infix = instead␤at /tmp/Z6OMDgPnr0:1␤------> dx, $dy) = 15, 25, 1, 10; ($x, $y) [Z+]=⏏ ($dx, $dy); say [$x, $y];␤»
masak Util: no, I don't know what's going on there. 13:13
Util: looks like a bug to me.
Util masak: thanks! 13:16
masak (it also looks a little familiar, so it might be submut already) 13:17
Util masak: I will check before submitting the bug. It looks familiar to me, too. 13:19
moritz it's something to do with the Z metaop losing the container somewhere, iirc 13:20
or producing a new container
FROGGS masak: you are a git pro: how can I step back one single commit? like checking out one commit before the one I am on?
moritz git checkout HEAD^ 13:21
or if you want to revert your branch to it, git reset --hard HEAD^ # loses the newest commit, and potentially uncommitted changes
masak what moritz said.
I have the latter alternative aliased as 'git undo' here :)
moritz in #git I would have answered with !revert, which lists that and a few other options 13:22
(like git revert)
FROGGS ahh, cool
moritz: thanks!
masak also, the 'loses' is a truth with modification: when you have 'git reflog', nothing is really lost for a month or so.
moritz right, only the uncommitted changes are actually lost
timotimo except unstaged changes
masak right. 13:23
timotimo the uncommitted changes are not lost, if they are staged. but they are really hard to find :P
masak if you 'reset --hard', don't come to me afterwards and whine about uncommitted changes :P
timotimo: troo
timotimo: but then we are definitely not in the porcelain anymore, Dorothy.
masak .oO( timototo ) 13:24
moritz timotimo: so how does one recover formerly-staged diffs?
timotimo if you remember the contents, you can grep your object storage :P
masak moritz: they will be a tree object somewhere in the object db.
timotimo i don't think there will actually be a tree 13:25
masak there will.
the staging area is a tree.
timotimo since the staged changes are usually just in the index file, no?
masak hm.
timotimo oh, that also goes into the object db?
masak suddenly I'm not sure.
grondilu p5eval: my $foo = "bar"; sub f { "foo" }; "${f()}";'
p5eval grondilu: ERROR: Can't find string terminator "'" anywhere before EOF at (eval 7) line 1.
moritz p5eval: my $foo = "bar"; sub f { "foo" }; "${\f()}";' 13:26
grondilu p5eval: my $foo = "bar"; sub f { "foo" }; "${f()}";
p5eval moritz: ERROR: Can't find string terminator "'" anywhere before EOF at (eval 7) line 1.
grondilu: No output
timotimo masak: i'll set up a little experiment and tell you the result
moritz p5eval: my $foo = "bar"; sub f { "foo" }; "${\f()}";
p5eval moritz: foo
masak timotimo: ah, it's not a tree until something does 'git-write-tree' on the staging area...
timotimo: (which generally happens during commit)
grondilu p56: my $foo = "bar"; sub f { "foo" }; "${\f()}";
camelia p5-to-p6 : OUTPUT«my $foo = 'bar';␤our sub f (*@_) {␤ 'foo'␤}␤$(\f())␤»
FROGGS what discussion have I started /o\ 13:27
grondilu r: my $foo = 'bar'; sub f { "foo" }; $(\f())
camelia ( no output )
masak p56: my $x = 2; { my $x = $x }
camelia p5-to-p6 : OUTPUT«my $x = 2;␤{␤ my $x = $x␤}␤»
grondilu r: my $foo = 'bar'; sub f { "foo" }; say $(\f())
masak ^^^ wrong
camelia rakudo e22ac2: OUTPUT«foo␤»
moritz r: my $foo = 'bar';␤our sub f (*@_) { 'foo' }; say $(\f())
camelia rakudo e22ac2: OUTPUT«foo␤»
moritz FROGGS: a fun discussion 13:28
timotimo oh, git stores all objects non-plain? what do they do to the contents?
grondilu forgot how to do indirections in P5 :/
FROGGS ahh, good *phew*
timotimo i thought a blob object was just the word "blob", a length and then the content or something?
moritz timotimo: gzip, iirc 13:29
timotimo ah, i should be able to zgrep, right?
zgrep doesn't do -r?! :-(
moritz thread.gmane.org/gmane.comp.version...git/236238 if you are interested in some pack object details :-)
masak timotimo: they are all gzipped, yes.
timotimo no, not pack files please :P 13:30
masak right, pack files are the next step.
things are zipped already in the .git/objects stage.
13:30 jnap joined
timotimo moritz: there's a german talk with a recording somewhere, that uses a tool that displays the whole object db as a graph next to a console and then does some operations completely without porcelain *or* plumbing, just writing the files directly 13:30
masak hard-core. 13:31
timotimo surprisingly unhard actually :)
masak timotimo: if you want to see something nice, check out e83c516 of git.git 13:32
timotimo: a *very* small git.
(it's the first git commit)
timotimo the first git commit of git itself? cool :)
masak yep.
~1300 lines of C code. 13:33
moritz and linus only committed it once he was able to commit it with git, of course :-)
13:34 skids joined 13:35 sorear left, kaare_ joined
masak of course. 13:35
but those were purely plumbing commands.
13:35 lowpor03 joined
FROGGS moritz: the main-usage-with-j4-bug seems to be introduced by github.com/rakudo/rakudo/commit/9e...237cc4b943 13:36
moritz: but reverting it doesnt make it go away :o(
moritz FROGGS: doesn't seem likely to me that that's actually the problem 13:37
FROGGS but the commit before works... which is github.com/rakudo/rakudo/commit/cd...4bb66a6857 13:38
jnthn timotimo: If you want to see the contents of a blob, git cat-file -p beefcafe 13:39
moritz FROGGS: IMHO it's more likely that that's a glitch in the bisect
FROGGS moritz: that is why I re-ran these manually 13:40
timotimo jnthn: i want to grep all my objects to see if one of them has staged-but-not-committed trees
jnthn git fsck --lost-found # may find them
FROGGS ohh damn 13:41
moritz: false alarm, my windows vm got killed, so the last pass might be a false positive
jnthn Then look at the ones in .git/lost-found/other 13:42
they aren't gzip'd under there iirc so you can grep 'em more easily
13:43 lowpro30_ joined
jnthn You may also be able to use git grep, if you can find a way to feed it all the trees... 13:43
masak ooh, .git/lost-found
jnthn ...oh, but you said you didn't have a tree... 13:44
bbiab
grondilu p56: our $foo = "bar"; ${"foo"} 13:46
camelia p5-to-p6 : OUTPUT«our $foo = 'bar';␤$('foo')␤»
grondilu p5eval: our $foo = "bar"; ${"foo"}
p5eval grondilu: bar
fglock TimToady: re non-idiomatic - thanks, fixing
grondilu r: our $foo = "bar"; say $('foo')
13:46 lowpor03 left
camelia rakudo e22ac2: OUTPUT«foo␤» 13:46
masak grondilu: $() just itemizes a thing. 13:47
r: my $foo = 'bar'; say $::"foo"
camelia rakudo e22ac2: OUTPUT«===SORRY!===␤ResizablePMCArray: index out of bounds!␤»
masak o.O
r: my $foo = 'bar'; say ::'$foo' 13:48
FROGGS r: our $foo = "bar"; say $::('foo')
camelia rakudo e22ac2: OUTPUT«===SORRY!=== Error while compiling /tmp/E_9tOhWPDD␤Two terms in a row␤at /tmp/E_9tOhWPDD:1␤------> my $foo = 'bar'; say ::⏏'$foo'␤ expecting any of:␤ postfix␤ infix stopper␤ infix or m…»
rakudo e22ac2: OUTPUT«bar␤»
FROGGS r: our $foo = "bar"; say ::('$foo')
camelia rakudo e22ac2: OUTPUT«bar␤»
masak submits rakudobug
TimToady under strict refs, p56 can assume it's getting a hard ref to ${}, but under no strict it can't really know whether it's getting a string or a ref 13:51
so we probably need to throw a disambiguating call in there that hardens a soft ref 13:52
13:53 lowpro30__ joined
diakopter o_O 13:55
TimToady diakopter: that's why we changed it in p6 :)
symbolic deref is always a different syntax in P6 from normal deref 13:56
13:57 lowpro30_ left
hoelzro [Coke]++ # docs 13:57
diakopter o_O at awakeness
TimToady oh, had to take Tertia et al. to the airport 13:58
diakopter masak: did you see the rj: constant a = a in the backlog
13:58 sorear joined
diakopter sorear: howdy :) 13:59
13:59 lowpro30_ joined
colomon sorear! \o/ 13:59
FROGGS hi sorear!
diakopter rj: constant a = a
camelia rakudo-jvm e22ac2: OUTPUT«===SORRY!===␤java.lang.NullPointerException␤»
TimToady so what's gonna be the abbrev for the js backend? s? e? 14:00
masak diakopter: does... does that go in the RT perl6 queue? guess it does. 14:01
masak submits rakudobug
FROGGS TimToady: not that we have no chars (graphemes?) left some day for new backends O.o 14:02
14:03 lowpro30__ left
masak TimToady: abbreviation for the JS backend: 'rq' 14:03
TimToady ponders what the abbrev for the APL backend will be
why q?
masak TimToady: 'Q' is the traditional one-char abbreviation for JavaScript.
cf 'QUnit'.
'JUnit' was taken by Java.
hoelzro has anyone writen a unit testing framework named Punitive? 14:04
14:04 bluescreen10 joined
hoelzro if not, I claim it for Perl 6. 14:04
diakopter hoelzro: how about Compensatory 14:05
masak sorear! \o/
sorear: I'm trying to grok sheaves and the Yoneda lemma. my brain hurts.
hoelzro diakopter: I don't get it =/ 14:06
diakopter en.wikipedia.org/wiki/Punitive_damages
hoelzro ah =P 14:07
moritz if I create an nqp.bat, do I invoke it as ./nqp or as ./nqp.bat (on windows)? 14:09
masak so, compensatory damages is for the sake of the plaintiff, and punitive damages are to deter the defendant from relapsing?
moritz: either.
TimToady well, or to deter anyone else from trying the same thing...
masak right.
moritz masak: takk
diakopter erm 14:10
neither
masak moritz: and the idiomatic is backslash (\) not forward slash (/)
moritz: but I believe forward slash works too.
moritz: also, I think that (effectively) '.' is in $PATH on Windows.
diakopter ./ doesn't work
masak ok.
so it's 'nqp' or 'nqp.bat' 14:11
moritz :(
TimToady is that punitive or compensatory?
diakopter OTOH 14:12
"./e.bat" does work :D 14:13
moritz \o/
diakopter: does ./e work too?
masak waitwait
diakopter: if "./e.bat" *does* work, what was it that *didn't* work? 14:14
TimToady bats his eyelashes
diakopter C:\Users\mwilson\bin>"./e.bat" foo
C:\Users\mwilson\bin>./e foo
'.' is not recognized as an internal or external command,
operable program or batch file.
(there is an e.bat in that dir) 14:15
it does the same thing as jnthn's e.bat -- @"c:\Program Files (x86)\Notepad++\Notepad++.exe" "%1" "%2" "%3" "%4" "%5" "%6" "%7" 14:16
TimToady Twinkle, twinkle, little bat! How I wonder what you're at!
moritz is that leading @ important?
diakopter suppresses echo
FROGGS array context
:P 14:17
masak oh, the quotes were part of the command. I see. 14:18
FROGGS diakopter: does "./e.bat" will look up the file in . only or in PATH too?
diakopter i'll try it 14:19
TimToady Up above the world so high / Like a tea tray in the sky! 14:20
diakopter FROGGS: nope
. only
FROGGS cool
diakopter tries with ..
yeah, .. does the right thing 14:21
14:24 spider-mario joined
dalek p/unified-build: 1c31dff | moritz++ | / (3 files):
try to generate nqp.bat launcher for windows
14:28
moritz anyone want to test that commit on windows?
I have windows now, but haven't set up the toolchain so far
14:32 bluescreen10 left, bluescreen10 joined
masak today's autopun spotting: twitter.com/peterseibel/status/390...2129013761 14:35
jnthn diakopter: Why on earth do you have "%1" "%2" ... instead of %* ?:
masak jnthn: maybe he just really likes to have arguments :P 14:36
jnthn :P
diakopter because %* strips original quotes 14:38
which le-breaks 14:39
jnthn oh...I never hit that problem :)
masak :)
jnthn also, why the hell... :)
That's horrible semantics!
diakopter well, I thought it did... I'll verify.
jnthn Well, maye I didn't oen files with spalweces in the name
gah
masak .oO( when they said "worse is better", they didn't put nearly enough emphasis on the "worse" part... ) 14:40
jnthn Well, maybe I didn't open files with spaces in the name
diakopter
.oO( beware the spalweces.. )
jnthn: yep, %* does not preserve the quotes 14:41
masak "spalweces" sounds like a lazy contraction of "space whale feces", by professionals who have seen far too much of the latter.
diakopter: what about if you put the %* in quotes? "%*" ? 14:42
jnthn What a crappy profession :P
masak jnthn: it's a tough job, but someone's gotta do it.
diakopter it's only a problem when the space whales are the size of galaxy superclusters
masak: *cry*
14:43 lowpro30__ joined
diakopter erm. 14:44
actually it does preserve the quotes on %*
but...
ergh. 14:45
14:45 lowpro30_ left
diakopter sigh. 14:46
apparently somewhere along the way, I acquired that superstition, spuriously
or I just can't remember the exact case to reproduce 14:47
14:49 bluescreen10 left 14:51 colomon left, berekuk left
dalek rlito: 18da02f | (Flavio S. Glock)++ | / (2 files):
Perlito5 - perl6 - pretty-print - omit parenthesis when calling func/method without args
14:51
14:52 colomon joined
TimToady fglock: also, I'd probably just translate ${x} to {$x} when interpolating 14:57
14:57 c1sung left 14:58 berekuk joined
fglock TimToady: ack 14:59
14:59 raiph joined 15:00 lowpro30_ joined
fglock I think now I've got some nice infrastructure for the refactoring 15:00
15:01 berekuk left
fglock with splitted steps for perl5 -> ast -> refactor -> pretty print 15:01
this is getting interesting
masak fglock++ 15:04
fglock yes, and I also need to translate chr(10) back to "\n"
masak fglock: this is highly interesting to watch!
TimToady translation is always a fascinating subject, where "fascinating" is a euphamism for "terrifyingly open-ended"
fglock or better, print "\n" to say(...)
15:04 lowpro30__ left
TimToady *euphemism 15:05
or print "foo\n" to say "foo" 15:06
fglock yes - that is easy because the "\n" is already stripped off as a special char
15:07 araujo left 15:08 araujo joined, c1sung joined 15:09 c1sung left, c1sung joined, c1sung left, c1sung joined, c1sung left
TimToady okay, so with the ast approach you could actually turn $x . "stuff" into "{$x}stuff" even if they didn't use ${x} in the first place 15:09
15:10 c1sung joined
TimToady unless one prejudices the pretty printer to use the same kind of operator, asssuming such info is even passed through the ast 15:11
15:11 c1sung left
TimToady certainly one must pass comments through, even though those would not typically be kept in a normal ast 15:11
15:11 c1sung joined
TimToady translating comments is another one of those open-ended topics :) 15:12
fglock yes, actually the AST is the same for "${a}x" and $a . 'x'
still thinking about comments
TimToady p56: 42; # Life, the Universe, and Everything
camelia p5-to-p6 : OUTPUT«42␤»
TimToady yeah, those have to come though, generally 15:13
15:13 pmurias joined, c1sung left
TimToady but sometimes they're amusingly wrong 15:13
pmurias fglock: you plan to use perlito for p5 -> p5 refactoring?
TimToady especially ones that say # workaround Perl 5 bug
fglock specially multi-line comments in a column besides the code
pmurias: yes, that is something I'm playing with - to make a non-strict script strict by decalring the variables automatically 15:14
TimToady yes, alignment is nice, but not as critical as getting the info through
fglock or extract subroutines using vim
15:14 benabik joined
fglock *declaring 15:14
pmurias: this is something I could use at work :) 15:15
TimToady it's okay to guess as long as you mark the guesses with something that is easy to search for
with maybe a suggestion for how to make it guess the other way next time 15:16
fglock I think I can implement the comment stripper as a side effect of <ws>
like heredocs
pmurias reformating of the code seems to be an issue for the pretty print approach
unless all the code is formated with perltidy to start with ;)
fglock because it loses formatting, yes 15:17
TimToady typically just attaches the ws as an attribute of whatever the last token was
fglock it is a kind of perltidy, just dumber (or smarter, depends how you look)
but refactoring makes preserving attributes more tricky 15:18
pmurias you could try attaching the orginal source to pieces of ast 15:19
fglock maybe attaching comments to the top node of the statement, with (x,y) info
15:19 c1sung joined
TimToady pmurias: you still have to decide what to do when you one set of nodes to a different set 15:19
*map
15:19 FROGGS left
fglock pmuris: you have cases like m#xyz# #comment 15:19
*pmurias 15:20
TimToady especially when there's a many-to-one or one-to-many mapping
fglock it is an interesting problem :)
pmurias TimToady: you mean when transforming the ast?
15:24 iSlug joined
fglock another thing I'm considering, is to delay BEGIN block execution and just translate the BEGIN block to perl6 15:25
15:25 [Sno] left
fglock this will break some code, but I think it is what you would do if you would translate by hand 15:26
TimToady pmurias: yes
fglock executing BEGIN and serializing to perl6 would give funny looking results 15:27
TimToady there might be some recognizable patterns of intent that could be handled by hand 15:29
er, s/by hand/specially/ 15:30
but I agree that translating the BEGIN is probably the better default
fglock decommuting & 15:33
15:34 fglock left
sahadev congrats, TimToady. 15:45
is there an option to Str.lines that does not chomp the lines before returning? similar to open(..., chomp => False) 15:47
masak sahadev: hmmm... .lines is synonymous with .comb(/N+/) 15:48
TimToady dunno, oughta be
masak sahadev: so it feels a little unintuitive to extend it that way. 15:49
sahadev: why not just re-add the line breaks with >>~>> "\n" ?
TimToady not all linebreaks are "\n"
15:49 berekuk joined
masak does it matter in this case? 15:49
TimToady thinks that .comb is the farthest thing from the user's mind when they're using .lines 15:50
so I'm fine with a :!chomp option
benabik .split(/<?[\n]>/) ?
masak anyway, I would pull a pull request with a :!chomp option.
TimToady but the fact you have to put ! there maybe indicates the default is wrong 15:51
diakopter or a coincidence of naming 15:52
TimToady so maybe :nl to include the newlines, or some such 15:53
masak +1
16:00 jeffreykegler joined
TimToady :newlines would be clearer, since :nl might be taken to specify what you want for newline 16:00
:raw seems a bit too generic 16:01
:seps is a problem if they think of them as terminators rather than separators :)
awks use of RS notwithstanding...
sahadev :lineseps? 16:02
TimToady same problem as :seps :)
of course, unicode talks about LINE and PARAGRAPH SEPARATORs so maybe it's not so bad 16:03
16:05 pmurias left
masak :keepnl 16:05
16:05 lowpro30__ joined 16:06 spider-mario left
[Coke] :raw would mean bytes. 16:07
sahadev I like :keepnl. the intent is clearest there. 16:08
TimToady +1
16:08 spider-mario joined
TimToady though just :keep couldn't mean much else 16:09
16:09 lowpro30_ left
PerlJam :nl could be dual purpose ... :nl -- each line has whatever newlines were in the input. :nl($stuff) -- each line has its newline replaced with $stuff :-) 16:10
TimToady that seems like a solution in search of a problem 16:11
timotimo so with :nl(True) you can replace each newline with True? :) 16:12
masak .oO( :keepnl -- reverse the effects of global warming and rising sea levels! ) 16:13
TimToady snorts 16:14
PerlJam does that mean it will eventially plunge us into another ice age?
TimToady alternatively, forget that option entirely, and force people to specify delimiter of <?after \n> if that's what they mean
TimToady was hoping to have beachfront property soon, since currently we're about 15m above sea level 16:16
pity about the Googleplex downhill from me though...
masak if there's one organization I could actually see surviving being totally submerged under water, it is Google. 16:18
TimToady weather Mountain View --> water temp 18℃ with current from the N at 1.3 knots 16:20
diakopter waves chompy
sahadev TimToady: how does one specify a delimiter option to .lines? I don't see a supported parameter in the spec. 16:21
.split could be used, I guess
TimToady sahadev: that is what we've been discussing all along
16:22 prevost joined
TimToady the problem with using split is that strings aren't naturally very lazy 16:22
16:22 xenoterracide joined
TimToady unless they're cats, which are naturally lazy 16:23
but all the cats are feral so far
TimToady had better go buy some kitty litter before our cat decides to go feral... 16:24
sahadev TimToady: I might have misread, but when you said "... forget that option entirely, and force people to specify delimiter of <?after \n> ...", weren't you talking about .lines?
TimToady .lines(:delim(/<?after \n>/)) or some such
presumably whatever open uses for the same kind of option 16:25
PerlJam open uses :nl :)
16:25 autark joined
TimToady then :nl :) 16:25
otoh it feels like something that should be optimized relative to the normal chomp mode, and that's a pretty complicated option to recognize as doing something simpler 16:26
PerlJam It's weird that open has :chomp which subsequently affects get and lines 16:27
sahadev open uses :chomp too, which is a Bool, whereas :nl is not.
TimToady open's :chomp is what we're talking about deprecating
it's the wrong default 16:28
but there's no obvious antonym to "chomp"
TimToady --> kitty litter store 16:29
diakopter you don't need another litter of kittens
nobody needs more kittens
16:30 iSlug left
mathw I have strange kitty litter 16:32
to aid in the collection of a urine sample so the vet can find out what's wrong with my cat
the cat, of course, doesn't believe it's litter and refuses to use it
16:33 rindolf joined 16:34 DarthGandalf joined 16:37 fhelmberger left
dalek p/unified-build: f55635a | moritz++ | tools/build/Makefile-JVM.in:
[JVM] move some generated files to gen/jvm/
16:42
16:51 pernatiy left 16:52 raiph left, raiph joined 16:53 jeffreykegler left
[Coke] TimToady: I was just talking with ROODE who recalled chop/chomp/chip/chimp. small world. 16:58
16:59 [Sno] joined 17:04 dakkar left 17:06 havenwood joined 17:09 ssutch left 17:12 FROGGS joined 17:16 spider-mario left, spider-mario joined 17:22 xenoterracide left
TimToady [Coke]: it was never entirely clear what "chimp" would mean... 17:28
daxim p3rl.org/Text::Chomped 17:32
17:35 berekuk left 17:50 ssutch joined 17:54 kshannon left 17:55 jnap left 17:59 FROGGS left 18:04 daxim left 18:05 FROGGS joined, raiph left, raiph joined 18:06 raiph left, jnap joined, raiph joined
timotimo there is no method to split a filename into extension and rest? 18:07
FROGGS timotimo: I believe the IO::Spec basename was stripped because it was not specced and not needed (in rakudo) 18:08
timotimo is there a non-mutating version of ~~ s/.../.../? 18:09
18:09 SamuraiJack left, SamuraiJack joined
timotimo tries to make something with perl6 and figures out he's completely untrained 18:09
18:10 aindilis` left
FROGGS hmmm, I thought it was in File::Spec module, but it is not :/ 18:10
timotimo i figured out i can just as well just use m/.../ for this task 18:11
FROGGS yeah, you probably know best what a file extension is to you and what not :o)
timotimo :)
FROGGS (thinking about dot-files and files with several dots...) 18:12
timotimo i'm surprised .path.mkdir is not a thing
god damnit, dir() is slow 18:13
takes like 5 seconds to list my .. hold on
100 things in my home directory
(on parrot)
FROGGS r: say IO::Path.^methods
camelia rakudo e22ac2: OUTPUT«SPEC dir BUILD path parts basename directory volume Bridge Int succ pred IO open is-absolute is-relative absolute relative cleanup resolve parent child copy chmod contents d e f s l r w x z modified accessed changed new Str gist perl Numeric␤»
FROGGS basename, see ^^
r: say "test.txt".IO.path.basename 18:14
camelia rakudo e22ac2: OUTPUT«test.txt␤»
FROGGS r: say "C:\\test.txt".IO.path.basename
camelia rakudo e22ac2: OUTPUT«C:\test.txt␤»
FROGGS hmmm
r: say "/tmp/test.txt".IO.path.basename
camelia rakudo e22ac2: OUTPUT«test.txt␤»
FROGGS r: say "/tmp/test.txt".IO.path.parts 18:15
camelia rakudo e22ac2: OUTPUT«("volume" => "", "directory" => "/tmp", "basename" => "test.txt").hash␤»
FROGGS no extension :/
18:15 Quom joined
timotimo hehe 18:16
i've tried all those parts
18:18 havenwood left
Quom r: say 'is there a non-mutating version of ~~ s/.../.../?'.subst(/(is) (there)/, {"$1.tc $0.lc"}) 18:20
camelia rakudo e22ac2: OUTPUT«is there a non-mutating version of ~~ s/.../.../?␤»
18:20 berekuk joined
Quom Hm 18:20
r: say 'is there a non-mutating version of ~~ s/.../.../?'.subst(/(is)\s(there)/, {"$1.tc $0.lc"})
camelia rakudo e22ac2: OUTPUT«there.tc is.lc a non-mutating version of ~~ s/.../.../?␤»
Quom Close enough :) 18:21
r: my $a = 'abcd'; $a.subst(/b/,'2'); say $a
camelia rakudo e22ac2: OUTPUT«abcd␤» 18:22
18:22 ssutch left
TimToady maybe an strace would point out any excessive syscalls 18:26
18:26 rindolf left
TimToady (for dir) 18:28
18:29 bluescreen10 joined 18:30 ajr joined
diakopter heh, the opendir op isn't yet mapped in moar 18:30
18:30 ajr is now known as Guest94521 18:31 Guest94521 is now known as ajr_ 18:32 isBEKaml joined, isBEKaml left 18:34 hexcoder joined 18:37 Rotwang joined 18:42 SamuraiJack left 18:44 dalek left 18:45 dalek joined, ChanServ sets mode: +v dalek
hexcoder std: my $spot is Scalar 18:45
camelia std a0bcfb1: OUTPUT«ok 00:01 121m␤»
hexcoder r: my $spot is Scalar 18:46
camelia rakudo e22ac2: OUTPUT«===SORRY!=== Error while compiling /tmp/92PjGHviDl␤Variable trait 'is TypeObject' not yet implemented. Sorry. ␤at /tmp/92PjGHviDl:1␤------> my $spot is Scalar⏏<EOL>␤ expecting any of:␤ scoped declarator…»
hexcoder n: my $spot is Scalar
camelia niecza v24-98-g473bd20: OUTPUT«===SORRY!===␤␤Trait name not available on variables at /tmp/ohxUKVKKjj line 1 (EOF):␤------> my $spot is Scalar⏏<EOL>␤␤Potential difficulties:␤ $spot is declared but not used at /tmp/ohxUKVKKjj line 1…»
hexcoder funny, with my rakudo * at home, I get "Null PMC access in get_string()" 18:47
timotimo well, strace for dir() gives me a *whole* bunch of brk calls ;) 18:48
18:48 araujo left, btyler joined 18:49 araujo joined 18:52 darutoko left
timotimo it does the getdents twice and then just spents a lot of time doing whatever it is it's doing 18:53
18:55 Quom left
TimToady probably not the syscalls then 19:02
brk is fairly cheap when it's just extending an already allocated memory page
maybe it's one of those "allocate 100_000 things just in case" things :/ 19:03
or maybe it's calling a parser just to see if the name is . or .. 19:04
or maybe it's using junctions
jnthn back 19:07
19:09 frettled left 19:14 frettled joined 19:19 jeffreykegler joined
TimToady huh, it is using a junction: sub dir(Cool $path = '.', Mu :$test = none('.', '..')) { 19:22
timotimo: maybe try timing it with dir('..', True) or some such 19:23
er, :test(True) I guess
I guess :test means that already 19:24
that would tell you how much is junction overhead
jnthn That's one of the optimizer-can't-easily-unroll cases of junctions too 19:25
yoleaux 19:22Z <FROGGS> jnthn: can you please review these changes? github.com/MoarVM/MoarVM/compare/d...a?expand=1
19:23Z <FROGGS> jnthn: I think all are okay except github.com/MoarVM/MoarVM/commit/22...8ea547e6ac
jnthn git log -p master..doughera 19:27
uh, dammit
FROGGS :o)
19:28 Rotwang left
TimToady or try a micro-optimization: test => { .ord != 46 or not /^ '.' ** 1..2 $/ } 19:31
timotimo well, the difference between :test and no :test is about 0.5 seconds out of 7 seconds 19:33
er, 7.5 seconds
TimToady okay, so probably not the whole answer
19:34 autark left
TimToady since "dir is now lazy" according to the changelog, I'm suspecting it's the 100_000 thing 19:34
19:34 autark joined
sqirrel m.youtube.com/watch?v=sTHXIzHPyqE&a...ata_player 19:35
flashmob cologne germany
may the force be with you
FROGGS :o)
timotimo oh, the "i want a 1 million entries list, kthx?"? 19:36
thing?
TimToady irclog.perlgeek.de/perl6/2013-10-04#i_7672040 is the middle of the discussion 19:38
timotimo ah, yes. i'd've gone with 1000 as well instead of 100_000 19:39
19:40 raiph left, dansamo left
TimToady you might try changing that in src/core/ListIter.pm and see if it makes a timing difference in this case 19:40
TimToady will also again point out that Perl 5 starts at, like 4 19:41
timotimo i'm currently not free to do such things, sorry
TimToady oh well
it might just be general VM slothfulness too 19:42
19:43 Rotwang joined, jeffreykegler left 19:44 hexcoder left
lue hello world o/ 19:44
jnthn FROGGS: 22f810 is just one of those "argh, compilers" things. It's not the prettiest fix, but we'd better just cope 19:48
Um, as in, there's not a pretty fix :) 19:49
19:49 kshannon joined
FROGGS ahh, sad 19:50
I was hoping for a "yeah, but" :o)
jnthn Well, we could pick a better name is all 19:51
FROGGS yeah :/
jnthn But let's take the patch and we deal with that later.
Better that we build.
FROGGS I tested it on linux so far and it passes...
I have not a working solaris atm 19:52
jnthn: you tested it on windows? just to be sure?
I can do that too...
jnthn I can do, but I'm generally quite trusting of doughera++ patches :) 19:53
FROGGS k
will merge now
jnthn Building it here just in case
eeks, doesn't build 19:54
FROGGS O.o
jnthn src\io\dirops.c(203) : error C2039: 'dir_name' : is not a member of 'MVMOSHandleBody'
oh, it's stuff in #define for WIN32 19:55
FROGGS yeah, now we need to spot all cases 19:57
jnthn: I an fix it too if you got other stuff to do 19:58
jnthn Just got a fix build here
pash it 19:59
FROGGS .oO( aaahhh, sssss, pash it, pash it good ) 20:01
okay, that was not much to fix
jnthn :) 20:02
20:03 dalek left
FROGGS okay, it is in master now 20:03
20:03 dalek joined, ChanServ sets mode: +v dalek
jnthn yay :) 20:04
20:05 prevost left
FROGGS I wasted the last two days biseting the main-usage.t fails I get when running 4 jobs + my windows vm 20:05
bisecting*
jnthn :S 20:06
Did you get it down to anything?
FROGGS looks like I an only reproduce it when beeing at work O.o
because I had failing commits that pass here on my couch >.<
at work it looked like as if something around july 3rd did it 20:07
20:08 sqirrel left 20:09 pecastro left
timotimo r: class Testclass { has num $.a; }; my Testclass $a .= new(:a(10)); 20:16
camelia rakudo e22ac2: OUTPUT«Cannot modify an immutable value␤ in block at src/gen/CORE.setting:838␤ in method BUILDALL at src/gen/CORE.setting:821␤ in method bless at src/gen/CORE.setting:810␤ in method new at src/gen/CORE.setting:795␤ in method new at src/gen/CORE.setting…»
timotimo :o
r: class Testclass { has Num $.a; }; my Testclass $a .= new(:a(10)); 20:17
camelia rakudo e22ac2: OUTPUT«Type check failed in assignment to '$!a'; expected 'Num' but got 'Int'␤ in block at src/gen/CORE.setting:838␤ in method BUILDALL at src/gen/CORE.setting:821␤ in method bless at src/gen/CORE.setting:810␤ in method new at src/gen/CORE.setting:795␤ …»
timotimo r: class Testclass { has Num $.a; }; my Testclass $a .= new(:a(10.0));
camelia rakudo e22ac2: OUTPUT«Type check failed in assignment to '$!a'; expected 'Num' but got 'Rat'␤ in block at src/gen/CORE.setting:838␤ in method BUILDALL at src/gen/CORE.setting:821␤ in method bless at src/gen/CORE.setting:810␤ in method new at src/gen/CORE.setting:795␤ …»
timotimo right ...
to get a num you have to work hard :P
jnthn 10e0
timotimo can we get a use Num; or something btw? 20:18
r: { my \Rat := Num; say 10.5.WHAT }; say 10.5.WHAT;
camelia rakudo e22ac2: OUTPUT«===SORRY!===␤No compile-time value for Rat␤»
jnthn Should be do-able as a slang maybe...
timotimo r: { my \Rat ::= Num; say 10.5.WHAT }; say 10.5.WHAT;
camelia rakudo e22ac2: OUTPUT«===SORRY!===␤No compile-time value for Rat␤»
timotimo r: { constant \Rat := Num; say 10.5.WHAT }; say 10.5.WHAT;
camelia rakudo e22ac2: OUTPUT«===SORRY!===␤Default constructor for 'Num' only takes named arguments␤»
jnthn I think it expects whatever you supply the toake the same things a Rat constructor does 20:19
timotimo so ... *theoretically* this could work, except it tries to Rat.new(:nom(20), :denom(11))
jnthn yeah
r: { constant \Rat := Num but role { method new(:$nom, :$denom) { $nom.Num / $denom.Num } }; say 10.5.WHAT }; say 10.5.WHAT; 20:20
camelia rakudo e22ac2: OUTPUT«===SORRY!===␤Too many positional parameters passed; got 3 but expected 1␤»
timotimo and it will do craptons of overhead because at first it tries to pull the number out to create a proper rat, *then* it calculates that back to make it a num :P
hehe
jnthn r: { constant \Rat := Num but role { method new($nom, $denom) { $nom.Num / $denom.Num } }; say 10.5.WHAT }; say 10.5.WHAT; 20:21
20:21 spider-mario left
camelia rakudo e22ac2: OUTPUT«(Num)␤(Rat)␤» 20:21
jnthn There you go :)
timotimo cool beans :)
jnthn yeah but it's compile time still :)
timotimo it's always nice that rakudo allows us to do stuff like that
yes, / and friends will still create rats if it can
20:21 LWA joined
nwc10 hangon, is that another of those insanely complex things that actually just works? 20:23
timotimo yeah
the compiler always does find_symbol('Rat') and friends when it builds constants etc 20:24
and that looks in the lexical scope
jnthn Ye,s if you stick that in a mdoule and export it then you have a pragma for "default 4.2 style constants to be Num not Rat"
timotimo so ... native num attributes in perl6 classes not supported with default BUILD? 20:26
coercive types are going to be interesting.
jnthn Yeah 20:27
It's part of the whole natives stuff that needs doing
20:27 kaare_ left
timotimo has no idea what that entails 20:30
same for coercive types
i'm also not sure if i'm going to finish the nodal stuff, i think i'll need some guidance for that some time
jnthn
.oO( How many full time jobs worth of work do I have on Perl 6? :) )
20:39
20:40 benabik left
nwc10 jnthn: "a sufficiency" 20:43
20:46 benabik joined
timotimo so ... a coercive type has a different type for typechecks and then does a coercion ... so is that using .Typename method calls? 20:46
20:50 berekuk left, dwarring joined
timotimo or how is it supposed to work? 20:50
for the simplest things like Str(Cool), it's easy, because then i can just say "oh, you mean to call .Str on any Cool that comes in" 20:51
and i suppose for custom types that can only sometimes work?
20:53 ssutch joined, berekuk joined 20:54 ssutch left
jnthn So far, my feeling is we need an nqp::istype variant that works in coercive contexts 20:56
And will accept a different result out
timotimo oh, so we want to pipe the value through nqp::istype and istype itself does the coercion? 20:57
what if we only want to check for match and not actually coerce?
jnthn No, we need another op...
nqp::istype will still be checky
I think that's how we want it.
timotimo and other things, like is $foo ~~ CoerciveType mutating for $foo? i don't think it should, actually.
20:58 ssutch joined
timotimo i agree, istype should not be magical like that 20:58
jnthn Well, that's where we'll need some spec work :)
We need to be careful at a level most people don't think of
Which is that coercion may involve a method call but certain things imply various type checks won't do that at present.
oh, that may not be true...
timotimo in my opinion, coercive types make sense mostly (perhaps only) in assigny situations like attributes, assignments and argument passing 20:59
that's the least implementor-torturing version i can think of, which may not be what we want to end up using 21:00
jnthn yeah, we need to define where they make sense and what there sematnics are in other places (possibly, error)
21:02 dayangkun_ left
timotimo how much is missing actually to make has num $.foo work? 21:06
21:06 skids left
jnthn That is probably fixable with BUILDPLAN tweaks 21:07
timotimo oh, nice!
jnthn Like, add some extra instruction codes 21:08
timotimo that sounds doable!
jnthn Yeah, it's like an ale-level task 21:09
timotimo i don't know what that's supposed to mean :|
21:10 zjmarlow joined
jnthn Well, a really easy, boring task is like, lager-level. But a really complicated one needs a stout or a barley wine. An ale is like, in the middle. :) 21:11
.oO( We all rate tasks by what kind of beer we'd want in order to take it on, right? :P )
timotimo heh.
21:13 sahadev left 21:15 xenoterracide joined 21:17 dayangkun_ joined
timotimo BUILD_LEAST_DERIVED is the only place where i have to work with buildallplan? 21:21
huh. i'm not actually sure why the buildplan is split into parrot and nonparrot 21:22
the only difference my eye can see is the use of atpos or atpos_s 21:24
oh, there's actually two copies, one for BUILDALL and one for BUILD_LEAST_DERIVED and the difference is probably just one line or something :P 21:27
but it's sufficiently hot code to require duplication for the tinyest difference
oh, it says why it needs to be different on parrot 21:28
21:28 berekuk_ joined
timotimo i'm kind of sad we can't just go ahead and do actual code generation 21:29
for the buildplan i mean
this still has things like strings for attributes instead of an integer slot for hash-less access 21:30
21:30 berekuk left
jnthn timotimo: Yeah, some hint_for love wouldn't go amiss :) 21:35
timotimo though the last time i timed that stuff it didn't seem to make a difference 21:36
i'd still like to try it some time, though
r: class Foo { has num $.a; }; say Foo.^attributes[0].^methods 21:37
camelia rakudo e22ac2: OUTPUT«<anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> compose apply_handles get_value set_value container has-accessor readonly package Str gist␤»
timotimo r: class Foo { has num $.a; }; say Foo.^attributes[0].container.^methods
camelia rakudo e22ac2: OUTPUT«No such method 'methods' for invocant of type 'Perl6::Metamodel::NativeHOW'␤ in block at /tmp/3XpypOrDnl:1␤␤»
timotimo is that the proper way to figure out that it's a native attribute?
r: class Foo { has num $.a; }; say nqp::objprimspec(Foo.^attributes[0].container); 21:39
camelia rakudo e22ac2: OUTPUT«2␤»
timotimo r: class Foo { has int $.a; }; say nqp::objprimspec(Foo.^attributes[0].container);
camelia rakudo e22ac2: OUTPUT«1␤»
timotimo r: class Foo { has str $.a; }; say nqp::objprimspec(Foo.^attributes[0].container);
camelia rakudo e22ac2: OUTPUT«3␤»
jnthn .type on the attribute meta-obj I think
timotimo r: class Foo { has Str $.a; }; say nqp::objprimspec(Foo.^attributes[0].container);
camelia rakudo e22ac2: OUTPUT«0␤»
timotimo r: class Foo { has Str $.a; }; sayFoo.^attributes[0].^type;
camelia rakudo e22ac2: OUTPUT«===SORRY!=== Error while compiling /tmp/gweer1mTTD␤Undeclared routine:␤ sayFoo used at line 1␤␤»
timotimo r: class Foo { has Str $.a; }; say Foo.^attributes[0].^type;
camelia rakudo e22ac2: OUTPUT«No such method 'type' for invocant of type 'Perl6::Metamodel::ClassHOW'␤ in block at /tmp/Md10j0UM0S:1␤␤»
timotimo r: class Foo { has Str $.a; }; say Foo.^attributes[0].HOW.type(Foo.^attributes[0]); 21:40
camelia rakudo e22ac2: OUTPUT«No such method 'type' for invocant of type 'Perl6::Metamodel::ClassHOW'␤ in block at /tmp/kG47F8Kqv6:1␤␤»
timotimo oh wait, that's not right
r: class Foo { has Str $.a; }; say Foo.^attributes[0].type;
camelia rakudo e22ac2: OUTPUT«(Str)␤»
timotimo r: class Foo { has str $.a; }; say Foo.^attributes[0].type;
camelia rakudo e22ac2: OUTPUT«(str)␤»
timotimo that seems right, thanks!
r: class Foo { has str $.a; }; say nqp::objprimspec(Foo.^attributes[0].type);
camelia rakudo e22ac2: OUTPUT«3␤»
timotimo r: class Foo { has str $.a; }; my $f = Foo.new; nqp::setattr($f, '$.a', 'foo'); 21:46
camelia rakudo e22ac2: OUTPUT«===SORRY!===␤Error while compiling block (source text: "class Foo { has str $.a; }; my $f = Foo.new; nqp::setattr($f, '$.a', 'foo');"): Error while compiling op call: Error while compiling block : Error while compiling op setattr: No registered operation han…»
jnthn bindattr
timotimo right, thanks
r: class Foo { has str $.a; }; my $f = Foo.new; nqp::bindattr($f, '$!a', 'foo'); 21:47
camelia rakudo e22ac2: OUTPUT«===SORRY!===␤Error while compiling block (source text: "class Foo { has str $.a; }; my $f = Foo.new; nqp::bindattr($f, '$!a', 'foo');"): Error while compiling op call: Error while compiling block : Error while compiling op bindattr: Operation 'bindattr' requ…»
timotimo r: class Foo { has str $.a; }; my $f = Foo.new; nqp::bindattr($f, '$!a', Foo, 'foo');
camelia rakudo e22ac2: OUTPUT«use of uninitialized value of type Foo in string context in block at /tmp/7PMHxusCcT:1␤␤Can not bind attribute '' declared in class 'Str' with this object␤ in block at /tmp/7PMHxusCcT:1␤␤»
timotimo wrong way around
and it probably should be bindattr_str and friends, right?
jnthn For native,s yeah
And you need to nqp::decont($f) there 21:48
But self is already donce't
*decont'd
timotimo ah, good.
jnthn bwaha...I was going to do ablaut on decont, wrote it, and realized how rude it was
21:48 lowpro30__ left
timotimo de ... cunt? :) 21:50
diakopter :/
21:51 bluescreen10 left
jnthn *sigh* 21:51
21:55 Rotwang left, colomon left
timotimo i now have a bit of code that i can now try to compile 21:56
21:56 colomon joined 21:58 berekuk joined 21:59 ssutch left, berekuk_ left
timotimo whaaaat, Could not find Perl6::BOOTSTRAP in any of: 22:02
22:03 berekuk_ joined
timotimo Method 'create_BUILDPLAN' not found for invocant of class 'Perl6::Metamodel::ClassHOW' huh 22:03
i accidentally locerwased the B ni buildplan
.... wow i can NOT type if i have a delay of >0.5s in my ssh 22:06
22:07 berekuk left
timotimo it may even be the same thing as hearing your own voice a second or so delayed playing back at you will cause you to not be able to continue speaking 22:07
rakudo.jvm stage parse takes 200 secodns on my poor weak old laptop :| 22:09
jnthn sleep & 22:13
timotimo d'oh, imprecise line numbers in backtraces on the jvm strikes again! 22:15
huh. This representation can not unbox to a native int - don't really know where i'm trying to interpret something as int :| 22:18
22:20 benabik left
timotimo oh, haha 22:20
[Coke] timotimo: you want "timotimo" or your real name in the release announcement? 22:21
Mouq: Ditto?
22:21 mujo joined 22:22 lizmat joined
timotimo i'd like the real name please :) 22:23
TimToady integers are reals too! 22:24
Mouq [Coke]: Real sounds good 22:25
TimToady r: say Int ~~ Real
camelia rakudo e22ac2: OUTPUT«True␤»
Mouq r: say Int ~~ Numeric 22:26
camelia rakudo e22ac2: OUTPUT«True␤»
Mouq r: say Int ~~ Num
camelia rakudo e22ac2: OUTPUT«False␤»
22:27 berekuk joined, berekuk_ left
dalek p: a7c5369 | dwarring++ | examples/rubyish/ (7 files):
implemented rubyish lambda, etc - nqp::makeclosure++
22:27
22:27 FROGGS left
[Coke] grondilu: same question to you. 22:28
22:28 BenGoldberg joined, FROGGS joined
dwarring feels the need to give ops karma nqp::makeclosure++ 22:28
timotimo i don't know why, but my use of bindattr_* seems to be wrong 22:30
now i have a good reason to check out cokes op docs! :)
oh crap what did i do o_O 22:31
i think i just accidentally created a "nom" branch of nqp on github >_>
diakopter erm
but it already had one?
timotimo no
22:32 tipdbmp left
timotimo nqp has master 22:32
22:32 tipdbmp joined
timotimo i think i'm using bindattr right. now i don't know what's going wrong 22:32
[Coke] ah. I'm pretty sure grondilu is also duped. 22:33
timotimo also, i'm getting cannot unbox to native int if i have a num attribute, so it's not the value that's going into the bindattr_ call
grondilu [Coke]: what question? 22:34
[Coke] .u æ 22:35
yoleaux U+00E6 LATIN SMALL LETTER AE [Ll] (æ)
[Coke] grondilu: what's your name?
grondilu oh about name. My real name, please. Lucien Grondin
grondilu will be glad to figure in this
22:36 woolfy joined
[Coke] You're in as L. 22:37
assuming that came from github.
timotimo ah, cool, now i'm getting a null pointer exception! 22:40
i must have made it better than before! >_
can objprimspec ever return null? 22:41
[Coke] I'd say check the docs, but I know who's working on those...
timotimo :) 22:43
objprimspec isn't doc'd yet
[Coke]: do you want to add "1 = int, 2 = num, 3 = str" to the "primitive type" text for primspec ops? 22:44
[Coke] timotimo: can you add it as long as you're in there? 22:45
timotimo oh, i do have a commit bit in nqp
22:45 colomon left
dalek p: 152d483 | timo++ | docs/ops.markdown:
explain what the primitive types for *primspec are.
22:46
22:46 ssutch joined
dwarring nqp: my $n; my $s := sub (){say(++$n)}; $s(); $s() # closure 22:46
camelia nqp: OUTPUT«1␤2␤»
22:47 colomon joined
timotimo nqp-j: say(nqp::objprimspec(NQPMu)) 22:47
nqp-jvm: say(nqp::objprimspec(NQPMu))
camelia nqp-jvm: OUTPUT«0␤» 22:48
timotimo how do i get a NPE :o
dalek kudo/nom: b991e0b | coke++ | docs/announce/2013.0 (4 files):
announcements aren't executable
kudo/nom: 6364da9 | coke++ | docs/release_guide.pod:
Document release schedule with no deps
kudo/nom: 7f8de0c | coke++ | docs/announce/2013.10.md:
add release announcement for 2013.10
kudo/nom: b9d7c10 | coke++ | docs/release_guide.pod:
relocate &name release
kudo/nom: bd315da | coke++ | docs/release_guide.pod:
need moar modules
22:51 SmokeMachine left
dwarring nqp: sub make_incr(){my $n; sub (){say(++$n)} }; my $s:= make_incr(); $s(); $s() 22:52
camelia nqp: OUTPUT«1␤2␤»
lizmat [Coke]: I think the method postcircumfix:[] and {} changes to sub should be mentioned in the short list as well, no?
dalek p: c774afd | coke++ | VERSION:
bump VERSION to 2013.10
[Coke] lizmat: you did those, aye? Can you add a line for me? 22:53
lizmat will do
[Coke] lizmat++ !
my plan is to try to get the nqp release done before I head out for a bit, then do the rakudo release when I return. plenty of time for volk to edit the announcement and the changelog. ;)
dalek kudo/nom: 1f77c4c | (Elizabeth Mattijsen)++ | docs/announce/2013.10.md:
Mention postcirumfix [] and {} changes from method to sub
22:57
zjmarlow will circular module loading ever be nonfatal? 22:58
22:58 mujo left 23:04 lizmat left 23:05 woolfy left
timotimo a friend just sent me a link to a shop on amazon that sells ducks ... to solve my programming problems %) 23:05
23:08 lizmat joined
[Coke] lizmat++ 23:11
dalek p: b8b44d8 | dwarring++ | docs/ops.markdown:
some doco for nqp::makeclosure
[Coke] heads out, will return much later.
23:20 woolfy joined
Mouq rn: my $a .= ++; say $a 23:20
camelia rakudo 1f77c4: OUTPUT«No such method '&postfix:<++>' for invocant of type 'Any'␤ in method dispatch:<.=> at src/gen/CORE.setting:1127␤ in block at /tmp/1JVYQuHK8Z:1␤␤»
..niecza v24-98-g473bd20: OUTPUT«0␤»
Mouq Which of course means my $a = $a = $a + 1, but I'd still think it should work :p 23:22
lue r: my $a; $a++; say $a; 23:26
camelia rakudo 1f77c4: OUTPUT«1␤»
lue r: my $a++; say $a;
camelia rakudo 1f77c4: OUTPUT«===SORRY!=== Error while compiling /tmp/2w3w9SdWkL␤Preceding context expects a term, but found infix + instead␤at /tmp/2w3w9SdWkL:1␤------> my $a++⏏; say $a;␤»
lue r: my $a; $a .= ++; say $a;
camelia rakudo 1f77c4: OUTPUT«No such method '&postfix:<++>' for invocant of type 'Any'␤ in method dispatch:<.=> at src/gen/CORE.setting:1127␤ in block at /tmp/AlIwmnBhTl:1␤␤»
Mouq doesn't actually know how dispatch:<.=> works… fires up vim 23:28
dwarring ....arrgh it's takeclosure 23:34
dalek p: 062b576 | dwarring++ | docs/ops.markdown:
doco oops nqp::makeclosure => nqp::takeclosure
23:36
dwarring glasses or bigger font 23:37
timotimo huh. on parrot it doesn't explode ... 23:47
grondilu [Coke]: did you get my privmesg? 23:58
grondilu notices that [Coke] is afk
what the syntax for tell already? 23:59
timotimo r: class Foo { has num $.a }; my Foo $f .= new(:a(0e0)); # now works locally, but the code won't build on jvm :(
camelia rakudo 1f77c4: OUTPUT«Cannot modify an immutable value␤ in block at src/gen/CORE.setting:838␤ in method BUILDALL at src/gen/CORE.setting:821␤ in method bless at src/gen/CORE.setting:810␤ in method new at src/gen/CORE.setting:795␤ in method new at src/gen/CORE.setting…»