»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by sorear on 4 February 2011.
00:00 mtk joined, bitonic left
dalek kudo-js: 59ce22b | (Paweł Murias)++ | / (4 files):
pass test 24
00:21
00:23 [particle] joined 00:29 [particle]1 joined 00:30 [particle] left 00:31 jokar left 00:39 skids joined, xinming_ joined, xinming left 00:47 [particle] joined 01:15 ilogger2 joined, ChanServ sets mode: +v ilogger2 01:18 [particle] joined
timotimo has $.URL = die "Every project needs an URL"; - oooh, that's a clever trick! 01:25
01:44 wooden joined
doy it's a pretty common idiom in moose at least 02:01
Juerd s/an URL/a URL/ though 02:02
02:29 MikeFair_ joined 02:30 alc joined 03:23 Khisanth joined
stevan_ Larry++ ( #647: TimToady on gist.github.com/2657075 ) 03:50
03:51 orafu joined 04:20 dayangkun joined
sorear TimToady++ 04:25
TimToady that's very funny, considering I do next to nothing with github except download other people's stuff... 04:43
04:45 slayer101_ joined 04:51 slayer101_ left
Util perl6: my $x = 2; my $y = 5; ($x,$y) .= reverse; say "$x $y"; 05:11
p6eval rakudo ffde43: OUTPUT«5 2␤»
..niecza v24-16-g89e47b6: OUTPUT«Unhandled exception: Unable to resolve method reverse in type Parcel␤ at /tmp/y1sjzBERoA line 1 (mainline @ 5) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4218 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4219 (module-CORE @ 580) ␤ at /…
05:21 sisar joined 05:22 telex joined 05:28 Chillance joined 05:35 telex left 05:37 telex joined 05:42 tokuhiro_ joined 05:45 kaleem joined 05:59 Chillance left 06:05 jokar joined 06:11 dayangkun left 06:23 dayangkun joined
moritz colomon: <!before '='> (in the case of ^^ it doesn't matter if you use before or after, since it's zero-width) 06:33
though before is probably faster than after
diakopter Juerd: some people pronounce URL like 'earl' 06:41
06:48 raiph_ joined 06:49 raiph_ left 06:51 slayer101_ joined 06:54 jokar left 07:05 tokuhiro_ left 07:15 slayer101_ left 07:18 jokar joined 07:22 slayer101_ joined, dayangkun left 07:37 SamuraiJack joined 07:40 dayangkun joined 07:54 FROGGS joined
moritz TimToady: you pushed a lot of commits to STD 07:54
TimToady: and roast
erm, s/roast/specs/
FROGGS moritz: where do you see that? 08:06
08:06 brrt joined
FROGGS I cant see commits to specs lately 08:06
moritz FROGGS: well, not this year so far 08:10
but dalek and perl6-language announce them
FROGGS ahh
thats why he is on that list you mean
08:13 dayangkun left
moritz correct 08:22
08:26 dayangkun joined 08:40 slayer101_ left 08:49 slayer102_ joined 08:50 sqirrel joined 08:54 slayer102_ left, slayer101_ joined 08:59 MikeFair_ left 09:01 slayer101_ left 09:05 MikeFair joined 09:34 marloshouse_ joined 09:35 anuby_ joined 09:37 sqirrel_ joined, stevan__ joined 09:38 MikeFair__ joined 09:41 bitonic joined 09:42 Psyche^ joined, MikeFair left, sqirrel left 09:43 cognominal joined
jnthn morning o/ 09:45
09:45 Psyche^ is now known as Patterner
brrt hi jnthn 09:45
cognominal hi everyone 09:47
FROGGS morning pals
09:48 dakkar joined
moritz \o 09:48
09:48 am0c joined
hoelzro o/ moritz 09:48
09:51 Pleiades` joined
FROGGS r: module File; class File { }; say GLOBALish::File:: 09:51
p6eval rakudo ffde43: OUTPUT«("File" => File).hash␤»
FROGGS r: module File::Spec; class File::Spec { }; say GLOBALish::File::Spec:: 09:52
p6eval rakudo ffde43: OUTPUT«().hash␤»
FROGGS why are multipart names being treated differently?
moritz doesn't see why GLOBALish::File:: should contain an entry for 'File'
oh, because it's inside module File 09:53
FROGGS right
so in the first case I get a File::File class
moritz r: module File::Spec; class File::Spec { }; say GLOBALish::File::
p6eval rakudo ffde43: OUTPUT«("Spec" => File::Spec).hash␤»
FROGGS in the second one I would expect to get a File::Spec::File::Spec class
09:54 SmokeMachine joined
FROGGS since the whole file is within the File::Spec namespace 09:54
and other (class) definitions should be under that one
maybe the spec tells something else, dunno
but IMO this leads to bad code 09:55
moritz FROGGS: it sounds like rakudo is buggy, but nested namespaces are *so* tricky to get right that I don't dare to pass judgement
jnthn It's also probably the way it is to make some other thing work. :/ 09:56
FROGGS I just recognized it because I made a small module that dumps the namespace by a given file 09:58
10:00 dayangkun left 10:04 anuby_ left
moritz whenever one changes a small detail of how nested namespaces are handled, the whole house of cards comes tumbling down 10:04
FROGGS thats where you run the spectests and module tests... 10:09
10:15 bapa joined 10:26 cognominal left
dalek p-jvm-prep: 9907c12 | jnthn++ | docs/ROADMAP:
Remove completed items.
10:37
p-jvm-prep: 5101317 | jnthn++ | docs/ROADMAP:
Flesh out ROADMAP a bit more.
10:39 sqirrel_ left
FROGGS oh I really like the way slurp works 10:41
dalek p-jvm-prep: 4e9bd18 | jnthn++ | t/qast_6model.t:
Test for istrue/isfalse/setboolspec.
10:47
p-jvm-prep: 831921c | jnthn++ | / (3 files):
Implement setboolspec.
11:01 brrt left 11:10 not_gerd joined
not_gerd hello, #perl6 11:10
GlitchMr Hello 11:11
not_gerd jnthn: bitrot/bug in Grammar::Tracer|Debugger - see gist.github.com/4492329
jnthn Hmm 11:12
Oddness
Will investigate, thanks. 11:13
not_gerd jnthn: You're welcome. I'll try to come up with a golfed grammar, but probably not until the evening 11:16
11:22 bruges joined 11:55 colomon joined
dalek p-jvm-prep: 7171d73 | jnthn++ | src/org/perl6/nqp/ (6 files):
Stub in VMIter, BOOTIter and HLL config for iters.
11:59
p-jvm-prep: 46a2961 | jnthn++ | t/qast_aggregate.t:
Tests for array/hash iter using nqp:: ops.

The approach taken means that we'll easily mimic the way array iters work today, but hashes are a bit different. Rather than the VM having a type with .key and .value methods, we just provide enough for NQP to implement that itself; only the NQP MOP will need tweaks that way.
p-jvm-prep: f3d5247 | jnthn++ | / (5 files):
Get new iteration tests passing.
nwc10 at this rate there won't be any low hanging fruit left for anyone else :-) 12:06
jnthn nwc10: Oh, I'm being careful not to do the stuff in LHF.md :) 12:07
nwc10 is the current aim to get to the point where this project can take (simple) trees from NQP-on-Parrot, and compile them to JVM bytecode? 12:08
ie "hello world" and similar things
jnthn Not really. The current focus is to get good coverage of compiling QAST trees and providing the nqp:: op set. 12:12
If I cared for having a shiny demo I could already probably find some way to get simplified NQP trees and pass them along to this.
not_gerd is lexotic gather/take supposed to work in Rakudo? 12:14
jnthn The first interesting NQP thing to compile will be github.com/perl6/nqp/tree/master/src/how
not_gerd: I think it's probably just dynamic at the moment. 12:15
Er, is it meant to be lexotic...
ah, yes, it is
Hm, and gather can be too 12:16
Innerestin'
Anyway, no, NYI.
timotimo what exactly does lexotic gather/take mean? 12:17
not_gerd jnthn: the rationale is so library code doesn't eat your take
jnthn not_gerd: Yeah
It's a good idea.
12:17 alc left
not_gerd timotimo: any take that can be lexically matched with a gather does so 12:17
jnthn timotimo: S04 explains it pretty well under the "The C<gather> statement prefix" section
not_gerd timotimo: my use case: Grammar.parse together with take in action methods 12:18
sadly, &parse eats some (but not all) of my takes :(
timotimo thank you, i'll read that 12:21
oh, that's curious 12:24
so in gather { take "1"; my-sub(); } if my-sub has a take in it, it won't reach that gather?
jnthn That's my reading of it too 12:26
Unless my-sub is lexically inside the gather also, of course
12:26 brrt joined
timotimo i'll have to do some extra thinking to convince me that this is a good thing 12:27
12:28 sftp joined 12:37 bitonic left, bitonic joined
not_gerd bye, #perl6 12:39
12:39 not_gerd left 12:40 MayDaniel joined 12:42 brrt left 12:45 bitonic left 13:26 SamuraiJack left 13:41 cognominal joined 13:59 kaleem left 14:00 kaleem joined 14:11 wk joined 14:12 wk is now known as Guest61915
[Coke] (that github list of biggest users starts with "most followed users", which is why it's skewed to include timtoady but not, e.g. jnthn) 14:16
moritz well, anybody following jnthn++ wouldn't see much else in his feed :-) 14:17
14:17 bitonic joined
jnthn :P 14:17
14:17 bluescreen10 joined, dayangkun joined
jnthn tries to get QAST::Op :op('for') working 14:18
14:21 hash_table joined 14:23 spanner joined 14:27 PacoAir joined 14:31 SunilJoshi joined
[Coke] moritz: you've got commits on roast as both moritz & "Moritz Lenz" 14:31
14:31 skids joined 14:35 kaare_ joined
arnsholt Probably not much to do about that 14:37
Fixing it would involve a massive rebase, and that's just mean with as public a history as roast
[Coke] I think adding an email addy to your primary account might do it. 14:42
(for the web side, anyway)
FROGGS I had the same thing... I had two different ssh-keys, one was connected to an already deleted useraccount 14:44
the github stuff fixed this for my
me
14:44 sivoais joined 14:46 stopbit joined, hash_table left 14:47 hash_table joined 14:49 spanner left 14:51 spanner joined 15:01 kaleem left
dalek p-jvm-prep: f2388e1 | jnthn++ | / (2 files):
Correct an nqp:: op name.
15:05
p-jvm-prep: a25dd96 | jnthn++ | src/org/perl6/nqp/runtime/ (4 files):
Stub in some control exceptions.

We'll just use the JVM exceptions for these at the moment.
p-jvm-prep: 6fe3127 | jnthn++ | lib/JAST/Nodes.nqp:
Fix JAST dump thinko.
p-jvm-prep: e2660ff | jnthn++ | t/qast_core.t:
Add a test for QAST::Op 'for'.
p-jvm-prep: a0466dd | jnthn++ | src/org/perl6/nqp/runtime/Ops.java:
Auto-boxing in return_o.
p-jvm-prep: 1d1c9fd | jnthn++ | lib/QAST/JASTCompiler.nqp:
Implement QAST::Op 'for'. Passes initial test.
nwc10 jnthn++ 15:06
15:06 wtw joined 15:12 wtw left
timotimo just for the record, S04 is a bit out of date, at least the section on gather/take. there's a "my |$c :=" and there's talk of Seq() objects. 15:21
i don't dare edit the specs, though :P
jnthn forgiveness > permission ;) 15:22
timotimo oh well. maybe i'll do it once i'm on an actual internet connection again, rather than my phone :P 15:23
15:24 SunilJoshi left, SunilJoshi1 joined 15:26 MikeFair__ left 15:27 cedrvint joined
cedrvint hello #perl6 15:27
std: my $foo; my $bar; my $x = try { given $foo { when 1 {2} when 3 {4} } } + $bar
p6eval std a8bc48f: OUTPUT«===SORRY!===␤Strange text after block (missing comma, semicolon, comment marker?) at /tmp/CiYlH4ZAng line 1:␤------> ; my $x = try { given $foo { when 1 {2}⏏ when 3 {4} } } + $bar␤ expecting horizontal whitespace␤Parse failed␤…
FROGGS std: my $foo; my $bar; my $x = try { given $foo { when 1 {2}; when 3 {4} } } + $bar 15:28
p6eval std a8bc48f: OUTPUT«ok 00:00 45m␤»
dalek ecs: a0f87cf | (Cédric VINCENT)++ | S04-control.pod:
Fix two terms in a row
cedrvint fixed :D
15:29 PacoAir left
FROGGS good catch 15:30
15:36 SunilJoshi1 left
moritz cedrvint++ 15:37
15:39 fgomez joined, SunilJoshi joined
dalek p-jvm-prep: 341d7ac | jnthn++ | t/qast_conditional.t:
Tests for if with num, str and object.
15:39
p-jvm-prep: 4503610 | jnthn++ | / (2 files):
Implement if/unless with str or obj condition.
p-jvm-prep: bbef46a | jnthn++ | lib/QAST/JASTCompiler.nqp:
Factor out boolify code; will need it for loops.
15:41 kivutar joined 15:45 kaleem joined 16:00 fgomez left
tadzik can has a whiteboard 16:01
it's like a read-write wall. How could I have lived without this
timotimo it's not only read-write, you can also attach things using magnets!
tadzik magnets themselves are cool 16:02
timotimo indeed they are
tadzik I drew a calendar on mine, and how do I mark current day? Magnets!
timotimo a full year calendar?
tadzik yeah. Took me about 2 hors 16:03
no, it's just one month :P
timotimo t.h8.lv/magnets.mp4 :D
tadzik :) 16:05
timotimo is that the slow motion one or the one with sound? 16:06
tadzik slowmo I guess 16:07
16:07 FROGGS left
timotimo ah. the sound in that video is quite nice i find, hold on, maybe i can find it. 16:07
tadzik if it's with sound, then Korpiklaani is louder anyway :P
timotimo t.h8.lv/VID_20121208_141224.mp4 - this is the one where it goes FLOP-KLOP 16:08
16:09 thou joined
tadzik hehe, nice 16:09
16:09 FROGGS joined 16:15 FROGGS left, obra joined 16:19 kaleem left 16:24 FROGGS joined, Chillance joined 16:25 sqirrel joined 16:27 cognominal left 16:32 SunilJoshi left 16:33 thou left 16:35 MayDaniel left, MayDaniel joined, werwerwer joined 16:38 FROGGS[mobile] joined, FROGGS left 16:44 jokar left 16:48 skids left 16:59 am0c left 17:00 fgomez joined
masak evenin', #perl6 17:06
17:09 SamuraiJack joined
tadzik masak! \o/ 17:10
timotimo masak: i'm considering looking at your druid again and try to make it run on current rakudo again. any objections? :) 17:11
masak timotimo: no objections. I'm intrigued by this notion. I'm sorry I haven't been reviewing your work on this so far. 17:12
timotimo oh, i'm probably going to throw away the work i've done so far, at least partially 17:15
and resume work using your other update-branch (just 2 years old instead of 4!)
jnthn Pro Tip: when compiling a loop, be sure that you actually compile the loop body, not the loop condition twice... 17:16
masak timotimo: ;) 17:17
timotimo: I seem to recall I got it working completely at the time.
timotimo and then you decided not to merge it into master? ;) 17:18
because i totally didn't see that branch until i've been hacking away at the code for at least two hours :D
(well, mostly scratching my head, almost no real hacking) 17:19
17:20 ismail_ joined
jnthn pokes dalek 17:23
masak timotimo: though it feels very distant now, there was a long time even after Rakudo's ng branch merged into master, when I was still using the generation prior to that (alpha).
timotimo oh, that's interesting. what was the big change from alpha to ng?
masak the way I remember it, alpha contained features and ng contained pain. 17:25
(then things improved, but in a rather asymptotic way.)
jnthn Well, the big change was that alpha's grammar and parse engine were pre-STD
tadzik (ng contained works, nom contained fast)
timotimo and then ng was thrown over board and nop was born, right?
jnthn It didn't use proto regexes and there OPP and recdescent stuff were separated out. 17:26
tadzik OPP?
jnthn Operator Precedence Parser
Also a bunch of other bits were re-done righter; it got rid of a whole class of NPMCA issues, for example. 17:27
diakopter neat blogs.msdn.com/b/zainnab/archive/20...uages.aspx
masak I'm not an opponent of progress, in any way. the ng->nom transition was overall very smooth, if a bit drawn out.
diakopter: I hadn't heard about Velato and DNA# before. :) 17:29
diakopter on that wiki there are hundreds of other languages
.. including Perl? 17:30
763
dalek p-jvm-prep: b23365f | jnthn++ | t/qast_core.t:
Test for while.
p-jvm-prep: cd93d5b | jnthn++ | lib/QAST/JASTCompiler.nqp:
Compile various QAST::Op loops.
17:31 kivutar left
jnthn
.oO( only jnthn would implement meta-programming before while loops... )
17:31
diakopter heh, Parrot's on the joke language list
dalek p-jvm-prep: 73ae977 | jnthn++ | t/qast_core.t:
Also test repeat_until.
17:32
timotimo idly wonders by how much the test suite for Sum would be sped up if one would throw lots of type definitions all over the place, maybe even native types
dalek p-jvm-prep: b533790 | jnthn++ | docs/ROADMAP:
Remove some completed items.
timotimo ISTR that native type containers are currently broken in rakudo? or is that only for "has"?
r: my int $foo = 10; $foo += 100; say $foo;
p6eval rakudo ffde43: OUTPUT«Cannot assign to a non-container␤ in block at src/gen/CORE.setting:12569␤ in block at /tmp/xOh3mfGuHK:1␤␤»
masak diakopter: that's wrong. Parrot isn't a language. oh, *that* Parrot language. :)
jnthn timotimo: They aren't very robust yet, but they're usable with care. 17:34
17:36 wtw joined
tadzik 1830 +dalek | nqp-jvm-prep: Test for a while. 17:40
17:42 ismail_ left, thou joined 17:46 fgomez left 17:49 sisar left
timotimo jnthn: and of course there's no documentation on how exactly they can be carefully handled? ;) 18:01
18:01 cognominal joined 18:03 dakkar left
timotimo r: my int $foo; $foo = 10; $foo = $foo + 1; 18:04
p6eval rakudo ffde43: ( no output )
jnthn timotimo: Not really, but in short, anything that would rely on "is rw" to be implemented won't work out.
timotimo so, there's a problem with +=, but = itself works no-problemo
ah, that's quite a simple statement
jnthn op= and ++/-- being the immediate ones 18:05
There's some other issues here and there.
But the rw one is what is mostly run into
18:08 FROGGS[mobile] left, PacoAir joined
jnthn store & 18:09
18:09 FROGGS joined 18:11 Guest61915 left 18:14 zby_home joined 18:16 skids joined 18:21 sqirrel left 18:30 cognominal left 18:31 PacoAir left 18:32 PacoAir joined, thou left 18:35 cognominal joined 18:41 SamuraiJack left 18:43 orafu left 18:44 orafu joined 18:50 lichtkind joined 18:54 cognominal left 18:56 hash_table left 19:06 hash_table joined
TimToady for the record, Perl 6 grammar is not derived from the literature on "scannerless", it just falls out of the rest of the design as a requirement, so that's how we designed it; ergo it was independent invention 19:07
that being said, "scannerless" is not how I think of it, in any case 19:08
it's more like "autoscanning", in that it writes scanners for you automatically
masak right. 19:09
TimToady you can't do LTM if it were really "scannerless" because "token" would have no meaning
masak .oO( what is the sound of zero scanners lexing? ) 19:10
jnthn dinner &
TimToady and you can tell how far back I am in backlogging since this was brought up at the end of November :) 19:11
arnsholt Heh. So you'll be done backlogging in a week or so? =) 19:12
TimToady I give the reboot several weeks :)
timotimo arnsholt: shh, all of those lines you're writing right now are just adding to his backlog!
masak TimToady: if you amass some speed as you approach us, you might ram straight through the now barrier and end up futurelogging! :P
TimToady esp since I just came down with a cold
masak: there's always hope 19:13
masak .oO( the best way to invent the future is to ram the present )
TimToady In general, if the question is "Did literature X influence the design of Perl?", the answer is nearly always "Not directly, if at all." The literature almost never has exactly what I want, so I don't usually bother reading it myself. :-) 19:16
This approach to design has its obvious plusses and minuses... 19:17
"No clue about whether this is patentable" is both a plus and a minus in its own right 19:22
19:22 cognominal joined
diakopter Hm, I don't recall the topic 19:24
masak I think we are talking about scannerless parsers. 19:25
TimToady 18 minutes ago
diakopter I mean from Nov 19:26
skids Scannerless parsers are great. All that printing out the code just to OCR it was a lot of work. 19:27
masak I think we were talking about scannerless parsers then too :P
cognominal An ubuntu phone… Someday, we will program our phone using Perl 6. arstechnica.com/gadgets/2013/01/in-...ntu-phone/ 19:28
skids++ # :)
masak diakopter: if only there were some way to go back in time and find out what we were talking about in November.
TimToady irclog.perlgeek.de/perl6/2012-11-30#i_6200746
jnthn back
nwc10 yay!
however, I doubt that your return will immediately be followed by dalek announcing freshly pushed commits 19:29
19:29 wk joined 19:30 wk is now known as Guest99405
TimToady jnthn didn't return, he merely invoked a continuation... 19:30
nwc10 if we invoke the same continuation a second time, in a new thread, will he become twice as productive?
skids That would result in contention issues. For beer. 19:31
doy or if not contention, then memory corruption (also from beer)
19:33 PacoAir left
TimToady he's barley productive as it is 19:33
masak .oO( the glass is a half-full continuation ) 19:34
skids wheyt I'm not ready for puns that make me grain.
19:34 PacoAir joined, PacoAir_ joined
TimToady well, then, hop to it! 19:35
19:38 PacoAir left, PacoAir_ is now known as PacoAir
jnthn :P 19:40
[Coke] jnthn: at yeast give them a chance. They're trying.
jnthn It's OK, I'm not bitter. 19:41
It doesn't ale me.
[Coke] I always though you were stouthearted.
jnthn Need to be if you're the JVM porter... 19:42
skids That could malt even the most stout of hearts. 19:43
masak I find this discussion high in calories but low in fiber. 19:45
jnthn I'm sure it won't make you go...
19:57 stevan__ left 19:59 bro_grammer joined 20:02 hash_table left 20:03 fgomez joined
moritz Compiling lib/LWP/Simple.pm 20:11
===SORRY!===
When pre-compiling a module, its dependencies must be pre-compiled first.
NOT AGAIN
Please pre-compile /nocrypt-home/moritz/source/rakudo/install/lib/parrot/4.11.0-devel/languages/perl6/site/lib/MIME/Base64.pm6 20:13
installed with panda
masak :/ 20:14
moritz there's a .pir file, but it's one second older than the .pm file
tadzik stupid panda 20:15
it should know better
FROGGS if it can print this message, why doesnt it recompile? 20:18
jnthn phenny: tell not_gerd Grammar::Tracer issue fixed, and also added a test. Still gotta look at the Grammar::Debugger issue. 20:19
phenny jnthn: I'll pass that on when not_gerd is around.
jnthn tadzik: Is it harder than "install the .pm6, then the .pir", ooc? 20:20
20:20 FROGGS left
tadzik jnthn: I'm about to make it install .pirs first, then the rest of the stuff 20:20
jnthn tadzik: The .pir needs to be newer
tadzik oh
the other way around then :P
moritz had already made it that way, once or twice :-) 20:21
tadzik (: 20:22
moritz, y u no submit patches :P
moritz: any idea for a sensemaking test?
we can't really depend on the order of files in the filesystem in any way 20:23
oh, I know
(I know, I know, oh-oh-oh!)
20:25 SmokeMachine left
dalek nda: dc81db8 | tadzik++ | / (2 files):
Ensure that .pirs get installed last
20:29
tadzik moritz: that should help
moritz tadzik: thanks 20:30
tadzik moritz++ # bugfinding 20:31
masak tadzik++ # bugfixing 20:33
20:37 fgomez left, fgomez joined 20:41 bro_grammer left
dalek kudo/nom: d2d2c85 | moritz++ | src/core/IO/Socket.pm:
RT #116288: $socket.read($bytes) now retruns $bytes btyes, if available
20:48
tadzik aww yiss 20:49
moritz (I tried to build LWP::Simple to test that patch; that's where I found the panda bug :-) 20:51
sorear mangled before we migrated to a Unicode-capable DB.
jnthn is trying to fix the Grammar::Debugger bug
sorear echan
20:52 fgomez left
moritz jnthn: use the debugger :-) 20:54
jnthn :P
21:00 cognominal left 21:01 nyuszika7h joined 21:04 Chillance left
jnthn hmm, why on earth does changing nqp and make install'ing it give me a busted nqp afterwards... 21:05
hm, going to the commit before my patch does so too...wtf 21:06
21:06 fgomez joined 21:09 cognominal joined
moritz LWP::Simple is now down to two failing test files 21:10
sleep&
jnthn moritz++
21:12 fgomez left
jnthn Oh...blech. 21:16
Looks like it was just some zombie nqp instance meaning that copying a new nqp.exe in place fails 21:17
diakopter ?
jnthn ...silently. :/
diakopter add a pskill call to the windows stuff? 21:18
21:19 bbkr joined
diakopter pslist to get the process ids? 21:19
bbkr moritz++ # socket fix \o/ 21:20
diakopter (obviously runs only if sysinternals tools are on the path)
jnthn diakopter: Probably is better if it fails to copy, but I don't wanna shave that yak right now... 21:22
21:26 zby_home left
dalek p: 6ca59c6 | jnthn++ | src/QAST/Operations.nqp:
Add nqp::attrinited.

Originally in Perl 6 ops, but is a general 6model thing.
21:36
p: 8fc8891 | jnthn++ | src/stage0/ (9 files):
Update bootstrap to get nqp::attrinited.
p: da0668d | jnthn++ | src/QAST/Operations.nqp:
Fix a couple of op sigs.
p: 0b83296 | jnthn++ | src/core/NQPMu.pm:
Extend NQP BUILDPLAN to handle build closure case.
21:37 Janemba joined, Janemba is now known as amkrankruleuen, amkrankruleuen left, amkrankruleuen joined
timotimo what's the name for the inner things in "Array.new($(1, 10), $(2, 20))"? they were called Seq once. do i call them 'items' now? 21:38
tadzik looks like a list in item context to me 21:40
r: $(2, 20).WHAT.say
p6eval rakudo d2d2c8: OUTPUT«Parcel()␤»
timotimo i'm correcting the text on gather-take in S04 to replace a few things 21:41
tadzik r: Array.new($(1, 10), $(2, 20)).perl.say; Array.new([1, 10].item, [2, 20].item).perl.say
p6eval rakudo d2d2c8: OUTPUT«Array.new($(1, 10), $(2, 20))␤Array.new([1, 10], [2, 20])␤»
timotimo such as my ($y) := take $_, $_ * 10; - i turned that into my $y := (take $_, $_ * 10).item;
tadzik p6eval: pffft!
timotimo # @y contains 2 Seqs: Seq(1,10),Seq(2,20) sliced by binding to positional $y 21:43
this "sliced by binding to positional $y" would have been the part where $y was written as ($y) instead of just $y, yes?
at first attempt i tried writing my $y := \(take $_, $_ * 10); but that gave me a list of two captures that .perl'd into something rather big, so i thought that's not the right way to do it 21:44
oh, i should have written my ($y) := \(take $_, $_ * 10); that comes closest to the original 21:45
my ($y) := \(take $_, $_ * 10); # binding forces item context 21:47
is this a correct comment now?
jnthn think so
timotimo i consider this at least not completely wrong as well: # @y contains 2 Parcels: $(1,10),$(2,20) sliced by binding to positional $y 21:48
flussence well... I tried golfing down this Bailador precompilation bug by removing unrelated bits of source and the bug stopped happening. I don't know where to look now, I give up. 21:50
21:51 japhb_ joined
flussence can I just have a way to turn precomp off entirely? That would've saved me months of frustration. 21:51
jnthn Well, just don't ever install .pir files 21:52
japhb_ jnthn++ # Using the JVM porting work to fix places where ops and other abstractions where at the wrong level, so the next porter can retain more sanity
flussence okay, so that's panda out the window...
jnthn flussence: Yeah, but maybe panda can be configured in such a way 21:53
flussence: I mean, it'd need patching panda, but it may be doable.
timotimo panda already looks for a BUILD.pm, doesn't it?
diakopter japhb_++
timotimo maybe you can use that to configure
tadzik I can hack up '--noprecomp' or something 21:54
dalek kudo/nom: 57989bc | jnthn++ | tools/build/NQP_REVISION:
Bump NQP_REVISION.
21:55
kudo/nom: b36616b | jnthn++ | src/Perl6/Ops.pm:
Remove some ops that are now core ones.
kudo/nom: af76e6d | jnthn++ | src/ (2 files):
Some BUILDPLAN handling updates.
timotimo what's this about .get vs .getarg being used on the iterator returned by gather? doesn't seem like something i can manually do, is it something perl6 does for me depending on what context i iterate over the resulting list in? 21:56
21:58 fgomez joined
dalek ecs: ba2d03a | (Timo Paulssen)++ | S04-control.pod:
drafted some fixes for gather/take bitrot.
22:00
timotimo would appreciate a quick review. should i put tests for this exact code into integration/ or something?
jnthn Probalby into S04 somewhere 22:01
22:02 fridim_ joined
timotimo i will do that then. with a notice to "fix S04-control.pod, too if those tests break" or something. 22:02
22:04 MayDaniel left 22:12 skids left 22:13 thou joined
timotimo one little mistake, but other than that the code seems to work. 22:15
dalek ast: 948ffc3 | (Timo Paulssen)++ | S04-statements/gather.t:
tests for S04-control.pod (gather/take)
22:16
ecs: 96c45e7 | (Timo Paulssen)++ | S04-control.pod:
fix a typo: Lol -> LoL.
22:23 kaare_ left 22:24 fridim_ left
timotimo masak: the biggest problems i had was with your test case generating stuff 22:29
masak oh, I can imagine that!
one of those "you think it's cute today" kind of ideas... 22:30
timotimo ;)
well, the big problem is bringing the names into the test library
it tries to call functions &before and &after or something and all the names of the subs
but i had problems getting to that, because how does it know where to look? how does the Ix get the foo.t when it says use Test::Ix in foo.t? 22:31
in that situation i don't think there's something like OUTER:: or CALLER::
masak I have no memory of how I implemented that.
quite possibly it relied on some part of Rakudo that was broken but is now fixed. 22:32
good ♞, #perl6
timotimo good ℕight, masak
22:35 bluescreen10 left 22:37 thou left 22:42 bluescreen10 joined
dalek kudo/nom: b22982b | jnthn++ | src/ (3 files):
Fix $obj.Some::Role::meth(...).

Previously, it did not convey the correct self, since it relied on the punning mechanism, which must invoke on the pun. Now it's fixed to do the right thing.
22:44
22:45 slayer101_ joined 22:51 cibs joined
jnthn pst 22:56
oops, ww
diakopter pst indeed 22:57
bbkr sink content causes fallback to be executed on object instance creation. weird bug or expected behavior? 23:00
r: class A { }; A.^add_fallback(sub ( $object, $name ) { say $name }, sub ( $object, $name ) { return method {} }); A.new
p6eval rakudo af76e6: OUTPUT«sink␤sink␤»
bbkr and somehow it is called twice 23:01
sink context*
bbkr reports just in case
jnthn Neither are surprising, fwiw. 23:02
It's called on the type object on the add_fallback line 23:03
And then again on the A.new line
23:03 bluescreen10 left, cibs left
bbkr but fallback should be called on nonexistent methods, I haven't used such 23:04
jnthn Your type has no sink method 23:05
dalek kudo/nom: e267037 | jnthn++ | src/Perl6/Actions.pm:
Make try/CATCH exception case result in Nil.

This brings it in line with the try without explicit CATCH case.
jnthn fallbacks are just extra places to interrogate for extra methods.
so when there's no normal sink method, it checks with the fallbacks to see if one of those wishes to provide a suitable method. 23:06
23:07 stopbit left
bbkr thats very counterintuitive. in previous version A.new.foo activated fallback mechanism for method named "foo" without need to provide any methods named "sink" (I don't even know how such method should look like) 23:08
jnthn The reason add_fallback takes two things is so the first one can answer the "does this fallback know how to provide this method" question. 23:10
So you don't have to provide it at all, just answer with something false in the first one.
add_fallback exists for implementing stuff like has $!x handles <foo bar baz> 23:11
Well, wildcard-ier forms actually
23:11 cibs joined
bbkr I know that, but take a look from users perspective. When I implement fallback I expect that A.new won't invoke fallback mechanism and A.new.foo will question fallback mechanism about handling "foo" method. And suddenly after changes some "sink" method pops which is just some special name to hardcode. 23:13
jnthn r: class A { }; A.^add_fallback(sub ( $object, $name ) { say $name }, sub ( $object, $name ) { return method {} }); my $x = A.new 23:14
p6eval rakudo e26703: OUTPUT«sink␤sink␤»
jnthn Hm, wonder why the two calls there...
Trouble with "user's perspective" here is that you're using .^add_fallback, which is part of the MOP. It's never been spec'd, it came to exist soley as a way to help implement the (user-facing) handles method. 23:15
s/method/trait/
bbkr I agree that it is not spec'd. Is there a way in handles trait to find out method name that was invoked? 23:18
jnthn No; that's not really what handles is for. 23:19
The way I expected method generation related things to happen is by doing a custom meta-class and overriding find_method. 23:21
Of course, you'd still get sink that way so...
timotimo no matter how often i try, i don't seem to understand new, BUILD and bless :| 23:22
bbkr this change wrecked JSON::RPC module :(
and there is no nice way to fix it except hardcoding list of exceptions in first sub 23:23
jnthn Well, the problem is that the mechanism was designed with the expectation of the first sub serving as a *whitelist*.
And I'm guessing you actually are just taking any undeclared method name and turning it into a call elsewhere. 23:24
bbkr yes 23:25
jnthn Well, the other fix is just to write in the class you add the fallback to a method sink() { self } 23:27
japhb_ What does complex dispatch (multimethod, multisub, single method against multi inheritance, etc.) eventually bottom out to, implementation wise? "Call this code with this flat list of positional arguments"? Or is VM expected to handle named arguments and primitive method dispatch as well?
jnthn multi is always a secondary dispatch, optimization aside 23:28
and methods are late bound so it's only multi subs that get that
bbkr is curious why stuff like A.new.Str does not pop up in fallback but sinks do
jnthn: should I report sink popping up twice? 23:29
jnthn bbkr: Because you inherit a default Str method.
You don't inherit a Sink
*sink
23:30 lue joined
japhb_ So let me turn that question around a bit: What does NQP need from the VM glue in terms of handling function calls in order to just basically function? 23:31
s/basically function/handle its most basic functionality/
jnthn Well, clearly the JVM does not handle named arguments, so I'm having to build that extra bit there. 23:32
It'd probably be more efficient if it could natively describe a callsite's named/flattening aspects
japhb_ But it sounds like you do have to add that into the glue before you can get NQP operational.
jnthn Yes
japhb_ gotcha.
23:42 Guest99405 left
jnthn Generally, it's good to keep dispatch (deciding what will be called) and invocation apart. 23:42
The final invocation is about the same however we reached the decision. 23:43
bbkr jnthn: adding "method sink { self }" fixed the module, thanks. not a pretty hack because it pollutes dispatch and creates one exception that will never work as expected when called. 23:44
jnthn You already have a bunch, though.
23:45 PacoAir left
jnthn r: say Any.^methods, Mu.^methods 23:45
p6eval rakudo e26703: OUTPUT«eager elems end classify uniq infinite flat hash list lol pick roll reverse sort values keys kv pairs Array grep first join map min max minmax push tree unshift postcircumfix:<[ ]> at_pos all any one none postcircumfix:<{ }> at_key reduce FLATTENABLE_LIST FLATTENAB…
bbkr true 23:46
jnthn I'm guessing you don't have a way to introspect the available methods remotely? 23:47
.oO( if I understand the module at all... :) )
bbkr no, JSON-RPC does not have any schema or self-discovery mechanisms 23:48
jnthn OK 23:49
bbkr ok, now that I have module fixed one question remains - is "sink" request appearing twice in fallback check a bug or not?
jnthn It could be being placed in sink context somewhere inside of the new/bless/wherever. It may indicate somewhere we can optimize things, but it's not in itself a bug. 23:50
imho anyway
moritz: Second opinion on ^^ welcome.
bbkr jnthn: thanks for help and patience to explain this to me 23:51
jnthn np 23:52
timotimo i need to get (or write!) an introduction to new, build, buildall and bless for dummies 23:54
jnthn timotimo: I think there's a moritz blogpost that explains it somewhere, if you didn't already see that. 23:55
timotimo i saw that, read it, thought i understood, and continued to not be able to use them properly
jnthn Write a method new when you want to provide an interface to construction other than named parameters (e.g. if you want to take a positional parameter). Your new should just about always call bless, rearranging any positionals into nameds. 23:57
Write a submethod BUILD when you want to control how those named parameters are mapped to attributes and/or do some initialization work. 23:58
timotimo right. do i have to do any attribute setting in BUILD, if i have one?
jnthn No, you don't have to. 23:59
Well, depends what you mean by "have to" :)
timotimo if i don't, will i get "can't look up methods on a type object" when i don't do anything about them in my BUILD?