Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2014-08-19

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:04 PerlJam r: printf("%.50f", 1.115)
00:04 camelia rakudo-jvm 9a2f3e: OUTPUT«(timeout)»
00:04 camelia ..rakudo-{parrot,moar} 9a2f3e: OUTPUT«1.11500000000000000000000000000000000000000000000000»
00:05 PerlJam nqp-jvm: say(nqp::sprintf("%.50f",[1.115]))
00:05 camelia nqp-jvm: OUTPUT«#␤# There is insufficient memory for the Java Runtime Environment to continue.␤# pthread_getattr_np␤# An error report file with more information is saved as:␤# /home/p6eval/hs_err_pid5092.log␤»
00:15 [Coke] t/spec/S02-types/multi_dimensional_array.t is failing.
00:19 cooper joined #perl6
00:20 PerlJam Seems we need a "fudge" for setting LOLLY
00:20 TimToady yes, I mentioned that test last night
00:21 TimToady but it's a temporary thing, so maybe just run the tests under LOLLY, since I've already vetted them for poisoned lollipops
00:24 TimToady it's really only the panda modules and dar6pan that need to run once without LOLLY and get fixed
00:24 TimToady 6arkpan?
00:24 PerlJam .oO( sharkpan? )
00:25 PerlJam TimToady: Are you going to do shaped decls next?  :)
00:25 TimToady no, I think Mouq++ is headed that direction
00:25 * TimToady is working toward a faster gather/take now
00:26 PerlJam TimToady++  that would be awesome
00:27 TimToady first target, make a version of GatherIter that can take a batch of values every %% batchsize instead of one at a time
00:27 TimToady a variant, not a replacement, to be used when known eager
00:27 TimToady or known pure code
00:30 TimToady and possibly parameterize the co-routine with the target to reify to directly, and use the coro only for coordination, not to pass data back through an exception, but that's a bigger stretch, and possibly prone to locking issues
00:31 BenGoldberg joined #perl6
00:34 iarna joined #perl6
00:34 TimToady if I can get the latter to work, it makes it easier to reify a batch all at once before yielding
00:36 cooper joined #perl6
00:36 TimToady then take becomes something like 'push $!reified, $taken; yield if $!reified.elems %% $batchsize'
00:36 PerlJam the former seems way easier though  :)
00:37 PerlJam it would be a good stepping stone
00:37 TimToady except you have to wrap and unwrap each batch
00:37 TimToady since batches aren't supposed to turn into parcels
00:37 TimToady adding each parcel directly to $!reified would be simpler
00:38 TimToady and if we make every take wrap in a batch container, then normal lazy take becomes slower
00:38 PerlJam true
00:38 TimToady boy, that's hard to parse :)
00:39 TimToady so I think the 2nd is a worthwhile yakshave if I can swing it
00:40 avuserow_ joined #perl6
00:41 TimToady first, an experiment to see if I can pass a parameter to the block()
00:41 gfldex joined #perl6
00:44 PerlJam Would you end up getting rid of $GATHER_PROMPT and $SENTINEL?  They look like artifacts of the current implementation to me.
00:44 TimToady maybe
01:01 thou joined #perl6
01:09 hoelzro should I leave the content method on for POD blocks and mark it as deprecated, so that people aren't surprised when they try it instead of .contents?
01:10 tadzik +1
01:10 TimToady seems reasonable to an outsider :)
01:11 tadzik deprecation warnings tend to be so annoying that people fix their stuff in no time :D
01:11 TimToady which is partly why I didn't even bother to make the lolligag a warning, just a parse error
01:11 dalek Heuristic branch merge: pushed 137 commits to roast/S26-WHY by hoelzro
01:13 dayangkun joined #perl6
01:16 TimToady actually, we probably need to not only keep the continuation tag, but refine it to do lexotic gathers as specced, and not yet implemented
01:17 iarna joined #perl6
01:17 TimToady S04:796
01:17 synopsebot Link: http://perlcabal.org/syn/S04.html#line_796
01:18 * jnthn accidentally the whole evening with fun :)
01:18 japhb LHF request: Implement PIO.isatty on all backends.  I could really use the .t (is a TTY) file test for a couple UI features.
01:18 TimToady yowser xx *
01:18 japhb jnthn: Accident?  Or Freudian Behavior?
01:19 TimToady RFTMI (Request For...)
01:19 japhb LOL
01:19 jnthn Uh, I went for curry and had some beer. :P
01:19 hagiri joined #perl6
01:19 hagiri hello
01:19 hagiri =)
01:19 jnthn As opposed to writing my talks. :)
01:19 awwaiid hello
01:19 TimToady you sure you didn't go for beer and have some curry?
01:19 japhb Yeah, I realized that joke would probably be immediately misinterpreted ... right after I hit enter.
01:19 jnthn No, the order was certainly curry first. :)
01:21 japhb .ask timotimo If you are still tracking LHF requests, I'm looking for someone to implement PIO.isatty on all backends, so I can rely on the .t (is a TTY) file test.
01:21 yoleaux japhb: I'll pass your message to timotimo.
01:21 * jnthn is going to be away from home for a month, and figured he'd better get in a trip to his local curry house before that. :)
01:22 FROGGS_ joined #perl6
01:22 jnthn There's so much backlog I didn't manage to get through it all on the train home. :)
01:24 jnthn I did get to the gather/take and coroutines (actually continuations in Moar) bit.
01:25 TimToady m: (<a b c>;<d e f>)
01:25 camelia rakudo-moar 9a2f3e: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/m_TX6wEpxt�Unsupported use of ; in brackets as a statement sequence; in this and future versions please use SEQ(;) or $(;) for C comma semantics (or set LOLLY for the new list-of-list semantics fo…»
01:25 jnthn One thing I've wondered is how many of those cases could be eliminated by implementing r-value loops.
01:25 TimToady so you know about the lolly merge
01:25 jnthn xx could be done that way, for example
01:25 jnthn I think the lolly merge is just ahead of where I'm reading :)
01:28 hagiri joined #perl6
01:30 dalek specs: 273da4c | TimToady++ | S99-glossary.pod:
01:30 dalek specs: add tl;dr and TMI
01:30 dalek specs: review: https://github.com/perl6/specs/commit/273da4c750
01:36 * jnthn finally read it all :)
01:36 TimToady er...congrats?
01:37 jnthn fwiw, I don't think GATHER_PROMPT and SENTINEL are problems. They're simply unique enough markers.
01:38 TimToady I figgered that out, and that we'd use that even harder for lexotic gathers
01:38 jnthn They actually were taken directly from sorear++'s JVM continuation impl. I did the same API on Moar.
01:39 jnthn Though what's underneath it is quite different.
01:39 jnthn (Since stack frames are more "first class" in Moar)
01:40 TimToady do you think it would work to give 'take' a direct reference to $!reified to push to?
01:40 klapperl_ joined #perl6
01:41 jnthn Perhaps so. When I've thought about speeding it up, I'd considered having it not yield until there are another values.
01:41 jnthn That is, still have take do the exception throw, but it immediately resumes rather than doing continuation-y stuff.
01:42 jnthn So far as I can tell, the major cost is in the continuation, not the exception.
01:42 TimToady which is why you want to batch them if you can under one continuation
01:46 jnthn Right, that's what I'd been hoping for
01:46 jnthn The other thing I'd been thinking - though didn't yet figure out a good model, is that in:
01:46 jnthn my @a = 0 xx 1000;
01:46 jnthn It's be really nice if we could have it reify directly into $!items of @a
01:46 jnthn And avoid all the copying.
01:46 jnthn Maybe that's what you meant by direct reference to $!reified...
01:46 jnthn Question really is when we know we can get away with such cheating.
01:47 ilbot3 joined #perl6
01:47 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!
01:47 TimToady well, yes, I'd like a constant list to be able to define itself in terms of its earlier elements, as Haskell allows
01:48 TimToady we haven't got there quite yet
01:49 jnthn Yes, it's making that situation work out without ending up with deadlock...
01:51 jnthn .tell lizmat On SEGV, maybe try bumping to latest MoarVM; I fixed a nasty bug that broke a GC invariant earlier today...uh, yesterday...
01:51 yoleaux jnthn: I'll pass your message to lizmat.
01:51 TimToady but direct reification might be just what the doctor ordered to avoid the current behavior
01:52 jnthn If we can get rid of the continuation for every value and the copying in something with an eager array assignment on the LHS and a gather/take-using thing on the RHS, we're probably onto something that can perform well.
01:52 TimToady m: constant foo = 1, foo; say foo[1]
01:52 camelia rakudo-moar 9a2f3e: OUTPUT«===SORRY!===␤Cannot invoke null object␤»
01:53 jnthn The other thing that would be really nice is if:
01:53 jnthn for something() { ... }
01:53 jnthn Could compile into something that pulls values from some iterator, and so can flatten away taht block
01:54 jnthn Though maybe that's less of an issue when spesh gets cleverer about closure semantics.
01:54 TimToady or at turn it into a loop with a simple goto
01:55 jnthn Well, the reason we do well on some for-using benchmarks and not others is because we can turn for 1..10000 { } into a while loop
01:55 jnthn (But not the other cases)
01:55 TimToady though that's not as bad as it used to be, even without that optimization, since Range knows how to do some batching on it's own when called from MapIter
01:55 jnthn Another one to keep in mind - which I know is slow but don't have a good answer for - is for @a X @b { ... }
01:56 jnthn Yes, but for a for <literal range> { ... } today, Rakudo completely optimizes away need for a MapIter or a Range.
01:57 jnthn *the need
01:57 TimToady well, at least we have @x[@a;@b] notation now to play with there, though I doubt it's blazing fast yet
01:57 thou joined #perl6
01:57 lue joined #perl6
01:57 Possum joined #perl6
01:57 robinsmidsrod joined #perl6
01:57 vanila joined #perl6
01:57 eiro joined #perl6
01:57 TimToady yes, I know, but not for 1..10, 100..200 {...}
01:57 jnthn Right
01:59 jnthn So far as I can tell, much of the cost in forest fire, which we're > 150x slower at than Perl 5, is overhead from list-y stuff.
01:59 TimToady that's the old ff, not my revised one that doesn't copy, I assume
01:59 jnthn (I can try and get some higher resolution answers on where the cost is if it helps, but it'll be at/after YAPC)
01:59 jnthn Whichever one perl6-bench as
01:59 jnthn *has
02:00 TimToady looking
02:00 jnthn Though array_set_xx is probably our most awful result
02:01 TimToady yes, that's the old one that copies element by element
02:01 TimToady (the new one has a Warming state to enable processing it in place)
02:01 jnthn Current r-m weighs in 350x slower there. Though it's an improvement on a year ago, when the latest and greatest r-p was 2060x slower :)
02:02 TimToady well xx should be pretty easy to optimize when the LHS is constant, since it's relatively pure like a Range
02:03 jnthn visit_2d_indices_cross is a good one to look at for X being slow, fwiw.
02:03 TimToady so you can at least batch it even if it's in a lazy context, or infinite
02:03 jnthn Yes, true.
02:06 TimToady well, X should be constant foldable with constant ranges, fwiw
02:06 jnthn Hm, true
02:06 TimToady but I suspect a lot of the overhead is in the indexing end
02:07 TimToady note that ff uses the same constant X over and over
02:07 TimToady so might be worth it there
02:07 jnthn The result in visit_2d_indices_for suggests the cost is in the X, afaict.
02:07 TimToady and uses it in multiple places
02:07 TimToady maybe it is, now, with jit
02:08 TimToady if you know you're binding to $x,$y, you can preflatten the X constant too
02:08 jnthn Gonna sleep. Should try and not get my body used to crazy late nights when I'll have to get up early for a YAPC flight in a couple of days... :)
02:08 TimToady and share all the same ones in the program
02:08 TimToady 'night
02:08 japhb Good night, jnthn!
02:08 jnthn o/
02:09 jnthn (BTW, really pleased to see list performance is getting some serious attention. If we can get that a good bit faster, we will be in a much better place overall.)
02:09 jnthn 'night
02:20 jnap joined #perl6
02:27 PotatoGim joined #perl6
02:47 noganex_ joined #perl6
03:03 fling joined #perl6
03:05 dalek Heuristic branch merge: pushed 92 commits to rakudo/S26-WHY by hoelzro
03:05 dalek roast/S26-WHY: f9ad8e9 | (Rob Hoelz)++ | integration/advent2011-day10.t:
03:05 dalek roast/S26-WHY: Fix calls to POD .content
03:05 dalek roast/S26-WHY:
03:05 dalek roast/S26-WHY: It's now .contents
03:05 dalek roast/S26-WHY: review: https://github.com/perl6/roast/commit/f9ad8e908e
03:07 dalek roast: 2c0ae6c | (David Warring david.warring@gmail.com)++ | integration/advent2012-day04.t:
03:07 dalek roast: removed invalid test
03:07 dalek roast: review: https://github.com/perl6/roast/commit/2c0ae6ca1e
03:08 kaleem joined #perl6
03:08 avuserow_ joined #perl6
03:16 xragnar_ joined #perl6
03:16 telex joined #perl6
03:19 xenoterracide joined #perl6
03:52 kaare_ joined #perl6
04:01 dalek rakudo/S26-WHY: 358271b | (Rob Hoelz)++ | src/core/Pod.pm:
04:01 dalek rakudo/S26-WHY: Mark Pod::Block.content as deprecated
04:01 dalek rakudo/S26-WHY: review: https://github.com/rakudo/rakudo/commit/358271b65b
04:24 anaeem1_ joined #perl6
04:24 nbrown_ joined #perl6
04:31 mr-foobar joined #perl6
04:41 daniel-s_ joined #perl6
04:51 kaare_ joined #perl6
04:53 jercos joined #perl6
05:04 clkao w/in 2
05:11 nbrown_ joined #perl6
05:32 colomon joined #perl6
05:36 isacloud____ joined #perl6
05:49 dalek rakudo/nom: e7835e9 | TimToady++ | src/core/GatherIter.pm:
05:49 dalek rakudo/nom: gather should batch an eager reify
05:49 dalek rakudo/nom:
05:49 dalek rakudo/nom: Just changing the batch size from 1 to 1000 makes a simple gather/take
05:49 dalek rakudo/nom: run twice as fast, even though it's still doing all the continuations.
05:49 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e7835e95fb
05:52 TimToady also makes 0 xx 100000 run roughly 10% faster, but that's in a case it shouldn't be using gather/take at all
06:04 denis_boyun_ joined #perl6
06:12 nbrown_ joined #perl6
06:14 kaleem joined #perl6
06:16 dalek rakudo/nom: f1a7c65 | TimToady++ | src/core/List.pm:
06:16 dalek rakudo/nom: make xx about 3 times faster on literals
06:16 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/f1a7c65067
06:17 TimToady for N in the neighborhood of 100000
06:19 TimToady still uses gather/take, but does batches of 100 for N larger than 100
06:20 TimToady doubtless one could still do much better with something handrolled in nqp
06:20 TimToady it's also a pity we don't have a GatherIter that just pushes rather than parcelizing each take
06:22 TimToady and really one should scale the batch size to the order of magnitude of sqrt(N) or so
06:22 TimToady but this is a start
06:42 wtw joined #perl6
06:48 rindolf joined #perl6
07:03 zakharyas joined #perl6
07:03 [Sno] joined #perl6
07:05 ingy1 jnthn: you about?
07:06 ingy1 TimToady could probably help me the most but I'm scared of his response :)
07:09 fhelmberger joined #perl6
07:13 nbrown_ joined #perl6
07:28 krunen joined #perl6
07:39 darutoko joined #perl6
07:47 sergot o/
07:54 klaas-janstol joined #perl6
07:56 donaldh joined #perl6
08:07 pmurias joined #perl6
08:09 daniel-s_ \o
08:09 daniel-s_ Hey sergot
08:11 woolfy left #perl6
08:13 Ven joined #perl6
08:13 nbrown_ joined #perl6
08:14 Ven hahaha that take seq $n -= 100 feels like a bit of a hack :P
08:18 ClarusCogitatio joined #perl6
08:20 sergot hi daniel-s_
08:20 lizmat jnthn: confirmed that Moar master does not segv's with jit enabled and without LOLLY
08:20 yoleaux 01:51Z <jnthn> lizmat: On SEGV, maybe try bumping to latest MoarVM; I fixed a nasty bug that broke a GC invariant earlier today...uh, yesterday...
08:21 brrt joined #perl6
08:22 nwc10 lizmat: yay! So now works on your machine?
08:23 lizmat yup, and spectest is clean
08:23 lizmat except for LOLLY tests
08:23 lizmat so I'm gonna bump revisions
08:24 dalek nqp: 3857128 | (Elizabeth Mattijsen)++ | tools/build/MOAR_REVISION:
08:24 dalek nqp: Bump for fix for LOLLY crash on OSX
08:24 dalek nqp: review: https://github.com/perl6/nqp/commit/3857128f07
08:24 dalek rakudo/nom: f532c1d | TimToady++ | src/core/List.pm:
08:24 dalek rakudo/nom: scale xx better based on size
08:24 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/f532c1dbe2
08:26 lizmat testing bumped NQP version now
08:29 ClarusCogitatio joined #perl6
08:30 FROGGS nwc10: The requested URL /apw2014/wikiedit was not found on this server. :o(
08:31 FROGGS nwc10: hmm, now it works... weird
08:32 nwc10 odd
08:32 FROGGS yeah, maybe the preview is broken only
08:34 dalek rakudo/nom: 6e536ac | TimToady++ | src/core/List.pm:
08:34 dalek rakudo/nom: couple of buglets in previous patch
08:34 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/6e536aca4d
08:38 lizmat hmmm... serious failures with this NQP version  :-(
08:40 lizmat seem to all fail with: Unexpected named parameter 'thunked' passed
08:40 clkao joined #perl6
08:40 lizmat ah, buglets
08:40 lizmat trying again with latest patch...
08:43 klaas-janstol joined #perl6
08:45 dalek rakudo/nom: ebfe24f | (Elizabeth Mattijsen)++ | tools/build/NQP_REVISION:
08:45 dalek rakudo/nom: Bump NQP to fix jit/LOLLY problem on OSX
08:45 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/ebfe24f16d
08:45 TimToady with these patches, 42 xx 1_000_000 appears to be about 50 times faster
08:45 lizmat still same problems, but seem dependent on TimToady's patches
08:45 lizmat so bumping anyway
08:46 lizmat fitness, back in ~ 2 hours&
08:46 TimToady and on 10_000_000 at least 100 times faster
08:47 TimToady will run another fulll spectest
08:47 brrt what is the LOLLY problem?
08:49 TimToady doesn't do nqp::getenvhash right when there's no entry
08:49 ClarusCogitatio joined #perl6
08:49 TimToady reproduced test failures here, investigating
08:56 dalek rakudo/nom: c516d5e | TimToady++ | src/core/List.pm:
08:56 dalek rakudo/nom: xx * can also be called with :thunked
08:56 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/c516d5e858
08:58 TimToady looks much cleaner so far up through S17
08:59 brrt joined #perl6
08:59 TimToady sorry, for some reason I thought that repeat.t was enough testing for xx :)
09:01 TimToady now just fails the usual two suspects, IO-Socket-Async and uniq
09:02 ClarusCogitatio joined #perl6
09:03 TimToady once this recompiles, you should be able to just about do 'say (42 xx 10_000_00).elems' before camelia times out; takes 2 seconds on my slower machine
09:04 TimToady m: say (42 xx 10_000_00).elems
09:04 camelia rakudo-moar f1a7c6: OUTPUT«1000000␤»
09:04 TimToady oh, that's missing a 0
09:04 TimToady m: say (42 xx 10_000_000).elems
09:04 nwc10 oh, much spectest fail :-(
09:04 camelia rakudo-moar f1a7c6: OUTPUT«10000000␤»
09:04 TimToady fetch again
09:05 TimToady if you're failing array and set
09:05 nwc10 Unexpected named parameter 'thunked' passed
09:05 TimToady that was what I just fixed
09:05 nwc10 ah righto
09:06 TimToady repeat.t doesn't test anything like rand xx *
09:07 brrt joined #perl6
09:08 TimToady m: say (rand xx *)[10]
09:08 camelia rakudo-moar f1a7c6: OUTPUT«0.900392391008587␤»
09:08 masak good antenoon, #perl6
09:08 TimToady very ante here in California
09:10 masak TimToady: yes, what are you doing up at this unblogly hour?
09:11 TimToady speeding up gather and xx
09:11 masak \o/
09:12 masak xxcellent.
09:13 jnthn morning o/
09:13 TimToady m: say (42 xx 20_000_000).elems
09:13 camelia rakudo-moar f1a7c6: OUTPUT«(timeout)»
09:13 TimToady m: say (42 xx 10_000_000).elems
09:14 camelia rakudo-moar f1a7c6: OUTPUT«(timeout)»
09:14 TimToady guess I got lucky before
09:14 TimToady m: say (42 xx 1_000_000).elems
09:14 camelia rakudo-moar f1a7c6: OUTPUT«1000000␤»
09:14 jnthn TimToady++ # lots of GatherIter patches
09:14 nbrown_ joined #perl6
09:14 TimToady well, only one really
09:15 TimToady plus removing an unneeded .eager
09:15 jnthn Yes, I was wondering about that...and whether it's really unneeded
09:16 TimToady and it should be a sink() if it were needed :)
09:18 jnthn hm, good point
09:19 nwc10 TimToady: yes, pass
09:19 * jnthn is spectesting here also
09:19 TimToady mostly I've been trying to get xx faster, and scale well to large values of N
09:19 nwc10 t/spec/S32-list/uniq.t failed spectest, but seems to be OK when re-run
09:20 TimToady it seems to flap a bit
09:20 jnthn Yeah, I've see that too.
09:20 TimToady random coredumps
09:20 nwc10 t/spec/S02-types/multi_dimensional_array.rakudo.moar passes when I set LOLLY
09:20 TimToady that's also expected
09:20 nwc10 t/spec/S32-io/IO-Socket-Async.rakudo.moar is our usual flappy friend
09:20 nwc10 everything else decided to pass
09:20 TimToady about what I got here too
09:21 jnthn .oO( Flappy Test, the hit successor to Flappy Bird... )
09:23 TimToady and that 5-times gather/take speedup was merely paying attention to eager context with the mechanism already there
09:23 TimToady didn't get rid of coro calls, but now call a bunch of them at once, so cache probably stays hotter
09:26 ClarusCogitatio joined #perl6
09:28 * jnthn will do a perl6-bench run in a bit and see if there's a nice difference on the xx benchmark :)
09:33 * TimToady should go to bed before raising the ante on noon much more
09:33 TimToady zzz &
09:37 ClarusCogitatio joined #perl6
09:47 timotimo o/
09:47 yoleaux 01:21Z <japhb> timotimo: If you are still tracking LHF requests, I'm looking for someone to implement PIO.isatty on all backends, so I can rely on the .t (is a TTY) file test.
09:50 timotimo oh
09:50 timotimo do we also have/get isatty for our standard input/output?
09:56 sergot what is 'LHF requests'?
09:56 Ven looking for help?
09:57 donaldh low hanging fruit
09:57 Ven oh
09:58 jnthn As in, a task that's relatively easy to pick off
10:00 masak spectest run: https://gist.github.com/masak/e3702f7029125394e50c
10:00 sergot where is the list?
10:03 erkan joined #perl6
10:07 Ven joined #perl6
10:13 lizmat masak: the first one needs LOLLY=1
10:13 lizmat the other ones are flappers as far as I can see
10:14 lizmat (as in, they're ok now, seen them randomly, depending on load, fail in the past)
10:14 spider-mario joined #perl6
10:15 masak I was not aware of LOLLY=1
10:15 nbrown_ joined #perl6
10:15 masak but it does indeed work when that env var is set.
10:15 masak any reason I wouldn't want to set it permanently?
10:16 bjz joined #perl6
10:17 jnthn TimToady: array_set_xx was 350x slower than Perl 5, now only 21 times slower
10:19 jnthn Marginal improvement on rc-forest-fire
10:22 spider-mario joined #perl6
10:22 sergot jnthn: could you tell me where is the LHF requests list?
10:22 sergot is it just on rt?
10:22 sergot in
10:24 * masak is positively surprised by t/spec/S02-types/multi_dimensional_array.t
10:24 masak I didn't know we had that much of multidim in place.
10:25 masak means I'll start using it in code, I guess.
10:26 jnthn sergot: Dunno how many things are now, but in RT we've sometimes tagged things [LHF]
10:26 jnthn In the title
10:26 jnthn masak: Yes, I need to catch up on what's been happening there too :)
10:27 sergot jnthn++ thanks :)
10:29 nwc10 would it be better to make a LHF queue, and move stuff there?
10:29 nwc10 something that makes it easy to have a URL which lists LHF
10:31 sergot +1
10:37 Ven joined #perl6
10:37 Ven masak: migrating code, I guess?
10:46 masak not sure I understand the question.
11:15 nbrown_ joined #perl6
11:33 anaeem1_ joined #perl6
11:37 iarna joined #perl6
11:41 brrt joined #perl6
11:44 itz_ joined #perl6
11:48 psch joined #perl6
11:58 moritz nwc10: I'm against a LHF queue; I don't know how to view tickets from multiple queues in RT
12:14 xinming joined #perl6
12:15 nbrown_ joined #perl6
12:20 Akagi201_ joined #perl6
12:23 prevost joined #perl6
12:24 iarna joined #perl6
12:38 mr-foobar joined #perl6
12:42 FROGGS[mobile] joined #perl6
12:51 dayangkun joined #perl6
12:56 colomon JSON::Jansson isn't in the ecosystem yet?
13:05 lizmat m: class A {}; INIT say "starting"; say A::B  # is there a reason this is a runtime error, not a compile time error ?
13:05 camelia rakudo-moar c516d5: OUTPUT«starting␤Could not find symbol '&B'␤  in method <anon> at src/gen/m-CORE.setting:13076␤  in any find_method_fallback at src/gen/m-Metamodel.nqp:2625␤  in any find_method at src/gen/m-Metamodel.nqp:944␤  in block  at /tmp/TTfklu9aHM:1␤␤»
13:06 JimmyZ joined #perl6
13:11 jnap joined #perl6
13:12 ggoebel11111112 joined #perl6
13:14 xenoterracide joined #perl6
13:14 telex joined #perl6
13:16 nbrown_ joined #perl6
13:23 dalek rakudo-star-daily: 4033bf4 | coke++ | log/ (14 files):
13:23 dalek rakudo-star-daily: today (automated commit)
13:23 dalek rakudo-star-daily: review: https://github.com/coke/rakudo-star-daily/commit/4033bf45ba
13:24 [Coke] nwc10: I think there's already a URL for that. one sec.
13:24 iarna joined #perl6
13:24 [Coke] http://rakudo.org/tickets/   //Tickets marked "easy"
13:25 [Coke] http://rakudo.org/rt/easy
13:25 [Coke] though it could use some xss loving.
13:26 awwaiid Happy _why Day!
13:26 [Coke] ... it's pretty broken actually. there's some LHF, fix that url. :)
13:31 [Coke] 786 new/open tickets in RT.
13:32 masak I think we were near 800 when the RT queue was at its worst somewhere around 2009-2010.
13:32 masak but it doesn't feel nearly as bad these days :)
13:32 [Coke] 685 rakudo fudges in roast that don't say "NYI, RT#, unspecced"
13:32 [Coke] masak: ^^ that's why. :P
13:32 [Coke] we're hiding almost as many tickets in the test suite, unopened.
13:33 masak *nod*
13:33 FROGGS I'd like to do a bugfixathon again soonish... though, would be nice to not do that alone...
13:33 lizmat t/spec/S02-types/range.t tests  for Range:D:.push and friends
13:34 lizmat the comments indicate that it should fail because of the immutablility of Ranges
13:34 lizmat however, it fails for quite different reasons:
13:34 lizmat m: my $r = 1..5; $r.shift
13:34 camelia rakudo-moar c516d5: OUTPUT«No such method 'shift' for invocant of type 'Range'␤  in block  at /tmp/36kaOlOCRx:1␤␤»
13:35 moritz well, it doesn't have that method because it's immutable
13:35 moritz so that's kinda OK, IMHO
13:35 lizmat m: my $r = 1..5; $r.unshift(6)
13:35 camelia rakudo-moar c516d5: OUTPUT«Cannot call 'unshift'; none of these signatures match:␤:(Any:U \SELF: *@values, *%_)␤  in block  at /tmp/IEJq8R6krq:1␤␤»
13:36 lizmat ranges are interpreted by many people to be listy things
13:36 masak relevant: http://arstechnica.com/information-technology/2014/08/keep-a-programming-language-backwards-compatible-or-fix-its-flaws/
13:36 lizmat I would think a better error message would be helpful in that respect
13:37 lizmat by I guess I am wrong in that respect
13:37 masak the consensus of those answers seems to be "don't upgrade existing code".
13:38 lizmat which is *exactly* what Perl 6 will allow you to do, component wise, once S11 and S22 are fully operational
13:38 moritz lizmat: I'm not against better error messages, I just wanted to point out that the tests aren't wrong
13:38 PerlJam +1 for better error messages
13:39 lizmat I would argue that in this case the test is incomplete, because it does not test *why* t failed
13:39 lizmat which is why I'm going through the test-suite
13:39 nwc10 why is that article dated 2014/08/16 but the stack exchange question that it "summarises" is from 1 year aho?
13:40 [Coke] is this the move from dies_ok to throws_like? +1 from me. (and anywhere where the type is adhoc, that's a place to think about improving our exception types)
13:40 gfldex joined #perl6
13:40 moritz well, if the tests become more specific, the specs should reflect that
13:40 [Coke] TimToady: some bugs in RT about uniname(), btw.
13:41 [Coke] the specs don't really list what exceptions can be thrown when, do they?
13:41 [Coke] (they probably should)
13:41 [Coke] S02-lexical-conventions/comments.rakudo.jvm........ still hanging on jvm.
13:41 [Coke] [6~[6~[6~
13:41 moritz [Coke]: not yet
13:42 [Coke] parrot is building again: should we keep https://rt.perl.org/Ticket/Display.html?id=122436 open?
13:43 lizmat S03:3412 states that Ranges are immutable
13:43 synopsebot Link: http://perlcabal.org/syn/S03.html#line_3412
13:43 gtodd1 [Coke]: yay!!
13:43 gtodd parrot was just resting ;-)
13:44 molaf joined #perl6
13:45 dalek specs: 775d078 | (Elizabeth Mattijsen)++ | S03-operators.pod:
13:45 dalek specs: Remove Range :by fossil
13:45 dalek specs: review: https://github.com/perl6/specs/commit/775d078b60
13:45 gtodd nwc10: the article also says python3 has been "available for 4 years"
13:45 gtodd or one of the comments
13:45 gtodd but "Python 3.0 final was released on December 3rd, 2008."
13:47 [Coke] rakudo: Foo::bar(); module Foo { our $x = 42; our sub bar() { $x.say } }
13:47 camelia rakudo-jvm c516d5: OUTPUT«(timeout)»
13:47 camelia ..rakudo-{parrot,moar} c516d5: OUTPUT«(Any)␤»
13:47 nwc10 gtodd: that's what caused me to go digging
13:48 [Coke] ^^ https://rt.perl.org/Ticket/Display.html?id=79464 just needs a test and is closable.
13:49 guru joined #perl6
13:50 [Coke] r: say NaN===NaN
13:50 camelia rakudo-{parrot,jvm,moar} c516d5: OUTPUT«False␤»
13:52 gtodd nwc10:  if you include the time testing and planning new features etc python 3 is a lot closer in age to perl6 than the interweb thinks it is :-)
13:53 [Coke] m: multi infix:<===>(NaN \a, NaN \b) { True }; say NaN===NaN
13:53 camelia rakudo-moar c516d5: OUTPUT«True␤»
13:53 dalek roast: 8120b6b | (Elizabeth Mattijsen)++ | S02- (10 files):
13:53 dalek roast: Last batch of dies_ok -> throws_like cleanup
13:53 dalek roast: review: https://github.com/perl6/roast/commit/8120b6b487
13:53 [Coke] ^^ is that an ok way to handle that? preferable to putting in logic in the Num variant, aye?
13:53 lizmat it just wears me out too much
13:53 lizmat afk for a bit&
13:54 [Coke] hugme: hug lizmat
13:54 * hugme hugs lizmat
13:54 gtodd lizmat: don't wear out!
13:56 * masak hugs lizmat
13:57 gtodd are: multi infix:<===>(NaN \a, NaN \b) { True }; say NaN===NaN
13:57 gtodd oops
13:57 gtodd msg camelia
13:57 * [Coke] is spectesting a run with that change.
13:58 masak m: multi infix:<===>(NaN, NaN) { True }; say NaN === NaN
13:58 camelia rakudo-moar c516d5: OUTPUT«True␤»
13:58 masak [Coke]: simpler.
13:59 Ulti neat Cris Fields is pushing to the BioPerl6 repo again >:3
13:59 Ulti *Chris
13:59 gtodd I like staring at it ...  multi infix:<===>(NaN \a, NaN \b) { True }; say NaN===NaN   ...
14:00 * moritz didn't know you could use NaN in a type position
14:02 darutoko- joined #perl6
14:02 gtodd is this still accurate:  http://rosettacode.org/wiki/List_comprehensions#Perl6
14:03 masak molaf: you can use any value in type position.
14:03 masak er, moritz*
14:03 masak m: multi infix:<+>(2, 2) { 5 }; say 2 + 2
14:03 camelia rakudo-moar c516d5: OUTPUT«5␤»
14:03 moritz m: multi infix:<+>(2 $a, 2 $b) { 5}; say 2 + 2
14:03 camelia rakudo-moar c516d5: OUTPUT«5␤»
14:04 moritz such wow.
14:04 masak I argued for that change. it made fibonacci much nicer to write :)
14:04 masak you go `multi fib(0)` instead of `multi fib($ where { $_ === 0 })`
14:05 masak or, hm, I don't know if it's === semantics there.
14:05 moritz ~~ iirc
14:05 masak ah, yes.
14:05 moritz well, we've had that feature for a while, but I didn't know it allowed a variable after the expression
14:05 moritz TTIAR and all that
14:06 masak m: multi infix:<+>(/foo/ $l, /bar/ $r) { $l ~ $r }; say "the foo says: " + "OH bar HAI!"
14:06 camelia rakudo-moar c516d5: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/E8Lhjkgcsv�Cannot use a value type constraints whose value is unknown at compile time�at /tmp/E8Lhjkgcsv:1�------> [32mmulti infix:<+>(/foo/ [33m�[31m$l, /bar/ $r) { $l ~ $r }; say "the f…»
14:06 masak apparently there are limits.
14:06 masak "whose value is unknown at compile time"?
14:06 masak how is that? I thought a regex was a fairly known thing.
14:07 masak m: multi infix:<+>($l where /foo/, $r where /bar/) { $l ~ $r }; say "the foo says: " + "OH bar HAI!"
14:07 camelia rakudo-moar c516d5: OUTPUT«the foo says: OH bar HAI!␤»
14:07 masak :)
14:08 masak m: multi infix:<+>($l where /foo/, $r where /bar/) { $l ~ $r }; say 2 + 2
14:08 camelia rakudo-moar c516d5: OUTPUT«4␤»
14:08 * masak ♥ Perl 6
14:09 * moritz remembers a time using your own multi with a setting-defined multi wouldn't work reliable
14:10 masak aye.
14:10 masak not so long ago.
14:10 masak (whoever fixed that)++
14:11 moritz jnthn++ # seems like a good candidate
14:11 FROGGS[mobile] there was also the problem where you got a conflict when trying to import another candidate from a module
14:12 moritz or the same candidate one through a module, once directly
14:12 FROGGS[mobile] yeah
14:13 FROGGS[mobile] (that was the first issue I ran into)
14:13 FROGGS[mobile] and it took only about two months to fix it
14:14 dalek rakudo/nom: a82c407 | coke++ | src/core/Num.pm:
14:14 dalek rakudo/nom: NaN === NaN (RT #83622)
14:14 dalek rakudo/nom:
14:14 dalek rakudo/nom: masak++ for a simplification
14:14 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/a82c407605
14:14 synopsebot Link: https://rt.perl.org/rt3//Public/Bug/Display.html?id=83622
14:14 grondilu joined #perl6
14:15 dalek roast: a5a1fcf | coke++ | S02-types/nan.t:
14:15 dalek roast: Fixed in rakudo
14:15 dalek roast: review: https://github.com/perl6/roast/commit/a5a1fcfe05
14:15 grondilu today I tried again to write a parallel version of mandelbrot.  Failed again:  https://gist.github.com/grondilu/9990847
14:16 colomon grondilu: failed in what sense?
14:16 grondilu it appear to fail non-determinastically and when it fails it's with the can not write read-only variable
14:16 colomon under moar?
14:16 grondilu yes
14:17 colomon may well be a moar bug
14:17 nbrown_ joined #perl6
14:17 colomon at least, last time I tried parallel mandelbrot, it worked great under JVM and was glitchy under Moar
14:17 grondilu exat error is:
14:17 grondilu ===SORRY!===
14:17 grondilu Cannot assign to a readonly variable or a value
14:18 grondilu colomon: which did you use?
14:18 colomon which what did I use?
14:18 grondilu «  last time I tried parallel mandelbrot »
14:18 * colomon is building jvm
14:18 colomon make: *** No rule to make target `j-clean', needed by `clean'.  Stop.
14:18 colomon Failed running make realclean at /Users/colomon/.rakudobrew/bin/rakudobrew line 23.
14:18 colomon I tried jvm and moar.
14:19 tadzik grr
14:19 tadzik I think I'm going to put git clean in there
14:21 iarna joined #perl6
14:21 aindilis joined #perl6
14:24 hoelzro ahoy #perl6
14:28 * colomon hopes tadzik++ is fixing rakudobrew right now...
14:28 tadzik nah, I'm at work
14:29 moritz m: say NaN === NaN, NaN == NaN
14:29 camelia rakudo-moar c516d5: OUTPUT«FalseFalse␤»
14:30 moritz nonononono
14:30 moritz after a82c4076057fb543ec5bd56b06be1ffd67796f26,  NaN === NaN will say True and NaN == NaN will say False
14:30 moritz that's just SO WRONG
14:30 moritz how can two things be identical, but not equal?
14:30 gtodd m: my @y; my @x <== 1..5; @x ==> @y ==> { .print }
14:30 camelia rakudo-moar c516d5: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/l52Lg0vVjz�Sorry, do not know how to handle this case of a feed operator yet.�at /tmp/l52Lg0vVjz:1�------> [32mmy @x <== 1..5; @x ==> @y ==> { .print }[33m�[31m<EOL>[0m�    expecting a…»
14:30 colomon moritz: that's the magic of NaN
14:31 colomon it's not equal to itself
14:32 gtodd oh wait ...  "expecting a…" is  "expecting any of:"  heheh
14:32 PerlJam m: say NaN === NaN, NaN eq NaN;
14:32 camelia rakudo-moar c516d5: OUTPUT«FalseTrue␤»
14:32 PerlJam moritz: will that be better for you? :)
14:32 colomon "A comparison with a NaN always returns an unordered result even when comparing with itself."
14:33 colomon http://en.wikipedia.org/wiki/NaN
14:34 gtodd an easy way to segfault the perl6-m repl is to copy a line from IRC starting with "r:"  :-)  ... perl6-j gives java.lang.NullPointerException ....
14:35 PerlJam weird.
14:36 PerlJam I would have thought it would just be taken as a target for goto
14:37 gtodd I think that given the popularity of evalbots the repl should handle      r: m: j:  in some nice way  :-)  e.g.  "I'm stripping the 'r:' from the start of your line of code ... you shouldn't cut and paste things from IRC bad user"
14:39 masak moritz: if you permit, I don't see anything weird in the way NaN behaves now.
14:39 masak moritz: IEEE 754 requires that NaN not be numerically equal to *anything*, not even itself.
14:39 PerlJam gtodd: treating it as a label would be a nice way to handle it, and that's what should happen IMHO
14:39 masak moritz: which makes sense, because two NaNs that you got through different computations will, in general, be different.
14:40 masak moritz: but === ignores numerical semantics, and asks "is this *the same thing*?". yes it is. it's NaN, twice.
14:41 masak moritz: meaning, for example, that `$num === NaN` will tell you the truth.
14:42 kaleem joined #perl6
14:43 [Coke] S29-os/system.rakudo.jvm...........................00-parrot  01-sanity  02-rakudo  fudgeandrun  harness  spec  spectest.data
14:43 [Coke] dir: cannot access t: No such file or directory
14:43 moritz masak: I guess my error is to assume that $a != $b always implies $a !=== $b
14:43 moritz if they aren't equal, how can they be identical?
14:43 masak moritz: no, I think that's an excellent intuition.
14:43 masak moritz: it's just that == for NaN is a special case.
14:44 PerlJam moritz: but, I've already shown that they are "equal"  :)
14:44 masak moritz: for the sake of mathematical sanity, it will "lie" to you.
14:44 masak moritz: because those two NaN's *are* identical, of course. they're just not equal, because IEEE 754.
14:44 moritz (depends on the NaNs, of course...)
14:44 masak well, can you create two different NaNs in Perl 6?
14:44 masak I hadn't thought about that.
14:45 masak if you can, then they maybe shouldn't be === equal :)
14:45 masak also, in that case, which NaN is NaN? so to speak.
14:45 huf you need a does-she-make-cookies() function to tell them apart
14:45 masak huf: necessary, but not sufficient.
14:46 * masak makes cookies, yet is not a nan
14:48 gtodd PerlJam: ++ yes ,  I  should have thought of that ... and that would not be special casing things
14:48 huf masak: yes, but you're == to yourself
14:48 huf or...?
14:48 masak huf: yes, of course. all non-NaN values are.
14:49 gtodd PerlJam: I am now thinking of it as a label ....  of course the core dump still occurs so :-D
14:49 masak huf: well -- I'm assuming we're only talking about my numification, nothing else.
14:49 huf there you are then, if it's not == to itself, you check with does-she-make-cookies() and you know which NaN you have :)
14:49 masak all NaNs make cookies.
14:49 huf whoa. TIL.
14:50 masak not many people get that far into IEEE 754.
14:50 treehug88 joined #perl6
14:51 [Coke] m: say +NaN
14:51 camelia rakudo-moar c516d5: OUTPUT«NaN␤»
14:51 masak m: say Inf/Inf
14:51 camelia rakudo-moar c516d5: OUTPUT«NaN␤»
14:51 masak m: say Inf/-Inf
14:51 camelia rakudo-moar c516d5: OUTPUT«NaN␤»
14:51 moritz there are signalling and quiet NaNs
14:51 [Coke] m: say +Inf # there are some tickets about this.
14:51 camelia rakudo-moar c516d5: OUTPUT«Inf␤»
14:52 [Coke] m: say Inf.Int # there are some tickets about this, I mean.
14:52 camelia rakudo-moar c516d5: OUTPUT«Cannot coerce Inf or NaN to an Int␤  in method gist at src/gen/m-CORE.setting:13072␤  in sub say at src/gen/m-CORE.setting:14010␤  in block  at /tmp/R8FE3h5u3q:1␤␤»
14:52 masak wow, the error message doesn't know what it failed to convert.
14:52 moritz also, NaNs have some more bits left that could be any value
14:52 [Coke] that looks reasonable to me.
14:52 masak [Coke]: it does, but then you find out the spec isn't reasonable.
14:52 [Coke] (that it errored, not the specifics of the text of the error)
14:53 masak [Coke]: in the spec, Inf is a Num, an Int, and a Str.
14:53 [Coke] the spec is an ass.
14:53 masak [Coke]: or at least enough like one to act as the rhs of a range.
14:53 * masak .oO( enough of the donkey business, spec! )
14:56 kaare_ joined #perl6
15:04 gtodd hmm using Perl6::Feeds I experimented with feeds ... but now, using perl6, not all the syntax from http://en.wikibooks.org/wiki/Perl_6_Programming/Lazy_Lists_and_Feeds#Feeds  works as well as in perl5... 8-)   ...
15:06 gtodd for the missing bits the the error messages say perl6 can't handle that kind of feed "yet"
15:08 gtodd OTOH maybe the syntax has changed ... @x ==> @y ==> { .print }  doesn't work but  @x ==> @y ==> print  does ....
15:09 TimToady feeds are "experimental" :)
15:09 gtodd oh
15:09 gtodd well they are nice :-)
15:09 gtodd feeds ++
15:10 gtodd ++ ==> feeds
15:11 carlin .oO(  experimental... use feature 'feeds'; )
15:11 PerlJam I didn't think feeds did auto-map.
15:11 gtodd for 5.22!!
15:11 gtodd oops this is the perl6 channel
15:11 gtodd ;)
15:11 PerlJam (at least that's what @foo ==> { .print } looks like to me.
15:11 PerlJam )
15:11 masak at some point, I want to give a talk exclusively about interesting corner cases found in RT tickets. :)
15:11 TimToady the only thing that changed recently was lollipop syntax
15:12 * masak .oO( Alan Perlis, is that you? )
15:17 TimToady @foo ==> map { .print } should work fine
15:18 nbrown_ joined #perl6
15:18 masak m: my @foo = <a b c>; @foo ==> map { .print }
15:18 camelia rakudo-moar c516d5: OUTPUT«abc»
15:18 masak yep.
15:18 ingy1 seen jnthn
15:19 masak ingy: I last saw jnthn last night.
15:19 masak ingy: (there were beers)
15:19 fhelmberger_ joined #perl6
15:19 ingy masak: do you know a lot about p6 parsing?
15:20 masak I've lost touch with the NQP internals about two parser overhauls ago.
15:20 masak but I write a lot of grammars, if that's what you mean.
15:21 ingy yeah, I'm kinda stuck on a lex vs parse thing, and pinged jnthn about it last night
15:22 ingy it doesn't involve p6 but I think a p6 mindset is needed
15:22 masak ooh, sounds interesting.
15:22 ingy I wrote it up (tired) here: https://gist.github.com/anonymous/31b2017c97abee2c5af0
15:22 jnthn Ah, I glanced that this morning, then got sucked into writing my YAPC::EU talks... :)
15:22 ingy when I woke up (just now) I had a fuzzy conclusion
15:23 * PerlJam just read "it doesn't involve perl 6, but perl6 people are really smart, so ... "    ;)
15:23 ingy that it is ok to pre lex up to the end of a statement
15:23 ingy ie the lexing rules won't change mid-statement
15:24 ingy ah yes, YAPC::EU
15:26 ingy and I remember jnthn (or maybe TimToady) saying that p6 rules provides a lexer for you, and I never really got what that meant
15:26 ingy and maybe I'm running into that need here
15:27 masak ingy: I read the gist. indeed interesting.
15:27 masak ingy: my first thought is: I have no idea.
15:27 masak :P
15:27 ingy cool :)
15:27 * TimToady now knows what TimToady's answer would be that ingy is scared of :)
15:27 masak ingy: I believe it's TimToady who said that a p6 grammar induces a lexer.
15:28 ingy masak: but you weren't in that room in tokyo
15:28 masak nope. I wasn't.
15:28 masak whatever room that was.
15:28 ingy but maybe you are psychic
15:28 masak or maybe things are said multiple times in different places.
15:28 ingy :D
15:28 PerlJam masak: quick!  What are the winning lottery numbers?!?
15:28 masak ingy: maybe a first approximation to what that means is that leaf nodes of the parse tend to be found in `token` declarations.
15:29 TimToady no, I never repeat myself
15:29 TimToady no, I never repeat myself
15:29 masak PerlJam: all I'm getting is negative numbers.
15:29 PerlJam it's a sign!
15:29 masak PerlJam: oops, there's an imaginary one.
15:29 masak I think that means we're perpendicular to the actual lottery.
15:30 TimToady i agree
15:30 PerlJam we just need to choose a different basis function
15:30 masak PerlJam: sure, as long as you remember to transpose *all* the free variables accordingly.
15:30 TimToady what e said
15:31 ingy some of that problem space also applies to parsing YAML, which I've been working on with some success
15:31 masak ingy: what if you turned your problem into one that parses line by line? would something fall out of that?
15:31 masak ingy: I mean, obviously some lines would need to return "carry flag" information.
15:32 masak ingy: like "yes, this line parses, but need to parse the next one in this mode"
15:32 ingy ie YAML also has mixable indent and {} scoping
15:32 ingy masak: well {} has no real line need/concept
15:32 masak troo.
15:33 ingy so that's a bit oh the wrench
15:33 ingy *of
15:33 masak ingy: could you somehow turn the indent into meaningful tokens?
15:33 masak ingy: and then parse on those?
15:33 PerlJam ingy: your problem strikes me as a form of mini-slang.  I dunno if that helps
15:33 ingy masak: you are onto something there
15:33 masak ingy: tokens like <same-indent> <more-indent> <outdent 1>
15:34 masak ingy: maybe think of it as a preprocessing step, even if it isn't.
15:34 rurban parrot-6.7.0 released
15:34 ingy indent/ondent/undent I call them
15:34 masak ingy: a preprocessing step that converts the problem into a trivial one :)
15:34 ingy and andent is a continuation dent
15:34 masak rurban++ # parrot-6.7.0
15:34 TimToady endent feels left out
15:34 ingy masak: now you are getting to the cruxt
15:34 TimToady the crunchy bits!
15:35 ingy preprocessing is desired and yet undesired
15:35 rurban parrot: this time only marginal perf improvements, but added some more missing UNICODE name aliases
15:35 ingy TimToady: I'm reserving endent
15:35 ingy thought of errdent
15:35 TimToady endent should mean $ :)
15:36 ingy :)
15:37 masak ingy: if you're lucky, the preprocessing doesn't actually need to happen. that is, you can hide it behind rules.
15:37 timotimo eeeh, so much backlog :\
15:37 ingy masak: yes
15:37 TimToady timotimo: don't go away for so long next time, silly!
15:37 masak cf accessors, where you don't know if an accessor is something computed, or an attribute slot.
15:38 timotimo TimToady: that sounds like quite the compliment :)
15:38 ingy another option is to redefine tokeninzinf ws inside a indent or {} statement context
15:39 timotimo ingy: are you going to look some more into making TestML and YAML work again?
15:39 ingy masak: if I'm *really* lucky, jnthn will do this as an example in p6rules
15:39 ingy timotimo: certainly
15:39 timotimo sounds good :)
15:40 ingy my p6 breakout is just around the corner
15:40 ingy always
15:40 TimToady well, that's better than always 20 years away, like fusion
15:41 ingy actually if I can get past this problem, I am getting very close to p6 action
15:41 nwc10 how is energy independence?
15:41 nwc10 IPv6, and a few other things...
15:41 ingy hungry time. bbl
15:41 timotimo .o( or General AI )
15:41 nwc10 yes, good point. AI
15:41 nwc10 and still no flying cars
15:41 PerlJam I thought masak was the psychic one?
15:42 masak I... outsource.
15:47 FROGGS joined #perl6
15:49 japhb nwc10: IPv6 is here.  It's just unevenly distributed
15:50 guru joined #perl6
15:50 japhb (So are flying cars, actually, but considerably more so).
15:53 masak it's kind of interesting to read http://steve-yegge.blogspot.se/2007/02/next-big-language.html 7.5 years later.
15:56 timotimo did he ever say what that language was actually supposed to be?
15:56 masak don't think so.
15:56 masak I'm not sure he has/had a particular language in mind.
15:56 masak there's a lot of speculation in the comments.
15:56 masak everything from JavaScript to Perl 6.
15:56 timotimo i wondered about that also
15:57 [Coke] how's that corporate sponsorship thing working out for us?
15:57 timotimo js is certainly big
15:57 masak js has already won.
15:57 masak it's not big, it's won.
15:58 timotimo I did not receive my ship in the mail yet
15:58 masak all the rest of us can do at this point is to compile to JavaScript.
15:58 masak (pmurias++)
15:58 timotimo it is the assembly of the web, after all
15:59 masak right. or the OS, or the VM.
15:59 huf emphasis on the "ass"
15:59 huf but i suppose it was the hero the web needed :)
15:59 masak it doesn't matter exactly what of the web it is. it's the substrate to which we target our compilers so that our code runs on everyone's browser.
16:00 masak wise people treat it as a compiled-to language sooner rather than later, and choose a suitable author language.
16:00 huf yeah. soon we'll forget our grievances, just like the industry eventually accepted PC hardware :)
16:00 masak right! JavaScript is the x86 of languages!
16:00 huf :D
16:00 huf what a great sales pitch
16:00 masak worse is better! it better be!
16:01 huf otherwise where's my lisp machine
16:01 * masak hands huf a lisp machine VM written in JavaScript
16:01 huf :)
16:01 huf running on the browser, yeah
16:02 dalek nqp: 53583b8 | coke++ | tools/build/PARROT_REVISION:
16:02 dalek nqp: require parrot 6.7.0
16:02 dalek nqp: review: https://github.com/perl6/nqp/commit/53583b8a23
16:04 [Coke] man, cloning parrot is slow.
16:05 masak [Coke]: remember that if you already have a local repo, you can clone locally. don't know if it applies in your case, but just in case.
16:05 ajr joined #perl6
16:05 masak I know many people who don't know that they can clone locally, and waste a lot of time re-fetching history from ze Net.
16:09 gtodd how does one do a full rakudo build and grab the latest parrot?  perl Configure.pl --backends=moar,parrot,jvm --gen-nqp --gen-parrot --gen-moar --prefix=/home/devbuilder/perl6 ....seems to not grab a new parrot
16:09 [Coke] masak: then I have to remember to update my local master.
16:10 [Coke] gtodd: your parrot is new enough, then.
16:10 gtodd oh
16:10 [Coke] if you want to force it, you can do --gen-parrot=master
16:10 [Coke] but unless you're testing/fixing something parrot releated, prolly not worth it.
16:10 gtodd it uses 6.6.0 and  breaks somewhere :-)
16:10 masak [Coke]: yes. it'd be local clone + pull. but it'd likely be a lot faster.
16:10 gtodd so I thought I'd try the newer one
16:10 gtodd thanks
16:12 gtodd hmm might not really be a parrot thing ... more likely my toolchain ... starting a new build will paste error when it breaks
16:13 moritz for latest parrot,  --gen-parrot=master
16:16 pmurias joined #perl6
16:18 [Coke] you then have to pre-checkout the repo whenever you want it. too many moving parts for day to day dev. (I automated it for the daily runs so I get the benefit there, anyway)
16:18 nbrown_ joined #perl6
16:20 gtodd ok same old error I've had for a while http://paste.scsys.co.uk/416737?tx=on&amp;submit=Format+it%21
16:20 gtodd not really a  parrot  thing
16:21 bjz joined #perl6
16:22 dalek nqp-js: 03e4199 | (Pawel Murias)++ | src/vm/js/QAST/Compiler.nqp:
16:22 dalek nqp-js: Implement nqp::pow_n.
16:22 dalek nqp-js: review: https://github.com/pmurias/nqp-js/commit/03e4199c68
16:23 Rotwang joined #perl6
16:24 gtodd I redid the build with --gen-parrot=RELEASE_6_7_0  and it seems to have worked :)
16:28 klaas-janstol joined #perl6
16:31 [Coke] the next rakudo release will require that version, so good it fixes something.
16:31 akaseki joined #perl6
16:31 gtodd parrot built not sure if perl6-p is going to go but ... one step at a time :)
16:31 dalek perl6-roast-data: 9b8cb15 | coke++ | / (6 files):
16:31 dalek perl6-roast-data: today (automated commit)
16:31 dalek perl6-roast-data: review: https://github.com/coke/perl6-roast-data/commit/9b8cb15fe7
16:32 [Coke] rakudo.parrot failing 71 tests. jvm, 186. moar, 66-67
16:32 [Coke] *sadface*
16:32 gtodd oops same error here on perl6-p
16:32 gtodd /usr/bin/ld: ../../../../3rdparty/dyncall/dyncall/libdyncall_s.a(dyncall_api.o): relocation R_X86_64_32S against `a local symbol' can not be used when making a shared object; recompile with -fPIC
16:33 [Coke] S02-types/multi_dimensional_array.t is aborting 58 tests on all platforms.
16:36 TimToady presumably because you haven't set LOLLY=1
16:37 masak what's the big idea with LOLLY=1 ?
16:37 masak doesn't everyone want a little lolly in their life?
16:37 TimToady it's a one-release envvar
16:37 TimToady it's a temporary 'use future'
16:37 masak I mean, why is it opt-in?
16:37 masak is it dangerous?
16:37 TimToady to force star to fix all the lollipops
16:38 TimToady as soon as the modules and the dark6pan fix all the lolligags, they're ready for the new semantics
16:39 [Coke] I shouldn't have to set LOLLY to run the spectests.
16:39 TimToady if they want to play with the new semantics, they have to set LOLLY in this release, otherwise they can forget it
16:39 masak I agree with [Coke].
16:39 TimToady the spectests are playing with the new semantics already
16:39 masak it's wrong that we have spectests failing by default.
16:39 [Coke] I'm fudging that test file so it works with an out of the box rakudo.
16:39 TimToady so don't include that spectest yet
16:39 nwc10 so could the Rakudo makefile set LOLLY to run the spectests?
16:40 [Coke] if someone wants to refudge them so they skip the tests only if lolly isn't set, that's fine.
16:40 masak TimToady: what does "fix all the lolligags" mean?
16:40 masak TimToady: what needs to be fixed before this opt-in feature can be the default?
16:40 [Coke] I'm fine with removing that test file from the default spectest run.
16:40 TimToady (foo;bar) that are intended to mean SEQ(foo;bar), not LoL
16:41 * masak feels like he fell asleep and woke up in a different Perl 6
16:41 TimToady which the compiler gags on if you don't have LOLLY set
16:41 masak who writes (foo;bar) ? not me.
16:41 TimToady masak: don't go away for so long next time, silly!
16:41 masak I'll... try.
16:42 masak maybe I should backlog harder.
16:42 TimToady apparently a number of test writers do that
16:42 masak OK, let's start over.
16:42 TimToady trying to shoehorn statements into an argument
16:42 masak what does SEQ(foo;bar) mean?
16:42 masak is it spec'd?
16:42 TimToady yes
16:42 * masak looks
16:42 [Coke] is there an RT for the SEQ stuff?
16:43 TimToady see S02:2462
16:43 synopsebot Link: http://perlcabal.org/syn/S02.html#line_2462
16:43 masak ok, it's from yesterday.
16:43 masak that makes me feel a little better. :)
16:44 [Coke] how does one set LOLLY? env?
16:44 masak I can live with being one day out of touch.
16:44 masak [Coke]: yes.
16:44 masak I'm happy we're spec'ing these lol things. that's been long in the coming. TimToady++ for that.
16:45 [Coke] r: say "HI" if not $*ENV{lolly}
16:45 camelia rakudo-jvm a82c40: OUTPUT«(timeout)»
16:45 camelia ..rakudo-{parrot,moar} a82c40: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/tmpfile�Undeclared routine:�    lolly used at line 1. Did you mean 'roll'?��»
16:45 masak I'm skeptical about env-varing our way to happiness. but that may or may not be me not seeing the whole picture.
16:45 [Coke] rant: the jvm rakudo in eval is almost useless. :(
16:45 masak [Coke]: <LOLLY>
16:45 TimToady masak: it's very temporary
16:45 [Coke] r: say "HI" if not %*ENV<lolly>
16:45 camelia rakudo-{parrot,jvm,moar} a82c40: OUTPUT«HI␤»
16:45 [Coke] r: say "HI" if not %*ENV<LOLLY>
16:45 masak [Coke]: CAPS.
16:45 camelia rakudo-{parrot,jvm,moar} a82c40: OUTPUT«HI␤»
16:45 [Coke] masak: GETTING THERE
16:46 masak OK!
16:46 TimToady next release after this one, the lolligag check goes away, and lollipops get the new LoL meaning
16:46 masak (WHY ARE WE WHISPERING???)
16:46 [Coke] TimToady: have you added this to the changelog?
16:46 * TimToady never touches the changelog
16:46 [Coke] and/or the release announcement?
16:47 [Coke] ok. then please make sure the release manager knows about your plans, or he will be quite irate.
16:47 * TimToady expects his mom to pick up after him
16:47 dalek specs: e29e9a1 | masak++ | S02-bits.pod:
16:47 dalek specs: fix a wee typo
16:47 dalek specs: review: https://github.com/perl6/specs/commit/e29e9a1bcb
16:47 * TimToady thinks release managers should backlog occasionally :)
16:47 TimToady and read the git log
16:47 masak TimToady: in theory, that's what the release guide advises.
16:48 masak TimToady: in practice, moritz++ does a lot of the heavy lifting. :/
16:48 * TimToady thinks the git log is the real changelog :)
16:49 timotimo git the change you want to log in the world
16:51 dalek roast: 40bd158 | coke++ | S02-types/multi_dimensional_array.t:
16:51 dalek roast: Fudge test so it's runnable LOLLY +/-
16:51 dalek roast: review: https://github.com/perl6/roast/commit/40bd15844d
16:51 TimToady SEQ() is not necessarily the final form of sequential syntax, so some bikeshedding on that is okay; just don't anyone suggest we adopt the C comma operator
16:51 [Coke] ^^ fixed it the right way.
16:52 TimToady how to ship two versions of the product simultaneously :)
16:53 TimToady s/how/how not/ if Bool.pick;
16:54 TimToady what I really wanted to avoid was declarations that live forever in the program, like "use future"
16:54 TimToady well, maybe 'use future' is a bad example of that
16:55 aoseki joined #perl6
16:55 noganex joined #perl6
16:55 TimToady BASICPLUS2 had a permanent "extend" statement at the front, and that traumatized me
16:56 [Coke] I think you mean 'use feature' !
16:56 ggoebel11111113 joined #perl6
16:56 TimToady er, I was just confusing perl with python
16:56 bjz joined #perl6
16:57 masak or maybe you meant `from __future__ import...`
16:57 timotimo from __future__ import braces
16:57 pmurias joined #perl6
16:57 masak timotimo: SyntaxError: not a chance
16:59 TimToady cool, Cannot reference undeclared local '__lowered_lex_3063'
17:00 TimToady nqp has such lovely error messages
17:01 [Sno] joined #perl6
17:01 TimToady "That's wrong, here, have a flying butt unicorn."
17:01 timotimo at least you can almost immediately see that it's something to do with the optimizer
17:02 TimToady all I'm trying to do is wrap the gather block in another block that traps TAKE exceptions and batches them up before doing the real take
17:02 japhb camelia: r: my %h = a => "b > c > d"; say %h.perl; %h<a> .= split(/\s*">"\s*/); say %h.perl;
17:02 camelia japhb: rakudo-moar a82c40: OUTPUT«("a" => "b > c > d").hash␤("a" => ("b", "c", "d").list.item).hash␤»
17:02 camelia ..rakudo-{parrot,jvm} a82c40: OUTPUT«("a" => "b > c > d").hash␤("a" => ().list.item).hash␤»
17:02 japhb ^^ Note the different result for r-j
17:03 japhb Current annoying bug of the day.  :-)
17:04 japhb Well, I guess r-m is the only one that gets it right.  I hadn't even tested r-p locally.  Hmmmm.
17:11 bjz_ joined #perl6
17:12 pmichaud a proposed patch for nqp was just posted to the debian rakudo-devel list
17:13 pmichaud http://lists.alioth.debian.org/pipermail/pkg-rakudo-devel/2014-August/000432.html
17:14 itz I wonder if aveuserow/star parrot tests pass with the new version
17:15 itz I would guess probably not :)
17:16 gmunoz_ joined #perl6
17:17 itz s/ave/av/
17:19 japhb r: my %h = a => "b > c > d"; say %h.perl; %h<a> = %h<a>.split(/\s*">"\s*/); say %h.perl;
17:19 camelia rakudo-{parrot,jvm,moar} a82c40: OUTPUT«("a" => "b > c > d").hash␤("a" => ("b", "c", "d").list.item).hash␤»
17:19 nbrown_ joined #perl6
17:20 japhb ^^ For what it's worth, r-j and r-p are only wrong when doing .= split; desugaring seems to work around the bug.
17:20 timotimo tee hee. .list.item).hash
17:26 Ven joined #perl6
17:26 brrt left #perl6
17:44 tgt joined #perl6
17:45 ingy masak: I have a strawman solution
17:45 ingy I should write it up
17:45 masak :)
17:47 Ven joined #perl6
18:04 * moritz likes strawberry better than strawmen
18:06 pyrimidine joined #perl6
18:08 * Ven wonders why ...
18:10 dalek ufo: 83674a0 | (Steve Mynott)++ | bin/ufo:
18:10 dalek ufo: fix ufo to work with new compiled suffixes
18:10 dalek ufo: review: https://github.com/masak/ufo/commit/83674a08a5
18:10 dalek ufo: 8e72aa3 | (Carl Mäsak)++ | bin/ufo:
18:10 dalek ufo: Merge pull request #17 from stmuk/master
18:10 dalek ufo:
18:10 dalek ufo: fix ufo to work with new compiled suffixes
18:10 dalek ufo: review: https://github.com/masak/ufo/commit/8e72aa3049
18:14 Ven .o( Steve Wynot )
18:15 itz if I had a pound/EU/$ for everytime I'd heard that.. ;)
18:18 itz or "lev2
18:18 itz ^ "lev"
18:18 nwc10 Swiss Francs are prettier, and seem to be a better currency of last resort
18:18 Ven I'll give you an inductive profof. works?
18:18 Ven proof. not profof.
18:19 Ven nwc10: damn these Swiss with their old monies!
18:19 klaas-janstol joined #perl6
18:20 ingy masak, jnthn, TimToady: Here's my strawman: https://gist.github.com/anonymous/32ce47462616a6e99d2a#file-parsingproblem-swim-L101
18:20 ingy It seems pretty elegant.
18:20 ingy Huff and puff and blow it down!
18:20 nbrown_ joined #perl6
18:32 kurahaupo_ joined #perl6
18:37 molaf_ joined #perl6
18:47 Ven joined #perl6
18:49 PerlJam ingy: doesn't that grammar mean that continued expressions over several lines will gradually walk to the right?  (andent says "more than current indentation")  Or do the andents not count for indentation?
18:49 * Ven remembers of if and implicit calls in coffee ...
18:51 PerlJam I guess only the latter thing makes sense.  nevermind :)
19:21 nbrown_ joined #perl6
19:39 carlin how can I catch SIGINFO or SIGUSR1?
19:42 flussence m: say &signal; say Signal.enums
19:42 camelia rakudo-moar a82c40: OUTPUT«sub signal (Signal $signal, *@signals, Any :scheduler($scheduler) = { ... }) { #`(Sub|67669632) ... }␤("SIGBREAK" => 2, "SIGHUP" => 3, "SIGINT" => 1, "SIGWINCH" => 4).hash␤»
19:42 flussence That enum type seems kinda short...
19:43 jnthn Sometimes leaving an LHF task for others works out. Sometimes, this happens. :)
19:44 flussence I haven't poked around in the rakudo source for a while, maybe I'll go take a look...
19:56 flussence okay, I know enough about signals to know I don't know enough to touch this :)
19:58 flussence is there any special meaning to those enum numbers, or are they just sorted by "order people needed these in"?
19:59 TimToady Cast in Order of Appearance
20:02 flussence now that I think about it, the same probably applies to posix signal numbers...
20:05 integral joined #perl6
20:05 integral joined #perl6
20:06 telex joined #perl6
20:07 gtodd flussence:  Signal.enums is even shorter in perl6-j
20:09 woolfy joined #perl6
20:11 anaeem1_ joined #perl6
20:12 prevost_ joined #perl6
20:19 H2O1 joined #perl6
20:19 H2O1 left #perl6
20:19 carlin looks like the actual signal codes are defined in Moar
20:22 nbrown_ joined #perl6
20:25 PZt joined #perl6
20:26 carlin so it would involve, adding more signal code to Moar. Adding more const::SIG_XXX to NQP, and mapping the SIGNAMES to the NQP constants in Rakudo
20:26 carlin gotta touch all the repos
20:26 carlin where does Signal.^enum_value_list get defined?
20:26 jnthn carlin: That's just derived from the enum declaration.
20:28 carlin ah of course, I see
20:28 carlin I should be able to take a stab at doing this tonight
20:28 jnthn Cool :)
20:28 jnthn ++carlin
20:31 flussence I've got this so far, if it's any help: https://gist.github.com/flussence/7520b3a659e9cd95fec1
20:31 flussence (seems like SIGRTMIN and SIGRTMAX are runtime-defined, fun)
20:32 carlin rakudo does qx/kill -l/.words to get the list
20:33 gtodd Signals.enum in perl6-j  too!
20:35 carlin rakudo: say $*KERNEL.signals
20:35 camelia rakudo-moar a82c40: OUTPUT«(Any) SIGHUP SIGINT (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) SIGWINCH␤»
20:35 camelia ..rakudo-{parrot,jvm} a82c40: OUTPUT«No such method 'signals' for invocant of type 'Kernel'␤  in block  at /tmp/tmpfile:1␤␤»
20:35 carlin rakudo: say Signal.enums
20:35 camelia rakudo-{parrot,jvm} a82c40: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/tmpfile�Undeclared name:�    Signal used at line 1��»
20:35 camelia ..rakudo-moar a82c40: OUTPUT«("SIGBREAK" => 2, "SIGHUP" => 3, "SIGINT" => 1, "SIGWINCH" => 4).hash␤»
20:37 dwarring joined #perl6
20:37 timotimo m: say nqp::bool_I(1234)
20:37 camelia rakudo-moar a82c40: OUTPUT«1␤»
20:37 timotimo m: say nqp::bool_I(Int)
20:37 camelia rakudo-moar a82c40: OUTPUT«(signal )»
20:37 * masak read "SIGBREAK" as "SIGBEAR"
20:39 [Sno] joined #perl6
20:40 carlin SIGBEAR is what you send when you want your program to run faster
20:40 japhb m: say &signal   # The stringification of the :$scheduler param seems rather verbose
20:40 camelia rakudo-moar a82c40: OUTPUT«sub signal (Signal $signal, *@signals, Any :scheduler($scheduler) = { ... }) { #`(Sub|73661584) ... }␤»
20:41 japhb Any should be assumed, and :scheduler($scheduler) should just be :$scheduler
20:41 masak carlin: the program doesn't have to run faster than the bear, only faster than you. :P
20:41 japhb timotimo: Another for your LHF list ^^
20:45 carlin I was going to say it would only make it run faster than the program next to it
20:45 japhb masak: I really like the idea of a SIGBEAR.  Next time I write an adventure game, there will totally be a SIGBEAR at some point.
20:45 masak haha
20:46 masak maybe work a SIGHUG in there somewhere, too?
20:46 akaseki joined #perl6
20:46 japhb That's what you get for saving the poor damsel/beleaguered knight/annoyed camel/take your pick
20:49 [particle] joined #perl6
20:49 treehug88 joined #perl6
20:50 * japhb is reminded of The Paper Bag Princess
20:50 japhb http://en.wikipedia.org/wiki/The_Paper_Bag_Princess
20:53 guru joined #perl6
20:58 Sqirrel joined #perl6
20:58 * masak .oO( THANK YOU MARIO! BUT OUR ANNOYED CAMEL IS IN ANOTHER CASTLE! )
20:59 tgt joined #perl6
21:02 japhb Exactly.
21:04 japhb It occurs to me it might be nice to have a game where you choose what you're going to save at the beginning and it backfills clues and story interludes to match.  A witness that got spit on by the camel, camel footprints turning left at the mysterious intersection, ...
21:06 ingy PerlJam: andents don't add to the indentation stack
21:06 ingy they just match one indentation great than the current level
21:06 japhb "Today I plan to save a __(noun)__ from the horrible __(noun)__ in the __(adj)__ __(noun)__.
21:06 ingy so no cascade
21:08 ingy PerlJam: there's an error in the grammar though. see if you can find it :)
21:08 ingy bbl
21:10 Pleiades` joined #perl6
21:11 pmurias masak: I have thought a bit about the JavaScript vs others as the author language, and I think that if Perl 6 is intended to be a sensible JavaScript replacement (as the author language) we will need to have some advantage that would justify introducing the layer of indirection
21:11 masak aye.
21:12 masak a nice Angular-like framework could be it, perhaps.
21:12 dalek rakudo/nom: 1a7f85b | TimToady++ | src/core/List.pm:
21:12 dalek rakudo/nom: don't try to make a batch of size 0
21:12 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/1a7f85b3ec
21:12 masak I wouldn't mind writing my application in Angular, except the JavaScript is Perl 6.
21:12 * pmurias likes Angular too
21:15 pmurias would it be possible to create a significantly better Angular?
21:20 japhb Somehow it makes me considerably more interested in learning this particular JS product knowing that people from the Perl 6 world like it.  Might not drive me insane, as many frameworks have ....
21:22 masak japhb: in brief: AngularJS lures you in with the shiny (data binding, expression language, dependency injection), and then as you settle into it turns out to have a surprisingly solid "Angular Way" discipline to it that makes writing straight-up JavaScript almost bearable again.
21:22 nbrown_ joined #perl6
21:23 masak having said that, I'd rather be writing straight-up Perl 6, I think.
21:24 masak as to whether it would be possible to create a significantly better Angular, I have no idea.
21:24 japhb "straight-up" meaning no e.g. JQuery, or meaning not e.g. coffeescript?
21:24 masak the latter.
21:24 japhb Ah, OK.
21:24 masak re jQuery though, Angular recognizes how common it is to need it.
21:24 timotimo is the segfault in S32-list/uniq.t known?
21:24 masak so it supplies its own minimal variant, and if you end up loading the actual jQuery, it steps back and lets it take its place.
21:25 japhb I friend of mine used to say he wrote his web code "in jQuery" instead of in JavaScript, since really most of the time he was living in the sugar.
21:25 masak japhb: I see that a lot.
21:26 masak japhb: I teach a bunch of JavaScript. people know jQuery a lot better than they know the underlying language.
21:26 * PerlJam resembles that remark when he has to write JS
21:26 * japhb is not surprised by that
21:26 masak I tend to leverege it by showing how jQuery exploits a variety of quirks in JavaScript to do what it does.
21:26 TimToady t/spec/S02-lexical-conventions/comments.rakudo.jvm seems to be hanging these days
21:27 japhb I can, if forced, write raw DOM and events code.  But my immediate reaction to being asked to do so is to pushd back hard.  Because, ewww.
21:28 masak japhb: it's just not cost-effective most of the time.
21:29 japhb Very much agreed.
21:29 masak japhb: though it *is* getting less and less ridiculous as browsers build more stuff into the DOM layer.
21:29 masak japhb: there is a small but growing "Vanilla JS" movement brewing.
21:29 japhb Especially when the cost is some of my sanity points.
21:29 masak but the consensus is still that for "end users" (web authors), jQuery should very much be the go-to default.
21:30 masak for library writers, it depends.
21:30 pmurias masak: there is angularjs for dart
21:30 masak pmurias: also known as AngularDart, yes.
21:30 japhb Things must have gotten a whole hell of a lot better in the browsers since the last time I had to real vanilla JS.
21:30 masak pmurias: I don't care much for Dart, though I know some people do.
21:30 pmurias so what's your prefered JS replacement?
21:31 masak pmurias: I'm still shopping around. but I do like TypeScript for various reasons.
21:31 masak japhb: yes. yes, they have.
21:32 masak japhb: http://vanilla-js.com/ is tongue-in-cheek, but makes a worthwhile point.
21:32 pmurias masak: why do you dislike Dart?
21:32 dalek rakudo/nom: 18429d5 | TimToady++ | src/core/List.pm:
21:32 dalek rakudo/nom: just do a straight eager rpa write, 10% faster
21:32 dalek rakudo/nom:
21:32 dalek rakudo/nom: No point in involving gather/take at all when we know this is eager.
21:32 dalek rakudo/nom: Could probably speed this up further if we had low-level memory copying
21:32 dalek rakudo/nom: of rpa pointer data, so we could batch the memory initialization.
21:32 dalek rakudo/nom:
21:32 dalek rakudo/nom: Actually, this runs 10% faster on Moar, but a little slower on JVM than
21:32 dalek rakudo/nom: previous.  We'll optimize for the better optimizer at this point, which
21:32 dalek rakudo/nom: is Moar's.  Presumably the JVM's optimizer will catch up sooner or later.
21:32 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/18429d59c3
21:35 TimToady t/spec/S02-lexical-conventions/comments.rakudo.jvm only hangs when run in harness; works find standalone, so probably evalserver is blocking
21:35 * PerlJam wonders what "rpa" is since the only thing it expands to in my head is parrot-specific.
21:35 masak pmurias: I think Dart is not ambitious enough as a JavaScript replacement. ES6 feels about as ambitious, and more likely to gain marketshare.
21:35 TimToady well, there's a lot of code that still say 'rpa' to mean whatever the VM's lowlevel array typ eis
21:36 [Coke] why $rpa? callback to resizablepmcarray?
21:36 [Coke] oh.
21:36 * [Coke] catches up. "when is this?"
21:36 jnthn There's a lot of code living in the $past too... :)
21:36 TimToady nowadays it's a Resizable nqP Array
21:37 PerlJam How about we just call it RA and open up the space for sun-god puns? :)
21:37 japhb masak: chuckling at Vanilla JS referring to the various frameworks as "Vanilla JS Plugins"
21:38 masak pmurias: minor points: (a) void main()? really? (b) they had the chance to introduce static types, and they made them into hints? (c) what would possibly posses Apple or Microsoft or Mozilla to start supporting Google's JavaScript-killer language natively in their browser?
21:38 masak japhb: :)
21:38 TimToady Three cheers for the sun god! He sure is a fun god! Ra! Ra! Ra!
21:39 pmurias masak: re (c) - there is dart2js which seems to produce code without a performance penalty
21:39 pmurias without a signifcant performance penalty
21:39 masak pmurias: that's great. so Dart is another author language that compiles to JS. as such, it's not terribly impressive.
21:40 masak (IMHO)
21:40 pmurias masak: and I think Google could easily bully Mozilla to add Dart to firefox
21:40 masak guess we'll have to wait and see.
21:40 masak that *would* make it more interesting, though.
21:40 masak maybe the web would somehow be helped by having two native languages.
21:41 * PerlJam doubts it
21:41 PerlJam I mean ... we could have had *BASIC* as one of the web languages   ;)
21:42 japhb PerlJam: That depends on whether the second one is good enough to trigger the first back into rapid innovation mode.  Like V8 did for ... well, everyone else's JS implementation.
21:42 masak yeah.
21:42 masak though EcmaScript is definitely in rapid innovation mode now.
21:42 pmurias Dart seems a better Perl6 compilation target
21:43 masak pmurias: hm. hadn't considered that.
21:43 masak pmurias: if you finish a Dart backend before the JS one, I will officially be interested in Dart. :>
21:43 PerlJam heh
21:48 Ven joined #perl6
21:49 Ven masak: re "people know jQuery a lot better than they know the underlying language." <- you tell me :-). I often get downvoted on Stackoverflow because I say something in angular "works like in js" without re-explaining the whole js stuff
21:50 Ven or we get people asking coffee questions "I create two instances, push to the first, it's also in the second's" well, if you set the property on the constructor's prototype ..
21:50 Ven I'm kinda scared by Perl6, but I'd really rather avoid writing JS :-).
21:52 masak Ven: understanding the underlying data model of a language is invaluable. otherwise, one is likely to have to live with weird aliasing problems and roundabout hacky solutions.
21:52 Ven but I'm not sure if we can leverage Angular in p6(-js). Every other altJS that's not "just a bit prettier" (coffee, dart, ts, etc) have icky interfaces
21:52 Ven because angular relies pretty heavily on JS being JS.
21:53 masak Ven: much of what I teach in the JavaScript courses is how JavaScript actually does things. people are generally very grateful -- no-one ever explained these things to them. all they had was StackOverflow and (shudder) w3schools.
21:53 Ven .o( yer a jquery w3fools, harry )
21:54 Ven I actually most often that not don't include jQuery. But I have this big advantage: I don't care about older browsers.
21:54 masak Ven: yes, AngularJS makes a good case of "preserving" the JS part while enhancing it with structure. I don't think we can pull that off with Perl 6.
21:54 pyrimidine left #perl6
21:55 pmurias Ven: which Perl 6 features do you think I'll have a hard time implementing in rakudo-js?
21:55 Ven as for dart in browsers ... Not going to happen. Not even dart in chrome is going to happen :-). the chrome lead dev is very much against it
21:55 hoelzro pmurias: anything dealing with concurrency =/
21:55 Ven pmurias: everything nonbasic, actually.
21:55 hoelzro </2c>
21:55 masak so maybe the slogan "an AngularJS for Perl 6" is not so useful. but here's what I want: I want (a) the whipuptitude of AngularJS, but (b) writing Perl 6 application logic. then fill in the blanks. :)
21:56 * Ven backlogged enough so that he read masak++'s answer online instead of in his irc client :-)
21:57 Ven pmurias: dispatching is going to be painful and costful. capturing functions with correct `this` and such. corner-cases of destructuring arrays/hahes/instances, named args, ...
21:57 Ven the flattening operator. multi-indices indexing. HyperWhatever, `;` and `;;`.
21:59 klaas-janstol joined #perl6
21:59 Ven containers are going to be insanely hard to optimize. I've got no clue about these - at all. Implementing an efficient `~~`. Simulating `my` (would need js' `let`.). Dynamic variables. lazy arrays. infinite arrays. And blah, blah, blah.
22:00 masak Ven: re js' `let` -- turns out ES3's `catch` blocks have block scope! and you can use them to emulate `let`.
22:00 masak crazy, I know.
22:00 Ven masak: that's true ... except in JScript :-).
22:01 Ven masak: don't expect to teach the monkey how to make faces :p
22:01 masak what, IE's engine?
22:01 masak is that, like, IE below some given version, even?
22:01 Ven 'think so. And the old embedded JS stuff. and wsh
22:02 masak ok, then I don't care much at all.
22:02 Ven https://github.com/jashkenas/coffeescript/pull/1476
22:02 Ven masak: also, https://github.com/jashkenas/coffeescript/issues/2422 .
22:04 Ven so, yes, I know how es3's catch works, but it's a terrible idea to use that to emulate `let`.
22:05 Ven I'd much rather do something SSAF-y (somewhat) where you generate new names for inner 6scopes.
22:08 araujo joined #perl6
22:11 masak Ven: interesting.
22:12 masak Ven: I only recently learned about the subtle interaction between let declarations and function hoisting. now there's a corner case I didn't see coming.
22:14 Ven well, I only learned recently that you can re-declare variables that appear in the arglist (`fn (foo) { var foo;  }`) and keep the value! how terrible :-)
22:14 pmurias masak: emulating my with 'catch' blocks - that's a horrible idea as try/catch disables optimalisation in v8
22:16 pmurias Ven: re my I'm already doing that
22:16 ingy PerlJam: the fixed bug is here: https://gist.github.com/anonymous/5ab0fe69572e06d10aa3#file-parsingproblem-swim-L136
22:16 Ven yay ;-)
22:17 pmurias Ven: just by (function() {})() for introducing a perl6 block
22:17 masak pmurias: depends how much you value the semantics, I guess. Traceur does exactly that, for example. and there's been talk about optimizing exactly that case in v8, because people are starting to compile to it.
22:18 pmurias named arguments I emulate by passing a named arguments hash
22:19 pmurias dynamic variable I emulate by having a ctx argument containing the dynamic lexicals
22:20 jnthn pmurias: fwiw, NQP is really pretty good by now at optimizing away lexical scopes that aren't needed, and Rakudo will converge towards that with time, so compiling a QAST::Block into a function to get the lexical scope semantics will be a good choice.
22:20 jnthn Heck, NQP is good at optimizing away *lexicals*.
22:20 pmurias jnthn: good ;)
22:21 pmurias jnthn: it turn them into local which I compile into lexicals anyway ;)
22:21 Ven the this-passing will become costly in the long run, I believe.
22:21 jnthn pmurias: heh, yes :)
22:22 jnthn pmurias: Moar cares a bit more :)
22:22 pmurias generally emulating features requires either a performance penalty or good static analysis
22:23 nbrown_ joined #perl6
22:23 jnthn bbi10
22:24 pmurias bbi10?
22:24 Ven be back in 10, I'd say
22:24 geekosaur be back in 10 (minutes)?
22:24 Ven welp.
22:25 pmurias the good thing about v8 is that it has a lot of performance we can sacrifice
22:28 japhb I had a FOAF who retrofitted a turbine engine to a normal car chassis.  He drove around town with the turbine basically idling and brake pressure determining speed.  You appear to be recommending the same, except s:g/turbine/V8/.
22:28 Ven pmurias: well, we're deep into SufficientlySmartCompiler's field :-)
22:29 Ven .o( I got 99 problems but nqp's SufficientlySmartCompilerCompilerGenerator ain't one )
22:29 pmurias nqp currently isn't a very smart compiler
22:30 Ven that was mostly a reference to futamura's projections -- I guess I should've said "pypy" instead of nqp there.
22:31 Psyche^ joined #perl6
22:33 klaas-janstol joined #perl6
22:41 masak japhb: that reminds me about a Darwin award Liz told a bunch of us about.
22:46 FROGGS masak: I remember too :o)
22:46 masak http://www.darwinawards.com/darwin/darwin1995-04.html
22:49 masak I'm not terribly shocked to learn this particular one wasn't true.
22:59 xragnar joined #perl6
23:02 [Coke] pmurias: are you at a point where folks can help?
23:02 [Coke] (with rakudo-js)
23:02 timotimo m: say "foo" xx -1
23:02 camelia rakudo-moar 18429d: OUTPUT«MVMArray: Can't resize to negative elements␤  in sub infix:<xx> at src/gen/m-CORE.setting:8720␤  in block  at /tmp/UF1Xx0gOHy:1␤␤»
23:03 timotimo ^- that way a bunch of spectests explode
23:03 timotimo and i've been thinking i broke something %)
23:03 * timotimo looks for a good fix
23:07 TimToady ah, probalbly my fault
23:09 timotimo yup :)
23:09 timotimo i've got you covered, though
23:10 timotimo there are some more failures, it seems. maybe i need to put a abort-if-negative into a different multi candidate, too
23:12 timotimo # at t/spec/S32-array/exists-adverb.t line 31
23:12 timotimo #      got: (Bool::True, Bool::True, Bool::True, Bool::True, Bool::True, Bool::True, Bool::True, Bool::True, Bool::True, Bool::True).list.item
23:12 timotimo # expected: $(Bool::True, Bool::True, Bool::True, Bool::True, Bool::True, Bool::True, Bool::True, Bool::True, Bool::True, Bool::True)
23:12 timotimo i don't think this is my fault :)
23:13 dalek rakudo/nom: 2204422 | (Timo Paulssen)++ | src/core/List.pm:
23:13 dalek rakudo/nom: return an empty list for foobar xx -1
23:13 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/2204422946
23:14 aoseki joined #perl6
23:16 labster rn: say ".pl".succ
23:16 camelia rakudo-{parrot,jvm,moar} 18429d: OUTPUT«.pl␤»
23:16 camelia ..niecza v24-109-g48a8de3: OUTPUT«WTF␤»
23:16 labster niecza is the most suprising, but I was expecting ".pm"
23:20 TimToady see S03:426
23:20 synopsebot Link: http://perlcabal.org/syn/S03.html#line_426
23:20 labster Just noticed it myself TimToady.
23:21 labster I also noticed that .succ and .pred need to be documented in S32::Str, which I should probably do.
23:22 masak 'night, #perl6
23:22 labster 'night masak
23:24 nbrown_ joined #perl6
23:27 timotimo oh hey labster :)
23:32 timotimo TimToady: can you look into the exists-adverb thing?
23:33 TimToady sure
23:33 timotimo looks kind of similar to something you'd be involved in, or mouq? maybe lizmat?
23:36 Colby` joined #perl6
23:36 telex joined #perl6
23:44 labster hi timotimo!
23:44 timotimo i think i haven't seen you in here for a long time
23:45 labster busy with $dayjob mostly.
23:46 labster YAPC::NA gave me enough time to unbust my P6 modules, but I've been knee deep in a pile of old Perl 5.
23:58 [j4jackj] joined #perl6

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

Perl 6 | Reference Documentation | Rakudo