Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2013-10-01

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 n: /<?[\s'#']><[\s'#']>*/
00:00 camelia niecza v24-95-ga6d4c5f: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤â�¤Please backslash # for literal char or put whitespace in front for comment at /tmp/Rxp8aWv33n line 1:â�¤------> [32m/<?[\s'#[33mâ��[31m']>​<[\s'#']>*/[0mâ�¤â�¤Parse failedâ�¤â�¤Â»
00:00 Mouq Yup, but Q is just kind of hacked on in NQP
00:03 TimToady so you're saying rakudo is NQP yet :)
00:04 Mouq One could either effectively have Q:cc functionality programmed in NQP and Rakudo seperately, or spread the Q lang between NQP and Rakudo
00:04 Mouq I think
00:06 Mouq Although I'm pretty sure Q:cc doesn't actually work right in Rakudo because I remember just copying ( https://github.com/rakudo/rakudo/commit/0ec828 ) it in before I knew what I was doing
00:06 TimToady well, how hard can it be?  cclass_elem is just defined in STD as: "[" ~ "]" <nibble($¢.cursor_fresh( %*LANG<Q> ).tweak(:cc).unbalanced("]"))>
00:06 timotimo .tweak(:cc) is probably only one line of code
00:07 TimToady it's just deriving from Q at that point, not from Regex
00:08 TimToady so either it's deriving mysteriously from Regex, or it's doing 2-pass parsing with bad assumptions
00:09 xilo joined #perl6
00:10 TimToady or something got badly copy/pasted
00:11 TimToady or some set of cosmic rays is being mysteriously consistent
00:12 Psyche^_ joined #perl6
00:14 diakopter probably the ones from Florida.
00:22 timotimo good * #perl6
00:26 Mouq r:  my $i = 4; say ' \qq[$i] '
00:26 camelia rakudo 458880: OUTPUT« 4 ␤»
00:27 Mouq r:  my $i = 4; say '$i\qq[$i]$i'
00:27 camelia rakudo 458880: OUTPUT«$i4$i␤»
00:28 Mouq r:  my $i = "echo 1234"; say '$i\qqx[$i]$i'
00:28 camelia rakudo 458880: OUTPUT«qx, qqx is disallowed in restricted setting␤  in sub restricted at src/RESTRICTED.setting:2␤  in sub QX at src/RESTRICTED.setting:9␤  in block  at /tmp/uHGXHZHt1H:1␤␤»
00:28 Mouq Aww
00:31 Mouq r: say '-->\qqto[END]<--'␤BLABLAbla␤  (more bla)␤END
00:31 camelia rakudo 458880: OUTPUT«-->BLABLAbla␤  (more bla)␤<--␤»
00:32 Mouq r: say '\x [65]'
00:32 camelia rakudo 458880: OUTPUT«\x [65]␤»
00:32 Mouq r: say '\q [65]'
00:32 camelia rakudo 458880: OUTPUT«65␤»
00:32 Mouq n: say '\q [65]'
00:32 camelia niecza v24-95-ga6d4c5f: OUTPUT«65␤»
00:32 Mouq n: say '\x [65]'
00:32 camelia niecza v24-95-ga6d4c5f: OUTPUT«\x [65]␤»
00:32 Mouq std: say '\x [65]'
00:32 camelia std 4cde04e: OUTPUT«ok 00:00 42m␤»
00:38 grondilu joined #perl6
00:39 grondilu guys, a course on bioinformatics will start this month on coursera.org:
00:39 grondilu http://perlmonks.org/?node_id=1056427
00:39 grondilu I've watched the first few videos, it looks fun.
00:40 grondilu as I understand it, the programming challenges will work as in rosalind, so it will be possible to program in Perl 6.
00:41 TimToady can we get an extension on that project?  :P
00:42 [Coke] .to woolfy my copy of the great dalmuti arrived today. Forced all 3 kids to play, they were hooked after the first round.
00:42 yoleaux [Coke]: I'll pass your message to woolfy.
00:43 btyler joined #perl6
00:45 TimToady now if we only had a fast regex engine...someone should work on that...
00:45 diakopter o+o
00:45 diakopter o+w
00:51 imrudbu joined #perl6
00:55 cognominal joined #perl6
00:57 avuserow joined #perl6
01:08 benabik joined #perl6
01:10 berekuk joined #perl6
01:12 dalek perl6-roast-data: a5df95b | coke++ | / (5 files):
01:12 dalek perl6-roast-data: today (automated commit)
01:12 dalek perl6-roast-data: review: https://github.com/coke/perl6​-roast-data/commit/a5df95b83c
01:12 dalek perl6-roast-data: bb7b77d | coke++ | / (3 files):
01:12 dalek perl6-roast-data: today (automated commit)
01:12 dalek perl6-roast-data: review: https://github.com/coke/perl6​-roast-data/commit/bb7b77d366
01:13 btyler joined #perl6
01:18 BenGoldberg What's the syntax for perl6 threads?
01:19 BenGoldberg I just added to the RosettaCode web page a perl5 solution for the Dining Philosophers task, and want to convert it to perl6 :)
01:21 diakopter well, technically the data structures aren't yet threadsafe on the jvm
01:21 diakopter and we don't have atomic operations that would let you create your own yet
01:21 [Coke] (APL) I did that back on parrot at one point:
01:22 [Coke] https://code.google.com/p/paraplegic/
01:30 [Coke] probably not worth salvaging any of that given the phpish example to build on
01:38 Vlavv` joined #perl6
01:40 dalek nqp/cursless: 4bd4ea2 | jimmy++ | src/vm/jvm/QAST/Compiler.nqp:
01:40 dalek nqp/cursless: proper handling of classes an zerowidth, jnthn++
01:40 dalek nqp/cursless: review: https://github.com/perl6/nqp/commit/4bd4ea2bba
01:45 grondilu rn: say <foo bar>.bag
01:45 camelia rakudo 458880: OUTPUT«No such method 'bag' for invocant of type 'Parcel'␤  in block  at /tmp/pCvWociLP6:1␤␤»
01:45 camelia ..niecza v24-95-ga6d4c5f: OUTPUT«Unhandled exception: Unable to resolve method bag in type Parcel␤  at /tmp/1RJzydBdnF line 1 (mainline @ 3) ␤  at /home/p6eval/niecza/lib/CORE.setting line 4583 (ANON @ 3) ␤  at /home/p6eval/niecza/lib/CORE.setting line 4584 (module-CORE @ 576) ␤  at /…»
01:47 grondilu rn: say max :by(*.value), bag <foo foo bar>
01:47 camelia rakudo 458880: OUTPUT«bag(foo(2), bar)␤»
01:47 camelia ..niecza v24-95-ga6d4c5f: OUTPUT«Unhandled exception: Unable to resolve method value in type Bag␤  at /tmp/vpO2kr0Y6I line 1 (ANON @ 2) ␤  at /home/p6eval/niecza/lib/CORE.setting line 1808 (ANON @ 4) ␤  at /home/p6eval/niecza/lib/CORE.setting line 1812 (List.max @ 14) ␤  at /home/p6ev…»
01:50 grondilu rn: say max :by(*.value), bag(<foo foo bar>).hash
01:50 camelia rakudo 458880, niecza v24-95-ga6d4c5f: OUTPUT«"foo" => 2␤»
01:50 [Coke] (APL) except for the unicode characters, that might help.
02:04 PZt joined #perl6
02:05 FROGGS joined #perl6
02:17 denysonique joined #perl6
02:39 TimToady rn: say max :by(*.value), bag(<foo foo bar>).pairs
02:39 camelia rakudo 458880, niecza v24-95-ga6d4c5f: OUTPUT«"foo" => 2␤»
02:39 TimToady that avoids creating a hash
02:41 TimToady nr: bag(<foo foo bar>).invert.max.say
02:41 camelia rakudo 458880: OUTPUT«No such method 'invert' for invocant of type 'Bag'␤  in block  at /tmp/3m7Bgx47g1:1␤␤»
02:41 camelia ..niecza v24-95-ga6d4c5f: OUTPUT«Unhandled exception: Unable to resolve method invert in type Bag␤  at /tmp/CyzYhHQdDx line 1 (mainline @ 4) ␤  at /home/p6eval/niecza/lib/CORE.setting line 4583 (ANON @ 3) ␤  at /home/p6eval/niecza/lib/CORE.setting line 4584 (module-CORE @ 576) ␤  at /…»
02:41 TimToady nr: bag(<foo foo bar>).hash.invert.max.say
02:42 camelia rakudo 458880, niecza v24-95-ga6d4c5f: OUTPUT«2 => "foo"␤»
02:42 * TimToady thinks invert should work on bags
02:49 berekuk joined #perl6
03:06 preflex_ joined #perl6
03:15 skids joined #perl6
03:20 lue .oO(You should seal the bag before inversion though.)
03:23 berekuk joined #perl6
03:25 TimToady bags are supposed to seal themselves now
04:34 japhb_ r: class A { has Int @.ints }; my A $one .= new(ints => [1, 2]); say $one.ints; my $two = $one.clone(ints => [3, 4, 5]); say $two.ints;
04:34 camelia rakudo 458880: OUTPUT«1 2␤Type check failed in assignment to '@!ints'; expected 'Int' but got 'Array'␤  in method REIFY at src/gen/CORE.setting:8102␤  in method reify at src/gen/CORE.setting:7027␤  in method gimme at src/gen/CORE.setting:7441␤  in method sink at src/gen/CORE.setting…»
04:34 japhb_ Is that ^^^ known?
05:05 auscompgeek joined #perl6
05:15 xenoterracide_ joined #perl6
05:19 moritz ¸o
05:21 sjohnson .o
05:22 diakopter .oo
05:26 kshannon joined #perl6
05:35 SamuraiJack_ joined #perl6
05:37 ponbiki joined #perl6
05:46 * ingy wonders why he is about to renew perlster.org
05:46 ingy its so 2003
05:48 mtk joined #perl6
05:49 sqirrel joined #perl6
06:00 kaleem joined #perl6
06:22 raghu joined #perl6
06:32 daniel-s joined #perl6
06:36 denis_boyun joined #perl6
06:38 aindilis` joined #perl6
06:47 dmol joined #perl6
06:48 skids joined #perl6
06:54 mathw morning
06:55 denisboyun joined #perl6
06:56 FROGGS joined #perl6
07:02 FROGGS joined #perl6
07:06 moritz .u FFEF
07:06 yoleaux No characters found
07:06 moritz .u FFFE
07:06 yoleaux No characters found
07:06 moritz .u byte order mark
07:06 yoleaux U+FEFF ZERO WIDTH NO-BREAK SPACE [Cf] (<control>)
07:07 moritz .u FEFF
07:07 yoleaux U+FEFF ZERO WIDTH NO-BREAK SPACE [Cf] (<control>)
07:10 auscompgeek FEFF is LE, FFFE is BE. I think.
07:13 moritz and inside text, it's considered a zero-width non-breaking space
07:14 zakharyas joined #perl6
07:14 moritz which is why it's not "byte order mark" in character database
07:14 sqirrel joined #perl6
07:17 FROGGS .tell timotimo Spectest run doesn't look that bad, mind that there are changes in nom that we don't have atm: https://gist.github.com/FR​OGGS/0acdc051d455d9766bd8
07:17 yoleaux FROGGS: I'll pass your message to timotimo.
07:20 auscompgeek moritz: hm, interesting.
07:24 PZt joined #perl6
07:33 lizmat good *, #perl6!
07:33 moritz \o lizmat
07:38 mstwu00 joined #perl6
07:42 kaleem joined #perl6
07:42 lizmat rn: say max :by(*.value), bag(<foo foo bar bar>).pairs
07:42 camelia rakudo 458880, niecza v24-95-ga6d4c5f: OUTPUT«"foo" => 2␤»
07:43 lizmat why not bar => 2 ?
07:43 lizmat rn: bag(<foo foo bar bar>).hash.invert.max.say
07:43 camelia rakudo 458880, niecza v24-95-ga6d4c5f: OUTPUT«2 => "foo"␤»
07:43 moritz lizmat: bags are unordered, so what you get in response is pretty much random
07:43 lizmat why not 2 => <foo bar> ?
07:44 moritz lizmat: max only ever returns the first max value it finds
07:45 lizmat otoh, it will need to check all values anyway, so it can know there is more than one
07:46 lizmat rn: bag(<foo foo bar bar>).hash.invert.say
07:46 camelia rakudo 458880, niecza v24-95-ga6d4c5f: OUTPUT«2 => "foo" 2 => "bar"␤»
07:50 lizmat rn: say (a => "b").invert.WHAT
07:50 camelia niecza v24-95-ga6d4c5f: OUTPUT«(Pair)␤»
07:50 camelia ..rakudo 458880: OUTPUT«(Enum)␤»
07:50 lizmat fixing rakudo as we speak
07:56 moritz I'm pretty sure that's intentional, though not sure if it's a good idea :-)
07:59 lizmat why would an inverted pair become an Enum?
07:59 moritz because the key isn't a container, so the value of the inverted thing doesn't need to be a container either
08:00 [Sno] joined #perl6
08:00 moritz and Enum is pretty much a pair, but the value is never a container
08:00 [Sno] joined #perl6
08:00 moritz but from a type perspective, it's probably nicer to return a Pair
08:00 dmol joined #perl6
08:00 lizmat rn: bag(<foo foo bar bar>).hash.invert.max.WHAT.say
08:00 camelia rakudo 458880, niecza v24-95-ga6d4c5f: OUTPUT«(Pair)␤»
08:02 hoelzro morning #perl6
08:03 moritz lizmat: so yes, having Pair.invert return a Pair is probably sensible
08:03 iSlug joined #perl6
08:03 dalek rakudo/nom: d185d53 | (Elizabeth Mattijsen)++ | src/core/Enum.pm:
08:03 dalek rakudo/nom: Make Pair.invert return a Pair, rather than an Enum
08:03 dalek rakudo/nom:
08:03 dalek rakudo/nom: (or anything else that inherits from Enum)
08:03 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/d185d5390c
08:06 auscompgeek left #perl6
08:09 lizmat r: my @a=<a b c>; say @a[2,*-1]:delete; say @a.elems
08:09 camelia rakudo 458880: OUTPUT«c (Any)␤3␤»
08:10 lizmat I'm not sure what this would need to return and what the final state of @a should be
08:11 lizmat should the final state be "a" or "a b" ?
08:11 lizmat in other words, should the deletes be done in order *and* should the *-1 be calculated after each delete ?
08:11 moritz lizmat: I'd expect the *-1 to be evaluated first, and then any deletion happens
08:12 moritz lizmat: because argument lists are also usually evaluated first, before the subroutine that is called does anything
08:12 lizmat well, that's how it's implemented now, but the spectest expects something else
08:12 lizmat well, that's an implementation detail
08:12 moritz then fix the spectests :-)
08:13 lizmat as long as we agree on this  :)
08:15 preflex joined #perl6
08:16 dalek roast: a081844 | (Elizabeth Mattijsen)++ | S32-array/delete.t:
08:16 dalek roast: Unfudge some multiple whatever related tests
08:16 dalek roast: review: https://github.com/perl6/roast/commit/a081844665
08:25 mstwu00 joined #perl6
08:25 lizmat :q
08:25 * hugme hugs lizmat, good vi(m) user!
08:26 lizmat :-)
08:27 mberends :q!!!
08:27 * hugme hugs mberends, good vi(m) user!
08:28 mberends .oO( you can check out anytime you like, but you can never leave )
08:30 * diakopter hugs mberends, good vi(m) user!
08:31 mberends :smile
08:32 diakopter this seems to happen to me often.. sitting near two AA participants swapping stories at a restaurant..
08:32 diakopter always interesting stories.
08:32 diakopter C:\Users\mwilson\src\MoarVM​\nqp-cc\install\bin\nqp.exe nqp-moar-cc.nqp --setting=NULL --target=mbc --output=nqp-mo.moarvm nqp-src\nqp-mo.pm
08:32 diakopter NMAKE : fatal error U1077: 'C:\Users\mwilson\src\MoarVM​\nqp-cc\install\bin\nqp.exe' : return code '0xc0000409'
08:32 diakopter argh.
08:34 masak good antenoon, good vi(m) users!
08:34 diakopter no clue where to start diagnosing that.
08:35 diakopter ok, nmake clean helped.
08:35 diakopter *whew*
08:35 diakopter (must be missing Makefile dependency)
08:36 moritz why diagnose if you can fix instead? :-)
08:37 dalek Perlito: ccc33d7 | (Flavio S. Glock)++ | / (7 files):
08:37 dalek Perlito: Perlito5 - js - prototype() fix
08:37 dalek Perlito: review: https://github.com/fglock/​Perlito/commit/ccc33d722a
08:38 mstwu00 joined #perl6
08:38 diakopter masak: cross your fingers...
08:38 diakopter nqptest is clean so far..... O_O
08:38 diakopter (did I speak too soon?)
08:39 diakopter yesp.
08:39 diakopter yes, and yep.
08:41 mberends diakopter: are you trying to replace the GC in Moar?  Why?  How is it going?
08:42 mberends (anything you say will be reported to amsterdam.pm this evening)
08:42 * masak .oO( you have the right to a laptop. if you cannot afford a laptop, an HP EliteBook will be appointed for you ) :/
08:43 tadzik :D
08:43 diakopter mberends: nope, heh.
08:43 mberends "no comment"
08:44 zakharyas joined #perl6
08:44 moritz # no comment
08:44 diakopter https://gist.github.com/dia​kopter/581887f037bc98f878f9
08:44 Ulti so changing from slurp and comb to while-get and comb I go from >3 minutes for my script to run down to 3 seconds :S that feels like a disproportionate speed up! this is with 2k lines from a Gutenberg file.
08:45 Ulti what's so bad about the slurp?
08:46 Ulti thats with latest R*
08:47 masak Ulti: slurp reads the whole file into memory first?
08:48 masak but yes, I agree the difference is disproportionate.
08:48 masak maybe slurp does something Shlemiel-slow.
08:48 moritz or maybe it's not slurp that is slow, but the .comb on the much larger string
08:48 iSlug joined #perl6
08:49 masak ah, yes.
08:50 Ulti https://gist.github.com/Mat​tOates/4a451d9f9c31ea055a45  vs   https://gist.github.com/Mat​tOates/d66d7a4cb23b51e3dc82
08:50 Ulti also keybags are really useful for the stuff I do day to day especially with the set operators
08:53 diakopter current gc_orch https://gist.github.com/dia​kopter/7b70423d7db7de3fcd72
09:00 diakopter ok, I still have no idea how to diagnose this.
09:01 diakopter I wonder how long I can stare at it waiting for inspiration.
09:08 daxim joined #perl6
09:20 grondilu joined #perl6
09:23 fhelmberger joined #perl6
09:27 dalek Perlito: b95d306 | (Flavio S. Glock)++ | / (3 files):
09:27 dalek Perlito: Perlito5 - grammar - use exists()
09:27 dalek Perlito: review: https://github.com/fglock/​Perlito/commit/b95d306059
09:45 cognominal joined #perl6
09:58 sqirrel joined #perl6
10:18 SamuraiJack_ joined #perl6
10:27 snarkyboojum joined #perl6
10:36 dalek rakudo/nom: 85b9a40 | (Elizabeth Mattijsen)++ | src/core/ (2 files):
10:36 dalek rakudo/nom: Make sure delete attempts past end of array doesn't vivify
10:36 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/85b9a40e15
10:36 dalek roast: daa2ffe | (Elizabeth Mattijsen)++ | S32-array/delete.t:
10:36 dalek roast: Unfudge now passing test
10:36 dalek roast: review: https://github.com/perl6/roast/commit/daa2ffe58a
10:52 dalek rakudo/nom: 95f6c00 | (Elizabeth Mattijsen)++ | src/core/Baggy.pm:
10:52 dalek rakudo/nom: Added method "invert" to Baggy, as per TimToady's mumbling
10:52 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/95f6c006dd
10:53 tadzik std: my Baggy @pants
10:53 camelia std 4cde04e: OUTPUT«[31m===[0mSORRY![31m===[0m�In my declaration, typename 'Baggy' must be predeclared (or marked as declarative with :: prefix) at /tmp/VUJg5VWQbT line 1:�------> [32mmy Baggy[33m�[31m @pants[0m�Malformed my at /tmp/VUJg5VWQbT line 1:�------> [32mmy [33m�…»
10:53 tadzik dum dum dum
10:56 masak std: role Rick::Astley {}
10:56 camelia std 4cde04e: OUTPUT«ok 00:00 42m␤»
10:58 lizmat :-)
10:58 lizmat http://www.washington.edu/news/2013/​09/30/uw-engineers-invent-programmin​g-language-to-build-synthetic-dna/  .oO( a new life for bioperl6? )
10:59 masak r: role Rick { method never_gonna_give_you_up { ... } }; class Astley does Rick {}
10:59 camelia rakudo d185d5: OUTPUT«===SORRY!===␤Method 'never_gonna_give_you_up' must be implemented by Astley because it is required by a role␤»
10:59 tadzik heh, Warsaw University is also called UW
11:02 masak bah, article is behind a paywall. :/
11:04 moritz masak: every Journal name that matches /^Nature/ implies that :/
11:17 SamuraiJack_ joined #perl6
11:18 dalek rakudo/nom: 0808aca | (Elizabeth Mattijsen)++ | src/core/ (2 files):
11:18 dalek rakudo/nom: Moved method .chrs from Iterable to Cool, as per other TimToady mumbling
11:18 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/0808aca257
11:19 tadzik hmm, we have chrs
11:20 lizmat $ perl6 -e 'say 0x2202.chrs'
11:20 lizmat
11:26 kay_ joined #perl6
11:27 masak lizmat++ # implementing mumblings
11:28 masak that must be every BDFL's wish, to mumble and things happen.
11:29 FROGGS masak: I have the same with my sons, really
11:29 iSlug joined #perl6
12:02 Ulti FROGGS they mumble and you do it? ;P
12:02 FROGGS yeah :o(
12:03 masak better than total silence, I guess.
12:03 FROGGS especially my youngest when it is about to sleep... he is talking in a way that only bats can here him
12:03 FROGGS masak: depends on the time of day
12:04 masak yeah :)
12:23 lizmat r: my Int @a=^3; @a[1]:delete; @a.map:{say .WHAT.perl }; @a[1].WHAT.perl.say  # losing type info deep in the bowels of MapIter
12:23 camelia rakudo 0808ac: OUTPUT«Int␤Any␤Int␤Int␤»
12:24 lizmat no more time to look at this now, maybe someone else has inspiration
12:24 lizmat commuting to Amsterdam for NL.pm meeting
12:31 timotimo mhm mhm
12:31 yoleaux 07:17Z <FROGGS> timotimo: Spectest run doesn't look that bad, mind that there are changes in nom that we don't have atm: https://gist.github.com/FR​OGGS/0acdc051d455d9766bd8
12:36 iSlug joined #perl6
12:44 berekuk joined #perl6
13:01 arnsholt joined #perl6
13:03 frettled joined #perl6
13:06 sqirrel joined #perl6
13:10 benabik joined #perl6
13:13 mtk joined #perl6
13:16 PacoAir joined #perl6
13:24 lowpro30 joined #perl6
13:28 ajr joined #perl6
13:35 bluescreen10 joined #perl6
13:43 btyler joined #perl6
13:51 skids joined #perl6
13:57 lowpro30_ joined #perl6
13:58 KroKite joined #perl6
14:09 xenoterracide_ joined #perl6
14:12 xinming joined #perl6
14:20 GlitchMr How can I do something like array[::2] from Python in Perl 6? In Python, [1, 2, 3, 4, 5][::2] returns [1, 3, 5].
14:21 jnthn Index with a sequence maybe?
14:21 FROGGS r: say ^20[1,3..*]
14:21 camelia rakudo 0808ac: OUTPUT«0..^0␤»
14:21 jnthn ...
14:21 FROGGS was it something like that?
14:21 GlitchMr r: say ^20[1,3...*]
14:21 camelia rakudo 0808ac: OUTPUT«0..^0␤»
14:21 GlitchMr oh rite
14:21 FROGGS r: say ^20.flat[1,3..*]
14:21 jnthn yes, that but precedence
14:21 GlitchMr r: say (^20)[1,3...*]
14:22 camelia rakudo 0808ac: OUTPUT«0..^0␤»
14:22 camelia rakudo 0808ac: OUTPUT«1 3 5 7 9 11 13 15 17 19␤»
14:22 FROGGS ahh, sure
14:22 jnthn heh, "..." wasn't me being "huh", it was the answer :P
14:22 GlitchMr r: say (^20)[1,3..*]
14:22 camelia rakudo 0808ac: OUTPUT«1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19␤»
14:22 GlitchMr r: say (^20)[1,3...*]
14:22 camelia rakudo 0808ac: OUTPUT«1 3 5 7 9 11 13 15 17 19␤»
14:22 jnthn .. and ... are at different prec levels
14:22 jnthn The 1,3 is an argument to ...
14:23 jnthn But only the 3 is to ..
14:23 FROGGS yeah
14:23 GlitchMr Seems to work great, and that without strange syntax like in Python.
14:23 FROGGS have fun translating ::2 to 1,3...* :o)
14:24 tadzik std: ::2
14:24 jnthn yeah, it's longer but nice that we get it out of re-using another langauge construct
14:24 camelia std 4cde04e: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Two terms in a row at /tmp/1bmbN4gacz line 1:â�¤------> [32m::[33mâ��[31m2[0mâ�¤    expecting any of:â�¤ POSTâ�¤   feed_separatorâ�¤ infix or meta-infixâ�¤    infixed functionâ�¤       postcircumfixâ�¤  postfixâ�¤        postfix_prefix_meta_operatorâ�¤   postopâ�¤
14:24 camelia ..statemen…»
14:24 jnthn hmm :)
14:24 tadzik oh, right, 2 is not a valid typename :)
14:24 jnthn r: sub prefix:<::>($n) { 1,1+$n ... * }; say (^20)[::2]
14:24 camelia rakudo 0808ac: OUTPUT«1 3 5 7 9 11 13 15 17 19␤»
14:25 jnthn bwahaha
14:25 peteretep
14:25 TimToady of course, 0,2...* is :2, not 1,3...*
14:25 yoleaux 08:06Z <diakopter> TimToady: ltm s05 patch - "whitespace is the archtypical" .. archtypical? or archetypical? or archetypal?
14:26 TimToady well, prototypical might be better anyway
14:26 GlitchMr 1,3..* is [1::2], but I doubt anybody cares.
14:26 GlitchMr 1,3...*, I mean.
14:26 jnthn TimToady: details... :P
14:27 dalek specs: 3d9eda7 | larry++ | S05-regex.pod:
14:27 dalek specs: typo
14:27 dalek specs: review: https://github.com/perl6/specs/commit/3d9eda78f6
14:27 jnthn bah, didn't get chacne to backlog yet to see the commit that the typo is being fixed in...
14:28 FROGGS awwww :o(
14:29 TimToady .oO(They said "Get a life!", but I don't need a getter, I need a setter.)
14:30 daxim_ joined #perl6
14:35 amits2878 joined #perl6
14:37 TimToady nr: say 10 Rxx rand
14:37 camelia niecza v24-95-ga6d4c5f: OUTPUT«0.87435645604243339 0.87435645604243339 0.87435645604243339 0.87435645604243339 0.87435645604243339 0.87435645604243339 0.87435645604243339 0.87435645604243339 0.87435645604243339 0.87435645604243339␤»
14:37 camelia ..rakudo 0808ac: OUTPUT«0.417565598475875 0.417565598475875 0.417565598475875 0.417565598475875 0.417565598475875 0.417565598475875 0.417565598475875 0.417565598475875 0.417565598475875 0.417565598475875␤»
14:37 amits2878 hi all ... m amit from india I have been using perl for 8 years now under various flavours of linux. i have worked with perl 5 but havent had opportunity with perl 6. Please can some guide me through so that i can pick perl 6 quickly
14:38 peteretep amits2878: What have you tried searching for?
14:38 moritz amits2878: http://perl6.org/ has all the good links we know about
14:38 amits2878 Hi peter ... i just happened to visit perl portal on wiki ... thru there i got to know abt perl6
14:39 TimToady but mostly just hang out here :)
14:39 timotimo i wonder what parrot raiser experienced when they tried to join this irc channel; in my experience, "noob questions" are hardly ever shut down or made fun of too much (maybe a tiny bit, but i don't recall any instance where that was done in a hurtful way)
14:39 amits2878 i was wondering on how different it is ... or if i can go ahead by using it right away ...
14:39 amits2878 or are there some points to be noted before i make a head start
14:40 timotimo there are many differences, like having a proper object and type system deeply integrated into the language itself
14:40 peteretep amits2878: I'd recommend a thorough read of perl6.org, and if you have any further questions, asking them here
14:40 TimToady well, main thing to know if you're coming from Perl 5 is that sigils don't change
14:41 TimToady my @foo = 1,2,3; say @foo[1]
14:41 TimToady r: my @foo = 1,2,3; say @foo[1]
14:41 camelia rakudo 0808ac: OUTPUT«2␤»
14:41 TimToady in p5 that'd be a $ in the second case
14:41 timotimo there are only a few modules, and you look at modules.perl6.org instead of the cpan to find them; your best bet is to install the newest "Rakudo *" from rakudo.org to get a compiler, REPL and a bunch of useful modules and the module installer
14:42 peteretep If I commit to getting my considerable development team to use Perl 6 in production for at least one thing, can I get some free training? ;-)
14:42 TimToady if you learn by example, rosettacode.org is a good place to compare perl5 solutions to perl6 solutions
14:43 timotimo peteretep: you can get the kind of free training we all get just by hanging out on IRC and asking questions :P
14:43 amits2878 using Rakudo is a recommendation or a requiirement to use with perl 6. Also as mentioned by "timotimo" does cpan doesnt goes well with perl 6
14:43 amits2878 ?
14:43 peteretep timotimo: I meant for my team, rather than me, but you're right. I was just trying to arbitrage publicity there
14:43 timotimo yes, that's correct amits2878
14:44 timotimo peteretep: i know nothing of training, so the only thing i have to offer is the snarky answer i gave above :(
14:44 TimToady well, a snarky answer is better than silence, barely :)
14:44 amits2878 ok timo
14:45 * timotimo is going AFK for a bit now
14:45 TimToady amits2878: rakudo is the most advanced implementation in terms of features
14:45 TimToady niecza is faster, but not being developed much at the moment, and lagging in features
14:46 TimToady rakudo runs on JVM as well as Parrot, and soon will run on MoarVM as well
14:48 amits2878 so modules in cpan, are they still compatible with perl 6 ... i mean perl 6 has backward compatability. i am asking as replacing cpan modules in case of going to perl 6 is a major overhauling task.
14:48 moritz amits2878: Perl 6 isn't backwards compatible with Perl 5.
14:48 amits2878 ok
14:50 GlitchMr amits2878, there is no CPAN for Perl 6 (for now), but some modules are already written - http://modules.perl6.org/
14:53 amits2878 replicating features of perl 5 application to perl 6 is going to be big task then ...
14:53 GlitchMr Well, Perl 6 isn't Perl 5.
14:53 moritz amits2878: most big Perl 5 applications will likely never be ported to Perl 6
14:54 TimToady the whole point of Perl 6 was to break backward compatibility so we could fix things that are wrong with Perl 5
14:54 TimToady but we're planning to provide emulation of Perl 5 so it can interoperate with Perl 6
14:54 moritz amits2878: maybe in the future we'll have some kind of interoperability (like embedding a perl5 compiler in Rakudo), so that you can extend Perl 5 programs in Perl 6
14:54 TimToady so you don't have to translate a whole project
14:55 GlitchMr Just wondering, could NativeCall be used to call Perl 5 C functions?
14:56 moritz GlitchMr: that's very hard, since the p5 C api mostly consists of macros, not functions
14:56 GlitchMr hm, yeah
14:56 amits2878 thanks everyone here for initial tips. i guess learning perl 6 with assumptions of perl 5 would be difficult .
14:56 amits2878 thanks everyone
14:56 TimToady the embedding api lets you do that
14:56 TimToady amits2878: but nevertheless, Perl 6 is a lot like Perl 5 in the nice ways
14:59 GlitchMr Also, it's not that Perl 5 is Perl 4. I mean, Perl 4 didn't have lots of things that are used in modern Perl - lexical variables, scalar filehandles, :: as package separator (but not that anybody used them), OOP, quoted regexes (qr), calling subroutines without &, and so on.
14:59 GlitchMr It annoys me when I see Perl code using &subroutine().
15:01 GlitchMr Technically Perl 5 could run Perl 4 code, but Perl 4 is not Perl 5.
15:02 TimToady Perl 6 can run Perl 5 code with the "run" command...  :)
15:02 GlitchMr The plan (as far as I know) is to allow running Perl 5 code in Perl 6, so you could slowly move to Perl 6.
15:02 GlitchMr (if you want to)
15:18 PerlJam GlitchMr: for some reason I find your "it's not that Perl 5 is Perl 4" comment interesting
15:19 PerlJam Perl 5 has features that weren't possible in Perl 4.  Does Perl 6 have features that aren't possible in Perl 5?
15:20 GlitchMr hm
15:20 GlitchMr You can write 3 > 2 > 1
15:20 GlitchMr And overload operators.
15:20 timotimo sensible smartmatch
15:21 GlitchMr junctions
15:21 nwc10 concurrency
15:21 GlitchMr builtin grammars
15:21 timotimo really anything that hangs off of the type system, like multiple dispatch
15:21 PerlJam ah, but Perl 5 has most (if not all) of those t hings via CPAN
15:21 nwc10 doesn't have viable concurrency
15:21 PerlJam nwc10: "viable"?
15:22 GlitchMr Well, of course you can completely ignore Perl, and import Python.
15:22 GlitchMr It's just that it's easier in Perl 6.
15:22 nwc10 efficiently spread a task out to multiple CPUs, and get the result back
15:22 GlitchMr In Perl 5, impossible things are merely hard.
15:22 timotimo in perl 6, impossible things are fun
15:23 REPLeffect joined #perl6
15:24 amits2878 i was also thinking the way CPAN is elaborated ... does perl 6 really makes a leap ahead of perl 5 for being a potential replacement? or perl 5 and perl 6 has a different application in real world?
15:24 GlitchMr If we talk in terms of possible, anything that can access C is equal.
15:25 diakopter in the unreal world, perl 6 won't replace perl 5. same for the real world.
15:25 timotimo perl6 will be better for some use cases, perl5 will be better for others
15:25 PerlJam amits2878: I can tell you that I like programming in Perl 6 quite a bit more than Perl 5.
15:25 timotimo both will be developed for a long time
15:26 GlitchMr http://faq.perl6.org/
15:26 GlitchMr "Why should I learn Perl 6? What's so great about it?"
15:26 PerlJam I've long told people that Perl just fits my brain.   Perl 6 continues that by giving me more useful abstractions  that I can not only think in, but use directly  :)
15:26 GlitchMr Of course you can use Perl6::Gather in Perl 5 to have lazy lists.
15:26 GlitchMr But by importing everything, you make initialization slower, and programs use more memory.
15:27 ajr joined #perl6
15:27 amits2878 m not underestimating perl 6. with all these conversations i am trying figure out how i am going start with it
15:27 diakopter amits2878: what do you use Perl 5 for?
15:27 GlitchMr Besides, even if you use Perl6::Gather, other modules don't use lazy lists.
15:29 amits2878 automation, job monitoring with lsf, cgi apps, gui programming using gtk and tk
15:29 amits2878 more or less work goes around this
15:30 timotimo cgi apps must die :)
15:30 PerlJam amits2878: "cgi apps"?  You might consider using Plack if you're still doing CGI  :)
15:30 TimToady now, now
15:30 timotimo TimToady: what, you don't like death threats?
15:31 GlitchMr CGI? I still use PHP for small web scripts. Should I update to CGI?
15:31 TimToady we try to give the appearance of being nice here, even if we're not :)
15:31 amits2878 well may be you are right ... but legacy systems with cgi in place, its not a mere programmer decision to make. on personal front yes there are better options to cgi
15:31 TimToady GlitchMr: you should probably write a PHP2Perl6 translator
15:32 GlitchMr I don't feel like writing a code for every of 5 thousand functions.
15:32 jnthn .oO( at least the sigls are easy :P)
15:32 GlitchMr Oh, right, old data, 8 thousand.
15:32 jnthn *sigils
15:32 PerlJam GlitchMr: that's why you write code that writes the code for you!
15:33 GlitchMr sub addslashes(Cool $value) { use Acme::Addslashes (); Acme::Addslashes::addslashes $value } # and so on
15:33 GlitchMr Some of PHP functions do really specific effect.
15:34 GlitchMr I stopped on addslashes.
15:34 PerlJam GlitchMr: write some code that will read the functions spec from php.net and generate the appropriate Perl    ;-)
15:34 GlitchMr If they would have a spec.
15:35 PerlJam yeah, I guess I should have put "spec" in quotes there
15:35 GlitchMr It could work with EcmaScript, but not with PHP.
15:35 Ulti made a little text parody script using KeyBag https://gist.github.com/Mat​tOates/62a5a3d4f86333939bbf  yay for phasers >:3 not sure if they make the code more or less readable though :/
15:36 TimToady .oO(This hammer doesn't do very well as a leaf-blower.)
15:36 GlitchMr Besides, implementing PHP in Perl 6 also means improving Perl 6. I mean, somebody has to make PDO bindings and so on.
15:37 PerlJam Ulti: why would you use the PRE phaser at all?
15:37 PerlJam Ulti: moreover, why not use .words ?
15:37 jnthn Ulti: Not sure your use of PRE there helps, unless you want to explode when the line has no words?
15:37 Ulti to have @words initialised before shifting?
15:37 TimToady "parody"
15:37 diakopter TimToady: but they're pine needles... and made of steel..
15:37 TimToady but you're trying to blow them, not apply blows to them
15:38 ajr_ @timotimo I'm parrot_raiser in other contexts. I have no complaints about any treatment on this channel; you're all very civilised. My problem is catching on to the local jargon.
15:38 Ulti PerlJam: mostly because I didnt know .words exists
15:38 Ulti plus I'm going to add in punctuation and white space into the model
15:38 PerlJam ajr_: lizmat started a glossary to help with that.  Perhaps you could fill it out as you learn things?
15:39 ajr_ I assume my note to the perl6language list got through, though it hasn't hit my inbox yet.
15:39 diakopter ajr_: I got it, yes, and appreciated it .:)
15:43 diakopter ajr_: you're right; the jargon on #perl6 is impenetrable to people who don't like researching lingos and codewords and pseudo-technical terms and the arcanest of trivia..
15:45 diakopter ajr_: it's very much a whimsical game around here; a pastime for amusement and camaraderie, to be as esoteric as possible
15:45 ajr_ Any technical group is bound to develop its own language; it speeds communication within the group, at the expense of external understanding.
15:46 ajr_ However, I'm trying to determine a route to grokking P6 that doesn't involve too much back-tracking or re-education.
15:47 jnthn Speeding communication, and being precise, is important for getting stuff done. :) All in all, though, a bunch of the terms thrown around relate to the implementation aspects of Perl 6 rather than user-centric things. It's a consequence of one channel for those building and those using.
15:47 timotimo ajr_: thank you for elaborating
15:48 jnthn I can completely see that from an outside perspective it's impossible to know what things written here are even worth trying to understand :)
15:48 diakopter ajr_: let's deconstruct your request some.. to you, what would it look like to have "grokked P6"?
15:48 timotimo if you just want to learn the language, there is a *lot* of off-topic going on in here
15:48 japhb__ joined #perl6
15:48 timotimo things like musings about language development, mathematical puzzles, paradoxes, strange fanfictions, ...
15:48 diakopter (would you be able to answer most questions from passersby on #perl6 about the history of Perl 6)
15:48 PerlJam I think we just need more articles/books/whatever expounding on various bits of Perl 6.   That way knowledge of our special words and symbols and incantations will diffuse out into the world so that others may learn.
15:48 ajr_ Thanks, jnthn, that's what I was trying to say; it's "Perl 6 for the Masses" I'm after. (I refuse to use "Dummies; P6 is too powerful for dummies ."
15:48 TimToady .oO(OT ≅ Culture)
15:49 timotimo Dummies? Where we're going, we don't need Dummies.
15:49 TimToady crash test, I assume you mean
15:50 timotimo i'm still eager to get rakudo-on-js to build that "prose with in-line code editors with eval button" thing i've been dreaming about for so long
15:50 diakopter see! obtuse allusion to 1988 sci-fi movie.. completely absurd unless you recognize the possibility of a tongue-in-cheek self-deprecating jab
15:51 TimToady ajr_: for what it's worth, the latest outline for the P6 "camel" takes a tiered approach such as you recommend
15:51 timotimo diakopter: DAMN IT! I totally did what i denounced a few lines prior
15:52 diakopter timotimo: haha. :)
15:52 ajr_ Speaking of obscure references, is the history of PL/1 significant to anyone here, or is it too archaic?
15:53 diakopter someone around here wrote a programming language in PL/1...
15:53 TimToady is that like PL/I ? :P
15:53 diakopter :X
15:53 ajr_ recursively, I assume.
15:53 GlitchMr rn: say ([1..10] X* [1..10]).tree.perl
15:53 TimToady we don't want to study the history of PL/I, since we're trying so hard to repeat history, except for the failure part
15:53 camelia niecza v24-95-ga6d4c5f: OUTPUT«Unhandled exception: Unable to resolve method tree in type List␤  at /tmp/5n_fZOf9bz line 1 (mainline @ 4) ␤  at /home/p6eval/niecza/lib/CORE.setting line 4583 (ANON @ 3) ␤  at /home/p6eval/niecza/lib/CORE.setting line 4584 (module-CORE @ 576) ␤  at /h…»
15:53 camelia ..rakudo 0808ac: OUTPUT«(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 8…»
15:54 GlitchMr How can I get [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [2, 4, 6, ...?
15:54 diakopter ajr_: do you see a parallel?
15:54 xinming joined #perl6
15:54 zakharyas joined #perl6
15:54 ajr_ Definitely.
15:55 TimToady .oO(Those who do not study history are doomed to have it repeated to them.)
15:55 PerlJam TimToady: re p6 camel ... when will ajr_ and others obtain the benefit of that tiered approach though?  I think he's (and others) looking for something closer to "now"
15:55 TimToady ain't we all?
15:56 diakopter 8 years ago would help too
15:56 TimToady well, things written 8 years ago are largely accurate for that level of understanding
15:56 TimToady sigil invariance was already there
15:57 diakopter (also, I play dumb sometimes)
15:57 diakopter (not during that statement though)
15:57 TimToady the apocalpyses largely got the basics right
15:57 diakopter (I swear)
15:57 FROGGS joined #perl6
15:57 timotimo r: (1..5).map: {
15:58 camelia rakudo 0808ac: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/g2bkk5rwjTâ�¤Unable to parse expression in block; couldn't find final '}'â�¤at /tmp/g2bkk5rwjT:1â�¤------> [32m(1..5).map: {[33mâ��[31m<EOL>[0mâ�¤    expecting any of:â�¤        statement listâ�¤Â»
15:58 timotimo ...
15:58 timotimo r: say (1..5).map: { [$_, 2 * $_, ... * > 100] }
15:58 camelia rakudo 0808ac: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/x0t0IZAy5oâ�¤Comma found before apparent series operator; please remove comma (or put parens\n    around the ... listop, or use 'fail' instead of ...)â�¤at /tmp/x0t0IZAy5o:1â�¤------> [32msay (1..5).map: { [$…»
15:58 timotimo r: say (1..5).map: { [$_, 2 * $_ ... * > 100] }
15:58 TimToady we already knew what basic classes and attributes looked like back then
15:58 camelia rakudo 0808ac: OUTPUT«1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 …»
15:58 FROGGS ola
15:58 timotimo r: say ((1..5).map: { [$_, 2 * $_ ... * > 100] }).tree
15:58 TimToady the operator table has not changed much since 2005
15:58 camelia rakudo 0808ac: OUTPUT«1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 …»
15:58 timotimo r: say ((1..5).map: { [$_, 2 * $_ ... * > 100] }).tree.perl
15:58 jnthn hi FROGGS
15:58 camelia rakudo 0808ac: OUTPUT«([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, …»
15:58 timotimo sorry for the spam.
15:58 * diakopter imagines amits2878's parting thought "WTF... who can penetrate that maelstrom of puns and winks"
15:58 timotimo r: say ((1..5).map: { [$_, 2 * $_ ... * > 12] }).tree.perl
15:58 camelia rakudo 0808ac: OUTPUT«([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], [2, 4, 6, 8, 10, 12, 14], [3, 6, 9, 12, 15], [4, 8, 12, 16], [5, 10, 15]).list␤»
15:58 jnthn Finally, I have time to backlog...
15:59 diakopter jnthn: hahaha.
15:59 timotimo GlitchMr: you like?
15:59 GlitchMr timotimo, I want a table with equal number of elements.
15:59 TimToady jnthn: we were just having our own sales meeting here
15:59 GlitchMr Multiplication table, that is.
15:59 GlitchMr but interesting
15:59 timotimo r: say ((1..6).map: { [$_, 2 * $_ ... { (state $)++ <= 4 }] }).tree.perl
16:00 camelia rakudo 0808ac: OUTPUT«([1], [2], [3], [4], [5], [6]).list␤»
16:00 diakopter timotimo: I've given up understanding Perl 6 code involving sequences and placeholders and such
16:00 timotimo r: say ((1..6).map: { [$_, 2 * $_ ... { (state $)++ >= 4 }] }).tree.perl
16:00 camelia rakudo 0808ac: OUTPUT«([1, 2, 3, 4, 5], [2, 4, 6, 8, 10], [3, 6, 9, 12, 15], [4, 8, 12, 16, 20], [5, 10, 15, 20, 25], [6, 12, 18, 24, 30]).list␤»
16:00 timotimo GlitchMr: there you have it, same number of elements in each line :)
16:00 diakopter timotimo: give me baby C any day... I can follow that.
16:00 PerlJam diakopter: As long as there's a VM for it all to run on ...  ;)
16:00 timotimo diakopter: :)
16:01 TimToady diakopter: that wouldn't be baby in C either
16:01 ajr_ How much of P6 can we say with confidence is not likely to change?
16:01 GlitchMr that's um, great.
16:01 TimToady ajr_: what are your units?
16:01 GlitchMr Except somehow I think that "state $" is a hack here.
16:01 timotimo r: say ([1..10] X* [1..10]).tree.perl
16:01 camelia rakudo 0808ac: OUTPUT«(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 8…»
16:01 timotimo whu?
16:01 diakopter units of time?
16:01 ajr_ or units of confidence?
16:01 timotimo but i wanted a tree :(
16:02 diakopter units of change distance?
16:02 TimToady ajr_: the trouble is one of scale; the coastline changes very slowly on a scale of miles, and very rapidly on a scale of millimeters
16:02 PerlJam ajr_: Most of the green bits of http://perl6.org/compilers/features aren't likely to change IMHO  :)
16:02 timotimo GlitchMr: you could have done this, too:   not (state @l = 1..5).shift
16:02 ajr_ I'd be willing to assert that sigil invariance is not likely to change.
16:02 japhb__ Did anyone answer my late-night query about the apparent bug in typechecking en-passant changes in .clone()?
16:03 TimToady very rarely do we dig new Panama Canals now
16:03 timotimo ajr_: yeah, sigil invariance is invariant :)
16:03 timotimo japhb__: i saw it and it made me sad :(
16:03 japhb__ (I didn't see anything skimming the backlog, but I could have missed it easily.)
16:03 diakopter PerlJam: just wait until I publish the p6todo list
16:04 diakopter japhb__: no..
16:04 japhb__ timotimo: yeah ... I'm trying to un-bitrot samuraisam's p6-pb (Protobuffer) module, and he uses that a lot in his tests.
16:04 TimToady as a datapoint, I wrote an interactive quiz editor several years ago that weighs in at about 1000 lines; it has required only one or two minor tweaks in that time
16:05 TimToady and it's not just written to use "baby Perl 6"
16:05 TimToady so even the esoteric features tend to be pretty stable
16:05 PerlJam TimToady: but it *is* using Perl 6, right?  ;)
16:05 GlitchMr rn: say join ", ", <some random arguments>
16:05 camelia rakudo 0808ac, niecza v24-95-ga6d4c5f: OUTPUT«some, random, arguments␤»
16:05 * timotimo heads out
16:05 GlitchMr eval: say join ", ", <some random arguments>
16:05 GlitchMr perl5: say join ", ", <some random arguments>
16:06 japhb__ If someone can point me in the right directions, I've about a 50% chance of rakudo-matching tuits tonight to see if I can unbreak it.
16:07 japhb__ (Of course, if someone manages to just fix it, then I can spend those tuits on the p6-pb work instead of yak-shaving ....)
16:09 kaare_ joined #perl6
16:09 FROGGS japhb__: to fix what? looks like I mmiss something
16:09 japhb__ r: class A { has Int @.ints }; my A $one .= new(ints => [1, 2]); say $one.ints; my $two = $one.clone(ints => [3, 4, 5]); say $two.ints;
16:09 camelia rakudo 0808ac: OUTPUT«1 2␤Type check failed in assignment to '@!ints'; expected 'Int' but got 'Array'␤  in method REIFY at src/gen/CORE.setting:8106␤  in method reify at src/gen/CORE.setting:7027␤  in method gimme at src/gen/CORE.setting:7441␤  in method sink at src/gen/CORE.setting…»
16:09 japhb__ ^^that
16:09 GlitchMr camelia: help
16:09 camelia GlitchMr: Usage: <(nqp-jvm|star|pugs|nqp|std|niecza​|rakudo|b|nom|npr|n|r|perl6|prn|rn​|p|rnp|nrp|pnr|rpn|p6|nr)(?^::\s) $perl6_program>
16:09 FROGGS ahh, no thanks
16:09 FROGGS I don't think I can fix that within a few days
16:10 jnthn japhb__: Something's inconsistent there...
16:10 GlitchMr ~ $ perl -E'say join ", ", <some random arguments>'
16:10 GlitchMr some, random, arguments
16:10 GlitchMr Making Perl 5/6 polyglots is fun.
16:10 ajr_ There's a paradox (that ought to have a name), that those who understand a topic most deeply are probably the least able to explain it to newcomers, because they've forgotten what conscious incomptence felt like.
16:11 FROGGS jnthn / TimToady: I think I'm going to steal cclass_elems from std to nqp
16:11 japhb__ Yeah.  It feels like there's just something missing in one code path, or the .clone code bitrotted a bit, or somesuch
16:11 jnthn FROGGS: That sounds like quite the task...
16:12 TimToady if anyone wants is interested in looking at the quiz editor, there's a copy at http://wall.org/~larry/qe
16:12 jnthn japhb__: Please RT it if you didn't already
16:12 FROGGS jnthn: "the task" ?
16:12 japhb__ jnthn: Ah, I was first asking if it was already known.  But I'll take that as a "no".
16:12 jnthn FROGGS: Why not just fix the whitespace handling bug?
16:12 jnthn japhb__: I didn't know it, at least.
16:12 jnthn japhb__: But the RT queue is too big for me to keep in my head :)
16:12 FROGGS jnthn: I think I did
16:13 jnthn r: /<?[\#]>/ # this one?
16:13 camelia rakudo 0808ac: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/EfGdGvTSV8�Unspace not allowed in regex�at /tmp/EfGdGvTSV8:1�------> [32m/<?[\#[33m�[31m]>/ # this one?[0m�»
16:14 ajr_ @PerlJam thanks for the "features" link; that may be helpful
16:15 denysonique joined #perl6
16:17 japhb__ jnthn: RT'ed
16:18 PerlJam ajr_: sure, but note that just because something is implemented doesn't mean it won't change. (e.g., there's still some list foibles IIRC.  I don't know if that's just an implementation problem or a spec problem, but if it turns out there's a spec problem, the language will change)
16:19 ajr_ That's why I'm trying to separate the language into "set in stone", "set in almost dry concrete", and "warm jello"
16:20 FROGGS jnthn: ahh, the unspace bug... yeah, this would be fixed by stealing cclass_elem, so, I might try to get closer to std and fixing this bug
16:20 ugexe joined #perl6
16:20 FROGGS dinner &
16:20 segomos joined #perl6
16:21 ajr_ @TimToady - would you write the quiz the same way today? Some of the literals look as though they could be generated as lists.
16:22 PerlJam ajr_: The brief skim I did of his quiz editor made me want to patch it to use Term::ANSIColor   :)
16:22 Ulti Str.words is just a .comb but sensitive only to white space not punctuation :/ which kind of sucks for,lists,of,words,in,some,text
16:22 Ulti why isnt it \w+ ?
16:25 jnthn Ulti: For one "wouldn't" wouldn't count as a word...
16:25 Ulti yup but 'yay' and 'yay!' are different words with .words too
16:29 PerlJam Ulti: isn't that a feature for markov text generation?
16:29 jnthn FROGGS: Once we have that fix I may be able further improve ws
16:29 Ulti 'ese are the hardest ' characters to not strip, you'd have to actually check for balanced quotes :[
16:30 Ulti PerlJam ok what about every word with a comma on the end, that isn't really a word "end,"
16:30 PerlJam still sounds like a feature to me :)
16:31 PerlJam Even if not ... you'd still want something other than .comb(/\w+/) right?
16:32 Ulti yeah really you want something that handles balancing ' characters and other magic which sounds like overkill for some builtin
16:32 PerlJam yep
16:32 Ulti but .words I'd still kind of expect it to be using the word character meta character, its in the name ;P
16:33 Ulti .words feels more like a .token to me lol
16:34 PerlJam oddly, I think exactly the opposite.
16:34 TimToady it's \w that is really the anomaly here
16:34 Ulti also why is it a comb and not a split
16:35 TimToady why is what a comb?
16:35 PerlJam Ulti: to better reflect the dichotomy between what you want to keep vs what you want to throw away.   .words is about what you want to keep
16:35 PerlJam (I'm assuming you mean why is .words implemented as .comb)
16:35 TimToady split is kind of a figure/ground inversion
16:36 Ulti PerlJam: yeah
16:36 TimToady well, it could be implemented by split, but you'd have to remove any empty fields at the bow and stern
16:37 Ulti only my brain has a problem with comb I think mostly because I use a table in SQL every day called comb where its "combination" contracted so I dont think hair comb I think hard b sound
16:37 PerlJam .oO( Should Str also have .spaces to get the bits between the .words?  :)
16:37 jnap joined #perl6
16:37 TimToady think "beach combing"
16:37 Ulti heh I think hair combing to make it semantically closer to split :D
16:37 PerlJam .oO( split ends? )
16:38 Ulti yeah and you comb to split hairs apart into clumps
16:38 Ulti one thread of hair being a character
16:38 * TimToady was gonna make a football pun on "tight ends", but decided it would be misconstrued :)
16:38 Tene joined #perl6
16:41 TimToady r: say (1,2,3).combinations(2)
16:41 camelia rakudo 0808ac: OUTPUT«No such method 'combinations' for invocant of type 'Parcel'␤  in block  at /tmp/OG8KNok1TF:1␤␤»
16:41 * TimToady is surprised no one has implemented that yet
16:41 Ulti oh neat KeyBag doesn't have to be an Int count... so want KeyBag.normali[sz]e()
16:41 Ulti so all the weights are normalised to ratio values of some total you specify
16:42 TimToady a KeyBag should probably just track the total for you
16:42 Ulti .normalise(100) for percent .normalise(1.0) for expectation
16:42 Ulti TimToady: oh I thought that was what it was doing
16:42 Ulti .roll isnt working out the total every time???
16:42 TimToady dunno
16:42 Ulti heh
16:42 * Ulti checks
16:47 not_gerd joined #perl6
16:47 not_gerd o/
16:47 Ulti ahhh roll in KeyBags isn't doing what I imagined
16:47 not_gerd r: say q¡Hola!
16:47 camelia rakudo 0808ac: OUTPUT«â�€â�€â�€[â�€â�€â�€3â�€â�€â�€1â�€â�€​â�€mâ�€â�€â�€=â�€â�€â�€=â�€â�€â�€=â�€â�€â�€â​�€â�€â�€[â�€â�€â�€0â�€â�€â�€mâ�€â�€â�€Sâ�€â�​€â�€Oâ�€â�€â�€Râ�€â�€â�€Râ�€â�€â�€Yâ�€â�€â�€​!â�€â�€â�€â�€â�€â�€[â�€â�€â�€3â�€â�€â�€1â�€â​�€â�€mâ�€â�€â�€=â�€â�€â�€=â�€â�€â�€=â�€â�€â�​€â�€â�€â�€[â�€â�€â�€0â�€â�€â�€mâ�€â�€â�€ â�€â�€â�€Eâ�€â�€â�€râ�€â�€â�€r​â�€â�€â�€oâ�€â�€â�€râ�€â�€â�€ â�€â�€â�€wâ�€â�€â�€hâ�€â�€â�€iâ�€â�€â�€lâ�€
16:47 not_gerd oO
16:47 Ulti I thought it was based on the value not just the keys
16:48 Ulti might make my own subclass with 'spin' as in wheel-of-fortune or something :)
16:49 TimToady nr: say [1,2,3].combinations
16:49 camelia niecza v24-95-ga6d4c5f: OUTPUT«Unhandled exception: Unable to resolve method combinations in type Array␤  at /tmp/uwD3g3hEWw line 1 (mainline @ 3) ␤  at /home/p6eval/niecza/lib/CORE.setting line 4583 (ANON @ 3) ␤  at /home/p6eval/niecza/lib/CORE.setting line 4584 (module-CORE @ 576)…»
16:49 camelia ..rakudo 0808ac: OUTPUT«No such method 'combinations' for invocant of type 'Array'␤  in block  at /tmp/H4iXXzVJkW:1␤␤»
16:49 TimToady on JVM, btw, that error message says "Scalar" instead of "Array", which is LTA
16:50 TimToady "No such method" should know that Scalar always delegates
16:50 TimToady so I call it a rakudobug
16:51 * TimToady does a pull to make sure it wasn't fixed recently...
16:54 dalek Perlito: 9fca914 | (Flavio S. Glock)++ | / (4 files):
16:54 dalek Perlito: Perlito5 - js - save more compile-time information
16:54 dalek Perlito: review: https://github.com/fglock/​Perlito/commit/9fca914a81
16:54 jnthn TimToady: Yes, bug...
16:55 jnthn TimToady: file it, it's an easy fix
16:55 jnthn TimToady: But I'm washing up and looking at why apostrophe doesn't LTM at the moment... :)
16:57 * TimToady leaves the bug sitting around as a botsnack
16:59 TimToady Ulti: KeyBag is specced to involve the values too; if it isn't, that's a bug
17:00 TimToady nr: KeyBag.new('foo' xx 10, 'bar').roll(20).say
17:00 camelia niecza v24-95-ga6d4c5f: OUTPUT«foo foo foo foo foo foo foo foo foo foo foo foo foo foo bar foo foo foo foo foo␤»
17:00 camelia ..rakudo 0808ac: OUTPUT«bar foo foo foo bar foo foo foo foo foo foo foo foo bar foo foo foo foo foo foo␤»
17:01 TimToady looks right to me
17:01 TimToady nr: KeyBag.new('foo' xx 10, 'bar').keys.say
17:01 camelia rakudo 0808ac, niecza v24-95-ga6d4c5f: OUTPUT«foo bar␤»
17:03 TimToady nr: say KeyHash(:a(2),:b(.5),:c(.2)).roll(30).say
17:03 camelia niecza v24-95-ga6d4c5f: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤â�¤Undeclared name:â�¤        'KeyHash' used at line 1â�¤â�¤Unhandled exception: Check failedâ�¤â�¤  at /home/p6eval/niecza/boot/lib/CORE.setting line 1502 (die @ 5) â�¤  at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_unit @ 36) â�¤  at …»
17:03 camelia ..rakudo 0808ac: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/Zgv59rQECaâ�¤Undeclared name:â�¤    KeyHash used at line 1â�¤â�¤Â»
17:03 TimToady eh?
17:03 TimToady nr: say (:a(2),:b(.5),:c(.2)).KeyHash.roll(30).say
17:03 camelia rakudo 0808ac: OUTPUT«No such method 'KeyHash' for invocant of type 'Parcel'␤  in block  at /tmp/Ge313PglPV:1␤␤»
17:03 camelia ..niecza v24-95-ga6d4c5f: OUTPUT«Unhandled exception: Unable to resolve method KeyHash in type Parcel␤  at /tmp/I7TPXbadoL line 1 (mainline @ 3) ␤  at /home/p6eval/niecza/lib/CORE.setting line 4583 (ANON @ 3) ␤  at /home/p6eval/niecza/lib/CORE.setting line 4584 (module-CORE @ 576) ␤  …»
17:04 jnap joined #perl6
17:04 TimToady I guess nobody actually implements KeyHash yet
17:04 TimToady nr: KeyHash
17:04 camelia niecza v24-95-ga6d4c5f: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤â�¤Undeclared name:â�¤        'KeyHash' used at line 1â�¤â�¤Unhandled exception: Check failedâ�¤â�¤  at /home/p6eval/niecza/boot/lib/CORE.setting line 1502 (die @ 5) â�¤  at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_unit @ 36) â�¤  at …»
17:04 camelia ..rakudo 0808ac: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/FDZpy8bMxlâ�¤Undeclared name:â�¤    KeyHash used at line 1â�¤â�¤Â»
17:05 * TimToady still wonders whether all those Key* names are bad
17:05 TimToady should be HashSet, HashBag, HashWeight or so
17:06 TimToady Het, Hag, and Height...
17:08 kaleem joined #perl6
17:08 TimToady or M for "mutable"
17:10 jnap joined #perl6
17:11 TimToady Setty, Baggy, Weighty, if those weren't taken as roles
17:13 [Sno] joined #perl6
17:14 TimToady SetM, BagM, WeightsM  # need a better term for weights...
17:15 * TimToady feels like we have to change something major now that we've been talking about how stable Perl 6 is :)
17:15 PerlJam Well, +1 to changing the Key* names (sorry I don't have any suggestion other than that)
17:15 timotimo perl6 now has to be written RTL
17:16 TimToady that's APL you're thinking of
17:17 TimToady Setses, Bagses, and Weightses, my Precious!
17:17 ajr_ Loads, prices, coefficients/
17:17 ajr_ ?
17:18 TimToady those are all...almost...
17:18 jnthn r: say 1328158 - 1231085
17:18 camelia rakudo 0808ac: OUTPUT«97073␤»
17:19 TimToady deapostrophizing?
17:19 grondilu joined #perl6
17:21 sqirrel joined #perl6
17:21 dalek nqp/cursless: 02f8345 | jnthn++ | src/QRegex/P6Regex/Actions.nqp:
17:21 dalek nqp/cursless: Build simpler QAST for some cclasses.
17:21 dalek nqp/cursless:
17:21 dalek nqp/cursless: This brings a bunch more into the realm of what the NFA builder can
17:21 dalek nqp/cursless: handle (probably it should cope with yet more, but this fixes the
17:21 dalek nqp/cursless: LTM for the Perl 6 grammar's apostrophe token, which is a big win).
17:21 dalek nqp/cursless: review: https://github.com/perl6/nqp/commit/02f83455ac
17:22 jnthn TimToady: Big win being that <identifier> now LTMs properly.
17:22 jnthn TimToady: Meaning that the <label> branch of statement is never hit, for example
17:22 jnthn TimToady: Plus no doubt other things.
17:22 jnthn Also fatarrow. :)
17:22 TimToady YäY
17:23 moritz \o/
17:24 * TimToady wants Setses and Bagses enough to try to come up with a gloss for "ses"...Scalars Emulating Scalars or so :)
17:24 jnthn r: say 2196370 - 1231085
17:24 camelia rakudo 0808ac: OUTPUT«965285␤»
17:24 jnthn r: say 1231085 / 2196370
17:24 camelia rakudo 0808ac: OUTPUT«0.5605089␤»
17:25 jnthn Wow. At this rate we might manage to halve the number of Cursor allocations in CORE.setting parsing.
17:26 TimToady well, you started out 8 times STD, so you still have lots of headroom :)
17:26 zwut00 joined #perl6
17:27 TimToady though if you're cutting things down, that's more like headroom¯¹
17:27 ajr joined #perl6
17:27 TimToady hmm, that's an overbar, not a minus
17:28 TimToady .u ¯
17:28 yoleaux U+00AF MACRON [Sk] (¯)
17:28 jnap joined #perl6
17:28 TimToady how to get superscript minus...
17:28 not_gerd <sup>-</sup>
17:29 TimToady <dead_circumflex> <U2212>    : "⁻"   U207B # SUPERSCRIPT MINUS
17:29 TimToady <Multi_key> <asciicircum> <U2212> : "⁻"   U207B # SUPERSCRIPT MINUS
17:29 TimToady <dead_circumflex> <minus>       : "⁻"   U207B               # SUPERSCRIPT MINUS
17:29 TimToady none of these are helpful...
17:29 FROGGS jnthn: I changed my mine and did a cheaper <?[#]> fix :o)  ... testing right now
17:29 diakopter there are 348 job listings on indeed.com with perl in the title. there are 3,667 with C# in the title, and 15,475 with Java in the title.  discuss.
17:30 diakopter indeed.com aggregates job listings from thousands of job boards/sites
17:30 diakopter also, see here for trends of the top N  http://goo.gl/kiJ4n9
17:31 diakopter top N as defined by http://goo.gl/lTSvvZ
17:32 TimToady 90% of everything is crud?
17:33 diakopter these data feel quite accurate and representative
17:33 TimToady most data do :)
17:33 diakopter no..
17:34 moritz let's face it. Perl has a lot of catch-up to do.
17:35 PerlJam And here I was thinking that perl was doing so well against those other languages...
17:35 * grondilu had to search overlapping occurences of ATGATCAAG in http://beta.stepic.org/media/attach​ments/lessons/3/Vibrio_cholerae.txt and perl6 was too slow.  Anyone wants to try on the JVM to see how long it takes?
17:35 diakopter PerlJam: ok ok :P
17:36 TimToady um, there are no overlapping occurrences of those
17:37 PerlJam grondilu: "overlapping occurences"?  ATGATCAAG isn't self-similar.
17:37 grondilu I meant 'potentially overlapping'
17:37 TimToady maybe someone needs to hack boyer-moore into our regex
17:37 grondilu PerlJam: indeed.  I hadn't realized that.
17:38 PerlJam grondilu: yeah, you were probably too focused on how slow perl6 was to notice :)
17:38 TimToady though I don't think BM will actually do all that much better with a 4-letter alphabet
17:39 diakopter especially when the match will fail :P
17:39 TimToady no, BM is for failing faster
17:39 grondilu TimToady: I made a custom simple algo in P5 to solve the problem and it was quite fast.  haven't tried to translate it in P6, though.
17:39 diakopter er, oops.
17:39 TimToady as well as finding faster
17:40 PerlJam grondilu: use index() in a loop and it's plenty fast I bet.
17:40 PerlJam (in p5)
17:40 TimToady index in p5 uses BM
17:40 FROGGS perl6 -e 'say("#" ~~ /<?[#]>/)'
17:40 FROGGS 「」
17:41 grondilu still, if an algorithm made in 2 minutes in P5 is fast, shouldn't a simple  $dna.match: /$pattern/, :overlap  be fast as well?
17:42 moritz of course it should
17:42 moritz nobody says the current state of affairs is acceptable
17:42 grondilu I mean it's really the simplest pattern matching there is.  Why is it so slow??
17:42 moritz it's just that optimizing stuff is hard work
17:42 PerlJam .oO( in theory, there's no difference between theory and practice.  In practice, there is  :)
17:43 not_gerd PerlJam: you just need a better theory
17:43 TimToady well, it would be interesting to put that into an eval and see if the DFA helps
17:43 TimToady since interpolating probably disables the DFA
17:44 TimToady that's my theory...
17:47 grondilu I can put the litteral value instead of $pattern
17:48 grondilu oh, it is indeed fast!
17:49 * TimToady hopes it is also correct :)
17:50 grondilu the result seems correct indeed, and took only a few seconds.
17:50 grondilu I'm amazed that using interpolation or not can change the performance that drastically.
17:51 FROGGS hmmm, dalek is a bit sleepy
17:51 FROGGS I pushed to nqp and rakudo @cursless
17:52 FROGGS can somebody give camelia voice?
17:52 diakopter it shouldn't need it
17:53 FROGGS diakopter: right, but I have to scroll to click it :o)
17:53 grondilu so yeah, writing $dna.match: eval(/$pattern/), :global   did indeed speed things a lot.  Good to know.
17:54 PerlJam grondilu: An NFA has to do lots more bookkeeping than a DFA, ergo it takes longer
17:54 TimToady should probably be eval(/"$pattern"/) in that case
17:54 TimToady unless you're sure $pattern contains no regex metachars
17:54 TimToady s/no/no unwanted/
17:55 grondilu yeah I meant eval("/$pattern"), which is what I tried
17:55 grondilu eval("/$pattern/")
17:55 TimToady no, you want quotes inside to be safe
17:55 PerlJam um .. slightly different semantics there :)
17:56 TimToady eval('/"$pattern"/') or so
17:56 grondilu I confess I don't understand what eval(/"$pattern"/) means exactly.
17:56 TimToady also wants the single quotes
17:56 TimToady er, actually
17:56 grondilu with the single quotes I understand better
17:57 grondilu but then I don't get what the double quotes are there for
17:57 TimToady wants eval(qq[ /"$pattern"/ ])
17:57 PerlJam eval("/'$pattern'/")
17:57 TimToady oh, that works
17:57 TimToady duh
17:57 PerlJam :-)
17:57 * TimToady thought he had enough coffee this morning, but apparently it has worn off...
17:57 diakopter well, no
17:59 diakopter still can terminate the quote and regex in $pattern
17:59 TimToady well, yes, eval always has that problem
17:59 TimToady but at least now we're just assuming no ' or \
18:00 TimToady not that there are no regex metachars at all
18:00 TimToady and it's easy enough to preprocess the string to backwhack ' or \
18:01 PerlJam The moral of the story is "know your data well"   :)
18:02 * grondilu finally understood what the inside quotes were for :)
18:03 TimToady the fact that we need eval here probably means we're missing a less powerful feature
18:03 grondilu indeed
18:04 grondilu maybe a :dfa options to force DFA if that's the issue?
18:04 TimToady std: / <"foo"> /
18:04 camelia std 4cde04e: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Unrecognized regex assertion at /tmp/dW0emHeVE4 line 1:â�¤------> [32m/ <[33mâ��[31m"foo"> /[0mâ�¤    expecting assertionâ�¤Parse failedâ�¤FAILED 00:00 42mâ�¤Â»
18:04 djanatyn joined #perl6
18:04 moritz oh
18:05 * moritz likes the trend of TimToady's thoughts
18:05 TimToady std: / <"$pattern"> /  # could steal this to tell engine to count it as static enough to DFA
18:05 camelia std 4cde04e: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Unrecognized regex assertion at /tmp/a75O08eW5T line 1:â�¤------> [32m/ <[33mâ��[31m"$pattern"> /  # could steal this to tel[0mâ�¤    expecting assertionâ�¤Parse failedâ�¤FAILED 00:00 42mâ�¤Â»
18:05 PerlJam grondilu: for some reason that smells like P5's /o flag to me. (and I really hate /o these days)
18:06 TimToady this would not be /o
18:06 TimToady this would, however, want to track the string to recompute the DFA if the string changes
18:07 moritz PerlJam: the bad thing about /o is that it's action-at-a-(timely)-distance
18:07 moritz we don't have to repeat that mistake
18:07 PerlJam yes, please let's not
18:08 moritz and of course we could have an optimizer for QAST::Regex, which recognizes the case of a literal as the first thing inside a scan
18:08 TimToady at mininum, <"$pattern"> recalculating the DFA each time the pattern is entered would be better than using the NFA, at least on long scans like this
18:08 moritz and replaces it with an index scan
18:08 PerlJam TimToady: indeed.  looks good at first blush.
18:10 TimToady otoh, it might be reasonable to assume that any $foo that comes from outside the pattern is sufficiently static to DFA
18:10 TimToady at least on a cached basis
18:11 TimToady though that mucks with the boundaries of what is considered declarative
18:12 TimToady so I think we need syntax to explicitly enable such an interpretation
18:12 moritz uhm
18:12 dalek nqp/cursless: 927729b | (Tobias Leich)++ | src/QRegex/P6Regex/Grammar.nqp:
18:12 dalek nqp/cursless: fix # in cclass_elem
18:12 dalek nqp/cursless: review: https://github.com/perl6/nqp/commit/927729b491
18:12 TimToady we can't just say that $foo is declarative in a pattern
18:13 moritz but we can say that <"$foo"> takes a snapshot at match start time
18:13 TimToady noting that it probably doesn't get transitively passed up your grammar
18:13 TimToady it's just a local optimization
18:13 moritz just like interpolation of a variable into a string doesn't change after the fact if you re-assign to that variable
18:14 moritz r: my $x = 42; say "$x and { $x = 23}";
18:14 camelia rakudo 0808ac: OUTPUT«42 and 23␤»
18:14 TimToady yes, and the optimizer is allowed to optimize locally based on the snapshot semantics
18:14 moritz in some sense the "$x" here has the same snapshot semantics, which would be strangely consistent
18:14 dmol joined #perl6
18:14 TimToady yeah
18:15 TimToady though "$0$2" shouldn't snapshot
18:15 PerlJam ajr_: And this is how the language changes  :-)
18:16 TimToady there's no point in freezing the spec where it forces us to run too slow :)
18:16 jnthn FROGGS: pulled your commits :)
18:16 TimToady fsdo "too"
18:16 FROGGS jnthn: ossum :P
18:19 dalek rakudo/cursless: c6079d0 | (Tobias Leich)++ | / (2 files):
18:19 dalek rakudo/cursless: <?before '#'> to <?[#]>
18:19 dalek rakudo/cursless: review: https://github.com/rakudo/rakudo/commit/c6079d0157
18:20 timotimo cool beans, we're getting somewhere :)
18:21 timotimo though we still need to get that down to 1/4th
18:21 timotimo also, we need to get a decisive speed difference out of it :|
18:22 jnthn Well, at least we know object allocation is relatively fast, if we don't get a big one :P
18:22 TimToady y'know, there's nothing that says all our DFAing has to be done with the declarative prefix only
18:22 TimToady we can DFA bits in the middle of a regex too
18:22 jnthn TimToady: I'd pondered that a bit :)
18:22 TimToady and the dynamicism of that has nothing to do with the static prefix
18:22 jnthn But...so much to do :)
18:23 TimToady so it feels like a bit more of hotspot/JIT issue in that way
18:23 TimToady so, conservatively, let's just stick with eval for now :)
18:23 * jnthn notes that, good as cutting down cursors is, it doesn't help towards having Moar support in the Oct NQP release, or a JVM Star :)
18:24 TimToady it does if you can find more bugs because the cycle is faster :)
18:24 jnthn True ;)
18:24 TimToady though yeah, the amortization probably comes out wrong
18:24 timotimo jnthn: i bet fixing match( :global) in moarvm should be easy to do, and it would allow you to run the qregex test suite :)
18:25 ajr_ btw, is dalek a bot of some sort?
18:25 timotimo yes, i tis
18:25 jnthn ajr_: It reports commits to various interesting repos
18:25 ajr_ Thanks, that confirms my hypothesis.
18:27 jnthn timotimo: t/serialization/ is maybe more pressing :)
18:28 zwut001 joined #perl6
18:29 timotimo but serialisation is implemented?
18:30 jnthn sorta but not all
18:30 jnthn needs finishing, bugs fixing, etc.
18:30 timotimo right
18:30 timotimo i'll just try to hook up the test suite locally
18:31 timotimo Method x not found in cache, and late-bound dispatch NYI  -  ah well
18:32 timotimo Serialization Error: missing static code ref for closure  -  oh well
18:32 lizmat joined #perl6
18:35 FROGGS damn
18:35 FROGGS my latest rakudo commit breaks S02-lexical-conventions/unspace.t  again :o(
18:41 FROGGS perl6 -e 'say("#" ~~ /<!before "#">/)' # 「」
18:41 FROGGS perl6 -e 'say("#" ~~ /<![#]>/)' # Nil
18:41 FROGGS that should output the same, right
18:41 FROGGS ?
18:42 moritz is <![#]> zero-width?
18:42 TimToady certainly
18:42 moritz if yes, it should match at the end of the string
18:42 moritz so both should print 「」
18:43 dalek specs: f617adf | (Elizabeth Mattijsen)++ | S32-setting-library/Containers.pod:
18:43 dalek specs: Fix copy'n'pasto, spotted by yary++
18:43 dalek specs: review: https://github.com/perl6/specs/commit/f617adfbac
18:43 TimToady perhaps someone is checking end-of-string prematurely
18:45 TimToady n: say("#" ~~ /<![#]>/)
18:45 camelia niecza v24-95-ga6d4c5f: OUTPUT«[31m===[0mSORRY![31m===[0m��Please backslash # for literal char or put whitespace in front for comment at /tmp/XbzzczH65Y line 1:�------> [32msay("#" ~~ /<![#[33m�[31m]>/)[0m��Parse failed��»
18:45 TimToady actually, should be an error :)
18:45 TimToady n: say("#" ~~ /<![\#]>/)
18:46 camelia niecza v24-95-ga6d4c5f: OUTPUT«「」␤␤»
18:46 kivutar joined #perl6
18:47 Khisanth joined #perl6
18:48 TimToady r: say("#" ~~ /<![\#]>/)
18:48 camelia rakudo 0808ac: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/Emwj3oXidi�Unspace not allowed in regex�at /tmp/Emwj3oXidi:1�------> [32msay("#" ~~ /<![\#[33m�[31m]>/)[0m�»
18:48 diakopter heh.
18:48 diakopter std: say("#" ~~ /<![\#]>/)
18:49 camelia std 4cde04e: OUTPUT«ok 00:00 44m␤»
18:51 zwut00 joined #perl6
18:51 TimToady r: say("#" ~~ /<![\x23]>/)
18:52 camelia rakudo 0808ac: OUTPUT«Nil␤»
18:52 TimToady r: say("#" ~~ /<?[\x23]>/)
18:52 camelia rakudo 0808ac: OUTPUT«「#」␤␤»
18:52 diakopter r: say("#" ~~ /<![\\#]>/)
18:52 camelia rakudo 0808ac: OUTPUT«「#」␤␤»
18:52 TimToady r: say("" ~~ /<![\x23]>/)
18:52 camelia rakudo 0808ac: OUTPUT«Nil␤»
18:52 diakopter wt
18:52 TimToady r: say("" ~~ /<![x]>/)
18:52 camelia rakudo 0808ac: OUTPUT«Nil␤»
18:54 TimToady r: say("" ~~ /<[x]>/)
18:54 camelia rakudo 0808ac: OUTPUT«Nil␤»
18:55 TimToady r: say("" ~~ /<!![x]>/)
18:55 camelia rakudo 0808ac: OUTPUT«Nil␤»
18:55 TimToady !
18:56 zwut00 joined #perl6
18:56 TimToady n: say("" ~~ /<!![x]>/)
18:56 camelia niecza v24-95-ga6d4c5f: OUTPUT«Nil␤»
18:56 TimToady n: say("" ~~ /<?[x]>/)
18:56 camelia niecza v24-95-ga6d4c5f: OUTPUT«Nil␤»
18:56 timotimo is !! supposed to behave like ? or something?
18:57 TimToady oughta
18:57 TimToady n: say("x" ~~ /<?[x]>/)
18:57 camelia niecza v24-95-ga6d4c5f: OUTPUT«「」␤␤»
18:58 TimToady n: say("x" ~~ /<!![x]>/)
18:58 camelia niecza v24-95-ga6d4c5f: OUTPUT«「」␤␤»
18:58 TimToady n: say("x" ~~ /<![x]>/)
18:58 camelia niecza v24-95-ga6d4c5f: OUTPUT«「」␤␤»
18:58 TimToady that one matches after instead of before
18:59 lizmat joined #perl6
18:59 TimToady r: say("x" ~~ /<![x]>/)
18:59 camelia rakudo 0808ac: OUTPUT«Nil␤»
18:59 TimToady but not in rakudo
19:00 sorear joined #perl6
19:00 sqirrel joined #perl6
19:00 zwut001 joined #perl6
19:00 TimToady r: say("x" ~~ /<!![x]>/)
19:00 camelia rakudo 0808ac: OUTPUT«「」␤␤»
19:01 ssutch joined #perl6
19:03 FROGGS TimToady: nqp/master + rakudo/nom has not been patched yet
19:03 FROGGS TimToady: so you say only <?[\#]> should be valid?
19:04 FROGGS I think you said that last night already :/
19:05 lizmat_ joined #perl6
19:05 FROGGS k, another try
19:09 * FROGGS sqirrel
19:11 FROGGS rn: say ' ' ~~ /<?[ ]>/
19:11 camelia niecza v24-95-ga6d4c5f: OUTPUT«Nil␤»
19:11 camelia ..rakudo 0808ac: OUTPUT«===SORRY!===␤Error while compiling block  (source text: "say ' ' ~~ /<?[ ]>/"): Error while compiling op call: Error while compiling block : Error while compiling block  (source text: "/<?[ ]>/"): StopIteration␤»
19:11 ssutch joined #perl6
19:11 FROGGS rn: say ' ' ~~ /<?[\ ]>/
19:11 camelia niecza v24-95-ga6d4c5f: OUTPUT«「」␤␤»
19:11 camelia ..rakudo 0808ac: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/CiRSssvawy�Unspace not allowed in regex�at /tmp/CiRSssvawy:1�------> [32msay ' ' ~~ /<?[\ [33m�[31m]>/[0m�»
19:15 TimToady n: say ' ' ~~ /<[\ ]>/
19:15 camelia niecza v24-95-ga6d4c5f: OUTPUT«「 」␤␤»
19:16 masak evenin', #perl6
19:17 lizmat_ joined #perl6
19:17 FROGGS hi masak
19:17 diakopter StopIteration??
19:18 timotimo ... huh?
19:18 diakopter 7 min ago
19:18 FROGGS I guess there will no cclass element end up in the QAST::Regex
19:18 diakopter camelia to FROGGS
19:19 masak diakopter: that looks like a NQP stacktrace.
19:19 nwc10 jnthn/masak: I've mailed perl6-compiler something surprising
19:19 masak ooh
19:20 nwc10 Iron*'s big bump is due to a rebase and branch merge by Jeff Hardy on Sep 7 2013
19:20 FROGGS masak: yes, cclass_elem that is
19:20 nwc10 ironruby.net appears to have been down for 5 weeks
19:20 masak nwc10: why add IronPython+IronRuby? feels like a weird sum.
19:21 nwc10 masak: "because I could"
19:21 masak :)
19:21 nwc10 but, really, because they are showing signs of being more Parrot than Parrot
19:21 nwc10 2836 nick      20   0 1757m 173m  136 S  97.1 74.7 587:21.17 java
19:21 breinbaa1 joined #perl6
19:22 nwc10 I don't know if compiling the setting is supposed to end up with a bit that's very CPU bound
19:22 masak nwc10: anyway, yes, it is surprising that commits(p6) > commits(p5) for all of 2013.
19:22 risou_awy_ joined #perl6
19:22 nwc10 yes, because I thought that it had probably only crossed over this month
19:22 mathw_ joined #perl6
19:22 rjbs- joined #perl6
19:22 zakalwe_ joined #perl6
19:22 zakalwe_ joined #perl6
19:23 masak nwc10++ # crunching data
19:23 lizmat joined #perl6
19:24 masak *and* your Perl 5 code is a joy to read. figures. :)
19:24 masak chomp @heads;  # OFF WITH THEIR HEADS
19:24 timotimo cool :)
19:24 ivan``_ joined #perl6
19:25 Lorn_ joined #perl6
19:25 atta_ joined #perl6
19:25 masak ooh, I want to port that script to Perl 6 now :)
19:25 nwc10 I was going to invite someone to
19:25 masak but I don't have time tonight :/
19:26 masak someone is welcome to beat me to it, and I will happily review the result.
19:26 nwc10 I considered trying to do it in Perl 6, but figured that I was more interested in the answer than the programming
19:26 Fatalnix_ joined #perl6
19:26 benabik Heh.  "Stage parse    : 15747.733"
19:27 nwc10 Stage jast       : 23865.091
19:27 nwc10 that's more troubling
19:27 nwc10 and even more troubling is that the JVM usually SEGVs somewhere in parse
19:27 johnny5_ joined #perl6
19:27 synopsebot joined #perl6
19:27 benabik Well, mine was probably due to me backgrounding the compile while I was on battery.
19:27 cotto joined #perl6
19:27 crazedpsyc joined #perl6
19:27 benabik JVM Segfaulting is depressingly common with some newer features (like invokedynamic).
19:27 nwc10 and the one time it completed 'jast' it then ran out of swap, presumably trying to create a buffer to put bytecode in
19:28 diakopter nwc10: microsoft stopped sponsoring the iron languages a few years ago
19:28 hugme joined #perl6
19:28 nwc10 this seemed to be depressingly common about 53 minutes in
19:28 nwc10 diakopter: yes, I became aware of that recently-ish.
19:28 masak hugme: hug me
19:28 * hugme hugs masak
19:28 nwc10 It's sort of sad
19:28 lizmat_ joined #perl6
19:28 geekosaur joined #perl6
19:29 nwc10 Jython is also looking pretty stalled currently
19:29 dylanwh joined #perl6
19:29 rafl joined #perl6
19:29 masak hugme: hug the iron languages
19:29 * hugme hugs the
19:29 diakopter yep; reimplementations are never good enough
19:29 jferrero joined #perl6
19:30 Util #ps time
19:30 masak diakopter: there are brilliant exceptions though (such as JScript)
19:30 diakopter masak: *cough*
19:30 timotimo JScript is good?
19:30 masak JScript, at its time (1996) was a *brilliant*, bug-for-bug reverse engineering.
19:30 masak quite possible the best Microsoft ever made.
19:30 masak possibly*
19:31 timotimo hm
19:31 masak they reimplemented bugs Brendan Eich wasn't even aware of yet!
19:32 masak (and then they had to be standardized through EcmaScript, because users were dependent on the bugs)
19:33 timotimo not bad!
19:38 shinobicl joined #perl6
19:40 lizmat_ r: my Int @a=^3; @a[1]:delete; @a.map:{say .WHAT.perl }; @a[1].WHAT.perl.say  # losing type info deep in the bowels of MapIter
19:40 diakopter masak: point taken
19:40 camelia rakudo 0808ac: OUTPUT«Int␤Any␤Int␤Int␤»
19:40 lizmat_ I guess I'm going to rakudobug this
19:41 lizmat_ unless someone has a suggestion?
19:43 masak was the thing the other day rakudobugged? it was similar.
19:43 lizmat_ I think I told timotimo that I had an idea where it was coming from
19:44 lizmat_ but I was wrong
19:44 jnthn nwc10: Will be interesting to see if the cursless branches help your cause :)
19:44 lizmat_ at least, in the short term
19:44 jnthn nwc10: They won't reduce memory need as a total, but they will reduce GC churn.
19:45 benabik You're just trying to hide GC bugs by calling it less often.  ;-)
19:45 jnthn benabik: I suspect it's indy bugs...
19:46 nwc10 jnthn: given that it hasn't crashed *yet* on this run, I'll leave it
19:46 nwc10 running
19:46 TimToady masak: left a snack sitting at http://irclog.perlgeek.de/​perl6/2013-10-01#i_7657519  for the masakbot
19:46 benabik jnthn: The JVM segfaults?  Assuming indy = invokedynamic, I'd agree.
19:46 masak om nom nom
19:48 masak TimToady: could you provide a gist of the local output from Rakudo/JVM?
19:48 denis_boyun joined #perl6
19:48 masak without it, we're missing the "actual" part of the triplet.
19:49 lue hello world! o/
19:49 TimToady > say [1,2,3].combinations(2)
19:49 TimToady Method 'combinations' not found for invocant of class 'Scalar'
19:49 * masak submits rakuodobug
19:49 diakopter nwc10: 11,111 commits for the sixers; 8,636 for the fivers
19:49 diakopter in 21 months
19:50 TimToady diakopter: I'm sorry, you obviously made up that number, 11,111
19:51 diakopter yeah :(
19:51 jnthn benabik: Well, afaik they're doing it over in 8... :)
19:51 TimToady doubtless rounded down from 11,111.111
19:51 lue commits for what, exactly?
19:51 benabik jnthn: So you get to work around all new bugs?
19:52 lizmat_ joined #perl6
19:52 diakopter lue: http://www.nntp.perl.org/group/perl.​perl6.compiler/2013/10/msg9200.html
19:52 masak lue: see p6c email.
19:52 masak diakopter++ # url
19:52 diakopter masak++ # description
19:53 diakopter nwc10++ # thanks
19:53 jnthn benabik: probably :P
19:53 japhb_ joined #perl6
19:53 lue .oO(My biggest takeaway from those slides is that NQP hacking would satisfy my interest in lower-level areas of programming, I just needed to find the shallow end of the pool)
19:54 lue diakopter++ masak++ # prompt responses
19:56 benabik As a systems researcher I find "NQP is lower-level" somewhat mind boggling.  ;-)
19:56 lue Wow, that's amazing. (Also Parrot's commit numbers look kind of sad, I almost don't want to look at it.)
19:57 lue benabik: I said low*er* instead of low for a reason :) In my eyes, working on a compiler is decidedly lower than, say, programming a game or office software.
19:57 diakopter only if you let it be
19:58 lue diakopter: the Parrot sadness, yes?
19:58 diakopter there are plenty of counterexamples
19:58 jnthn .oO( some might say you have to be higher to write a compiler... :P )
19:58 diakopter no, the low-ness of compiler
19:58 diakopter counterexamples in both directions
19:58 benabik lue: I didn't say wrong, just mind-boggling...  NQP is pretty far up the food chain from most of my code these days.
19:59 benabik .oO( You don't even have to worry about cache misses or coherency! )
19:59 diakopter benabik: :D
20:01 lue .oO(Not that I think is a compiler is *that* low on the chain. I mean, there's the linux kernel, and also pure assembler for those very special situations.)
20:03 lizmat joined #perl6
20:05 frdmn joined #perl6
20:05 14WABCXRW joined #perl6
20:06 lue .oO(That reminds, we should have an :asm adverb for quoting constructs, no way that could go wrong...)
20:07 benabik use asm :NO_REALLY, :I_MEAN_IT
20:07 TimToady use LotsaTyping;
20:07 Grimnir_ joined #perl6
20:08 labster joined #perl6
20:08 japhb joined #perl6
20:09 lue Q:asm<PBC>" ... "
20:09 lue and then it fails if you can't use PBC on the current machine. Simple and in no way dangerous. Works just fine for C/C++ ...
20:10 * TimToady prefers PVC to PBC
20:10 go|dfish joined #perl6
20:10 diakopter I prefer IBC
20:11 timotimo i prefer IRC
20:11 * benabik likes PBJ
20:11 * nwc10 likes IPA
20:11 nwc10 oh, that had rather too many letter changed
20:11 TimToady hoppiness != happiness
20:11 jnap joined #perl6
20:11 benabik TimToady++
20:12 timotimo beer doesn't make you happy?
20:12 benabik Hoppy beer rarely makes me happy.
20:12 TimToady some of it makes me hoppy
20:12 * TimToady prefers his beer not to tastel like poison
20:13 TimToady *taste
20:13 benabik Non-alcoholic beer?
20:13 benabik (Although many of my friends would argue that tastes *more* like poison.)
20:14 TimToady The flagon with the dragon holds the brew that is true.
20:14 masak :)
20:15 jnthn IPA++ # but stout is still better :)
20:15 jnthn hmm, I've got a supposedly nice IPA in my fridge...
20:15 lue .oO(Wait, the secret to assembler is beer? I'm confused.)
20:16 * benabik has a milk stout++ in his fridge.
20:21 geekosaur ballmer peak?
20:22 TimToady if he's confused, he's obviously past the peak...
20:22 geekosaur or not there yet
20:23 TimToady that's just wrong, not confused :)
20:25 FROGGS n: say('#abc' ~~ /<?[\s\#]> '#abc'/)
20:25 camelia niecza v24-95-ga6d4c5f: OUTPUT«「#abc」␤␤»
20:25 FROGGS that returns nothing with my locally patched nqp
20:25 * masak is enjoying a chocolate stout
20:25 * FROGGS makes earl grey
20:26 FROGGS masak: you are a pervert
20:26 diakopter _._.
20:26 timotimo FROGGS: isn't it a bit too late at night for caffeine?
20:26 jnap joined #perl6
20:27 FROGGS timotimo: I can't parse that
20:27 masak FROGGS: you're not so bad yourself :)
20:27 FROGGS and what exactly is a 'milk stout'?
20:27 FROGGS that doesn't sound right
20:27 TimToady .oO(milk chocolate stout)
20:28 FROGGS that is not really that sort-of-beer with milk?
20:28 FROGGS is it?
20:28 benabik FROGGS: A stout where they add lactose (milk sugar) while brewing.  The bacteria can't process it to turn it to alcohol so you get a sweet(er) stout.
20:29 FROGGS ahhh
20:29 FROGGS benabik: then I would drink it too :o)
20:29 ssutch joined #perl6
20:29 FROGGS thanks for explaining that
20:40 ajr joined #perl6
20:58 sitaktif joined #perl6
20:58 donaldh joined #perl6
21:05 sqirrel joined #perl6
21:21 denis_boyun joined #perl6
21:27 bruges_ joined #perl6
21:28 kivutar joined #perl6
21:33 FROGGS damn, <?before <[\s\#]> > is still different from <?[\s\#]> locally
21:33 jnthn grr
21:37 dalek joined #perl6
21:40 FROGGS and I'm out of ideas
21:40 flussence joined #perl6
21:41 FROGGS to fix all the bugs we would need a quoting language in nqp I guess
21:41 FROGGS err, fear even
21:49 pecastro_ joined #perl6
21:49 timotimo we can still merge our branch at a point where it makes things "never worse" :)
21:50 FROGGS true
21:50 FROGGS I think we dont need to change more than 3 <?[...]>'s to <?before
21:55 FROGGS .... to fix spectest fails, not to fix <?[\#]>, beause we can't
21:57 jnthn I suspect that can be fixed :)
21:57 jnthn But yeah, we can merge if spectests pass.
21:58 jnthn I think the curernt point, allocating 56% or so of the Cursor objects we used to, is a very notable improvement :)
21:58 FROGGS so we should are about spectests now... anyone like to merge in master/nom? :o)
21:58 jnthn I doubt it'll produce muchin the way of conflcits :)
22:00 donaldh does the reduction in cursor objects make a significant reduction in heap usage?
22:00 not_gerd left #perl6
22:00 jnthn donaldh: All the Cursors we've eliminated tended to have short lifetimes.
22:00 diakopter donaldh: so it would reduce frequency of gc runs
22:00 jnthn donaldh: It reduces the amount the GC has to collect, that's for sure.
22:01 jnthn donaldh: But probably not total heap since the things went away anyway
22:01 donaldh speedup?
22:01 jnthn Not sure
22:01 jnthn Didn't compare yet.
22:01 jnthn Presumably not allocating a million objects saves *something*
22:02 shinobicl left #perl6
22:02 * donaldh has been looking at JVM heap dumps.
22:02 diakopter .. unless you're allocating a million other objects... :)
22:02 donaldh some micro optimisations seem to give a reasonable heap saving.
22:04 donaldh But, after parsing CORE.setting we seem to have >100 huge long[]s, identical sizes, maybe identical contents.
22:08 mberends joined #perl6
22:12 donaldh These long[]s have 20,480 slots and 17,112 values.
22:13 jnthn Hm
22:13 jnthn They ain't by any chance pointed to by NFAs?
22:15 BenGoldberg joined #perl6
22:17 donaldh VMArrayInstance_i contained in a SixModelObject[] stored in a CallFrame.oLex
22:17 diakopter heh locals?
22:19 donaldh Yeah, oLex[5] to be precise. Every time.
22:19 * jnthn wonders if prior_invocation could in any way be to blame...
22:22 masak 'night, #perl6
22:22 japhb__ o/ masak
22:23 jnthn r: say 0x3cc55c55b0 - 0x3cc54cb040
22:23 camelia rakudo 0808ac: OUTPUT«1025392␤»
22:23 jnthn r: say 1025392 < 2097152
22:23 camelia rakudo 0808ac: OUTPUT«True␤»
22:29 zwut00 joined #perl6
22:35 FROGGS donaldh: my gut feeling is that rakudo's stage parse is about 8 to 10% faster
22:35 donaldh nice.
22:36 FROGGS would be cool if someone benchmarks it properly
22:43 donaldh aha, linepos cache in HLL::Compiler.lineof
22:43 donaldh conditional breakpoints ftw
22:45 jnthn ah...
22:45 donaldh but so many copies.
22:45 * donaldh scratches head
22:45 jnthn yes, that's odd
22:45 jnthn I'd only expect one of those.
22:56 kay__ joined #perl6
22:58 zwut00 left #perl6
22:59 timotimo well, each invocation of Compiler.compile will get its own cache; does that get hit multiple times?
22:59 jnthn Oh, hm
22:59 jnthn Maybe it's that...
23:00 jnthn I did an epic hack to figure out where the anonymous entires in the Cursor creations come from
23:00 jnthn 90051 are from <before ...> which I guess we knew about
23:01 * timotimo put a say into the compile method to find out
23:01 jnthn timotimo: I think dynamic compilation will do it.
23:01 jnthn See compile_in_context in World
23:01 timotimo that would happen often in the optimizer of rakudo at least
23:02 jnthn it happesn whenever we compile
23:02 lizmat joined #perl6
23:02 timotimo yeah, like a begin block
23:02 timotimo or a use statement i guess
23:02 jnthn Right
23:02 timotimo in the use statement it makes sense to do it, because the file is a different one and you'd end up with different values
23:03 jnthn aye
23:03 jnthn but BEGIN, we can re-use the line number cache
23:03 jnthn Building it isn't the cheapest thing either, we may be onto a nice saving here... :)
23:03 timotimo sweet.
23:04 jnthn 37446anon (from !INTERPOLATE)
23:04 jnthn Hmm :)
23:04 timotimo the metamodel runs the compile method 27 times
23:04 timotimo i'll have a number for you for the core setting in just a bit.
23:04 jnthn ok
23:06 timotimo 134 times
23:06 timotimo and 14 times in the optimizer
23:07 jnthn method compile($source, :$from, *%adverbs) {
23:07 jnthn my %*COMPILING<%?OPTIONS> := %adverbs;
23:07 jnthn my $*LINEPOSCACHE;
23:07 jnthn Maybe if we make that
23:07 timotimo yes, it makes a new one every time
23:08 jnthn method compile($source, :$from, :$*LINEPOSCACHE, *%adverbs) {
23:08 jnthn ...
23:08 jnthn And then in compile_in_context we pass in the existing contextual.
23:08 jnthn That should do it.
23:08 timotimo sounds sensible. i'd love to do the grunt work for you, but i really ought to go to bed early today
23:08 jnthn np, there's always tomorrow
23:09 * jnthn is in need of sleep soon too :)
23:09 donaldh yeah, past my bedtime too.
23:09 jnthn Realized an opt but it involves parametric roles and interpolation of parameters in regexes... :)
23:09 jnthn So I may code that up tomorrow instead :)
23:10 * donaldh is too tired to keep up :)
23:10 donaldh jnthn: what's the opt ?
23:12 jnthn donaldh: Think we can call the simpler !LITERAL for those rather than !INTERPOLATE in the NQP case.
23:17 Mouq joined #perl6
23:21 timotimo it turned out that making the changes was very easy
23:21 timotimo if i didn't do anything wrong, expect a result in 5 minutes
23:23 timotimo parse time down from 120s to ...
23:23 donaldh hmm, the linepos cache is first calculated when Grammar.nqp calls World.load_module
23:24 [Coke] wow, iphone tethering feels like dialup.
23:24 diakopter 4g is nice
23:24 * [Coke] waves from the place of tuesday noms.
23:24 jnthn I hope the place of Tuesday noms is giving tasty noms
23:24 timotimo ... i hope it was  worth it and i did it right ...
23:24 * [Coke] has 4 bars of 4G and and is typing ahead by quite a bit. :(
23:24 timotimo 113s
23:24 jnthn 7s. I'll take that. :)
23:25 jnthn And a memory reduction too I guess
23:25 timotimo (that measurement is probably noisy as shit)
23:25 jnthn heh :)
23:25 [Coke] jnthn: chain called chipotle. I ditched my usual of panera when they wouldn't make me a breakfast sandwich at 7:15pm. ;)
23:25 donaldh Yeah, I can investigate the heap saving.
23:25 timotimo https://gist.github.com/timo/0432e2d7abbcf4c3dce9  -  try for yourself
23:25 timotimo good * everybody!
23:26 donaldh thx timotimo
23:26 timotimo yw
23:26 timotimo (really, i just can't help myself)
23:26 timotimo maybe there's more invocations of compile inside World that could use that optimisation
23:27 jnthn I *think* they are all funneled thorugh the one place
23:27 jnthn 'night, timotimo++
23:27 jnthn and 'night from me also o/
23:31 donaldh night o/
23:37 dalek perl6-roast-data: 3d4900e | coke++ | / (4 files):
23:37 dalek perl6-roast-data: today (automated commit)
23:37 dalek perl6-roast-data: review: https://github.com/coke/perl6​-roast-data/commit/3d4900e188
23:46 jeffreykegler joined #perl6
23:47 pdurbin joined #perl6

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

Perl 6 | Reference Documentation | Rakudo