Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2013-05-12

Perl 6 | Reference Documentation | Rakudo

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:00 TimToady or was it the other way around...
00:00 sneilan Yeah, Python is very limited in it's expressiveness.
00:01 sneilan And it has that GIL.
00:02 rjbs excessively interesting
00:04 btyler hi #perl6: I've been noticing some typos here and there in the .pods included in rakudo*. is https://github.com/perl6/doc the place to check to see if said typos still exist in the latest doc revision?
00:06 FROGGS btyler: looks like, yes
00:09 btyler ok, great, thanks
00:16 diakopter btyler: would you like commit access to fix those?
00:17 diakopter (if you don't already)
00:18 btyler diakopter: up to you -- I'm too much a perl6 newbie to actually improve the docs much, I just have a list of typos I was going to submit as a pull req
00:18 btyler but if it's a 'liberal commit bit' sort of repo, my github acc is kanatohodets
00:19 diakopter added
00:19 btyler cool, will fix and push shortly :)
00:25 sftp_ joined #perl6
00:45 jqui joined #perl6
00:45 sftp joined #perl6
00:45 eternaleye joined #perl6
00:46 jqui left #perl6
00:48 * flussence is temporarily confused by the +< 0x08, 0x10, 0x18 lines in Buf.pm
00:48 jqui joined #perl6
00:49 flussence might be nicer to write those as 0o10 0o20 0o30...
00:58 clkao joined #perl6
00:58 silug____ joined #perl6
00:58 genehack_ joined #perl6
00:59 cognominal__ joined #perl6
00:59 jqui left #perl6
00:59 jaldhar_ joined #perl6
01:00 bbkr_ joined #perl6
01:00 leprevost__ joined #perl6
01:00 jqui joined #perl6
01:01 Ayiko joined #perl6
01:01 jqui left #perl6
01:01 jqui joined #perl6
01:01 woolfy joined #perl6
01:01 ilogger2 joined #perl6
01:01 snarkyboojum joined #perl6
01:01 alester joined #perl6
01:01 Vlavv joined #perl6
01:01 woosley1 joined #perl6
01:01 Timbus joined #perl6
01:02 Ulti_ joined #perl6
01:02 gfldex_ joined #perl6
01:02 integral_ joined #perl6
01:02 integral_ joined #perl6
01:03 BinGOs joined #perl6
01:03 BinGOs joined #perl6
01:04 autumn joined #perl6
01:04 geekosaur joined #perl6
01:04 diakopter nwc10: when was Java/Perl Lingo removed from perl? I want to find the most recent release with it
01:04 colomon so many netsplits I've lost all but the last two hours of backlog.  :(
01:05 diakopter nm found it
01:06 Celelibi joined #perl6
01:06 jqui left #perl6
01:06 lestrrat joined #perl6
01:07 tokuhirom joined #perl6
01:08 Targen joined #perl6
01:10 FROGGS_ joined #perl6
01:12 labster flussence: I had given some thought to support path names like ~/.perl6 or ~labster/foo.  Not sure what the interface should be, exactly, but I would like to see a working File::Homedir.
01:12 ifim joined #perl6
01:13 labster In the absence of functions like getpwnam being available, I guess we could just parse /etc/passwd.
01:14 labster But I probably will at least look into adding it to IO::Path.
01:19 diakopter labster: has anyone given you the thumbs-up to use NativeCall?
01:19 diakopter in IO::Path, I mean
01:23 rking1 joined #perl6
01:28 japhb joined #perl6
01:38 btyler joined #perl6
01:40 labster Nope.  The bigger problem is me not knowing how to use NativeCall, or really C at all.
02:19 lue You could maybe use the $HOME variable, at least on linux (esp. if someone decides to make ~ equal /dev/secretlair/ or somesuch)
02:23 sorear getpwnam is not the same as HOME
02:23 sorear getpwnam gives you the initial value of $HOME (and several other fields) for *any* user
02:24 sorear $HOME does not help you to expand ~bob/foo
02:24 sorear and you can't just parse /etc/passwd in general.  NIS...
02:25 TimToady sure, just go to $HOME/../$otherguy  :D
02:26 lue Huh. I don't actually *have* getpwnam, it seems
02:26 sorear doesn't help if you have /home/l/larry or something like that
02:27 TimToady was a joke
02:27 lue like I said, $HOME env-var would be a better bet (unless that's not reliably available either)
02:27 flussence I wrote some code for a few p5 Buf formats, if anyone else wants them (I did): https://gist.github.com/flussence/5562165
02:28 colomon sorear: is there anything more involved in prepping the boot/run/Niecza.exe file other than just copying a working run/Niecza.exe there?
02:29 DreamingInCode joined #perl6
02:29 sorear colomon: yes, it's much more complicated than that
02:29 sorear colomon: read the makefile rule "reboot" for the details. :)
02:30 sorear oh right I changed this a bit
02:30 sorear run make mknext
02:30 sorear I usually do make mknext; cd next; make mknext; cd next; make spectest because I'm paranoid like that
02:31 colomon paranoid is good in this case, I think.
02:31 sorear after then make mkpackage, cd package, zip -9r ../niecza.zip *, upload to github, and change FETCH_URL
02:31 sorear hi DreamingInCode.
02:33 colomon sorear++
02:36 dalek doc: ce25ff4 | (Ben Tyler)++ | lib/ (30 files):
02:36 dalek doc: Typo/spelling fixes, a few small wording changes.
02:36 dalek doc: review: https://github.com/perl6/doc/commit/ce25ff43ee
02:37 sorear btyler++
02:39 btyler glad to help :)
02:46 census joined #perl6
02:47 adu joined #perl6
02:56 DreamingInCode Hi sorear ^_^
03:07 drbean_ joined #perl6
03:10 lustlife joined #perl6
03:11 colomon joined #perl6
03:14 frd|afk joined #perl6
03:19 Gothmog__ joined #perl6
03:20 takesako____ joined #perl6
03:35 dalek joined #perl6
03:38 hugme joined #perl6
03:39 preflex_ joined #perl6
03:54 woosley joined #perl6
04:12 gdey joined #perl6
04:25 Psyche^ joined #perl6
04:36 shachaf sorear: If you're doing INTERCAL things maybe you should be in #esoteric!
04:44 shachaf Oh, you've been there before. Never mind.
04:48 amodell joined #perl6
05:06 moritz good morning
05:08 trexy joined #perl6
05:12 sorear good mornign moritz
05:13 moritz \o sorear
05:44 jaldhar_ joined #perl6
05:46 kaare_ joined #perl6
05:48 grondilu rn: say { foo => 'bar' }.classify: *.value
05:48 camelia niecza v24-49-gfa3b5ca: OUTPUT«Unhandled exception: Unable to resolve method classify in type Hash␤  at /tmp/C7AmREazZz line 1 (mainline @ 9) ␤  at /home/p6eval/niecza/lib/CORE.setting line 4327 (ANON @ 3) ␤  at /home/p6eval/niecza/lib/CORE.setting line 4328 (module-CORE @ 582) ␤  at /h…
05:48 camelia ..rakudo 06eddc: OUTPUT«("bar" => ["foo" => "bar"]).hash␤»
06:57 dmol joined #perl6
07:01 jaldhar_ joined #perl6
07:05 domidumont joined #perl6
07:06 domidumont joined #perl6
07:08 domidumont joined #perl6
07:12 domidumont joined #perl6
07:25 cotto joined #perl6
07:36 FROGGS flussence++ # unpack
07:40 FROGGS flussence: do you have a pack sub too?
07:46 dalek rakudo/nom: 738531a | (Brent Laabs)++ | src/core/IO/Spec/Unix.pm:
07:46 dalek rakudo/nom: fix jnthn++'s report of infinite recursion in IO::Spec::Unix.rel2abs
07:46 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/738531ae8b
07:46 dalek rakudo/nom: 2a04f23 | (Brent Laabs)++ | src/core/IO/Spec/Unix.pm:
07:46 dalek rakudo/nom: Merge pull request #137 from labster/nom
07:46 dalek rakudo/nom:
07:46 dalek rakudo/nom: fix jnthn++'s report of infinite recursion in IO::Spec::Unix.rel2abs
07:46 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/2a04f23dbc
07:48 labster well, I hope it fixes it anyway, since it's only a bug on Windows, and I'm not running it.
07:49 labster ah, well, morning #perl6 o/
07:49 sorear o/
07:58 FROGGS hi labster, sorear
07:58 FROGGS labster: have you seen this? https://github.com/perlpilot/p6​-File-Temp/pull/1/files#diff-0
07:59 labster nope, haven't seen it.
07:59 labster If they're on rakudo, they should just use $*TMPDIR
08:00 labster Yeah, I think I'll add that to the spec.
08:01 labster actually, sorear, how hard would it be for me to add the filespec code to niecza?  It's all Perl 6 code, with only one tiny parrot call (to get the $*OS).
08:02 SamuraiJack joined #perl6
08:10 sorear labster: you might want to look at the stuff that's already there, in particular IO.combine
08:11 sorear n: say IO.combine("foo","bar")
08:11 camelia niecza v24-49-gfa3b5ca: OUTPUT«"foo/bar".IO␤»
08:11 labster Oh, neat!
08:11 sorear does p6 have official filespecs now?
08:11 sorear niecza's filespec stuff was added for the compiler's own path-searching benefit, it's surely prespec
08:12 labster Well, it's not entirely official, since I wrote most of it, but I think it's somewhat fairly sane.
08:13 sorear also the niecza stuff is a wrapper over the .NET filespec code
08:14 labster The main approach for me was just to import File::Spec because something needed to the do the underlying operations for IO::Path, and it so it got added as IO::Spec.
08:15 labster Sounds like you're using the .NET stuff.  Which might be good and fairly fast.  I'd still like to expose the underlying operations, because someone will want them.
08:17 labster The other inspiration was Path::Class, so I tried to replicate as much of that as possible.  Anyway, the basic idea is in S32::IO, if you want to take a look, sorear.  It might be useful to have the perspective from another VM.
09:45 spider-mario joined #perl6
10:07 lizmat hello #perl6!
10:07 FROGGS hi lizmat
10:08 rindolf joined #perl6
10:09 FROGGS lizmat: btw, if you want to make the adverbs for statement_control:use work, have a look at that: https://github.com/rakudo-p5​/v5/blob/master/rakudo.patch
10:09 FROGGS most of these changes are for the adverbs in general
10:10 FROGGS but only :file and :from are handled
10:10 FROGGS :name should be pretty easy though
10:11 lizmat hmmm…  do you have plans to merge this into nom any time soon?
10:23 jnthn Good afty o/
10:23 lizmat jnthn!
10:23 dmol1 joined #perl6
10:27 dagurval r: sub a { return "a", "b"; }; my $c = a(); $c.perl.say;
10:27 camelia rakudo 2a04f2: OUTPUT«$("a", "b")␤»
10:27 dagurval I want $c to contain only "a", is this possible?
10:27 lizmat r: sub a { return "a", "b"; }; my $c = a.key; $c.perl.say;
10:27 camelia rakudo 2a04f2: OUTPUT«No such method 'key' for invocant of type 'Parcel'␤  in block  at /tmp/KlAmV0aQoY:1␤␤»
10:27 lizmat r: sub a { return "a", "b"; }; my $c = a[0]; $c.perl.say;
10:27 camelia rakudo 2a04f2: OUTPUT«"a"␤»
10:28 lizmat r: sub a { return "a", "b"; }; say a.WHAT;
10:28 camelia rakudo 2a04f2: OUTPUT«(Parcel)␤»
10:28 lizmat dagurval: is that an answer?
10:29 dagurval lizmat: not really, I was looking for something more like p5 wantarray
10:29 dagurval r: sub a { return "a", "b"; }; my ($c) = a(); $c.perl.say;
10:29 camelia rakudo 2a04f2: OUTPUT«"a"␤»
10:31 lizmat S08:212 states: "Context deferral is actually the reason why Perl 6 no longer supports the "wantarray" operator, nor does it provide any substitute. The way
10:31 lizmat you should implement wantarray-like behavior is by properly overriding the coercion for each context. The Contextual::Return module is an implementation of that concept in Perl 5."
10:31 lizmat hence, no wantarray in Perl 6
10:35 lizmat FROGGS: it appears dissect_longname is indeed extracting pairs from "Foo:name<Bar>:auth<cpan:JRANDOM>:ver<1.0>", but not from the shorthand notatation "Foo:<Bar cpan:JRANDOM 1.0>"
10:36 dalek rakudo/jvm-support: 37c7620 | (Tobias Leich)++ | src/core/Cursor.pm:
10:36 dalek rakudo/jvm-support: dont't treat array references as arrays in regexes
10:36 dalek rakudo/jvm-support:
10:36 dalek rakudo/jvm-support: They will be stringified instead, and must be dereferenced to be arrayish.
10:36 dalek rakudo/jvm-support: review: https://github.com/rakudo/rakudo/commit/37c7620bd6
10:36 jnthn Merge heuristic fail... :)
10:37 dalek joined #perl6
10:37 tadzik :)
10:40 dalek nqp/rak-jvm-support: 48e5dfa | (Brent Laabs)++ | src/vm/parrot/QAST/Operations.nqp:
10:40 dalek nqp/rak-jvm-support: add missing constants STAT_UID, STAT_GID, STAT_ISLNK
10:40 dalek nqp/rak-jvm-support: review: https://github.com/perl6/nqp/commit/48e5dfa212
10:40 dalek nqp/rak-jvm-support: cb2aa86 | jonathan++ | src/vm/parrot/QAST/Operations.nqp:
10:40 dalek nqp/rak-jvm-support: Merge pull request #98 from labster/master
10:40 dalek nqp/rak-jvm-support:
10:40 dalek nqp/rak-jvm-support: add missing constants STAT_UID, STAT_GID, STAT_ISLNK
10:40 dalek nqp/rak-jvm-support: review: https://github.com/perl6/nqp/commit/cb2aa8697e
10:40 dalek nqp/rak-jvm-support: ba3cdf2 | jnthn++ | src/vm/parrot/QAST/Operations.nqp:
10:40 dalek nqp/rak-jvm-support: Merge branch 'master' into rak-jvm-support
10:40 dalek nqp/rak-jvm-support: review: https://github.com/perl6/nqp/commit/ba3cdf2d18
10:40 jnthn There's both of my branches caught up :)
10:42 preflex joined #perl6
10:47 lizmat I guess the shorthand notation can be NYI while the rest gets implemented  :-)
11:00 nebuchadnezzar joined #perl6
11:03 lizmat r: class Foo:auth<JRANDOM> {}; class Foo {}
11:03 camelia rakudo 2a04f2: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Redeclaration of symbol Fooâ�¤at /tmp/dMz7pitoX4:1â�¤------> [32mclass Foo:auth<JRANDOM> {}; class Foo [33mâ��[31m{}[0mâ�¤    expecting any of:â�¤        statement listâ�¤        horizontal whitespaceâ�¤        postfixâ�¤        statement endâ�¤   …
11:03 lizmat I'm assuming that this should *not* cause a redeclaration error, or should it?
11:05 lizmat because "class Foo {}" is equivalent to "class Foo:auth<(Any)>", right?
11:06 jnthn I think it may be a re-decl error in so far as declaring Foo:auth<JRANDOM> installs an alias Foo so you can talk about it conveniently.
11:07 lizmat but if these classes would be in 2 different files, loaded with "use", they wouldn't clash?
11:07 lizmat or would you really have to say "use Bar:name<Foo>" ?
11:08 jnthn Good question :)
11:08 * jnthn didn't read The Specs recently enough on this stuff.
11:09 jnthn Provided they actually have an answer...
11:09 lizmat I'm not sure the specs are clear enough on that…  will check again
11:22 lizmat I guess S11:355 contains the spec
11:23 lizmat "Modules posted to CPAN or entered into any standard Perl 6 library are required to declare their full name so that installations can know where to keep them, such that multiple versions by different authors can coexist, all of them available to any installed version of Perl."
11:23 lizmat I guess this is not true for current modules in core or in panda
11:25 FROGGS lizmat: about the shorthand version: you are right, one would have to parse that properly, but I think this can wait until the normal pair-syntax works
11:26 FROGGS the major problem with :auth and :name is how to actually do the ax-/importing
11:26 FROGGS ex*
11:27 lizmat indeed
11:27 lizmat :-)
11:27 FROGGS if you have an A.pm, which contains class A::B too, then use A:name('A::B') might work well (and would actually make sense)
11:28 SamuraiJack_ joined #perl6
11:28 lizmat well that would be a redeclaration error, I would think
11:29 FROGGS jnthn: (v5) btw, subroutine runtime check seems to work, as well as giving subs an implicit 'is export' trait when a script gets require-d
11:29 FROGGS now I just have to do the import :/
11:29 FROGGS lizmat: why?
11:30 lizmat because I assume A.pm also contains a "class A {}"
11:30 FROGGS use A just locales the file, and will then try to import the symbol A
11:30 lizmat right
11:30 FROGGS but if you give it another name, it will locale file A.pm and will import the symbols by the given name (A::B)
11:31 lizmat and then when you're trying to do the same with class A::B inside A.pm, to be aliased to A, it will class with the A already imported
11:31 FROGGS why aliased to A?
11:32 FROGGS r: need Test;
11:32 camelia rakudo 2a04f2:  ( no output )
11:32 lizmat that's what "use Foo:name<Bar>" does, alias class Bar to Foo in the current lexical context
11:32 FROGGS r: need Test; import Test
11:32 camelia rakudo 2a04f2:  ( no output )
11:32 FROGGS r: need Test; import Test::Something
11:32 camelia rakudo 2a04f2: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Could not find module Test::Something to import symbols fromâ�¤at /tmp/rYYbyr1HFO:1â�¤------> [32mneed Test; import Test::Something[33mâ��[31m<EOL>[0mâ�¤    expecting any of:â�¤        statement listâ�¤Â»
11:32 FROGGS hmmm, okay
11:33 FROGGS looks like I missed that part :o)
11:34 FROGGS then I think it is the other way around, it will do 'need Bar' instead of Foo, right?
11:34 FROGGS but still making the alias...
11:34 * lizmat checks up on "need"
11:35 FROGGS loading without importing
11:35 lizmat indeed: oddly enough no mention of :auth etc. there
11:35 lizmat I assume that would be needed there as well
11:37 lizmat r: need Test:auth<cpan:Perl>
11:37 camelia rakudo 2a04f2: OUTPUT«===SORRY!===␤Could not find Test:auth<cpan:Perl> in any of: /home/p6eval/nom-inst/lib/parrot/5.​2.0-devel/languages/perl6/site/lib, /home/p6eval/nom-inst/lib/parrot/5.2​.0-devel/languages/perl6/vendor/lib, /home/p6eval/nom-inst/lib/parro​t/5.2.0-devel/languages/perl6/…
11:38 FROGGS maybe we should parts of my patch within the next days if you wanna go ahead
11:39 lizmat *merge I assume?
11:39 lizmat perhaps….
11:39 FROGGS apply*
11:39 lizmat I want to prevent merge conflicts later, I hate merge conflicts
11:40 FROGGS I'll prepare a patch today and ask jnthn for his ok then
11:41 nwc10 jnthn++ # parsing 100% of the setting (even if there is some cheating currently)
11:42 lizmat did I miss the 100% announcement?
11:44 jnthn It's not quite 100% parse yet
11:44 jnthn The IO bits are missing
11:44 jnthn I'm gonna #?if parrot ... a bunch of that though
11:44 jnthn So we get the subs/type declarations so the parser doesn't explode at the end over unexplained mysteries.
11:48 nwc10 I saw a number that looked suspiciously like 13000 lines.
11:55 jnthn Well, the real total is a bit over 13,000. But yeah, we parse 12500 or so by now.
11:55 nwc10 http://blog.headius.com/2013/05/on-la​nguages-vms-optimization-and-way.html -- curious that he says "Python has similar structural complexities to Ruby and adds in the additional complexity of an introspectable call stack." ... "PyPy does an admirable job of attacking this problem by rewriting currently-running code and lifting on-stack state to the heap when it is accessed, but this approach prevents dropping unused local state (since you can't predict
11:56 nwc10 I had thought that Ruby was the most crazy of the lot, but he seems to think that at the limit Python is harder than Ruby.
11:56 nwc10 (he's Charles Nutter, the JRuby guy. So I assume that he has some idea what he's talking about)
12:00 jnthn Yeah, it's an interesting post.
12:02 jnthn We are both lucky and unlucky in Perl 6 terms. We may often have the chance to statically know something about the representation an object has (good). However, if it's a P6opaque, it can be mixed in to.
12:07 nwc10 one is also lucky that Larry has at least been designing the language with "how does this compile" in mind
12:07 jnthn Yes, true too :)
12:07 masak_ ahoj, #perl6
12:07 nwc10 even if he is often "having a laugh" by answering that question with "with difficulty"
12:08 nwc10 and still putting it in the spec, to see whether anyone can do it :-)
12:08 FROGGS hi masak
12:08 moritz \o *
12:08 FROGGS hi moritz
12:10 FROGGS I like the "actual lesson", I dont know why everybody thinks you get all these nice features perl 6  has for free...
12:10 * masak backlogs
12:19 lizmat afk for a few hours
12:23 stevan_ joined #perl6
12:24 stevan_ joined #perl6
12:27 masak oh btw, people who want to join the next #masakism workshop/party, please sign up early here: https://github.com/perl6/mu/w​iki/perl6-workshop-june-2013
12:28 FROGGS done
12:28 masak (datetimes are still provisional, but they get more and more set in stone the more time passes without people complaining about them.) :)
12:28 FROGGS :P
12:28 masak FR:P
12:28 masak er, FROGGS*
12:29 FROGGS :o)
12:29 masak wow, it actually made an actual tab character there.
12:29 masak impressive.
12:29 FROGGS hmm, not visible here
12:29 * masak is on a train, and can apparently type faster than the software can react
12:30 FROGGS wow, you should talk about that with einstein if you get the chance
12:30 moritz just write the software in Perl 6, then it's easy to type faster :-)
12:30 FROGGS *g*
12:34 dalek rakudo/jvm-support: 2b041d6 | jnthn++ | src/vm/parrot/guts/container.c:
12:34 dalek rakudo/jvm-support: Remove dead code.
12:34 dalek rakudo/jvm-support: review: https://github.com/rakudo/rakudo/commit/2b041d6319
12:34 dalek rakudo/jvm-support: 1ff3ec2 | jnthn++ | src/core/ (4 files):
12:34 dalek rakudo/jvm-support: Eliminate on Q:PIR, mark out rest for Parrot only.
12:34 dalek rakudo/jvm-support:
12:34 dalek rakudo/jvm-support: For the Range one, it's an optimization, so can fall back on slow path
12:34 dalek rakudo/jvm-support: until we implement the fast path again on JVM. The rest just throw an
12:34 dalek rakudo/jvm-support: NYI for now.
12:34 dalek rakudo/jvm-support: review: https://github.com/rakudo/rakudo/commit/1ff3ec2a4b
12:34 dalek rakudo/jvm-support: c2f2ebb | jnthn++ | src/ (16 files):
12:34 dalek rakudo/jvm-support: Dozens of pir:: -> nqp:: in CORE.
12:34 dalek rakudo/jvm-support:
12:34 dalek rakudo/jvm-support: Also, mark a few other pir:: out in #?if parrot sections and die NYI
12:34 dalek rakudo/jvm-support: for JVM.
12:34 dalek rakudo/jvm-support: review: https://github.com/rakudo/rakudo/commit/c2f2ebb74e
12:37 jaldhar_ joined #perl6
12:40 d4l3k_ joined #perl6
12:40 jnthn afk for a bit
12:44 LylePerl joined #perl6
12:45 FROGGS r: sub plan(*@t) { }; plan( tests => 7 )
12:45 camelia rakudo 2a04f2: OUTPUT«Unexpected named parameter 'tests' passed␤  in sub plan at /tmp/0CEa0gFx8_:1␤  in block  at /tmp/0CEa0gFx8_:1␤␤»
12:45 FROGGS r: sub plan(*%t) { }; plan( tests => 7 )
12:45 camelia rakudo 2a04f2:  ( no output )
12:45 FROGGS r: sub plan(*%t) { }; plan( tests, 7 )
12:45 camelia rakudo 2a04f2: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Undeclared routine:â�¤    tests used at line 1â�¤â�¤Â»
12:45 FROGGS r: sub plan(*%t) { }; plan( 'tests', 7 )
12:46 camelia rakudo 2a04f2: OUTPUT«Too many positional parameters passed; got 2 but expected 0␤  in sub plan at /tmp/U8AyHq427K:1␤  in block  at /tmp/U8AyHq427K:1␤␤»
12:54 nyuszika7h joined #perl6
13:00 silug____ joined #perl6
13:03 Moukeddar joined #perl6
13:08 fhelmberger joined #perl6
13:13 nyuszika7h joined #perl6
13:20 kaare_ joined #perl6
13:46 masak kboga++ # pack, unpack
13:46 masak I wish to get back to that code at some point.
13:46 masak in my copious spare time.
13:47 masak there's a gist somewhere with a run-thought of all the flags in Perl 5, and how they would (or wouldn't) translate.
13:47 FROGGS masak: where is that code?
13:47 masak it used to be just in ng. kboga ported it to nom.
13:48 masak see 7d33ee1c50d9552b0802ebca5f06cc83fc660c8b
13:49 FROGGS cool! thanks
13:49 guru joined #perl6
13:49 FROGGS (pack/unpack has about 16k tests in the perl5 spectest suite)
13:49 masak yes, I know.
13:50 masak I once started trying to port that code, too. didn't get very far...
13:52 FROGGS masak: how is the sprintf going? :P
13:52 FROGGS .fmt I mean
13:53 masak no, it's actually sprintf. it's in a public repo: https://github.com/masak/sprintf
13:54 masak I can make you a deal: if you write tests, I'll implement them ;)
13:54 FROGGS well, I have tests basically... it is just the wrong language
13:55 masak sounds like that could simplify things.
13:55 masak but srsly. pull-request a bunch of tests, and I'll see about providing an implementation.
13:55 FROGGS cool, will do (some day)
13:55 masak \o/
13:55 FROGGS dunno when I come to sprintf
13:55 * masak gets off the train &
13:55 Chillance joined #perl6
13:55 FROGGS o/
13:56 nwc10 IIRC sprintf should be more easily initially, as a whole chunk of tests are table driven
14:04 dalek v5: 1d133e9 | (Tobias Leich)++ | lib/Perl5/ (2 files):
14:04 dalek v5: handle fatarrow just like comma
14:04 dalek v5: review: https://github.com/rakudo-p5/v5/commit/1d133e9c05
14:05 dalek v5: 3d76de2 | (Tobias Leich)++ | t/test.pl:
14:05 dalek v5: provide plan( tests => 1 ) sub for testsuite
14:05 dalek v5: review: https://github.com/rakudo-p5/v5/commit/3d76de2fd4
14:08 leprevost joined #perl6
14:09 dalek nqp/rak-jvm-support: e295778 | jnthn++ | src/vm/parrot/QAST/Operations.nqp:
14:09 dalek nqp/rak-jvm-support: Add nqp::const::CONTROL_*.
14:09 dalek nqp/rak-jvm-support: review: https://github.com/perl6/nqp/commit/e295778374
14:13 dalek v5: 1eb2172 | (Tobias Leich)++ | t/test.pl:
14:13 dalek v5: remove debug out
14:13 dalek v5: review: https://github.com/rakudo-p5/v5/commit/1eb2172b81
14:14 xinming joined #perl6
14:16 flussence good morni...^Wwhatever
14:17 flussence FROGGS: I guess I could look at pack for those, hadn't thought about that at all.
14:22 nwc10 labster: does the JVM have getpwuid and getpwnam? If not, put in a feature request to Oracle at the same time as you put on in to Parrot :-)
14:23 nwc10 ie, I think that such features would be better implemented in NQP or Perl 6, using a native call to C
14:49 grondilu rn: sub f($x where $x > $y, $y) { $x - $y }; say f 1, 0
14:49 camelia rakudo 2a04f2: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Variable '$y' is not declaredâ�¤at /tmp/WxDUy0f3gr:1â�¤------> [32msub f($x where $x > $y[33mâ��[31m, $y) { $x - $y }; say f 1, 0[0mâ�¤    expecting any of:â�¤        postfixâ�¤Â»
14:49 camelia ..niecza v24-49-gfa3b5ca: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤â�¤Variable $y is not predeclared at /tmp/D8io380oBv line 1:â�¤------> [32msub f($x where $x > [33mâ��[31m$y, $y) { $x - $y }; say f 1, 0[0mâ�¤â�¤Unhandled exception: Check failedâ�¤â�¤  at /home/p6eval/niecza/boot/lib/CORE.setting lin…
14:50 grondilu any chance in the future we could put parameter conditions in any order?
14:51 jnthn Very unlikely to happen.
14:51 jnthn Breaks the usual "declare before usage" rule for variables.
14:52 jaldhar joined #perl6
14:53 eternaleye joined #perl6
14:55 dalek rakudo/jvm-support: 1eea478 | jnthn++ | src/core/Exception.pm:
14:55 dalek rakudo/jvm-support: Remove a currently dead code-path.
14:55 dalek rakudo/jvm-support:
14:55 dalek rakudo/jvm-support: We don't use the exception system for return.
14:55 dalek rakudo/jvm-support: review: https://github.com/rakudo/rakudo/commit/1eea478087
14:55 dalek rakudo/jvm-support: 6f98f42 | jnthn++ | src/core/ (2 files):
14:55 dalek rakudo/jvm-support: Replace some pir::const with nqp::const.
14:55 dalek rakudo/jvm-support: review: https://github.com/rakudo/rakudo/commit/6f98f42815
14:55 dalek rakudo/jvm-support: b911004 | jnthn++ | src/core/Exception.pm:
14:55 dalek rakudo/jvm-support: Start updating some exception related code.
14:55 dalek rakudo/jvm-support: review: https://github.com/rakudo/rakudo/commit/b911004931
14:59 FROGGS flussence: I'd like to supply these within Perl5::Terms or maybe another submodule
15:03 FROGGS it feels good to revert workarounds and run the original tests more and more unmodified
15:04 dmol joined #perl6
15:07 dalek v5: a28f2d0 | (Tobias Leich)++ | / (2 files):
15:07 dalek v5: treating things before fatarrow as strings
15:07 dalek v5: review: https://github.com/rakudo-p5/v5/commit/a28f2d0d7b
15:07 census joined #perl6
15:15 skids joined #perl6
15:17 SamuraiJack__ joined #perl6
15:17 dalek nqp/rak-jvm-support: 68aa9b0 | jnthn++ | src/vm/parrot/QAST/Operations.nqp:
15:17 dalek nqp/rak-jvm-support: Map some math-related ops.
15:17 dalek nqp/rak-jvm-support: review: https://github.com/perl6/nqp/commit/68aa9b0d6f
15:17 dalek nqp/rak-jvm-support: 299d223 | jnthn++ | src/vm/parrot/QAST/Operations.nqp:
15:17 dalek nqp/rak-jvm-support: nqp::[get|set]extype ops.
15:17 dalek nqp/rak-jvm-support:
15:17 dalek nqp/rak-jvm-support: Already have nqp::getextype on the JVM.
15:17 dalek nqp/rak-jvm-support: review: https://github.com/perl6/nqp/commit/299d223a8f
15:17 dalek rakudo/jvm-support: 16d96a7 | jnthn++ | src/ (4 files):
15:17 dalek rakudo/jvm-support: Some more pir:: -> nqp::.
15:17 dalek rakudo/jvm-support: review: https://github.com/rakudo/rakudo/commit/16d96a74c5
15:17 dalek rakudo/jvm-support: 8b8aa51 | jnthn++ | src/core/ (2 files):
15:17 dalek rakudo/jvm-support: Update a bit more of the exception code.
15:17 dalek rakudo/jvm-support: review: https://github.com/rakudo/rakudo/commit/8b8aa51caf
15:18 hoelzro_ joined #perl6
15:18 nebuchad` joined #perl6
15:19 xinming_ joined #perl6
15:19 rhr_ joined #perl6
15:19 markov1 joined #perl6
15:19 bbkr__ joined #perl6
15:19 Util_ joined #perl6
15:25 sftp_ joined #perl6
15:25 genehack joined #perl6
15:28 jnthn_ joined #perl6
15:28 broquain1 joined #perl6
15:28 Tene_ joined #perl6
15:28 Tene_ joined #perl6
15:28 jferrero_ joined #perl6
15:28 diakopte1 joined #perl6
15:28 huf_ joined #perl6
15:28 mls joined #perl6
15:28 pjcj_ joined #perl6
15:28 sciurius joined #perl6
15:28 japhb joined #perl6
15:32 _ilbot joined #perl6
15:32 Topic for #perl6 is now »ö« Welcome to Perl 6! | http://perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:,  niecza:, std:, or /msg camelia perl6: ... | irclog: http://irc.perl6.org/ | UTF-8 is our friend!
15:32 hoelzro joined #perl6
15:35 larks joined #perl6
15:43 adu joined #perl6
15:46 adu left #perl6
15:47 grondilu rn: my @a = ^4; say (state@ = @a) xx 2; say @a
15:47 camelia rakudo 2a04f2: OUTPUT«␤0 1 2 3␤»
15:47 camelia ..niecza v24-49-gfa3b5ca: OUTPUT«0 1 2 3 0 1 2 3␤0 1 2 3␤»
15:47 adu joined #perl6
15:47 grondilu rn: my @a = ^4; say (state@ = @a).pop xx 2; say @a
15:47 camelia rakudo 2a04f2: OUTPUT«Element popped from empty list␤  in method Str at src/gen/CORE.setting:10021␤  in method Str at src/gen/CORE.setting:876␤  in method Stringy at src/gen/CORE.setting:885␤  in method join at src/gen/CORE.setting:1375␤  in method Str at src/gen/CORE.setting:5969␤  in …
15:47 camelia ..niecza v24-49-gfa3b5ca: OUTPUT«3 2␤0 1 2 3␤»
15:48 masak a lot of things look wrong there.
15:48 adu hi all
15:49 masak hi adu
15:49 grondilu niecza is right, though
15:49 grondilu isn't it?
15:50 jnthn The left hand side of xx is thunked iirc
15:50 adu can I use "also" for everything?
15:50 guru joined #perl6
15:50 adu like class A { also is B; also is C; }?
15:50 jnthn But that still doesn't explain it
15:51 jnthn Given it should only run twice...
15:51 grondilu rn: my @a = ^4; say (state@ = @a).pop() xx 2; say @a
15:51 masak adu: yes, I think so.
15:51 camelia rakudo 2a04f2: OUTPUT«Element popped from empty list␤  in method Str at src/gen/CORE.setting:10021␤  in method Str at src/gen/CORE.setting:876␤  in method Stringy at src/gen/CORE.setting:885␤  in method join at src/gen/CORE.setting:1375␤  in method Str at src/gen/CORE.setting:5969␤  in …
15:51 camelia ..niecza v24-49-gfa3b5ca: OUTPUT«3 2␤0 1 2 3␤»
15:51 jnthn adu: Yeah, it parses any trait_mod after it, iirc
15:52 jnthn also does SomeRole; # should also be fine
15:52 jnthn git diff
15:52 jnthn oops
15:52 adu jnthn: oh, how goes nap?
15:52 adu nqp
15:52 jnthn adu: Well, fine, though I'm mostly focused on Rakudo at the moment... :)
15:52 adu I guess that's a good sign
15:52 grondilu n: my @a = ^3; say (state@ = @a).pop() xx 2; say @a
15:52 camelia niecza v24-49-gfa3b5ca: OUTPUT«2 1␤0 1 2␤»
15:53 adu I feel like helping
15:54 jnthn adu: Well, the IO stuff seems to be one place things are weak
15:54 * grondilu submits rakudobug
15:56 adu is that done with nqp opcodes? or a class?
15:57 dalek nqp/rak-jvm-support: 73e7810 | jnthn++ | src/vm/parrot/QAST/Operations.nqp:
15:57 dalek nqp/rak-jvm-support: Fix a code-gen thinko in setpayload.
15:57 dalek nqp/rak-jvm-support: review: https://github.com/perl6/nqp/commit/73e7810655
15:57 adu jnthn: are you talking about jvm-specific IO stuff? or IO stuff in general?
15:57 jnthn adu: Well, at present we do various method calls on some Parrot IO object.
15:57 jnthn adu: In many places in Rakudo, anyway.
15:57 jnthn adu: In NQP those things typically got replaced with op-y things.
15:58 jnthn adu: So part of it is updating Rakudo to use those that exist. And another is identifying missing things and maybe adding nqp:: ops for them and doing the JVM implementation.
15:59 adu and so we need to replace pir::whut with nqp::whut if it exists
16:00 adu and implementing in java those things that don't exist
16:01 jnthn adu: Yeah, but sometimes it's not so simple
16:01 jnthn Like, nqp::getstderr().print(...) works fine on Parrot but should be nqp::printfh(nqp::getstderr(), ...) to work portably
16:01 jnthn So it's a bit more involved than a simple pir:: -> nqp::.
16:02 adu got it, I'll take a look
16:39 dalek nqp/rak-jvm-support: a937cc6 | jnthn++ | src/vm/parrot/QAST/Operations.nqp:
16:39 dalek nqp/rak-jvm-support: Add an nqp::replace op.
16:39 dalek nqp/rak-jvm-support:
16:39 dalek nqp/rak-jvm-support: Guess we can implement it better than just some substr/concat ops on
16:39 dalek nqp/rak-jvm-support: most platforms, so it's worth an op.
16:39 dalek nqp/rak-jvm-support: review: https://github.com/perl6/nqp/commit/a937cc62ea
16:40 cognominal joined #perl6
16:40 dalek rakudo/jvm-support: 4c3cf33 | jnthn++ | src/core/ (2 files):
16:40 dalek rakudo/jvm-support: More exception stuff; elimiante Q:PIR in THROW.
16:40 dalek rakudo/jvm-support: review: https://github.com/rakudo/rakudo/commit/4c3cf33773
16:40 dalek rakudo/jvm-support: 4aa838a | jnthn++ | src/ (4 files):
16:40 dalek rakudo/jvm-support: Make junction auto-threader setup portable.
16:40 dalek rakudo/jvm-support: review: https://github.com/rakudo/rakudo/commit/4aa838a035
16:40 dalek rakudo/jvm-support: 90b955b | jnthn++ | src/core/ (2 files):
16:40 dalek rakudo/jvm-support: Eliminate pir::replace usages.
16:40 dalek rakudo/jvm-support: review: https://github.com/rakudo/rakudo/commit/90b955b967
16:40 dalek rakudo/jvm-support: 79531c9 | jnthn++ | src/Perl6/World.nqp:
16:40 dalek rakudo/jvm-support: Eliminate another QAST::VM usage.
16:40 dalek rakudo/jvm-support: review: https://github.com/rakudo/rakudo/commit/79531c9e75
16:45 lizmat r: use Pod::To::Text
16:45 camelia rakudo 2a04f2:  ( no output )
16:47 lizmat r: need Test:name<Pod::To::Text>
16:47 camelia rakudo 2a04f2: OUTPUT«===SORRY!===␤Could not find Test:name<Pod::To::Text> in any of: /home/p6eval/nom-inst/lib/parrot/5.​2.0-devel/languages/perl6/site/lib, /home/p6eval/nom-inst/lib/parrot/5.2​.0-devel/languages/perl6/vendor/lib, /home/p6eval/nom-inst/lib/par​rot/5.2.0-devel/languages/pe…
16:48 * lizmat is looking at S11:243, specifically wrt "import Factorial 'fact'"
16:49 lizmat I'm wondering whether the module specified there is the shortname alias (the Foo in "need Foo:name<Some::Very::Long::Module>")
16:50 lizmat or indeed the "Some::Very::Long::Module" name.
16:50 FROGGS I guess the alias
16:50 lizmat if the latter, we will need :name:auth:ver: semantics for import as well
16:50 lizmat I would also guess the alias
16:51 lizmat but the spec is not too clear about it
16:52 FROGGS well, it is bad and good at the same time
16:52 FROGGS good because you just need to implement/propose sane things and this will become spec
16:52 FROGGS bad because we might introduce crap
16:53 lizmat hehe...
16:54 lizmat I'm not afraid I might introduce crap
16:54 lizmat I'm certain I will
16:54 lizmat :-)
16:56 FROGGS *g*
16:57 lizmat during my bike ride I also realized that most likely, that the key with which a module's namespace need to be anchored, will also need to include "from"
16:57 lizmat so the key would consist of (from,name,auth,ver)
16:58 lizmat so, saying: "class Foo {}"
16:58 lizmat should create a namespace for the module keyed to "perl6,Foo,(Any),(Any)"
16:59 lizmat I guess inslead of "perl6", one should say "current slang"
16:59 lizmat $*LANG I believe?
17:02 jnthn It's %?LANG (or %*LANG inside the compiler), and it's a braid rather than a single value.
17:02 jnthn That's a lexical concern, however.
17:02 gdey joined #perl6
17:03 jnthn Rather than an import/export one.
17:03 jnthn At least, that's my first gut feeling on it.
17:07 lizmat r: say %?LANG
17:07 camelia rakudo 2a04f2: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Variable '%?LANG' is not declaredâ�¤at /tmp/oFgyR0tgtJ:1â�¤------> [32msay %?LANG[33mâ��[31m<EOL>[0mâ�¤    expecting any of:â�¤        postfixâ�¤Â»
17:08 jnthn Not sure it's exposed to user-land yet.
17:09 lizmat I guess not  :-)
17:10 lizmat but do you agree that "from" needs to be part of the key of the namespace of the module?
17:10 pecastro_ joined #perl6
17:10 jnthn Well, what does "namespace" really mean?
17:11 jnthn Any kind of package (be it a class, module, whatever) is just an object, and it can be installed somewhere.
17:11 FROGGS it is an identifier which lets you distinguish between two modules... like: use Test:from<perl5>; use Test:from<perl6>
17:11 jnthn We could install it under a long name for sure.
17:12 jnthn It's not an inherent property of the thing itself, though. It's just a matter of where it gets put.
17:12 lizmat well, we need to be able to look it up later
17:12 lizmat to be able to spot collissions
17:13 jnthn You'll get the collision at symbol installation time, no?
17:13 lizmat FROGGS example above should give a redeclaration error
17:13 jnthn "We can't install this, there's already something wiht that name"
17:13 lizmat as they would both alias into Test
17:13 jnthn Yes, makes sense.
17:13 FROGGS lizmat: yeah, one needs to be installed under a different name
17:14 lizmat assume we have a Foo.pm and a Foo2.pm
17:14 lizmat Foo2.pm however contains "class Foo;"
17:15 mangala joined #perl6
17:15 lizmat saying "use Foo" and "use Foo2" in the same process should give a redeclaration error
17:16 jnthn It'll probably be reported as GLOBAL merging having failed, but yes, that already should be an error today.
17:16 lizmat which comes to another thing: according to spec, "auth", "ver" and "from" are inherited
17:17 jnthn "inherited"?
17:17 lizmat class Foo:auth<Me> { class Bar { } }  # Bar is also :auth<Me>
17:18 jnthn Oh...for for things lexically nested...
17:18 jnthn OK, I can buy that. :)
17:18 jnthn I was worried you mean inheritance in the OO since, in which case it woulda felt odd :)
17:19 jnthn *meant
17:19 jnthn *sense
17:19 jnthn meh, typing
17:19 lizmat I wonder whether we shouldn't have something that externally specifies what the default "from", "auth" and "ver" are when doing a load_module()
17:20 lizmat I mean, if someone has a module on CPAN, do we really want to force them to say "class Foo:auth<cpan:ME>" for all classes?
17:20 lizmat or do we want that information to be used as a default from the META.info ?
17:20 rking1 joined #perl6
17:21 mangala joined #perl6
17:21 * lizmat is trying to find the gist with labster?s proposal for file storage of modules
17:22 lizmat anyway, assuming I have a module Foo 1.0 on CPAN
17:23 FROGGS I believe it was tadziks proposal
17:23 lizmat that would e.g. be installed under */perl6/Foo/ELIZABETH/1.0/*
17:23 jnthn We've tended to lean towards the source code being the authoritative source of everything.
17:23 thou joined #perl6
17:23 jnthn With any pre-compilation in the end really being seen as a kind of cache.
17:24 lizmat hmmm...
17:26 FROGGS lizmat: I still believe that filesystem storage is not enough, thinking of unicode module names and since the installer (panda) should care about dists, not modules itself
17:26 FROGGS ... even after dists are installed
17:26 lizmat so, in that case, */perl6/Foo/ELIZABETH/1.0/Foo.pm" should contain "class Foo:auth<cpan:ELIZABETH>:ver<1.0>"
17:26 FROGGS IMO the distribution has a version/auth/...
17:26 lizmat well, how it is installed in the file system, doesn't really matter, as long as we can find stuff
17:27 FROGGS true
17:27 lizmat the thing is that you would need to force developers to change potentially each "class" statement with each update of a distribution
17:28 FROGGS hmmm, depends
17:29 lizmat I can see people making errors with this quite easily
17:29 lizmat well, let me put it this way: I can see it work for :ver (as developers are already doing something like that, e.g. with specifying $VERSION)
17:30 FROGGS if you say 'use Foo:auth<github.com/FROGGS>' you want a specific distribution, so after looking up where the files of that dist are installed, you dont need to care about the auth of class definitions
17:31 FROGGS so I'd say these fields are at least optional for the modules of a dist
17:31 FROGGS but one can argue that if a submodule version is given, it should override the dists version
17:32 lizmat ah, but that's where I think you forget that there is no hard link between "use Foo" and "class Foo"
17:32 lizmat use Foo only gives you a way to find a file in the installed modules space on disk
17:33 lizmat but if that file only contains "class Bar", there is nothing that will prevent that
17:33 FROGGS no, 'use Foo' should search for all dists that provide Foo
17:33 lizmat aha, so installing a distribution will parse the code to find out which classes it provides?
17:33 lizmat and store that info in a database to be used by "use" ?
17:34 FROGGS either that or you have to put that in META.info when doing a release
17:34 lizmat so, in my above example: if I would say "use Bar", it would load "Foo.pm" ?
17:34 FROGGS right
17:34 lizmat because it knows that Foo.pm provides class Bar
17:34 FROGGS that 'right' was for: <lizmat> and store that info in a database to be used by "use" ?
17:34 lizmat yes, got that :-)
17:35 * flussence would like a "provides" key in META.info, mainly because I keep typing `panda install URI::Escape` by mistake...
17:35 FROGGS but yeah, if the Foo dist provides class Bar somehow (via META.info), it would find it
17:36 lizmat from S11:600 :     class Dog:<cpan:JRANDOM 1.2.1>
17:36 lizmat emulates Dog:auth(DCONWAY|JCONWAY|TCONWAY):ver<1.0+>
17:36 lizmat excludes Fox:<http://oreillymedia.com 3.14159>
17:36 lizmat emulates Wolf:from<C# 0.8..^1.0>;
17:36 FROGGS that is a bit extreeme
17:36 lizmat I assume all of that information would then need to live either in META.info, or in the modules database of an installation
17:37 FROGGS in both places I'd say
17:37 lizmat I know it is, but it wouldn't be strange for this to happen (says the original author of "forks.pm" which emulates "threads.pm")  :-)
17:37 FROGGS *g*
17:40 dalek rakudo/jvm-support: 18e87c7 | jnthn++ | src/core/ (10 files):
17:40 dalek rakudo/jvm-support: Try to mark out remaining Parrot-specific bits.
17:40 dalek rakudo/jvm-support: review: https://github.com/rakudo/rakudo/commit/18e87c7e17
17:40 dalek rakudo/jvm-support: c72613f | jnthn++ | tools/build/Makefile-JVM.in:
17:40 dalek rakudo/jvm-support: Add remaining setting files to JVM build.
17:40 dalek rakudo/jvm-support: review: https://github.com/rakudo/rakudo/commit/c72613f8f1
17:46 MayDaniel joined #perl6
17:52 masak flussence: that "provides" idea sounds worthwhile.
17:52 masak flussence: maybe open a panda issue?
17:52 Chillance_ joined #perl6
17:53 FROGGS should be "provides" : { "Foo::Bar" : "Foo/Bar.pm" } IMO
17:53 FROGGS in case the module name is unicode and the filename is 8.3 or so
17:58 berekuk joined #perl6
17:59 flussence the whole idea doesn't feel very DRY, I was thinking something like «"provides": ["Foo::*"]» as a sort of indexing hint while all the authoratitive stuff stays in the module itself.
18:02 lizmat FROGGS: how the file gets installed, is an installation issue: I don't think the developer needs to know or care about that
18:02 lizmat the distribution provides a logical file name, the installer will make sure that the files will get installed somewhere on the local filesystem
18:02 lizmat and can be found later
18:03 lizmat so the META.info need not care whether the filename is 8.3 or not
18:09 lizmat tadzik: is there any kind of hackathon / other activities planned after the PLPW ?
18:19 guru joined #perl6
18:22 lizmat joined #perl6
18:30 rindolf joined #perl6
18:37 tadzik lizmat: I don't know. Is there interest :)
18:37 tadzik ?
18:37 tadzik there was a plan to do hackathon time after the last talk
18:38 tadzik 'til the evening
18:38 tadzik til night do us part
18:38 lizmat that sounds like a plan then
18:38 tadzik ok, I'll schedule it
18:38 lue hello world o/
18:38 lizmat I would want to pick your brains about quite a few things by then, I think
18:38 lizmat :-)
18:38 tadzik okay :)
18:39 lizmat we will travel back on Monday, so that we can prepare our travel to YAPC::NA
18:39 lizmat I assume this goes for jnthn and masak as well  :-)
18:40 masak will travel back on Sunday.
18:41 masak teaching on the Monday :/
18:41 tadzik officially scheduled now
18:41 sergot hi ! o/
18:41 lizmat argh, and jnthn?
18:41 lizmat hi sergot!
18:41 tadzik jnthn leaves with masak iirc
18:42 masak aye.
18:42 lizmat so what time will you be leaving, masak?
18:42 masak Sunday afternoon.
18:42 masak think plane leaves at 18:00, but will have to leave for airport some hours before that...
18:44 lizmat ok, then I would suggest moving tadzik's last presentation *before* the lunch break
18:44 domidumont joined #perl6
18:44 lizmat and have the lunch break ease into hackathon for those interested
18:45 tadzik masak: it's about 0.5 hours from the venue to the airport
18:45 tadzik lizmat: we can do that
18:46 lizmat keeping people's attention after a long lunch break is difficult as it is  :-)
18:46 masak sounds good.
18:46 tadzik we'll do some more thinking on the Board Meeting this tue
18:47 lizmat cool!
18:52 Rix joined #perl6
18:53 * masak .oO( attention all: thinking has been postponed until Tuesday ) :P
18:53 moritz good idea
18:53 moritz and when I stop thinking, I can proceed straight to bed :-)
18:57 * lizmat unthinks
19:03 masak unthinkable!
19:04 lizmat om
19:04 lizmat om
19:04 flussence nom?
19:04 lizmat om
19:06 * masak .oO( sorry to disturb you; we were unsure whether that was meditating or masticating )
19:07 lizmat om
19:07 masak ;)
19:08 lizmat http://en.wikipedia.org/wiki/Om for the uninitiated
19:08 lizmat I guess it's a bit like Mu
19:09 flussence .oO( we're still unsure )
19:10 masak ooh, Tamil script is so adorable!
19:11 * hoelzro looks
19:17 sorear good * #perl6
19:17 lizmat sorear!
19:17 masak sorear! \o/
19:17 masak sorear: I now (sorta kinda) understand functors, natural transformations, and universality.
19:18 sorear hey, how did you know I read 'category theory for scientists' last night
19:19 FROGGS lizmat: but since you can have more than one to-provide module within a file, it is n:1, so still: "provides" : { "Foo::Bar" : "Foo/Bar.pm" }
19:19 dalek rakudo/jvm-support: 4e7e52b | jnthn++ | src/vm/jvm/ (2 files):
19:19 dalek rakudo/jvm-support: Implement nqp::p6argvmarray.
19:19 dalek rakudo/jvm-support: review: https://github.com/rakudo/rakudo/commit/4e7e52b91c
19:19 dalek rakudo/jvm-support: 276ace8 | jnthn++ | src/vm/jvm/runtime/org/perl6/rakudo/Ops.java:
19:19 dalek rakudo/jvm-support: nqp::p6list, nqp::p6listiter.
19:19 dalek rakudo/jvm-support: review: https://github.com/rakudo/rakudo/commit/276ace8b79
19:19 masak sorear: all of it? I'm only just starting in on chapter 4, the juicy parts.
19:19 masak sorear: but I'm also reading Saunders Mac Lane (slowly).
19:20 masak sorear: I've never smoked pot, but my distinct impression is that category theory would go very well with it.
19:20 lizmat FROGGS: indeed, and that's another can of worms  :-(
19:22 jnthn That's be great. "What led you to start smoking weed?" "Category theory, man..."
19:23 masak (note to irony-impaired: do not try this at home. category theory is strong stuff, and has been known to ruin people's lives.)
19:24 btyler joined #perl6
19:27 dagurval r: (1, (2, 3))[0][1].say
19:27 camelia rakudo 2a04f2: OUTPUT«Index out of range. Is: 1, should be in 0..0␤  in method gist at src/gen/CORE.setting:10022␤  in method gist at src/gen/CORE.setting:893␤  in sub say at src/gen/CORE.setting:10920␤  in method say at src/gen/CORE.setting:890␤  in method say at src/gen/CORE.setting:8…
19:27 dagurval is this incorrect?
19:28 dagurval oh, it is. should be [1][1] :).
19:29 jnthn No, that thing flattens.
19:29 dagurval r: (1, (2, 3))[1;1].say
19:29 camelia rakudo 2a04f2: OUTPUT«WARNINGS:␤Useless use of constant integer 1 in sink context (line 1)␤2␤»
19:30 dagurval n: (1, (2, 3))[1][1].say
19:30 camelia niecza v24-49-gfa3b5ca: OUTPUT«3␤»
19:31 dalek rakudo/jvm-support: 2f43abc | jnthn++ | src/ (2 files):
19:31 dalek rakudo/jvm-support: An op stub and tweak to survive optimizer.
19:31 dalek rakudo/jvm-support: review: https://github.com/rakudo/rakudo/commit/2f43abc72d
19:31 dagurval how do I make it not flatten?
19:32 jnthn Writing it (1, [2, 3]) is the easy way :)
19:32 dagurval r: (1, [2, 3])[1;1].say
19:32 camelia rakudo 2a04f2: OUTPUT«WARNINGS:␤Useless use of constant integer 1 in sink context (line 1)␤2 3␤»
19:33 sorear masak: I did haskell back in the day so I've got a bit of a head start, especially with functors
19:33 jnthn And we don't do the ; thing yet, so [1][1] was right
19:33 dagurval r: (1, [2, 3])[1][1].say
19:33 camelia rakudo 2a04f2: OUTPUT«3␤»
19:33 dagurval ah, there we go :)
19:33 gtodd joined #perl6
19:34 gtodd in perl6 how does one do the python equivalent of .dir or dir() to show the methods associated with a class?
19:34 jnthn r: say Int.^methods
19:34 camelia rakudo 2a04f2: OUTPUT«Int Num Rat FatRat abs Bridge chr sqrt base expmod is-prime floor round ceiling sign conj rand sin asin cos acos tan atan atan2 sec asec cosec acosec cotan acotan sinh asinh cosh acosh tanh atanh sech asech cosech acosech cotanh acotanh unpolar cis Complex log exp …
19:35 lizmat joined #perl6
19:36 gtodd right .^methods ... so there is no equivalent in perl5
19:36 gtodd or none that is as succinct
19:37 masak sorear: ah, yes. I've understood FP's definition of it for a few years, even if I haven't been doing that much Haskell.
19:37 lizmat and there is no way to generate that, as it is really hard to see whether a sub is a public method, a private method or just a sub
19:37 lizmat or any combination of the above  :)
19:38 lizmat I think I got warnocked on this, or lost responses in a net split
19:38 lizmat does this make sense as a short-term goal for me: https://gist.github.com/lizmat/5557120
19:39 masak sorear: when I understood CT's definition of functor, I just filed it away in my brain as "morphism-preserving mapping between categories".
19:40 gtodd jnthn: in Int..^methods  is the "^" there a prefix operator?
19:41 masak gtodd: no, it's 'Int.^methods' with one dot
19:41 masak gtodd: and '.^' is syntactic sugar for a methodcall on Int's metaclass.
19:41 masak method call*
19:43 shachaf masak: "morphism-preserving"?
19:43 gtodd ok looking ta the operators docs it says: TODO: .= .^ .:: .() .[] .{} .<>
19:44 gtodd masak: so there's a long way to do it too
19:46 masak shachaf: a morphism is an arrow between two objects in a category. 'morphism-preserving' means that if two objects mapped *from* have an arrow between them, then the two objects mapped *to* must have an arrow as well.
19:46 flussence p5eval: say unpack("H*", pack("CCcccc", -0x01, 0x130, -0x02, -0x99, 0x50, 0xFF))
19:46 p5eval_ flussence: ff30fe6750ff1
19:46 lizmat jnthn: I see in a lot of "if +@foo {}" in e.g. World.nqp.  Is there a reason not to just say "if @foo {}" ? (without the "+" ?
19:46 masak gtodd: yes.
19:46 flussence p5eval: say unpack("H*", pack("CCcccc", -0x01, 0x130, -0x02, -0x99, 0x50, 0xFF)) . "#"
19:46 p5eval_ flussence: ff30fe6750ff#1
19:46 masak r: say Int.HOW
19:46 camelia rakudo 2a04f2: OUTPUT«Perl6::Metamodel::ClassHOW.new()␤»
19:46 masak r: say Int.HOW.methods(Int)
19:46 camelia rakudo 2a04f2: OUTPUT«Int Num Rat FatRat abs Bridge chr sqrt base expmod is-prime floor round ceiling sign conj rand sin asin cos acos tan atan atan2 sec asec cosec acosec cotan acotan sinh asinh cosh acosh tanh atanh sech asech cosech acosech cotanh acotanh unpolar cis Complex log exp …
19:46 masak gtodd: like so.
19:46 flussence perldoc isn't all that clear on how pack clamps values to a type's range
19:47 spider-mario joined #perl6
19:47 shachaf masak: That's the "type" of the functor, not the "law" part, isn't it?
19:47 * shachaf 's words are a bit Haskell-influenced.
19:47 jnthn lizmat: No. In fact, if @foo { } is most likely faster
19:47 masak shachaf: I'm not sure I understand your question.
19:48 shachaf I.e. you're saying that if k : A -> B, Then F_a(k) : F_o(A) -> F_o(b)?
19:48 lizmat jnthn: so should I replace any "if +@foo" with "if @foo" ?
19:48 gtodd masak: interesting
19:48 flussence p5eval: join(q{}, unpack("H*", pack("CCcccc", -0x01, 0x130, -0x02, -0x99, 0x50, 0xFF)));
19:48 p5eval_ flussence: ff30fe6750ff
19:48 flussence er
19:48 masak sciurius: yeah.
19:48 flussence p5eval: join(q{ }, unpack("H*", pack("CCcccc", -0x01, 0x130, -0x02, -0x99, 0x50, 0xFF)));
19:48 p5eval_ flussence: ff30fe6750ff
19:48 sorear masak: shachaf's "law" refers to the fact that functors preserve composition relationships
19:48 masak er, shachaf: yeah.
19:48 flussence p5eval: join(q{ }, unpack("(H2)*", pack("CCcccc", -0x01, 0x130, -0x02, -0x99, 0x50, 0xFF)));
19:48 p5eval_ flussence: ff 30 fe 67 50 ff
19:48 masak sorear: well, they must, don't they, with that definition? :)
19:49 sorear fmap (f . g) = fmap f . fmap g;  fmap id = id
19:49 lizmat sciurius usually just lurks here  :-)
19:49 shachaf masak: No.
19:49 masak hm.
19:49 shachaf masak: The "preserving" part is two laws:
19:49 shachaf F_a(id_X) = id_{F_o(X)}
19:49 jnthn lizmat: Yes, it if breaks nothing, which I don't think it will
19:49 sorear They must in the programming language usage due to parametricity
19:50 sorear But in general mathematics it needs to be stated explicitly
19:50 shachaf sorear: No, you can write invalid fmap instances with the correct type. :-)
19:50 shachaf (Or did I misunderstand?)
19:50 * lizmat starts the +axe
19:50 masak shachaf: this is all highly interesting.
19:51 flussence r: my int32 $bar = 99999999999999999999; say $bar
19:51 camelia rakudo 2a04f2: OUTPUT«1661992959␤»
19:51 shachaf The other law is that if S : X -> Y and T : Y -> Z (and so T . S : X -> Z) then F_a(T . S) = F_a(T) . F_a(S)
19:51 flussence that gives me a completely different result locally and definitely not a 32-bit one.
19:52 sorear The "graphs as functors from a fixed small category to Set" thing was very surprising and interesting
19:52 shachaf Graphs as in diagrams?
19:53 lizmat jnthn: I assume the same applies to "+@($node)", right?
19:53 sorear shachaf: no
19:53 masak shachaf: right, identity and associativity. you're basically saying that functors need to preserve them both.
19:53 sorear shachaf: let C be the category with two objects E and V, and two nonidentity functors src: E -> V, dst: E -> V
19:53 shachaf sorear: Er, wait. I misread.
19:54 sorear shachaf: the category Fun(C,Set) is similar to the category Graph
19:54 masak sorear: yes, that bit was cute :)
19:55 shachaf sorear: Ah.
19:56 jnthn lizmat: Only in boolean context.
19:56 dmol joined #perl6
19:57 lizmat jnthn: ok, as @foo does not return the number of elements in scalar context?
19:58 dmol1 joined #perl6
19:58 jnthn lizmat: Well, there's not a scalar context per se, but that thing in item context itemizes...at least in real Perl 6. In NQP, it doesn't really care about context at all :)
19:59 lizmat well, we're talking about .nqp files here
19:59 lizmat anyways, I'm building and do a spectest with Actions.nqp having all its +@ changed to @  :-)
20:00 lizmat we'll see what happens  :-)
20:00 jnthn OK. In boolean context should be fine :)
20:01 lizmat jnthn: && +@*MODULES == 0 &&
20:01 * sorear is still having some conceptual difficulties with sheaves
20:01 lizmat wouldn't && @*MODULES && be better?
20:02 spider-mario joined #perl6
20:02 lizmat && !@*MODULES &&
20:03 jnthn lizmat: Yes, would also be fine, though sometimes == 0 tells the story better. If you're doing == you probably don't need the +
20:03 dmol joined #perl6
20:04 lue jnthn: wouldn't you need the + to count up number of elements though?
20:04 lizmat with my Perl 5 goggles on, the + seems superfluous in any situation  :-)
20:05 dagurval r: (1, [2])[3].say
20:05 camelia rakudo 2a04f2: OUTPUT«Nil␤»
20:05 dagurval should this not be "out of range" error?
20:05 dagurval r: (1, 2)[3].say
20:05 camelia rakudo 2a04f2: OUTPUT«Nil␤»
20:05 dagurval r: (1)[1].say
20:05 camelia rakudo 2a04f2: OUTPUT«Index out of range. Is: 1, should be in 0..0␤  in method gist at src/gen/CORE.setting:10022␤  in method gist at src/gen/CORE.setting:893␤  in sub say at src/gen/CORE.setting:10920␤  in method say at src/gen/CORE.setting:890␤  in method say at src/gen/CORE.setting:8…
20:06 lue r: say (1).WHAT; say (1,2).WHAT;
20:06 camelia rakudo 2a04f2: OUTPUT«(Int)␤(Parcel)␤»
20:06 jnthn lue: == implies numeric context
20:06 lue right.
20:11 dmol joined #perl6
20:16 labster lizmat: I don't think that was my gist you were looking for... I haven't worked on importing at all.  Though your gist looks like a nice goal.
20:17 dalek nqp/rak-jvm-support: 4ba5aa1 | jnthn++ | src/vm/jvm/QAST/Compiler.nqp:
20:17 dalek nqp/rak-jvm-support: Add STAT_ constants on JVM.
20:17 dalek nqp/rak-jvm-support: review: https://github.com/perl6/nqp/commit/4ba5aa139c
20:17 dalek nqp/rak-jvm-support: 4658100 | jnthn++ | src/vm/jvm/QAST/Compiler.nqp:
20:17 dalek nqp/rak-jvm-support: Stub in some missing ops.
20:17 dalek nqp/rak-jvm-support:
20:17 dalek nqp/rak-jvm-support: Lots of LHF here to implement these.
20:17 dalek nqp/rak-jvm-support: review: https://github.com/perl6/nqp/commit/4658100234
20:17 dalek nqp/rak-jvm-support: 7f641eb | jnthn++ | src/vm/jvm/ (2 files):
20:17 dalek nqp/rak-jvm-support: Control exception constants.
20:17 dalek nqp/rak-jvm-support: review: https://github.com/perl6/nqp/commit/7f641ebe8b
20:17 lizmat it was more about how to manage installed distributions / modules
20:18 lizmat Perl 5's packlist as it were, but better
20:18 lizmat and supporting all of the Perl 6 features
20:24 pmichaud 20:02 <lizmat> && !@*MODULES &&
20:25 pmichaud that form is generally better.
20:25 pmichaud @array == 0   makes @array non-lazy
20:25 pmichaud !@array   doesn't.
20:25 lizmat does nqp do lazy arrays?
20:25 pmichaud oh, in nqp it doesn't matter
20:25 lizmat this was about nqp
20:26 pmichaud well, !@array is still probably better, though :)
20:26 lizmat and why I saw a lot of +@array in boolean contexts
20:26 lizmat and jnthn mentioned that without the +, it would be faster probably
20:26 lizmat testing that now
20:26 pmichaud I agree with him.
20:26 kivutar joined #perl6
20:26 pmichaud I don't know that it'll be noticeably faster, but it should be at least incrementally faster
20:27 pmichaud and   ?@array or !@array is more Perl6-idiomatic than +@array
20:31 jnthn o/ pmichaud
20:32 lizmat $ time nqp -e 'my $times := 1000000; my @array := (1,2,3); while $times-- { my $b:= +@array }'
20:32 lizmat shows it is 10..20% faster (as in less CPU usage)
20:32 lizmat without the +
20:35 dmol joined #perl6
20:37 dalek nqp/rak-jvm-support: 029e3ad | jnthn++ | src/vm/jvm/QAST/Compiler.nqp:
20:37 dalek nqp/rak-jvm-support: A couple more op stubbings.
20:37 dalek nqp/rak-jvm-support: review: https://github.com/perl6/nqp/commit/029e3ad561
20:37 dalek nqp/rak-jvm-support: 7a8142f | jnthn++ | src/vm/jvm/QAST/Compiler.nqp:
20:37 dalek nqp/rak-jvm-support: Make error betterer.
20:37 dalek nqp/rak-jvm-support: review: https://github.com/perl6/nqp/commit/7a8142fa65
20:38 pmichaud without the + and with a ?
20:38 pmichaud my $b := @array doesn't impose boolean context.
20:38 lizmat eh, no with/without +
20:39 lizmat with ?, it actually seems slower than without +
20:39 pmichaud right, that's possible.
20:39 pmichaud perhaps shouldn't be that way, but it's possible.
20:39 jnthn Well, the real question is between if @foo { } and if +@foo { }
20:39 jnthn On the JVM the first will almost certainly be faster.
20:40 lizmat indeed…  that was what I was after
20:40 * jnthn swears lots at exceptions...
20:40 pmichaud I suspect it can be made to be faster on Parrot, depending on how the boolean circularity saw cuts there
20:40 jnthn I can't tell what of this code is doing important stuff and what is working around Parrot.. :/
20:40 lizmat hehe… let's not worry about that
20:40 pmichaud I get 1.812s versus 1.644s for + versus ? on nqp-parrot
20:41 lizmat thats's user CPU ?
20:41 pmichaud real
20:41 pmichaud user CPU is 1.580s versus 1.528s
20:42 pmichaud so ? is faster on my system.
20:42 lizmat well, this is very finiccky, you need to run this quite a few times before you see a trend
20:42 pmichaud I did.
20:42 pmichaud (I've done a lot of timings w/rakudo and nqp :)
20:43 lizmat I've actually reduced the body to { @array }, to not have the overhead of the binding to $b
20:43 lizmat would that fudge the benchmarks?
20:43 pmichaud you're still not testing "boolean context" with that
20:43 lizmat so: $ time nqp -e 'my $times := 1000000; my @array := (1,2,3); while $times-- { @array }'
20:44 pmichaud use   1 if @array    and 1 if +@array
20:44 pmichaud { @array }   just tests the cost of a lexical lookup
20:44 gtodd lizmat: so re . perl5 non-equivalent of perl6's .^methods ... in the perl5 debugger if one does "use Mojo;" and then  x \%{Mojo}  you get a hash of a bunch of things and  m \%{Mojo) just gives you object methods like ... UNIVERSAL: isa ... etc. which is nowhere near perl6 introspection
20:45 gtodd and never can be ...
20:45 lizmat pmichaud: ok
20:45 lizmat gtodd: indeed
20:46 gtodd which is why perldoc is so good :-)
20:47 lizmat fwiw, all spectests pass with all s/+@/@/ in Actions.nqp
20:50 pmichaud \o/
20:50 pmichaud if nqp-parrot ends up being faster at +@array versus @array in boolean context, I think we'll just fix nqp-parrot :)
20:50 pmichaud lizmat++  # excellent optimization
20:51 * lizmat will run spectest again to make sure there is a difference viewable in the spectest as well
20:54 lizmat pmichaud: a question that came up earlier today, and was already answered by jnthn (provisionally)
20:55 lizmat with "import Foo", I assume that the "Foo" refers to an aliased module
20:56 lizmat assuming we did "use Foo:name<Bar>"
20:56 lizmat if not, then import would also need the whole :from:auth:ver specification
20:59 pmichaud That sounds reasonable to me.
20:59 pmichaud I'm still fuzzy on the import / use semantics at times.  I'll brush up on them before yapc::na, though :)
21:07 grondilu what's @a[1..*-1] in P5?
21:07 lizmat @a[ 1… $#a ] ?
21:08 grondilu really?
21:08 lizmat @a[ 1… @a ] ?
21:08 grondilu I know it works but I thought there was simpler
21:08 lizmat @a[ 1 @a ] ?
21:08 lizmat grrrrr
21:08 lizmat @a[ 1 .. @a ] ?
21:08 lizmat do you want all elements except the first ?
21:08 grondilu yeah
21:09 grondilu @a[ 1 .. @a ] will do I guess
21:09 lizmat @a[ 1 .. $#a ] ?
21:09 diakopter clone then unshift?
21:10 diakopter er shift
21:10 lizmat @a will give you the element past the array
21:10 dalek rakudo/jvm-support: 8297b3d | jnthn++ | src/vm/jvm/runtime/org/perl6/rakudo/Ops.java:
21:10 dalek rakudo/jvm-support: Implement p6setautothreader.
21:10 dalek rakudo/jvm-support: review: https://github.com/rakudo/rakudo/commit/8297b3de40
21:10 dalek rakudo/jvm-support: 1b21172 | jnthn++ | src/ (2 files):
21:10 dalek rakudo/jvm-support: Attempt to start getting exception code updated.
21:10 dalek rakudo/jvm-support: review: https://github.com/rakudo/rakudo/commit/1b211727ee
21:10 lizmat or not even clone, but shift, then unshoft
21:10 lizmat unshift
21:10 jnthn .oO( I unshoft it :D )
21:11 lizmat shift/unshift are highly optimized in p5, afaik
21:11 jnthn .oO( now how do I unshaft this code... )
21:11 diakopter lizmat: you're right, esp if you call the nqp:: ops directly
21:11 diakopter [to suggest that method]
21:12 diakopter well, shift, clone, unshift anyway
21:14 grondilu ah @a[ 1 .. @a ] is wrong (it goes too far).  I'll go with @a[ 1 .. $#a ]
21:17 masak er.
21:18 lizmat om?
21:18 masak sorry, I had to backlog to get enough context.
21:19 masak I think if I were doing that more than once in my code, I'd define a 'sub tail' or something.
21:19 dalek rakudo/jvm-support: 3b34521 | jnthn++ | src/ (2 files):
21:19 dalek rakudo/jvm-support: Yet more exceptiony stuff.
21:19 dalek rakudo/jvm-support:
21:19 dalek rakudo/jvm-support: Heck knows if this'll work. But it probably will; the exception stuff
21:19 dalek rakudo/jvm-support: in the NQP on JVM runtime runs handlers in the dynamic scope of the
21:19 dalek rakudo/jvm-support: throw by default and already takes care not to let active handlers
21:19 dalek rakudo/jvm-support: catch exceptions thrown within them, which it seems is what the dynops
21:19 dalek rakudo/jvm-support: we avoid using here do. Caveat: this isn't a solution for LEAVE.
21:19 dalek rakudo/jvm-support: review: https://github.com/rakudo/rakudo/commit/3b34521de0
21:19 * lizmat not sure about the context now
21:19 jnthn ah darn, next thing ix xor...
21:19 jnthn *is
21:21 masak jnthn: why is that "darn"? it's not even short-circuiting! :P
21:21 masak lizmat: the context of "how to extract all but the first element of an array?"
21:22 jnthn Hm...guess it's not so fiddly to port
21:22 masak mmm, port...
21:22 jnthn :P
21:22 jnthn Yeah, I drunk some of that recently...
21:22 lizmat from a performance point of view, creating a sub for that would probably not be so wise
21:22 lizmat depends on how often you would call that sub of course
21:23 lizmat (the question was for Perl 5, afaik)
21:23 Swarley__ joined #perl6
21:23 jnthn Well, if you're lucky your compiler will inline the sub... :)
21:23 masak lizmat: yes, sure.
21:24 masak lizmat: I think I would create the sub if it gained me any advantage from an API/readability perspective.
21:24 masak lizmat: and then maybe inline it again if it showed up as a pain point in profiling.
21:25 lizmat fair enough  :-)
21:25 ehouse_ ff
21:28 masak ehouse_: well, I'd sure like to see a solution that uses infix:<ff>, but surely that can't be the easiest way...
21:28 * masak .oO( &second_element ff &end_of_list )
21:47 dalek nqp/rak-jvm-support: d05794c | jnthn++ | src/vm/jvm/QAST/Compiler.nqp:
21:47 dalek nqp/rak-jvm-support: Add missing handler types.
21:47 dalek nqp/rak-jvm-support: review: https://github.com/perl6/nqp/commit/d05794cc01
21:47 dalek nqp/rak-jvm-support: 7b11022 | jnthn++ | src/vm/jvm/QAST/Compiler.nqp:
21:47 dalek nqp/rak-jvm-support: xor
21:47 dalek nqp/rak-jvm-support: review: https://github.com/perl6/nqp/commit/7b110220ad
21:49 masak 'night, #perl6
21:50 tadzik get_attr_str() not implemented in class 'Coroutine'
21:50 tadzik current instr.: 'print_exception' pc 111625 (src/gen/CORE.setting.pir:50165) (src/gen/CORE.setting:9744)
21:50 tadzik dafuq :|
21:50 lizmat night masak!
21:50 sorear night masak.  dream of cogent natural transformations
21:52 FROGGS tadzik: what are you doing?
21:52 tadzik FROGGS: panda install Farabi6 on panda2
21:52 FROGGS :/
21:53 tadzik I bet that if I comment out some CATCH {} I'll get a sensemaking error message
21:54 jnthn tadzik: There's also --ll-exception
21:54 tadzik ah, true
21:58 tadzik jnthn: otoh, I think I'd prefer --hl-exception ;)
21:58 jnthn ;)
22:00 Skillex joined #perl6
22:01 btyler joined #perl6
22:05 adu joined #perl6
22:06 jnthn ooh...think le porting effort just discovered a minor optimizer bug...
22:07 lizmat which will benefit rakudo-parrot as well?
22:09 jnthn Yeah, the optimizer is shared.
22:09 jnthn I'm a bit too tired to think of an example to demonstrate the failure it coulda caused...
22:09 jnthn Hm...actually I'm not sure you can construct an example that fails 'cus it woudln't attempt the opt.
22:10 jnthn It's just that it copied a piece of code it didn't need to when inlining blocks.
22:10 kivutar joined #perl6
22:10 jnthn Which turned out harmless on Parrot, but the JVM's takedispatcher compilation is a bunch stricter.
22:13 dalek v5: fa1ff4a | (Tobias Leich)++ | t/test.pl:
22:13 dalek v5: added all test subs from p6-Test.pm
22:13 dalek v5: review: https://github.com/rakudo-p5/v5/commit/fa1ff4aef8
22:13 dalek v5: 895f9f8 | (Tobias Leich)++ | STATUS.md:
22:13 dalek v5: today's status udpate
22:13 dalek v5: review: https://github.com/rakudo-p5/v5/commit/895f9f87d9
22:14 jnthn nqp: say(nqp::const::CCLASS_PRINTING)
22:14 camelia nqp: OUTPUT«64␤»
22:14 Skillex left #perl6
22:14 dalek panda/panda2: 9b8e854 | tadzik++ | lib/Panda/Builder.pm:
22:14 dalek panda/panda2: Don't read non-perl files when determining the build order
22:14 dalek panda/panda2:
22:14 dalek panda/panda2: This fixes Farabi6 installation.
22:14 dalek panda/panda2: review: https://github.com/tadzik/panda/commit/9b8e854d55
22:17 kurahaupo joined #perl6
22:23 lizmat gnight #perl6!
22:25 tadzik maybe it would be nice to have something like gcc -M for rakudo. At least it will be nice for panda :)
22:26 jnthn What's -M do?
22:26 jnthn We already have a -M ;)
22:26 tadzik Instead of outputting the result of preprocessing, output a rule suitable for make describing the dependencies of the main source file.
22:26 tadzik so, all the modules loaded with use or require
22:26 jnthn There's an env var you can set which tells you what other modules are loaded.
22:26 tadzik "what needs to be precompiled before"
22:28 kivutar joined #perl6
22:32 dalek nqp/rak-jvm-support: 08b9fff | jnthn++ | src/vm/jvm/QAST/Compiler.nqp:
22:32 dalek nqp/rak-jvm-support: Stub several more missing ops.
22:32 dalek nqp/rak-jvm-support: review: https://github.com/perl6/nqp/commit/08b9fff2d0
22:32 dalek nqp/rak-jvm-support: 1cd19ce | jnthn++ | src/vm/jvm/ (2 files):
22:32 dalek nqp/rak-jvm-support: Stub missing cclass (needs implementing).
22:32 dalek nqp/rak-jvm-support: review: https://github.com/perl6/nqp/commit/1cd19cee6a
22:32 dalek nqp/rak-jvm-support: 7ce3641 | jnthn++ | src/vm/jvm/runtime/org/perl6/nq​p/sixmodel/reprs/P6bigint.java:
22:32 dalek nqp/rak-jvm-support: P6bigint serialization/deserialization.
22:32 dalek nqp/rak-jvm-support: review: https://github.com/perl6/nqp/commit/7ce364124e
22:32 dalek rakudo/jvm-support: 7f612cf | jnthn++ | src/Perl6/Optimizer.nqp:
22:32 dalek rakudo/jvm-support: Don't copy takedispatcher on block inlines.
22:32 dalek rakudo/jvm-support: review: https://github.com/rakudo/rakudo/commit/7f612cf324
22:43 dalek nqp/rak-jvm-support: b9b52e3 | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/ (3 files):
22:43 dalek nqp/rak-jvm-support: A few small serialization related fixes.
22:43 dalek nqp/rak-jvm-support:
22:43 dalek nqp/rak-jvm-support: With these, serialization of CORE.setting works out.
22:43 dalek nqp/rak-jvm-support: review: https://github.com/perl6/nqp/commit/b9b52e3eee
23:07 adu oo you can!
23:07 adu r: class A { method hello { say "hello" } }; class B is A {}; class C is A {}; class D is B is C {}; D.new.hello
23:07 camelia rakudo 2a04f2: OUTPUT«hello␤»
23:07 adu good news
23:12 adu wait, when there is a conflict in the method resolution, whichever class is declared first gets precedence?
23:15 jnthn No, it uses C3 ordering
23:15 Khisanth joined #perl6
23:15 adu "C3 superclass linearization"?
23:17 jnthn yes
23:18 xenoterracide joined #perl6
23:21 jnthn Time for some rest...didn't get the blog post I meant to done today, but will get to it tomorrow...
23:21 jnthn 'night
23:24 colomon o/
23:27 adu good night jnthn
23:31 cognominal joined #perl6
23:32 sivoais joined #perl6
23:40 sivoais joined #perl6
23:41 sivoais joined #perl6
23:47 lue joined #perl6
23:51 frdmn joined #perl6

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

Perl 6 | Reference Documentation | Rakudo