Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2015-07-24

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:08 dawgout joined #perl6
00:20 Hor|zon joined #perl6
00:24 isacloud joined #perl6
00:25 Colonel-X joined #perl6
00:27 Colonel-X m: $_="{abc}"; say "OK"if m/'{' \w+ '}'/;
00:27 camelia rakudo-moar 5d1ec3: OUTPUT«5===SORRY!5=== Error while compiling /tmp/Paj7tM2cQB␤Undeclared routine:␤    abc used at line 1. Did you mean 'abs'?␤␤»
00:27 smls { } interpolates code in "" strings
00:28 Colonel-X yes, I see, but is it right????
00:29 smls m: $_ = '{abc}'; say "OK" if m/'{' \w+ '}'/;
00:29 camelia rakudo-moar 5d1ec3: OUTPUT«OK␤»
00:29 smls you need to use  '{abc}'  or  "\{abc\}"  if you want literal braces in your string
00:31 smls not sure what you mean with "right"
00:31 smls { } interpolation in "" strings is definitely an intended feature
00:31 smls like $variable interpolation
00:40 laouji joined #perl6
00:45 laouji joined #perl6
00:50 skids joined #perl6
00:54 Mhoram joined #perl6
01:00 japhb .tell jnthn It looks like the test for flussence's Test::Corpus makes a reliable concurrency segfault generator; as I added a bunch of say() calls all over lib/Test/Corpus.pm, it looks like it tries to start in parallel 50 copies of 'is &func($in.slurp), $out.slurp, $testcase;' but none of them actually complete the is() call; it segfaults on my box reliably after starting the 16th copy and producing no actual test output.
01:00 yoleaux japhb: I'll pass your message to jnthn.
01:01 japhb .tell jnthn My WAG is that it's unhappy about trying to do a pile of I/O operations with an exhausted thread pool.
01:01 yoleaux japhb: I'll pass your message to jnthn.
01:05 cognominal joined #perl6
01:08 BenGoldberg joined #perl6
01:14 japhb .tell jnthn Although I suppose it could just be the general non-threadsafe qualities of Rakudo's Test module ....
01:14 yoleaux japhb: I'll pass your message to jnthn.
01:19 rmgk_ joined #perl6
01:21 Hor|zon joined #perl6
01:28 govt joined #perl6
01:32 dalek roast: c0cef60 | skids++ | S04-phasers/enter-leave.t:
01:32 dalek roast: skip/fudge some newer tests that have trouble on JVM
01:32 dalek roast: review: https://github.com/perl6/roast/commit/c0cef60d9d
01:33 tinyblak joined #perl6
01:37 llfourn joined #perl6
02:01 dalek roast: 039c1ec | skids++ | S09-typed-arrays/native-int.t:
02:01 dalek roast: Fudge a new test that does not work on JVM
02:01 dalek roast: review: https://github.com/perl6/roast/commit/039c1ecfb7
02:16 nightfrog joined #perl6
02:20 japhb .tell flussence I sent you a PR for Text-Tabs-Wrap which works around a Rakudo parsing bug and allows Text::Wrap to compile again.
02:20 yoleaux japhb: I'll pass your message to flussence.
02:22 Hor|zon joined #perl6
02:34 dalek roast: 5c22c1f | skids++ | S32-exceptions/misc.t:
02:34 dalek roast: Refine some new tests not to fail due to unsynced JVM error messages
02:34 dalek roast: Also fudge one new test which does not work on jvm
02:34 dalek roast: review: https://github.com/perl6/roast/commit/5c22c1fdff
02:42 dalek roast: 8df768a | skids++ | S19-command-line/arguments.t:
02:42 dalek roast: Fix test which relied on exact match of error message on JVM.
02:42 dalek roast: JVM and moar error messages should probably be synced but both of the
02:42 dalek roast:   two outputs have their merits, and both satisfy requirements of RT#112988.
02:42 dalek roast: review: https://github.com/perl6/roast/commit/8df768a00d
02:42 synbot6 Link:  https://rt.perl.org/rt3/Public/Bug/Display.html?id=112988
02:47 konsolebox joined #perl6
02:59 noganex_ joined #perl6
03:04 dalek roast: f5665a1 | skids++ | S32-list/pick.t:
03:04 dalek roast: Make a failing test non-lethal on JVM, then fudge it.
03:04 dalek roast: review: https://github.com/perl6/roast/commit/f5665a1415
03:04 b2gills Larry's  Linux Voice interview was just mentioned on TechSNAP 224 https://youtu.be/UQMf5z0RZdw?t=3615
03:06 bin_005 joined #perl6
03:12 dmitri joined #perl6
03:12 dmitri Hola!
03:14 jack_rabbit joined #perl6
03:14 dmitri How come #perl6 is here and not on irc.perl.org?
03:16 dalek roast: 068a332 | skids++ | S32-temporal/calendar.t:
03:16 dalek roast: Avoid octalism worries
03:16 dalek roast: review: https://github.com/perl6/roast/commit/068a3329b3
03:18 tinyblak joined #perl6
03:23 tinyblak joined #perl6
03:23 Hor|zon joined #perl6
03:27 vendethiel joined #perl6
03:39 llfourn joined #perl6
03:42 b2gills dmitri: I don't know. This time of "night" it is rather quiet here so you may not get an answer for a while.
03:46 dmitri b2gills: thankfully, there's a log, so that if someone gives the answer when I am not here, I can look it up.
03:47 dmitri It's quite intriguing
03:48 b2gills There is a messaging bot as well.
04:01 TEttinger joined #perl6
04:03 hoelzro_ii joined #perl6
04:20 atroxaper joined #perl6
04:24 Hor|zon joined #perl6
04:34 mr-foobar joined #perl6
04:45 ssqq joined #perl6
04:47 ssqq Why Perl6 index Str behaviour only support [0].
04:48 ssqq p6: "perl"[0].say;
04:48 camelia rakudo-moar 5d1ec3: OUTPUT«perl␤»
04:48 ssqq p6: "perl"[1].say
04:48 camelia rakudo-moar 5d1ec3: OUTPUT«Index out of range. Is: 1, should be in 0..0␤  in block <unit> at /tmp/tmpfile:1␤␤Actually thrown at:␤  in block <unit> at /tmp/tmpfile:1␤␤»
04:48 skids There is only one thing there, the string "perl" at index 0.
04:49 skids What you are lookig for is a substr.
04:49 moritz use substr for indexing str
04:49 skids m: "perl".substr(1,1).say
04:49 camelia rakudo-moar 5d1ec3: OUTPUT«e␤»
04:52 ssqq Str is consist of char, index str should return char.
04:52 skids Str is not a Positional.
04:53 skids It does not use the .[] API.
04:53 ssqq p6: "str".[0]
04:53 camelia rakudo-moar 5d1ec3: ( no output )
04:53 ssqq p6: "str".[0].say
04:53 camelia rakudo-moar 5d1ec3: OUTPUT«str␤»
04:54 skids What you are seeing is the item supporting .[], not the Str inside.
04:54 ShimmerFairy When you do "perl"[$index] , it turns the string into a one-element array, which is why only [0] returns something (the string itself)
04:55 skids m: my $a = "perl"; $a[0].say; my $b = ("perl", "6"); $b[1].say
04:55 camelia rakudo-moar 5d1ec3: OUTPUT«perl␤6␤»
04:56 skids m: <perl 6>[1].say
04:56 camelia rakudo-moar 5d1ec3: OUTPUT«6␤»
04:57 ssqq_ joined #perl6
05:01 aborazmeh joined #perl6
05:01 aborazmeh joined #perl6
05:01 ssqq_ If it is same in before version? I need test.
05:02 skids m: my $b = "PERL"; EVAL("$_\[0\]").say for <$b "perl"> # If "foo"[0]did substr, things like this would be very confusing
05:02 camelia rakudo-moar 5d1ec3: OUTPUT«PERL␤perl␤»
05:02 skids "before version"?
05:09 laouji joined #perl6
05:10 lizmat joined #perl6
05:22 dalek perl6.org: 4010451 | lizmat++ | source/documentation/index.html:
05:22 dalek perl6.org: Remove "Using Perl 6" book from newbie list
05:22 dalek perl6.org:
05:22 dalek perl6.org: Until we have unbitrotted this effort, it should probably not be mentioned
05:22 dalek perl6.org: to Perl 6 newbies, as it gives a *very* bad impression.
05:22 dalek perl6.org: review: https://github.com/perl6/perl6.org/commit/4010451c29
05:22 abraxxa joined #perl6
05:22 xfix joined #perl6
05:22 xfix joined #perl6
05:23 lizmat The above change was discussed with several people at OSCON.  Hope we can get consensus about it here as well  :-)
05:23 yoleaux 23 Jul 2015 18:57Z <[Coke]> lizmat: +1 from me on ! to indicate "is required"
05:23 yoleaux 23 Jul 2015 19:37Z <japhb> lizmat: +1 from me as well on ! for 'is required'.  I like the unification with parameter specifications.
05:25 Hor|zon joined #perl6
05:32 lizmat re: http://irclog.perlgeek.de/perl6/2015-07-23#i_10943127
05:32 lizmat I wonder whether it would make sense for the -index functions to return "0 but True" for 0 ?
05:32 lizmat then:
05:32 lizmat if "foo".index(...) -> $pos {   }
05:32 lizmat would simply work
05:32 lizmat always
05:37 lizmat Or maybe we should revive StrPos as a subclass of Int where method Bool { self.defined }
05:40 ShimmerFairy lizmat: I really like the sound of "0 but True". Sounds like a really good case for that seemingly-silly declaration.
05:40 llfourn joined #perl6
05:41 ShimmerFairy lizmat: I didn't include StrLen and StrPos in S15 because (as I recall) TimToady told me those were pre-NFG concepts, but I don't think they're necessarily out of the question.
05:42 lizmat I realize they were pre-NFG, but maybe at least StrPos could be repurposed
05:42 lizmat and the way I see it, it wouldn't cost any performance
05:43 ShimmerFairy Yeah, StrPos sounds like it could be useful, StrLen less so (unless you wanted some sort of analogous relationship to Instant/Duration or something)
05:43 atroxaper joined #perl6
05:43 * ShimmerFairy wonders if the really old cruft like Char is still in the specs in places
05:45 lizmat S29 has some Char
05:46 ShimmerFairy Yeah, I recall S29 having a lot of old-ness to it
05:48 ShimmerFairy oh wow, the "Matcher" type I saw in S32 isn't just a placeholder name, according to S29
05:54 ShimmerFairy "C<CharLingua> is itself an abstract type that cannot be instantiated." almost sounds like something that was written before roles, if there ever was a time before roles
05:57 lizmat seems all of that is from 23d760e0 from 2006  :-()
05:58 ShimmerFairy yeah, with just a couple lines from 2008 and 2010 :)
05:58 lizmat ah, it's even older...
06:00 ShimmerFairy I don't know much about the history of Perl 6, but I'd be interested in learning that there was a time before roles. They're so useful! :)
06:03 lizmat indeed...  sometimes I wonder whether we would need subclassing at all
06:03 lizmat especially since roles in Perl 6 autopun to a class
06:04 lizmat How does this look:
06:04 lizmat $ 6 'if "foo".index("f") -> $pos { say $pos }'
06:04 lizmat 0
06:05 lizmat $ 6 'if "foo".index("g") -> $pos { say $pos }'
06:05 lizmat (nothing)
06:05 ShimmerFairy To be honest, I can't quite recall the last time I actually used subclassing (maybe when trying my hand at DLX?). To be fair though, I haven't made use of roles all that much either.
06:06 ShimmerFairy subclassing in Perl 6, to be specific :)
06:07 lizmat hmmm... maybe StrPos is not the best name
06:07 lizmat since we probably also want to use this for grep-index, and then it's not a StrPos
06:07 lizmat (as Position in String)
06:09 lizmat maybe just Pos would be better
06:10 ShimmerFairy Pos sounds like it could be useful in more places, such as Buf. Maybe even in post-GLR lists.
06:14 lizmat grrr... my patch breaks the optimizer optimizing rindex("foo","x")
06:15 dalek specs: af82a6f | ShimmerFairy++ | S (3 files):
06:15 dalek specs: Remove ancient string types
06:15 dalek specs:
06:15 dalek specs: This bids fairwell to the C<AnyChar>, C<Char>, C<CharLingua>
06:15 dalek specs: C<Grapheme>, C<Codepoint>, and C<Byte> types. Note that S32::Str needs
06:15 dalek specs: some more involved editing to be more in line with how strings are handled
06:15 dalek specs: handled nowadays.
06:15 dalek specs: review: https://github.com/perl6/specs/commit/af82a6f86b
06:16 domidumont joined #perl6
06:22 dalek rakudo/nom: af22999 | lizmat++ | src/Perl6/Optimizer.nqp:
06:22 dalek rakudo/nom: Don't die optimizing a type object as return value
06:22 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/af229999a5
06:26 Hor|zon joined #perl6
06:27 lizmat On the parallelizing and >>.method front:
06:28 lizmat I wonder whether it would make sense to add a Routine trait such as "is ok2async" (name TBD)
06:29 RabidGravy joined #perl6
06:29 lizmat that would indicate that it is ok to actually run the method in parallel when called in a >>. meta op
06:29 lizmat as a runtime / compiler hint
06:30 ShimmerFairy I can imagine it'd be a pain for thread-unsafe methods and the like to be subjected to something they weren't meant for. And I imagine the trait name might follow the iffy/diffy/fiddly convention :)
06:30 lizmat so that something like: @urls>>.fetch would make sense
06:31 lizmat as opposed to something like @people>>.name
06:31 lizmat it would at least give us some data points as to actually auto-parallelizing >>. would work
06:32 [Tux] joined #perl6
06:32 ShimmerFairy is thready ?
06:34 dalek rakudo/nom: 9582ebc | lizmat++ | src/core/Int.pm:
06:34 dalek rakudo/nom: Introduce Pos is Int where 0 is still True
06:34 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/9582ebc3f5
06:34 dalek rakudo/nom: 7c615ad | lizmat++ | src/core/Cool.pm:
06:34 dalek rakudo/nom: Make index/rindex return Pos rather than Int
06:34 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/7c615ade43
06:34 ShimmerFairy Unless Perl 6 could somehow ensure the sanity of ». on every possible method, which I doubt, I agree with having this kind of hint on methods (and other subs, considering  $thing.&somesub) :)
06:34 lizmat like the pun on ready
06:34 lizmat but would like to not mention threads as much as possible
06:35 lizmat maybe "is asyncy"  ?
06:35 lizmat or, to keep in line with start { }
06:35 lizmat "is starty" ?
06:37 dolmen joined #perl6
06:37 ShimmerFairy "starty" sounds good. In normal English I would likely first go for "startish" as an adjective-ification of the word, but I think starty is just as good :)
06:38 ShimmerFairy asyncy would be more immediately obvious, however
06:39 ShimmerFairy Building off the hyper op this idea is caused by, I can also think of "hypery", "hyperish", and "hyperable"
06:40 espadrine_ joined #perl6
06:40 lizmat hmmm... hypery
06:41 lizmat I guess that makes the most sense...
06:41 gfldex joined #perl6
06:42 lizmat hyperable to be more "English" probably
06:43 domidumont joined #perl6
06:44 ShimmerFairy hypery would fit with iffy/diffy/fiddly, but I don't think that's in the same space as where "hypery" would be used, so that may not be an applicable reason.
06:45 lizmat indeed
06:48 domidumont joined #perl6
06:50 darutoko joined #perl6
06:50 dalek rakudo/nom: f971dbd | lizmat++ | src/core/ (2 files):
06:50 dalek rakudo/nom: Make grep/first/last-index return Pos
06:50 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/f971dbd7c1
06:51 dalek roast: f266c4e | lizmat++ | S32-list/grep-index.t:
06:51 dalek roast: Test grep-index less precisely to allow for Pos
06:51 dalek roast: review: https://github.com/perl6/roast/commit/f266c4ed25
06:55 lizmat re: http://irclog.perlgeek.de/perl6/2015-07-23#i_10945167   on has $!x!
06:55 lizmat yes, that would be a bit awkward
06:56 FROGGS joined #perl6
06:56 lizmat on the other hand, I don't think many private attributes are generally intializable through .new
06:56 lizmat so generally, it would always be $.x!
06:57 ShimmerFairy As I recall, you'd have to add private attributes yourself (not even BUILD will take them by default, IIRC)
06:57 FROGGS o/
06:57 ShimmerFairy o/
06:58 ShimmerFairy "Can't publicly require private attribute", perhaps?
06:58 lizmat well, "is required" is moot if you make your own BUILD anyway
06:59 lizmat m: class A { has $.a is required; method BUILD(:$!a) {} }; A.new.perl.say
06:59 camelia rakudo-moar 7c615a: OUTPUT«A.new(a => Any)␤»
06:59 lizmat m: class A { has $.a is required; method BUILD(:$!a) {} }; A.new(a => 42).perl.say
06:59 camelia rakudo-moar 7c615a: OUTPUT«A.new(a => 42)␤»
07:00 lizmat FROGGS o/
07:02 ShimmerFairy Sounds like "is required" would only make sense on public attributes, since private attributes should be internal-only. (And I'm not sure if a class would ever need to make itself use an attribute with that)
07:03 lizmat Indeed
07:03 lizmat .oO( starting to sound like Teal'c now )
07:03 ShimmerFairy Same goes for whatever "is optional" looks like, of course :)
07:14 Tux__ joined #perl6
07:14 RabidGravy morning!
07:15 tinyblak joined #perl6
07:16 lizmat RabidGravy o/
07:16 RabidGravy are we  all fabulous?
07:21 lizmat is that a junction ?
07:22 * lizmat goes to bed
07:25 bjz joined #perl6
07:27 Hor|zon joined #perl6
07:31 zakharyas joined #perl6
07:35 dayangkun joined #perl6
07:36 jdv79 i thought >> means async the calls - why make it more complicated with a hint?
07:37 FROGGS a hint? what have I missed?
07:38 FROGGS hmmm... reading backlog right now
07:38 ShimmerFairy FROGGS: an "is hyperable" trait on methods to specify that it's suitable for use on ». -- not necessarily just those methods with the traits, just a hint specifying that it's safe to parallelize the call
07:39 jdv79 if the call isn't safe to async then don't use >>, no?
07:39 FROGGS I was under the impression that >>. *always* indicated that it is okay to parallelize the calls
07:39 jdv79 ditto.  seems like unnecesary complexity.
07:39 ShimmerFairy FROGGS: ». just does parallelization. AFAIK there's no guarantee it would be safe to do so.
07:40 FROGGS ShimmerFairy: I'd propose the opposite meaning of a trait, in case we need one at all
07:40 jnthn >>.foo is one of the various hyper-op forms, and by using it you as the programmer are declaring "it's OK to parallelize this"
07:40 yoleaux 01:00Z <japhb> jnthn: It looks like the test for flussence's Test::Corpus makes a reliable concurrency segfault generator; as I added a bunch of say() calls all over lib/Test/Corpus.pm, it looks like it tries to start in parallel 50 copies of 'is &func($in.slurp), $out.slurp, $testcase;' but none of them actually complete the is() call; it segfaults on my box reliably after starting the 16th copy and producing no actual test output.
07:40 yoleaux 01:01Z <japhb> jnthn: My WAG is that it's unhappy about trying to do a pile of I/O operations with an exhausted thread pool.
07:40 yoleaux 01:14Z <japhb> jnthn: Although I suppose it could just be the general non-threadsafe qualities of Rakudo's Test module ....
07:41 jnthn @foo>>.bar is thus not sugar for @foo.map(*.bar), but rather @foo.map(*.bar).hyper
07:41 FROGGS a trait like:  is very-unsafe-in-concurrent-code-and-I-am-sorry-for-that
07:41 FROGGS ShimmerFairy: in any case, concurrency should be the default, not the exception
07:41 jnthn No need for any such thing; writing >>.bar in a situation where it's not OK to parallelize is erroneous.
07:41 FROGGS +1
07:41 ShimmerFairy jnthn: what would happen if you tried to hyper something that wasn't safe to do so? (Like say, something that modifies a kind of global attribute)
07:42 jnthn ShimmerFairy: Then your program would behave incorrectly.
07:43 ShimmerFairy I still think some kind of hint to the compiler about whether or not it's safe to use hyper on it would be nice, since "just know if it's safe already" won't always be a reasonable solution.
07:43 jdv79 p6 is already very complex.  it would be nice for mere mortals to try to keep it essential or at least as close as possible.
07:44 jnthn ShimmerFairy: Method calls are late bound, how can it possibly be a compiler hint?
07:44 jnthn ShimmerFairy: What if I have a list of objects of different types?
07:45 FROGGS and you also don't want to scan a huge tree of calls to decide how to call it
07:45 jnthn If you *don't* know it's safe already, you shouldn't be using hyperops
07:45 ShimmerFairy jnthn: well, a hint of some form, if not necessarily compiler hint. If it ends up not being useful/necessary, I'm sure you could always develop external tools that did this kind of thing with comments marking methods
07:45 ShimmerFairy ("you" in the general sense, if that's not clear)
07:47 ShimmerFairy jnthn: only thing that concerns me about a parallelized ». is that I'm used to thinking of it as basically a shortcut for mapping, without any thought to concurrency. I'm sure other people have developed a similar feel for it, so I wonder how much code is going to break when it's finally parallelized.
07:48 jdv79 isn't it already parallel?
07:48 jnthn ShimmerFairy: We already dis-order the calls to dissuade people from using it on side-effecting things.
07:48 dalek book: 1ae49ec | paultcochrane++ | README:
07:48 dalek book: Add note about archival nature of repo
07:48 dalek book: review: https://github.com/perl6/book/commit/1ae49ecd6b
07:48 dalek book: a036141 | moritz++ | README:
07:48 dalek book: Merge pull request #83 from paultcochrane/pr/add-obsolescence-note
07:48 dalek book:
07:48 dalek book: Add note about archival nature of repo
07:48 dalek book: review: https://github.com/perl6/book/commit/a036141885
07:48 jnthn jdv79: Not yet
07:48 ShimmerFairy Not that it shouldn't be parallelized, but it would certainly change the effective meaning of ». (and it would take me some time at least to think about concurrency more on it)
07:48 jdv79 oh, that's why.  i know i've seen >>. break stuff that map/for work fine on
07:48 jnthn ShimmerFairy: I don't really get the "I learned the language badly and now want to change the langauge" argument.
07:49 jnthn Granted, that may well have been out of poor documentation. But we can fix that.
07:49 jdv79 i think the design documents were pretty clear on this;)
07:49 ShimmerFairy jnthn: Like I said, I'm not arguing against making ». work, I'm just noting that _finally_ making it work after all these years is likely going to crop up a couple bugs in code.
07:50 jnthn ShimmerFairy: Sure, which means we'd probably better do it sooner rather than later.
07:50 telex joined #perl6
07:50 jdv79 any idea when that will happen?  is it blocking on anything else?
07:50 jnthn jdv79: Well, the GLR needs to take care of hyper/race really
07:51 ShimmerFairy jnthn: for me at least, it's not about learning the language badly in this case, just that the lack of parallelization on ». means I've never had to keep it in mind for it.
07:51 ShimmerFairy By all means, fix it sooner rather than later :)
07:51 jdv79 also, wasn't there something like >>., if not that, that retained order but did parallel?
07:51 jnthn jdv79: >>. retains order of *results*, it just dis-orders evaluation.
07:52 jdv79 ah, gotcha.
07:52 jdv79 that makes the failures i observed make even more sense
07:52 jdv79 du
07:52 jdv79 h
07:52 jnthn :)
07:53 jnthn I suspect that us having already evaluated the things out of order already for a while will have caught a decent number of the bits of code that would also break if we parallelized.
07:53 tinyblak joined #perl6
07:54 jnthn Not all, of course.
07:55 jnthn fwiw, @foo.map(*.bar).race *is* allowed to disorder the results.
07:56 * jnthn bbi30
08:04 mr-foobar joined #perl6
08:05 jdv79 so, how does that line of code work then?  @foo calls map which calls race...
08:10 rindolf joined #perl6
08:10 jdv79 i think of that as a set of chained method calls so how does the addition of .race cause it to go parallel?
08:10 jdv79 sup rindolf?
08:10 rindolf jdv79: hi.
08:11 rindolf jdv79: i'm fine - stayed up relatively late to try to solve a Project Euler problem. Still not finished.
08:11 jdv79 sleep late then?
08:12 Hor|zon joined #perl6
08:13 atroxaper joined #perl6
08:13 rindolf jdv79: yes, I went to sleep relatively late.
08:13 rindolf But not that late.
08:14 jdv79 btw, does "Testing Digest" hand for anyone else?
08:15 jdv79 i had to kill it before it ate all ram
08:15 jdv79 :(
08:15 xiaomiao jdv79: 'ulimit' ftw
08:15 rindolf jdv79: what's up with you?
08:16 jdv79 well, i don't want to just stop it from breakin
08:16 jdv79 i'd like it to install
08:17 xiaomiao ulimit just avoids that you manually need to kill things
08:17 masak morning, #perl6
08:17 jdv79 not really my goal
08:18 FROGGS hi masak
08:18 jnthn jdv79: .map(...) doesn't actually do anything other than setup work, so you get back a lazy thing; .race and .hyper are just cleverer forms of .eager in that sense.
08:19 jnthn morning, masak
08:23 * jdv79 still thinks in p5 terms - oops
08:23 jdv79 thanks
08:26 jdv79 rindolf: just seein sights and relazing
08:26 jdv79 *relaxing
08:27 amurf joined #perl6
08:28 rindolf jdv79: ah, OK.
08:28 rindolf jdv79: nice.
08:33 atroxaper joined #perl6
08:45 Ven joined #perl6
08:49 rindolf joined #perl6
09:07 inokenty joined #perl6
09:07 smls joined #perl6
09:09 Woodi hallo #perl6 :)
09:09 espadrine_ joined #perl6
09:10 nine Hello Woodi
09:10 Woodi found article about spreadsheets on HN  http://semantic-domain.blogspot.com/2015/07/how-to-implement-spreadsheet.html
09:10 Woodi now we have native arrays so we can overload them a bit :)
09:11 Woodi looks cell is a structure that have @observers, so suplies could be used :)
09:13 jnthn Yeah, supplies would be a neat fit for that :)
09:13 jnthn Just tap your dependencies.
09:14 Woodi and the other days there was "Universal ask Google to shoot down 127.0.0.1" for some reasons, anyone read that maybe ? my network then browser crashed...
09:19 smls Sometimes I wish there was an even more high-level concurrency primitive as an alternative to Promise - one that hides itself just like Scalar, except that trying to read it blocks for the work to finish.
09:20 smls So you wouldn't even have to care that its different from its future value (except that you'd have to bind instead of assign it to a $ variable if you don't want to wait for it)
09:20 smls Would also provided an easier upgrade path from non-async to async in some cases.
09:21 llfourn so if you try to read the val it will block?
09:21 smls yeah
09:21 moritz smls: except that type checks also need to read the value
09:21 masak just found a satisfactory solution to my prefix-postfix-precedence conundurum in 007 from the other day.
09:22 smls hm, I guess that might be a problem.
09:23 masak there's an invisible boundary between prefixes and postfixes, so the precedence list conceptually looks like this: RRRR|OOOOO (with R meaning pRefix and O meaning pOstfix)
09:23 masak people are allowed to add tighter/looser prefix and postfix ops wherever they want, and it'll still work. but the original boundary is always between that R and that O.
09:24 masak hm. that was almost a good way to say it :)
09:25 jnthn smls: You could probably do it today with Proxy
09:25 jnthn smls: But what moritz said also.
09:26 dalek doc: 89bc3de | paultcochrane++ | lib/Type/IO/Path.pod:
09:26 dalek doc: Wrap long lines for easier POD readability
09:26 dalek doc:
09:26 dalek doc: This does not change any content.
09:26 dalek doc: review: https://github.com/perl6/doc/commit/89bc3decad
09:26 jnthn smls: Plus a bunch of the time you *do* want the Promise to use it with some other combinator.
09:26 smls true
09:27 jnthn Folks can easily experiment with such things in module space, though.
09:28 smls fair enough
09:28 jnthn I'm pretty sure I'd not want such a magical and probably fragile thing in the language core.
09:28 atroxaper joined #perl6
09:28 smls masak: In Perl 6, postfixes tend to be tighter than prefixes.
09:28 smls Granted, the only postfixes are method calls and ++, so it's not much to establish a patter from :P
09:28 smls *pattern
09:29 smls well, unless you count postcircumfixes
09:31 smls jnthn: It would be fragile in the sense that it's easy to block sooner than necessary, sure. But if the alternative is that one wouldn't use async at all for a given use-case, even a *little* delayed blocking might help.
09:31 moritz smls: not if storing the hidden-ish promise in a scalar already triggers the type check
09:32 smls I.e. more as a performance improvement, rather than proper concurrent algorithms.
09:33 moritz smls: I recommend experimenting with a Proxy, doing a say() in the FETCH method, just to get a feel for how often it's called
09:33 smls You may not need it in a Scalar though
09:34 RabidGravy the proxy thing surprised me
09:34 masak smls: in 007, postfixes tend to be tighter than prefixes, too.
09:34 masak smls: but in both Perl 6 and 007, you're free to give them any precedence level.
09:35 RabidGravy right, Whitstable beer festival! see you all later!
09:40 atroxaper joined #perl6
09:57 sivoais joined #perl6
10:01 Woodi why check promise type ? it can be predeclared and throw type error if other type is returned ?
10:02 Woodi for me promise is just strange routine
10:02 tinyblak joined #perl6
10:02 moritz it's an object
10:02 moritz or a class, to be more precise
10:02 moritz and smls talked about hiding it more, making it implicit
10:03 Woodi ah, in scalar mean traditional Perl...
10:03 moritz in which case you do run into trouble with type checking, because type checking happens all the time, and that would evaluate/block the promise immediately
10:04 smls unless of course you could strictly type it to know ikt's eventual value's type, like PromiseScalar[Int] ;)
10:05 moritz but then it's not implicit anymore, and the benefit gone
10:05 smls Why?
10:05 smls from the caller perspective, nothing changes
10:05 moritz why what?
10:06 moritz huh?
10:06 smls it's the source that would need to take care of constructing it appropriately
10:06 Woodi anyway we trying to invent "dynamic" things and put it in very static program... maybe program should be a Virtual World so all object would be "alive" in thread sense...
10:06 Woodi then message sending would have sense :)
10:06 smls moritz: Well, the caller of foo() would not have to care much whether foo returns an Int or a PromiseScalar[Int]
10:07 moritz smls: a type can set itself up as a container, in which case it's ignored in type checks; or it's a normal type
10:07 moritz smls: neither approach seems to fit this situation
10:07 sivoais joined #perl6
10:07 Woodi or let's every started program have 2 threads by default. main thread can ask other to help in calculations, etc. some perception need to be changed
10:08 smls "ignored in type checks"  and it can't override that?
10:09 jnthn Well, more accurately, FETCH is called to get the value to check.
10:10 jnthn And no, you can't override that.
10:10 jnthn You don't know why the thing is being fetched.
10:10 moritz smls: also this approach doesn't work well for dynamic types in general. In a dynamic language you're allowed to write   my Int $x = f(); even if &f doesn't declare that it'll return an Int
10:11 moritz and you'd break that assumption with a typed promise
10:11 smls why would it break it?
10:11 smls my Int $x = f();  would still work
10:11 moritz I don't see how.
10:11 moritz afk
10:11 smls but, I see what jnthn is saying, that's not technically feasible then.
10:13 nine jnthn: on MoarVM, is it somewhat safe to run Perl code from threads not started by MoarVM? I.e. registering callbacks with some hypothetical Qt bindings which run the callbacks on threads started by Qt. On Perl 5 this explodes which is blocking me from using QtWebkit with Perl.
10:14 jnthn nine: That'll end horribly badly at present.
10:14 jnthn nine: 'cus the callback will end up with the wrong thread context, and stuff that should be thread local will suddenly be shared by two threads.
10:15 jnthn nine: My gut feeling is that it's fixable though.
10:15 nine jnthn: feared so. But we'll need some Qt bindings before hitting that problem anyway :)
10:16 * jnthn wonders which VMs supports this case already :)
10:16 bin_005 joined #perl6
10:17 Woodi probably C[++] :)
10:17 jnthn That's not a VM :P
10:17 Woodi but such thing is just a step from distributed computing :)
10:19 jnthn Apparently you're just a step from understanding threads vs processes :P
10:19 Begi joined #perl6
10:19 Woodi they are similiar, right ?
10:20 Woodi too many abstract thinking, ok
10:21 ShimmerFairy Looking at S32::Str:114 , how much of that is still relevant? wordcase doesn't do matching case insensitively (and I don't know how you'd manage that smartmatching against an object of type Mu), and the exception for &tcuc is really weird (esp. since it doesn't exist!)
10:21 jnthn Both give you concurrency, but in a process you have a separate memory space and independent failure, which makes a huge difference.
10:22 jnthn Because the answer to "is my system running" is no longer yes or no, but can be "partly".
10:22 ShimmerFairy doesn't smartmatch insensitively in rakudo, I should say
10:23 nine I wonder how Python bindings deal with this
10:36 chansen_ joined #perl6
10:40 JimmyZ_ joined #perl6
10:42 timotimo easy: the GIL
10:42 timotimo or is "this" something else?
10:42 ribasushi joined #perl6
10:43 timotimo .o( python bindings don't have to deal with this, they have to deal with self )
10:44 jnthn .oO( As a Java programmar used to this, I wonder how you Python folks live with your self... )
10:45 daxim_ p6: ({a=>1,b=>2}, {c=>3,d=>4}).map({ if (.<a>) {return $_} else {return} })        # p5:  map { if ($_->{a}) {return $_} else {return} } ({a=>1,b=>2}, {c=>3,d=>4})   # result ({a=>1,b=>2})
10:45 camelia rakudo-moar f971db: OUTPUT«Unhandled exception: P6opaque: no such attribute '$!storage'␤   at src/gen/m-CORE.setting:10402  (/home/camelia/rakudo-inst-2/share/perl6/runtime/CORE.setting.moarvm::121)␤ from src/gen/m-CORE.setting:10392  (/home/camelia/rakudo-inst-2/share/perl6/run…»
10:45 daxim_ I don't understand this error message
10:48 jnthn Me either. o.O I mean, the use of return outside of a sub is wrong...
10:48 jnthn m:({a=>1,b=>2}, {c=>3,d=>4}).map({ if (.<a>) {$_} })
10:48 jnthn m: ({a=>1,b=>2}, {c=>3,d=>4}).map({ if (.<a>) {$_} })
10:48 camelia rakudo-moar f971db: ( no output )
10:48 jnthn m: ({a=>1,b=>2}, {c=>3,d=>4}).map({ if (.<a>) {$_} }).say
10:48 camelia rakudo-moar f971db: OUTPUT«a => 1, b => 2␤»
10:49 jnthn m: ({a=>1,b=>2}, {c=>3,d=>4}).grep({ .<a> }).say # if this is all you're doing
10:49 camelia rakudo-moar f971db: OUTPUT«a => 1, b => 2␤»
10:49 ShimmerFairy or for clarity, $_<a>:exists  :)
10:49 smls or  .grep(*.<a>)
10:50 jnthn .grep(*<a>) probably does it even
10:50 jnthn m: sub foo { ({a=>1,b=>2}, {c=>3,d=>4}).map({ if (.<a>) {return $_} else { return } }) }; say foo
10:50 camelia rakudo-moar f971db: OUTPUT«Unhandled exception: Method 'is-runtime' not found for invocant of class 'Any'␤   at <unknown>:1  (/home/camelia/rakudo-inst-2/share/perl6/runtime/CORE.setting.moarvm:print_exception:4294967295)␤ from src/gen/m-CORE.setting:15704  (/home/camelia/rakudo…»
10:50 daxim_ what is the inner of map, if not a sub?
10:50 smls a Block
10:50 jnthn You can make it a sub if you want
10:51 daxim_ with explicit sub keyword?
10:51 jnthn Yes
10:51 daxim_ I see
10:51 jnthn return applies to the enclosing sub/method
10:51 smls «sub {  }» is a Sub which is a kind of Routine which is a kind of Block; «{ }» is merely a Block
10:51 jnthn I thought it worked that way in Perl 5 too... o.O
10:52 moritz m: say Sub ~~ Block
10:52 camelia rakudo-moar f971db: OUTPUT«True␤»
10:52 daxim_ do we already have a perltrap document?
10:52 jnthn Perhaps the best way to think of it is that C<for> in Perl 6 is just sugar for `map`
10:53 jnthn You'd expect return in a for loop to return from the sub, not the loop.
10:53 smls jnthn: Yeah, it does work like that in P5 too
10:54 smls with the bare blocks provided by built-in constructs like map
10:55 smls ➜  perl -E 'sub a { map { return; } 42; say "alive" }; a(); say "end"'
10:55 smls end
10:55 jnthn Was gonna say
10:57 daxim_ oh wow, the return only worked incidentally.  I probably have lots of wrong code
10:57 cognominal joined #perl6
10:58 jnthn .tell skids See around http://irclog.perlgeek.de/perl6/2015-07-24#i_10947364 but I suspect your recent improvements to error reporting may have regressed the reporting here
10:58 yoleaux jnthn: I'll pass your message to skids.
11:02 nine timotimo: I'm not sure the GIL alone is a sufficient answer. Since even in Python you'd have to set some thread context
11:10 ggherdov joined #perl6
11:16 Psyche^ joined #perl6
11:16 AlexDaniel joined #perl6
11:19 timotimo at least sharing thread-local variables doesn't become problematic, though?
11:20 ShimmerFairy m: say "ABCB".comb("B")
11:20 camelia rakudo-moar f971db: OUTPUT«Cannot call comb(Str: Str); none of these signatures match:␤    (Cool $: *%_)␤    (Cool $: Regex $matcher, $limit = { ... }, *%_)␤    (Str:D $: *%_)␤    (Str:D $: Regex $pat, $limit = { ... }, :$match, *%_)␤  in block <unit> at /tmp/ARID97e7kc:1…»
11:21 ShimmerFairy ^ S32::Str says this should work, but do we really need a string-constant-based comb?
11:21 pnu joined #perl6
11:23 jnthn ShimmerFairy: I think split has one; if so, it's a nice consistency if comb does too
11:24 ShimmerFairy jnthn: fair enough, it just seems kinda silly for comb (though I imagine  +$str.comb("B")  would be a nice trick)
11:25 jnthn True.
11:28 moritz https://www.reddit.com/r/lolphp/comments/3eaw98/mt_rand1_php_int_max_only_generates_odd_numbers/
11:28 moritz and https://www.reddit.com/r/lolphp/comments/3eaw98/mt_rand1_php_int_max_only_generates_odd_numbers/ctdifqp in particular
11:31 timotimo This script was stopped while abusing our resources
11:33 brrt joined #perl6
11:38 AlexDaniel timotimo: it is just a bunch of odd numbers
11:39 timotimo 01f36c6700000001, 3ea3da3300000001, 728f8ab300000001 ...
11:39 AlexDaniel yea
11:40 moritz it hurts
11:40 moritz they just scale up the numbers
11:41 timotimo well
11:41 timotimo it *is* a mersenne twister implementation
11:41 timotimo how do you expect it to react? :)
11:41 ShimmerFairy I think rakudo has a similar gap of zeros in its random numbers atm (though hopefully not for the same reasons :P)
11:41 timotimo hm, maybe consume two "numbers" from the twister
11:42 piotr_ joined #perl6
11:42 moritz timotimo: yes, and bin-pack them into one
11:42 piotr_ left #perl6
11:43 timotimo right
11:43 timotimo like you would expect any random number generator to do it
11:43 timotimo but now you can't
11:43 timotimo because backwards compatibility
11:43 colomon Doesn’t moar do that?
11:43 ShimmerFairy Or use a 64-bit twister (C++11 gives you mt19937_64 even)
11:43 timotimo time to implement mt_rand_really
11:47 brrt perl5 question; how do I add the directory including the script to the 'use' include directory
11:47 brrt literally: i have perl tools/tree-expr-compiler.pl and i want to use SEXPR.pm
11:47 brrt which is located in tools/SEXPR.pm
11:49 brrt preferably by command line flag
11:49 brrt for some reason, perl tools/foo.pl -Ifoo/ doesn't work
11:50 brrt oh, perl -Itools/ tools/foo.pl does
12:00 tinyblak joined #perl6
12:00 AlexDaniel m: if True if { };
12:00 camelia rakudo-moar f971db: OUTPUT«5===SORRY!5=== Error while compiling /tmp/K_ECBvZk56␤Missing block␤at /tmp/K_ECBvZk56:1␤------> 3if True if 7⏏5{ };␤»
12:01 AlexDaniel missing block? But there it is
12:01 timotimo haha
12:01 AlexDaniel does anybody have any idea how I can make it eat that block?
12:02 jnthn It's missing a block where it expects one :)
12:02 AlexDaniel jnthn: before second "if" then? Then what's up with the cursor?
12:03 jnthn Dunno
12:03 jnthn std: if True if { };
12:03 camelia std 28329a7: OUTPUT«5===SORRY!5===␤Missing block at /tmp/XbS0PJUJZo line 1:␤------> 3if True 7⏏5if { };␤Parse failed␤FAILED 00:00 135m␤»
12:03 jnthn That gets it where it wants to go.
12:04 AlexDaniel oooh, holly std does it right again
12:04 AlexDaniel -l
12:04 amurf joined #perl6
12:05 brrt camelia outputs color? :-o
12:06 brrt or
12:06 AlexDaniel brrt: yea?
12:06 brrt never seen that before
12:07 arnsholt Always has, I think
12:07 timotimo for a long time
12:08 jnthn Upgraded/changed IRC client maybe?
12:08 brrt pidgin, rather than polari
12:08 brrt so yeah
12:09 timotimo i think it outputs color as ascii sequences, no?
12:09 FROGGS brrt: welcome in 2015 :o)
12:10 brrt :-)
12:10 brrt (polari is supposed to be modern gnome3, figure that)
12:11 FROGGS modern often does not mean colourful though
12:11 FROGGS looking at you, iPhone and BlackBerry
12:12 brrt that's a shame, i think, i like colours
12:15 * moritz too, as long as they are black and white :-)
12:16 * FROGGS has not yet seen a color which was black and white
12:16 jnthn Yeah, but you didn't do an optics PhD... :)
12:17 * moritz didn't finish it either
12:18 jnthn Oh, I thought you had...
12:19 moritz no, after two years I started a real job
12:21 jnthn You made it two years further than me :)
12:21 Begi joined #perl6
12:22 * jnthn did ponder a PhD, but ended up liking solving problems in the real world, and disliking the snobbery in much of the academic programming langauge research field
12:22 llfourn joined #perl6
12:23 timotimo a snobbery?!
12:23 jnthn I suspect I've done at least as much innovation here on the Perl 6 project as I woulda in a PhD, but I suspect what I've done here will be more use to others.
12:24 AlexDaniel m: .say if $_ < 6 for 5, 9, 2, 5;
12:24 camelia rakudo-moar f971db: OUTPUT«5␤2␤5␤»
12:24 AlexDaniel it looks so weird :)
12:24 Juerd jnthn++
12:28 colomon jnthn++
12:29 AlexDaniel m: (1, 2, 3).map: { $_ * 2 }.say
12:29 camelia rakudo-moar f971db: OUTPUT«-> (;; $_? is parcel) { #`(Block|69712880) ... }␤Unhandled exception: Method 'count' not found for invocant of class 'Bool'␤   at <unknown>:1  (/home/camelia/rakudo-inst-2/share/nqp/lib/Perl6/BOOTSTRAP.moarvm::4294967295)␤ from src/gen/m-CORE.setting…»
12:29 AlexDaniel I'm not sure what this code should actually mean, but the error is scary
12:29 * colomon pondered a PhD, but liked the idea of making money rather than just spending it.  :)
12:29 timotimo m: { $_ * 2 }.say
12:29 camelia rakudo-moar f971db: OUTPUT«-> (;; $_? is parcel) { #`(Block|56863456) ... }␤»
12:30 ShimmerFairy m: (1, 2, 3).map({ $_ * 2 }.say)
12:30 camelia rakudo-moar f971db: OUTPUT«-> (;; $_? is parcel) { #`(Block|57261040) ... }␤Unhandled exception: Method 'count' not found for invocant of class 'Bool'␤   at <unknown>:1  (/home/camelia/rakudo-inst-2/share/nqp/lib/Perl6/BOOTSTRAP.moarvm::4294967295)␤ from src/gen/m-CORE.setting…»
12:30 ShimmerFairy ^ It ideally would be spec'd as equivalent to that :)
12:31 AlexDaniel ShimmerFairy: sure
12:31 jnthn I think something has rather upset error reporting...
12:31 jnthn The message is correct but that's a low-level backtrace :S
12:32 ShimmerFairy m: (1,2,3).map(True)
12:32 camelia rakudo-moar f971db: OUTPUT«Unhandled exception: Method 'count' not found for invocant of class 'Bool'␤   at <unknown>:1  (/home/camelia/rakudo-inst-2/share/nqp/lib/Perl6/BOOTSTRAP.moarvm::4294967295)␤ from src/gen/m-CORE.setting:10482  (/home/camelia/rakudo-inst-2/share/perl6/ru…»
12:32 ShimmerFairy ^ golfs to that
12:32 AlexDaniel yay
12:33 jnthn multi method map($block, :$label) is rw {
12:33 jnthn If you hate it, shoulda put an & on it
12:34 jnthn Were it &block, it'd give a signature binding error saying it wanted a callable thing
12:34 ShimmerFairy jnthn: Shouldn't that be  Callable $block  anyway? (Like it was/is in method grep)
12:34 ShimmerFairy (if the coder insisted on the $ sigil, that is)
12:34 jnthn ShimmerFairy: Callable $block is equivalent, yeah
12:34 jnthn I don't mind much either way
12:34 AlexDaniel jnthn: should I submit rakudobug or will you fix it right away?
12:35 jnthn AlexDaniel: Submit bug, and maybe just maybe somebody else will fix it 'cus I'm still finishing up my non-Perl 6 tasks.
12:35 AlexDaniel jnthn: no problem
12:35 ShimmerFairy Hah, wow, I'm surprised to find a bug in the specs: token directive { < % c s d u o x e f g X E G b p n i D U O F > }  (will fix of course)
12:38 bjz joined #perl6
12:39 AlexDaniel OK done
12:41 smls What is "IBM Code Page 437" called for the purposes of Perl 6's .decode ?
12:41 timotimo probably "NYI"?
12:42 ShimmerFairy It probably _would_ be CP437 , as that's the abbreviation I usually see.
12:42 AlexDaniel is there any unicode equivalent to * (Whatever) ?
12:42 smls its not that unusual of an encoding; older file formats like ZIP and NFO, specify it as the default.
12:42 AlexDaniel * * 2 looks horrible
12:43 smls AlexDaniel:  you can always use {$_ * 2}
12:43 AlexDaniel * × 2
12:44 tinyblak joined #perl6
12:44 AlexDaniel smls: yeah, hm, true
12:44 tinyblak_ joined #perl6
12:52 diana_olhovik joined #perl6
12:55 ShimmerFairy Where did the Callable version of substr came from? That is,  "ABCD".substr({$_-1}) -> "D"  It's not documented in the spec AFAICT. I'll put it in the spec, I'm just curious where it came from :)
12:56 xinming_ joined #perl6
12:57 moritz ShimmerFairy: from .substr(*-2) for indexing from the end
12:57 smls Doesn't Rakudo use iconv or something for character encodings?
12:57 colomon Pretty sure that "ABCD".substr(*-1) has been understood to work for at least a decade.  :)
12:57 moritz smls: I'm pretty sure it doesn't
12:57 moritz colomon: used to be -1, iirc
12:57 ShimmerFairy moritz: That's what it seemed like (checking git history), I just wanted to make sure.
12:57 moritz though I can't say when
12:57 smls so it has a custom implementation for all encodings?
12:58 colomon moritz: perl 5, sure.  :)
12:58 ShimmerFairy colomon: it's not spec'd though, so seeing Callable \start in one of the signatures was unexpected :P (will be soon, I'm going through S32::Str to update it)
13:02 jnthn smls: For one iconv isn't reliably available everywhere anyway, and for another we need to decode to NFG.
13:03 jnthn smls: And even then I don't think every encoding in the world belongs in the core language either...
13:03 tinyblak joined #perl6
13:03 jnthn Granted the API for plugging in further ones is not really there yet.
13:04 diana_olhovik_ joined #perl6
13:05 colomon moritz: for what it’s worth, niecza had Callable arguments to substr back in January of 2012 (and possibly earlier, that’s just when that block of code was most recently changed).
13:05 * masak considered doing a PhD too, but didn't have an academic subject that he felt he was all that interested in at that time
13:09 tinyblak joined #perl6
13:12 tinyblak joined #perl6
13:12 ShimmerFairy m: say "ABCDE".substr(0..1, 4); say "ABCDE".substr(4, 0..1); # unless someone can explain these possible uses, for my own sanity I'll pretend they're not supposed to work
13:12 camelia rakudo-moar f971db: OUTPUT«AB␤E␤»
13:14 smls I agree with ShimmerFairy there
13:14 smls Shouldn't it accept (Int, Int) *or* (Pair) ?
13:15 smls s/Pair/Range/
13:16 ShimmerFairy yes, but the internal subs used to implement substr combined with a very generic multi signature made me try those, and to my surprise it works. Somehow.
13:16 ShimmerFairy m: say (0..1).Int
13:16 camelia rakudo-moar f971db: OUTPUT«2␤»
13:17 ShimmerFairy I believe that's how the second example happens. I think the first one is just ignoring the 4
13:20 brrt joined #perl6
13:21 lucasb joined #perl6
13:22 virtualsue joined #perl6
13:26 skids joined #perl6
13:29 tinyblak joined #perl6
13:37 Begi m: my $key = prompt('> '); y
13:37 camelia rakudo-moar f971db: OUTPUT«5===SORRY!5=== Error while compiling /tmp/hr_pYGbayZ␤Undeclared routine:␤    y used at line 1 (in Perl 6 please use tr instead)␤␤»
13:38 Begi my $key = prompt('> '); @letters.rotate($key)
13:38 Uniaika joined #perl6
13:38 Begi Why shoul I convert $key to Int ?
13:39 masak Begi: don't know, why should you?
13:39 PerlJam Begi: do you really mean to ask, why doesn't Perl do it for me?
13:39 Begi perljam : yes
13:40 PerlJam I dunno
13:40 PerlJam I suppose it could
13:41 masak PerlJam: I don't understand. what's Perl not doing here?
13:42 jnthn m: my @a = 1..10; say @a.rotate(2)
13:42 camelia rakudo-moar f971db: OUTPUT«3 4 5 6 7 8 9 10 1 2␤»
13:42 jnthn m: my @a = 1..10; say @a.rotate('2')
13:42 camelia rakudo-moar f971db: OUTPUT«Type check failed in binding $n; expected 'Int' but got 'Str'␤  in block <unit> at /tmp/h5MzeoRZjT:1␤␤»
13:42 jnthn Not Cool
13:43 masak yeah, I'd say that's very uncool.
13:43 * masak submits rakudobug
13:44 Begi I do not expect that with Perl6. Thanks masak
13:46 * masak spectests a fix
13:47 brrt does perl5 happen to have a quick-and-easy way to make permutations
13:47 masak oh dear, we didn't have a release yesterday, did we?
13:47 masak and no-one else volunteered, so I guess I'll do it...
13:48 JimmyZ_ joined #perl6
13:48 PerlJam brrt: With a module perhaps.
13:49 brrt ok; that won't do :-)
13:49 masak why won't a module do?
13:49 brrt because this has to run as part of MoarVM building
13:49 PerlJam you can also use glob(), but that's a little weird
13:49 PerlJam brrt: you can bundle the module
13:50 brrt yeah, that'd be possible too
13:50 brrt how would glob() work?
13:50 PerlJam brrt: http://blogs.perl.org/users/dana_jacobsen/2015/02/short-survey-of-modules-for-combinations-and-permutations.html  btw
13:51 masak you can use FatPacker to bundle modules, I think.
13:51 PerlJam brrt: perl -E 'say for glob("{a,b,c}{a,b,c}{a,b,c}");'  # re glob
13:51 masak https://metacpan.org/pod/App::FatPacker
13:51 masak PerlJam: that's not a permutation, though.
13:51 PerlJam no, but that's the start :)
13:51 brrt hmmm
13:52 * PerlJam can't keep *Everything* in his brain ready to use
13:52 masak I was just reading TAoCP 4A's way to generate permutations. that one seems very fast.
13:52 Begi To use my @a.rotate(prompt()), how can I do ?
13:53 masak Begi: @a.rotate(+prompt())
13:53 masak Begi: but I'm spectesting a fix.
13:54 amurf joined #perl6
13:54 masak failing test (13) in t/spec/S05-metasyntax/unknown.rakudo.moar
13:54 masak doesn't look like that one was me. someone want to investigate?
13:55 masak the other two failures are about locks and async, so I think they are non-deterministic (flappy bird) tests.
13:55 Begi 'k thanks. When will it available ?
13:55 masak now.
13:55 dalek rakudo/nom: f14919c | (Carl Masak)++ | src/core/List.pm:
13:55 dalek rakudo/nom: make the argument to .rotate Cool
13:55 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/f14919ca80
13:56 PerlJam masak: Wouldn't Int(Cool) be a little more self-documenting?
13:57 masak PerlJam: you might be right. feel free to change it to that.
13:57 masak PerlJam: is there prior art? what do we do in other similar methods?
13:57 * PerlJam acks
13:57 * masak mentioned the fix in https://rt.perl.org/Ticket/Display.html?id=125677
13:57 tinyblak joined #perl6
13:58 * masak starts the release process, somewhat reluctantly
13:58 masak it bothers me that we went a day late. I was trying to prevent that yesterday, but somehow failed.
13:58 masak guess everyone is in vacation mode or something ;)
13:59 dalek rakudo/nom: 75374dd | (Carl Masak)++ | docs/release_guide.pod:
13:59 dalek rakudo/nom: grab this release
13:59 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/75374dd93d
14:00 diana_olhovik_ joined #perl6
14:00 jnthn masak: On release stuff: I fear we may have a nasty regression in error reporting. :/
14:00 masak :/
14:00 masak jnthn: tell me more. should we hold off the compiler release for it?
14:00 masak jnthn: is it likely to get fixed soon?
14:01 jnthn masak: Let me try and see what's up with it
14:01 masak jnthn: is there something we could revert before the release?
14:01 masak ok, good.
14:01 * masak prepares the release in the meantime
14:01 jnthn masak: Yeah a revert may be in order. We'll see.
14:01 timotimo the moarvm changelog seems kind of sparse at the moment
14:01 skids Well, I can easily restore the errors.  As to why the backtrace is (Any) is a depper nystery
14:01 yoleaux 10:58Z <jnthn> skids: See around http://irclog.perlgeek.de/perl6/2015-07-24#i_10947364 but I suspect your recent improvements to error reporting may have regressed the reporting here
14:02 * PerlJam notices that Parcel has a .rotate method that's remarkably similar to List's
14:02 masak was moarvm released this month?
14:02 masak (no rush -- still a ways off from releasing Rakudo)
14:02 jnthn masak: Not yet, I guess I'd better take care of that today also.
14:03 masak jnthn: if you don't, then I have the perfect excuse not to release Rakudo today :P
14:03 khw joined #perl6
14:03 * lizmat is just awake, didn't backlog and wonders what needs to be reverted
14:04 lucasb PerlJam: yep, Parcel's .rotate has the same problem: (1,2,3).rotate('1')
14:04 skids lizmat: some case that wasn't tested fell afoul of my Failure/Exception improvements.
14:04 PerlJam We apparently only use things like Int(Cool) in very few places.
14:05 lucasb Should it be just Int() ? Passing a Num like "@a.rotate(1.5)" hangs in here
14:05 skids Not sure how important the regression is versus what the improvements fixed, but I'm spectesting a half-patch that at least gets the error message back.
14:05 skids (just not the backtrace)
14:05 jnthn Well, the case in the backlog today was quite ugly.
14:05 lizmat lucasb: feels to me that it should indeed be Int() rather than Int(Cool)
14:06 skids jnthn: does it affect all exceptions which are thrown from the moar level?
14:06 lizmat because of anybody makes their own class with an .Int method, it would most likely not inherit from Cool, but Any
14:06 lizmat *if
14:07 ShimmerFairy I just want to ask, does Str.wordcase's "smartmatches case insensitively" make sense to anyone else? (Note that it currently does not do this in rakudo). I'm not sure how the compiler is supposed to ensure this when the $where parameter accepts anything
14:07 masak jnthn: mind if I name this month's release "Prague"? :D
14:07 lizmat masak: I would have taken the release if: 1. I could generate the necessary keys, and 2. I wouldn't have been otherwise occupied here in PDX
14:08 masak gah, I can't generate the necessary keys either :(
14:08 masak or, at least I failed last time.
14:08 lizmat masak: +1 to Prague  :-)
14:08 masak did anyone *succeed* since I tried back in April?
14:08 ShimmerFairy I get the feeling you'd have to pass m:i// to ensure it does the right thing anyway, so there's not much point in saying the compiler is responsible.
14:09 jnthn lizmat: But you can't coerce arbitrary things anyway really; Cool is the typical base type for "things that know how to coerce"
14:09 jnthn skids: Still doing the build
14:09 lizmat so you're saying that if someone creates a numeric like class, it should inherit from Cool ?
14:09 ShimmerFairy masak: generate keys for what? I see something about GPG keys under step 13, but that shouldn't be dependent on rakudo... right?
14:10 masak to me, Cool is "those string-int-double things that sit in Perl 5 scalars"
14:10 masak ShimmerFairy: no, but it's part of the release process now.
14:10 jnthn lizmat: If they want it to behave like the built-in ones, yes
14:10 timotimo Coercable Objects Or l'exception
14:10 masak ShimmerFairy: and I tried last time -- even prepared it a day in advance -- and still failed. :(
14:10 * timotimo heads off for the rest of the day
14:11 jnthn lizmat: I agree it wants to be Int(Cool) though
14:11 ShimmerFairy masak: I actually have two GPG keys (last one generated in October). I've been meaning to generate a third one with my actual real name, but I've been lazy :P (I believe I've always kgpg to do it, fwiw)
14:12 masak if someone has the keys working, I can send the files to them and they can apply the keys.
14:12 lizmat jnthn: hmmm... I think it will be harder to explain needing to inherit from Cool, then just supplying an .Int method to have your object coerce to an Int
14:12 masak if not, I will try my best, and if I can't get it to work, I might release the stuff keyless.
14:12 lizmat because it is more general
14:12 masak I will need help uploading nqp and Rakudo to the normal places anyway.
14:13 lizmat jnthn: like, if you want your class coercable to Foo, you supply a .Foo method
14:13 lizmat if you want your class to be coercable to Set, you only need to supply a .Set method
14:13 lizmat that's general and easy to explain
14:14 ShimmerFairy Personally, I think Int(Cool) should only be used in core (and in general) for cases where you know the incoming type _has_ to be Cool. Otherwise it should be Int() to cover more ground.
14:15 jnthn The point of Cool is that types that want to behave weak can mark themselves out as doing so; the expectation is they can coerce themselves to something stringy or something numeric.
14:15 masak ShimmerFairy: you have a point. but that is kind of what Cool is for, as a guarantee of being coercible to (among other things) Int.
14:16 domidumont joined #perl6
14:16 masak it's possible that now that we have coercion types, the need for Cool is somewhat diminished.
14:16 jnthn We already had one complaint earlier today about a confusing error message because of a signature accepting Any rather than Callable.
14:16 lizmat masak: I think it is indeed less needed
14:16 ShimmerFairy masak: So types that Cool covers are redundant with coerced type params? That's... suboptimal.
14:16 masak I wouldn't say redundant.
14:17 ShimmerFairy masak: of course not, or else Int() and Cool would be equivalent :P  I still say it's suboptimal that this kind of choice exists.
14:17 dalek rakudo/nom: 9908374 | (Carl Masak)++ | docs/announce/2015.07.md:
14:17 dalek rakudo/nom: stub new release announcement 2015.07.md
14:17 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/9908374a11
14:17 masak ShimmerFairy: it would be a fun experiment to remove Cool in a branch, I guess.
14:17 jnthn It's sub-optimal people whine without understanding the reasosn for things properly too, but we can't all have what we want. :/
14:18 ShimmerFairy (though unfortunately I daren't dream that Cool would be removed in time for September)
14:18 jnthn skids: Got a latest build; looking a bit more closely now
14:18 ShimmerFairy masak: I agree, that does sound interesting.
14:18 lizmat re: http://irclog.perlgeek.de/perl6/2015-07-24#i_10946843  "is hyperable"
14:19 masak jnthn: Dunning-Kruger and youth. have patience. :)
14:19 lizmat point taken, will start working on making it really parallelize after the release
14:19 [Tux] joined #perl6
14:19 skids jnthn: I sent a PR with the half-fix.
14:19 jnthn skids: looking
14:20 ShimmerFairy Well, regardless I think it's a valid question on whether non-core types should just implement the appropriate coercion methods or inherit from Cool too in order to mesh with core functions.
14:20 jnthn lizmat: Aye; I think it needs doing as part of the overall GLR stuff.
14:20 jnthn ShimmerFairy: Cool is also where a bunch of methods we want to behave weakly typed on their invocant live.
14:22 lizmat jnthn: maybe before we do parallelize >>. , we need to develop some back pressure functionality in .cue ing jobs
14:22 dalek rakudo/nom: c0cd929 | skids++ | src/core/Exception.pm:
14:22 dalek rakudo/nom: Half-fix regression where somehow we now get a Backtrace of (Any)
14:22 dalek rakudo/nom:   This just improves the printer to handle that gracefully and
14:22 dalek rakudo/nom:   still output the error message.  Why the backtrace is (Any) in the
14:22 dalek rakudo/nom:   first place still needs to be figured out.
14:22 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/c0cd929c53
14:22 dalek rakudo/nom: 417660b | jnthn++ | src/core/Exception.pm:
14:22 dalek rakudo/nom: Merge pull request #476 from skids/Failure2
14:22 dalek rakudo/nom:
14:22 dalek rakudo/nom: Half-fix regression where somehow we now get a Backtrace of (Any)
14:22 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/417660b15c
14:23 masak I'm about to update the ChangeLog. anyone who has implemented or fixed something during the past month might want to double-check if their thing is already in there or not.
14:23 tinyblak joined #perl6
14:23 lizmat so that .cue ing jobs for 100K elements will block after reaching a high-water mark
14:23 lizmat and unblock when reaching a low-water mark again
14:23 jnthn lizmat: Oh, there's no way we cue every single array item separately, that's horrible.
14:23 skids jnthn: unfortunately I'm not supposed to be working on this at this moment in time :-)
14:23 ShimmerFairy It seems to me that Cool centralizes quite a bit of code for the core types. I'm just not sure if making non-core types inherit it in order to work with core functions is a good move.
14:24 jnthn skids: OK, I can try and figure it out if you're busy
14:24 skids Yeah, firewall rules to transcribe :-/
14:24 ShimmerFairy masak: I don't think my grep arity fix is in there
14:25 lizmat jnthn: re not cueing every element: then how do you see that happen generically ??  batches of 10?  100? 1000?
14:25 masak ShimmerFairy: ok, adding that
14:26 jnthn lizmat: Something more like that, yes
14:26 lizmat jnthn: yuck  :-)
14:26 jnthn lizmat: That plus some work stealing is the standard way to implement these things.
14:26 lizmat work stealing?
14:27 skids jnthn: I did add some tests for the new behaviors to roast.  Not entriely thorough but it should catch  backsliding of the new stuff vs any fixes.
14:28 dalek rakudo/nom: cd17648 | (Carl Masak)++ | docs/ChangeLog:
14:28 dalek rakudo/nom: small fixes and one addition
14:28 dalek rakudo/nom:
14:28 dalek rakudo/nom: Added ShimmerFairy++'s .grep fix.
14:28 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/cd176483ae
14:28 jnthn perl6-m -e "(1,2,3).map(True)" # still gives the icky error
14:28 jnthn m: return
14:28 camelia rakudo-moar 75374d: ( no output )
14:28 jnthn That one doesn't swallow the error any more
14:28 jnthn Though gives it as SORRY
14:28 jnthn Hmm
14:29 tinyblak joined #perl6
14:29 skids star: (1,2,3).map(True)
14:29 camelia star-m 2015.03: OUTPUT«Unhandled exception: Method 'count' not found for invocant of class 'Bool'␤   at <unknown>:1  (/home/camelia/rakudo-star-2015.03/install/languages/nqp/lib/Perl6/BOOTSTRAP.moarvm::4294967295)␤ from src/gen/m-CORE.setting:9542  (/home/camelia/rakudo-star-201…»
14:30 jnthn Oh...
14:30 jnthn Hm, so that *isn't* a regression
14:30 lizmat .?count ?
14:30 jnthn Oh, I get I know why.
14:31 jnthn lizmat: No, we should just never bind True
14:31 jnthn lizmat: The problem we're looking at here is the backtrace being a VM-level one, not a Perl 6 level one
14:31 jnthn lizmat: Which I'd thought was a regression, but it seems not.
14:31 lizmat ack
14:32 jnthn m: ({a=>1,b=>2}, {c=>3,d=>4}).map({ if (.<a>) {return $_} else {return} })
14:32 camelia rakudo-moar 75374d: OUTPUT«Unhandled exception: P6opaque: no such attribute '$!storage'␤   at src/gen/m-CORE.setting:10402  (/home/camelia/rakudo-inst-1/share/perl6/runtime/CORE.setting.moarvm::121)␤ from src/gen/m-CORE.setting:10392  (/home/camelia/rakudo-inst-1/share/perl6/run…»
14:32 jnthn That one still dies horribly..
14:33 jnthn star: ({a=>1,b=>2}, {c=>3,d=>4}).map({ if (.<a>) {return $_} else {return} })
14:33 camelia star-m 2015.03: OUTPUT«Unhandled exception: P6opaque: no such attribute '$!storage'␤   at src/gen/m-CORE.setting:9460  (/home/camelia/rakudo-star-2015.03/install/languages/perl6/runtime/CORE.setting.moarvm::116)␤ from src/gen/m-CORE.setting:9450  (/home/camelia/rakudo-star-2015.…»
14:33 jnthn But also no regression.
14:34 jnthn OK, skids++ is not as to blame as I first feared ;)
14:34 skids Well, I am for one of them :-)
14:34 jnthn skids: Which one?
14:34 skids m: sub foo { ({a=>1,b=>2}, {c=>3,d=>4}).map({ if (.<a>) {return $_} else { return } }) }; say foo
14:34 camelia rakudo-moar 75374d: OUTPUT«Unhandled exception: Method 'is-runtime' not found for invocant of class 'Any'␤   at <unknown>:1  (/home/camelia/rakudo-inst-1/share/perl6/runtime/CORE.setting.moarvm:print_exception:4294967295)␤ from src/gen/m-CORE.setting:15704  (/home/camelia/rakudo…»
14:35 jnthn oh, that one :)
14:35 jnthn star: sub foo { ({a=>1,b=>2}, {c=>3,d=>4}).map({ if (.<a>) {return $_} else { return } }) }; say foo
14:35 camelia star-m 2015.03: OUTPUT«Attempt to return outside of any Routine␤  in block  at src/gen/m-CORE.setting:660␤  in block <unit> at /tmp/dJhSweb9kA:1␤␤»
14:35 jnthn m: sub foo { ({a=>1,b=>2}, {c=>3,d=>4}).map({ if (.<a>) {return $_} else { return } }) }; say foo
14:35 camelia rakudo-moar 75374d: OUTPUT«Unhandled exception: Method 'is-runtime' not found for invocant of class 'Any'␤   at <unknown>:1  (/home/camelia/rakudo-inst-1/share/perl6/runtime/CORE.setting.moarvm:print_exception:4294967295)␤ from src/gen/m-CORE.setting:15704  (/home/camelia/rakudo…»
14:35 jnthn oh, duh, not rebuilt yet ;)
14:35 skids But with the new fix it will do a SORRY with that PR applied, just the bactrace is AWOL.
14:36 jnthn Yeah, OK, so that one *is* a regression.
14:38 lizmat hmmm... a SORRY is a compile time error, how can that have a backtrace ?
14:39 skids lizmat: it's not supposed to do a sorry, it just punts to the sorry code if it gets a null backtrace as a workaround.  Could probably do better than that.
14:39 jnthn lizmat: It only does sorry 'cus it's missing the backtrace...
14:40 jnthn Ah, skids was faster
14:40 jnthn skids: This bit:
14:40 jnthn -    method throw($bt?) {
14:40 jnthn +    method throw(Exception:D: $bt?) {
14:40 jnthn Is that right?
14:40 tinyblak joined #perl6
14:40 lizmat I have no idea
14:40 lizmat breakfast and stuff&
14:40 jnthn skids: 'cus we do:
14:40 jnthn nqp::bindattr(self, Exception, '$!bt', $bt); # Even if !$bt
14:40 jnthn And that field would want to be a BackTrace?
14:40 * masak .oO( Breakfast and Stuff at Tiffany's )
14:41 jnthn oh argh
14:41 jnthn I misread, ignore me :)
14:41 skids jnthn: that clears the cache if you throw the same exception again (not .rethrow but .throw)
14:43 darutoko joined #perl6
14:44 JimmyZ_ joined #perl6
14:45 inokenty joined #perl6
14:45 tinyblak joined #perl6
14:46 masak I again extend a request for someone who knows about the key management for Rakudo releases.
14:46 masak I would like to make that work this time around, but I'm not willing to let it become a blocker for the release.
14:50 tinyblak joined #perl6
14:50 masak TimToady: in 63de9a14, why is the \d+ outside of the <?before ...> ? doesn't that mean the \d+ gets consumed at that point?
14:50 ShimmerFairy gpg --gen-key  should bring up a menu to generate a key for you, but I'm guessing you've already tried that. (I'm not too clear, since I've always use kgpg to do stuff with keys directly)
14:50 masak -    token prefix:sym<^>   { <sym>  <O('%symbolic_unary')> }
14:50 masak +    token prefix:sym<^>   {
14:50 masak +        <sym>  <O('%symbolic_unary')>
14:50 masak +        [ \d+ <?before \. <?alpha> > <.worry: "Precedence of ^ is looser than method; please parenthesize"> ]?
14:50 masak +    }
14:50 masak ShimmerFairy: I already tried that. (and succeeded.)
14:50 masak ShimmerFairy: I failed later, when trying to sign the tar file.
14:51 masak by the way, I must say it's really nice to go through the git log. it's huge. there's so much happening with Rakudo right now. everyone++
14:53 tinyblak joined #perl6
14:55 ShimmerFairy masak: I managed to sign (and then verify) a file with  gpg --default-key "Name" --sign file  (though I think I need the default-key part only because my gpg won't accept the right default for some reason >_<)
14:56 ShimmerFairy Aaaand of course after saying that I figure out why it wasn't accepting it :P
14:56 masak ShimmerFairy: ok, sounds promising. thank you.
14:57 masak ShimmerFairy: isn't it Very Late where you're at?
14:57 ShimmerFairy masak: specifically 7:57am. My sleep schedule is non-existent at the moment :P
14:57 ugexe for a package's hooks management, is the ideal solution a script(s) that is run in a new process instead of runtime mixins applied to the package manager itself? separate scripts would allow for modules to still be manually install-able
14:57 nwc10 7:57am - good morning, ShimmerFairy :-)
14:57 Woodi joined #perl6
14:58 masak ShimmerFairy: sounds nice :) some of us are too old and responsible to manage that kind of sleep schedule :P
14:58 inokenty joined #perl6
14:58 jnthn skids: Darn, it is weird. The Exception has a $!ex that has a good backtrace and pulling that out with getattr and passing it off to Backtrace.new works fine.
14:58 ShimmerFairy masak: it's nice except for the part where you want something a bit more sane :P
14:58 jnthn skids: And $!bt contains something non-concrete
14:59 jnthn well, and falsey
14:59 masak m: say :16(':8<377>')
14:59 camelia rakudo-moar cd1764: OUTPUT«255␤»
15:00 masak m: say :8<377>
15:00 camelia rakudo-moar cd1764: OUTPUT«255␤»
15:00 flussence ↓ thanks for doing that for me, moritz++
15:00 yoleaux 02:20Z <japhb> flussence: I sent you a PR for Text-Tabs-Wrap which works around a Rakudo parsing bug and allows Text::Wrap to compile again.
15:00 Begi m : my @list = 'a','b','c'; say first-index('b', @list);
15:00 Begi m: my @list = 'a','b','c'; say first-index('b', @list);
15:00 camelia rakudo-moar cd1764: OUTPUT«1␤»
15:01 Begi I'm not sure, but is it a mistake in the doc ? http://doc.perl6.org/type/List#routine_first-index
15:02 PerlJam Begi: what mistake?
15:02 ShimmerFairy That might be a bug introduced by the new Pos type lizmat added. masak may want to revert that for this release
15:02 ShimmerFairy (if it's in fact causing issues)
15:02 masak m: :16(':8< :10<500> >')
15:02 camelia rakudo-moar cd1764: OUTPUT«Unhandled exception: Cannot convert string to number: base-8 number must begin with valid digits or '.' in ':8<⏏ :10<500> >' (indicated by ⏏)␤   at <unknown>:1  (/home/camelia/rakudo-inst-2/share/perl6/runtime/CORE.setting.moarvm:throw:4294967295)␤…»
15:03 xinming joined #perl6
15:04 Begi In the doc, it's wriitten first-index(@list, $matcher). Isn't it ($matcher, @list) ?
15:04 PerlJam Begi: oh no.  The docs are showing the method form and you're using the sub form.
15:04 flussence I have a minor whine: the linenoise repl should read stuff buffered on stdin at startup rather than clearing it. I always end up writing half a line before realising it didn't get any of it
15:04 Begi PerJam : Oups, sorry'
15:05 PerlJam Begi: I guess the docs need improving so that others won't make the same mistake.
15:06 PerlJam flussence: I second your minor whine.  (I do that too :)
15:06 Begi PerlJam: Yes, it's not alwais clear
15:07 masak skids: I'd like to discuss commit messages with you at some point when you have time :)
15:07 masak skids: tl;dr: second line should be blank.
15:08 dalek rakudo/nom: eba7e0e | (Carl Masak)++ | docs/ChangeLog:
15:08 dalek rakudo/nom: [docs/ChangeLog] add many features/fixes from log
15:08 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/eba7e0e638
15:09 masak I now believe docs/ChangeLog to be caught up with the month. please let me know if I missed something important.
15:11 Hor|zon joined #perl6
15:12 dalek rakudo/nom: 42113a0 | (Carl Masak)++ | docs/announce/2015.07.md:
15:12 dalek rakudo/nom: make selection of features/fixes for announcement
15:12 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/42113a0f37
15:13 jnthn oh...I think I found the regression
15:13 dalek specs: 6d5f4ac | ShimmerFairy++ | S32-setting-library/Str.pod:
15:13 dalek specs: Update S32::Str to align better with S15
15:13 dalek specs:
15:13 dalek specs: This commit removes quite a bit of cruft from the pre-S15 days, and
15:13 dalek specs: additonally reformats the code blocks so that they stand out more in the
15:13 dalek specs: file, and for longer function signatures, makes them less crowded.
15:13 dalek specs:
15:13 dalek specs: The only functional changes in this commit is the removal of the special
15:13 dalek specs: exception for C<&tcuc> in the C<wordcase> method (since C<&tcuc>
15:13 dalek specs: apparently doesn't exist), and a clarification for sprintf that the '%'
15:13 dalek specs: directive can only appear as a literal '%%' (both bringing it in line
15:13 dalek specs: with C's printf behavior and ensuring nonsense like '%1$+*v0.5%' isn't
15:13 dalek specs: accepted).
15:13 dalek specs:
15:13 dalek specs: Ideally this synopsis would talk about the role(s) shared by the string
15:13 dalek specs: types, instead of focusing on C<Str> as a model for other types.
15:13 dalek specs: However the nature of these potential roles isn't clear enough yet to
15:13 dalek specs: make that kind of change to this.
15:13 dalek specs: review: https://github.com/perl6/specs/commit/6d5f4ac192
15:15 masak could someone *please* fix this? :( :( :( https://gist.github.com/masak/3b35401f80d3b6708d5f
15:15 masak (the deprecation message is coming from *inside* of Rakudo, how is this even possible?)
15:15 masak that is, we're spamming the user with something that's not their fault.
15:15 llfourn joined #perl6
15:15 masak I believe I've seen exactly this before. I think I may have submitted an RT ticket. will check.
15:17 masak yep, we ran into this back in June: http://irclog.perlgeek.de/perl6/2015-06-22#i_10785456
15:18 ugexe ill give it a shot in 10 minutes
15:18 ugexe looks easy enough
15:18 masak ugexe: the .pipe thing?
15:18 ShimmerFairy masak: there's IO/Path.pm:122 and io_operators.pm:85 , after a quick grep
15:18 masak well, anyone is welcome to fix this.
15:18 ShimmerFairy (of src/core only, I should clarify)
15:18 masak the winning condition is very simple.
15:19 masak you run the contributors.pl6 script, and it *doesn't* give you the deprecation warning :)
15:19 dalek rakudo/nom: 814ea11 | moritz++ | tools/contributors.pl6:
15:19 dalek rakudo/nom: Avoid deprecation warning in tools/contributors.pl6
15:19 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/814ea1164f
15:19 * moritz won
15:19 masak moritz++!
15:19 PerlJam heh
15:19 flussence .oO( do we need a Carp.pm6? )
15:19 ugexe a better solution still is run with :cwd set to $repo
15:20 skids masak: I can do that.
15:20 masak confirmed. moritz++'s fix wins.
15:20 jnthn skids: Got it, and I'm not even sure it was you who bust it
15:20 jnthn Attempt to return outside of any Routine in block <unit> at -e:1
15:20 jnthn \o/
15:20 jnthn I'd better spectest it :)
15:21 masak hm, I guess "Sue" == "Sue Spence" in the contributors list?
15:21 masak and who is "root"? do we have a name there? :)
15:22 jnthn masak: I think so
15:22 masak root@atlas.clarku.edu -- oh, that seems to be skids
15:22 masak skids: you commit things as root? :P
15:22 moritz masak: all "root" mails are contributed to "Reginald Oot" at $work :-)
15:22 masak moritz: "attributed"?
15:22 masak also, :P
15:22 moritz yes
15:23 skids masak: no, but I might have accidentally pulled that tree as root once.
15:23 masak I don't see how that causes a commit to be created by root.
15:23 AlexDaniel this channel is so crazy right now :)
15:23 masak AlexDaniel: it's Release Day.
15:23 skids masak: I've never looked at how any of that is plumbed.
15:23 PerlJam AlexDaniel: when is this channel not crazy?
15:23 dalek rakudo/nom: de3420e | moritz++ | tools/contributors.pl6:
15:23 dalek rakudo/nom: use run(:cwd(...)) in contributors.pl6, ugexe++
15:23 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/de3420ec03
15:24 masak skids: I don't know who of us is more confused right now.
15:24 AlexDaniel masak: you know, it wasn't Release Day until you mentioned it
15:24 AlexDaniel :)
15:24 masak dang.
15:24 masak :P
15:24 skids masak: it hasn't been a priority for me to figure out why git did that, is all.
15:24 dalek rakudo/nom: 0d2fea2 | (Carl Masak)++ | docs/announce/2015.07.md:
15:24 dalek rakudo/nom: [announce] add this month's contributor list
15:24 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/0d2fea251c
15:25 masak skids: did you see my "second line blank" comment above? :)
15:25 masak ^^ people plz check above list for duplicates, kthx
15:25 skids masak: yep, I'll take care about that in the future.
15:25 moritz skids: git config --global user.email 'your email here'
15:25 jnthn skids, masak: Fix for the error reporting regression nearly spectust
15:25 masak skids: gureit. :)
15:25 masak also people plz have a read-through of the entire announcement. I believe it's ready now.
15:26 masak kthx, kthx
15:26 PerlJam ShimmerFairy: Are you not in CREDITS?
15:26 jnthn Oh wow, I was top contrib this month?
15:26 jnthn masak: $?ROUTINE and $?BLOCK
15:26 masak jnthn: I believe they're listed in first-commit order :)
15:26 moritz * Numeric conversion ops (== > etc) for DateTimes
15:26 jnthn &?ROUTINE and &?BLOCK, no?
15:26 masak oh!
15:26 moritz shouldn't those be comparison ops?
15:26 masak yes
15:26 masak moritz: yes
15:26 * masak fixes both of these
15:27 masak moritz++ jnthn++
15:27 moritz Calling the .clone method with alternate values, no longer changes original
15:27 moritz the comma, is a bit weird, no?
15:27 masak aye
15:27 moritz .grep and &grep now consumes multiple elements for many-param blocks
15:27 moritz s/consumes/consume/
15:27 masak aye
15:27 jnthn masak: ENTER phaser now works as an r-value may be worth a mention
15:28 masak aye
15:28 * masak is, somehow, keeping up
15:29 dalek rakudo/nom: c683fe9 | jnthn++ | src/core/Exception.pm:
15:29 dalek rakudo/nom: Fix a regression in reporting illegal C<return>.
15:29 dalek rakudo/nom:
15:29 dalek rakudo/nom: The X::ControlFlow set of exceptions coming with the backtrace of the
15:29 dalek rakudo/nom: place that did the wrong control flow is certainly a good thing, but
15:29 dalek rakudo/nom: unfortunately the patch to make that happen meant we lost backtraces
15:29 dalek rakudo/nom: for C<return>. This fixes the regression.
15:29 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/c683fe90c6
15:29 dalek rakudo/nom: 8cedd59 | (Carl Masak)++ | docs/ (2 files):
15:29 dalek rakudo/nom: numerous improvements to ChangeLog and announcement
15:29 dalek rakudo/nom:
15:29 dalek rakudo/nom: jnthn++ and moritz++
15:29 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/8cedd59b6e
15:29 mr-foobar joined #perl6
15:30 jnthn masak: So, known regression dealt with :)
15:30 masak oh phew
15:30 masak also, jnthn++
15:30 AlexDaniel m: [::|||||||||::]
15:30 camelia rakudo-moar cd1764: OUTPUT«5===SORRY!5===␤Arg-flattening | is only valid in an argument list␤at /tmp/kd9N6GbARI:1␤------> 3[::|||7⏏5||||||::]␤Arg-flattening | is only valid in an argument list␤at /tmp/kd9N6GbARI:1␤------> 3[::||||7⏏5|||||::]␤Arg-flatten…»
15:30 jnthn masak: I'm away for a bit, then I'll do the MoarVM release.
15:30 masak no problemo
15:31 jnthn AlexDaniel: yay, we get that one right :)
15:32 jnthn (For those curious, :: is a valid term, and || is a valid infix)
15:32 jnthn (So the first actual problem is the |
15:32 jnthn Uh, third |, which is parsed as a prefix
15:32 AlexDaniel :D
15:33 jnthn AlexDaniel: Do you just feed random strings to the compiler to see what happens and report LTA ones? :P
15:33 AlexDaniel jnthn: haha
15:33 AlexDaniel jnthn: how did you know
15:33 skids masak: WRT changes, some of the new .assuming stuff may be user-visible in that a curry can now fail at the curry point, though most of those failures are caught at the moment (will turn them on in a week or so.)
15:33 brisby joined #perl6
15:33 masak skids: feel like adding a line about that in ChangeLog?
15:34 skids Well, if you feel like taking a PR :-)
15:34 AlexDaniel jnthn: well, it depends. Sometimes I'm writing real code and wonder "huh, but what if I put this character over there? It's crazy, but what's going to happen?"
15:34 AlexDaniel jnthn: and sometimes I'm hunting stuff down on purpose
15:34 AlexDaniel jnthn: like what's going to happen if I try to execute a directory
15:34 masak skids: sure. or paste the line here and I'll add it
15:35 AlexDaniel jnthn: then, when it reports an error, I'm almost reading it out loud
15:35 AlexDaniel jnthn: and trying to do what it suggests me
15:35 AlexDaniel jnthn: like, "expecting a block". So OK, I'll give you a block and see what happens next
15:35 ShimmerFairy PerlJam: what CREDITS?
15:36 ugexe a human fuzzer
15:36 masak ShimmerFairy: https://github.com/rakudo/rakudo/blob/nom/CREDITS
15:36 skids masak: ".assuming now produces closures with populated signatures, and tests binding of primers."
15:36 PerlJam ShimmerFairy: rakudo's CREDITS file.   I just noticed that you show up as "ShimmerFairy" in the list of contributors (which is fine if you want it that way)
15:36 telex joined #perl6
15:36 masak skids: "primers"?
15:37 inokenty joined #perl6
15:37 jnthn AlexDaniel: :)
15:37 AlexDaniel jnthn: actually I thought that masak already reported all of the obvious stuff, but it is very far from that
15:37 skids The design docs go on a minirant about how .assuming should be called "priming" not "currying"
15:37 jnthn AlexDaniel: Well, good error reporting is really a lot of work.
15:37 AlexDaniel jnthn: so yeah, sometimes I'm just doing stuff that nobody tried before, and there is a problem in most of them
15:37 ShimmerFairy PerlJam: I'm not even in that one (that masak linked) O_o
15:37 masak skids: yes. but what is a primer?
15:37 dalek rakudo/nom: dd3d859 | moritz++ | docs/announce/2015.07.md:
15:37 dalek rakudo/nom: Be more up-to-date in the acknowledgements
15:37 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/dd3d85904a
15:38 skids The targuments you prime with.
15:38 PerlJam masak: The parameters are being "primed with values"
15:38 jnthn AlexDaniel: Sometimes the number of LTA tickets I see in RT makes me think we're doing badly at it. Then various other compilers remind me we actually do pretty well :)
15:38 PerlJam ShimmerFairy: you are or I wouldn't have noticed :)
15:38 jnthn (MSVC being the one that most often reminds me)
15:38 jnthn Anyway, afk for a bit
15:39 AlexDaniel jnthn: well, not that much. I think that fixing stuff is way harder. But it seems like you will fix most of my tickets some day if I wont keep reporting stuff like I did earlier.
15:39 ShimmerFairy PerlJam: it's really not in the link masak shared though D:
15:39 masak skids, PerlJam: can I just write "arguments"?
15:39 AlexDaniel jnthn: once I woke up and saw notifications about 3 closed tickets. Whoa
15:40 AlexDaniel all fixed by you
15:40 AlexDaniel I've actually mentioned it earlier, but it seems like Perl 6 community is the only one out there where all of these tiny issues are taken care of
15:40 ShimmerFairy PerlJam: not in this one: https://github.com/rakudo/rakudo/blob/nom/CREDITS
15:41 moritz the python error messages are also... LTA
15:41 skids masak: That's ambiguous because there are two sets of "arguments"
15:41 AlexDaniel it feels like in other languages they will tell you "less than awesome? so what?"
15:41 masak skids: only one set gets bound, though, no?
15:41 ugexe the github description needs an edit 'Rakudo Perl -- Perl 6 on Parrot, JVM and MoarVMhttp://rakudo.org/'
15:41 PerlJam ShimmerFairy: well, in any case ... if you want future contributions to attribute you as something other than ShimmerFairy you can add your info to CREDITS.  (also it would be a good place to indicate that lue and ShimmerFairy are (were?) the same person for those of us who forget :)
15:41 AlexDaniel I mean development of other languages
15:41 skids masak: that depends on how smart the compiler is
15:42 moritz "ImportError: Cannot import name X" -- why not?
15:42 ShimmerFairy PerlJam: I show up when running tools/contributors.pl6 , if that's what you meant
15:42 isBEKaml joined #perl6
15:43 AlexDaniel m: say [::]/\/\/\/\/\/\[:/
15:43 camelia rakudo-moar cd1764: OUTPUT«11␤»
15:43 masak 11 :)
15:43 PerlJam AlexDaniel: You clearly win the Perl6 obfuscation contest ;)
15:44 AlexDaniel oh well, I wonder what is the prize
15:44 ShimmerFairy masak: would it be alright if I added my name to CREDITS, or is it too close to release time to do that? (Don't mind either way)
15:44 moritz AlexDaniel: the price is 11, of course
15:44 masak ShimmerFairy: please go ahead.
15:45 isBEKaml moritz, price isn't prize ;-)
15:45 masak no-one said it was :)
15:45 PerlJam m: say [::]/\/\/\/\/\/\[\/\/:/
15:45 camelia rakudo-moar cd1764: OUTPUT«11␤»
15:45 PerlJam huh
15:45 flussence m: say 1 XZXZXZXZXZXZXZXZXZXZXZ 1 # I remember the fun we had figuring out why this caused OOM-death
15:45 camelia rakudo-moar cd1764: OUTPUT«1 1␤»
15:45 masak 11, obviously, is what Perl 6 goes up to.
15:45 AlexDaniel m: say [::]/\/\[:/ # much simpler
15:45 camelia rakudo-moar cd1764: OUTPUT«11␤»
15:46 moritz for those who are wondering: http://perlpunks.de/paste/show/55b25dc9.7bcc.ab
15:46 dalek rakudo/nom: 8d1a7a0 | ShimmerFairy++ | CREDITS:
15:46 dalek rakudo/nom: Add me to the CREDITS
15:46 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/8d1a7a05d1
15:46 PerlJam m: say [::]/\/\[:/;  say [::]/\/\[:/;
15:46 camelia rakudo-moar cd1764: OUTPUT«11␤11␤»
15:47 moritz m: say +::
15:47 camelia rakudo-moar cd1764: OUTPUT«MVMContext representation does not support elems␤  in block <unit> at /tmp/BEAqz7tswG:1␤␤»
15:47 dalek rakudo/nom: 235eaef | (Carl Masak)++ | docs/release_guide.pod:
15:47 dalek rakudo/nom: [docs/release_guide.pod] move this release down
15:47 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/235eaeff58
15:49 dalek rakudo/nom: 0851d1d | (Carl Masak)++ | docs/announce/2015.07.md:
15:49 dalek rakudo/nom: [announce] update ShimmerFairy's name in contrib list
15:49 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/0851d1da12
15:49 masak ok, next up is NQP release. I think that one'll block on Moar release.
15:50 masak but I'll take a break now anyway to go out and push the swing for $babby.
15:50 masak to be continued, later :)
15:50 masak &
15:53 dalek rakudo/nom: fd69d42 | lizmat++ | docs/ChangeLog:
15:53 dalek rakudo/nom: We don't have postfix ! as sugar for "is required"
15:53 dalek rakudo/nom:
15:53 dalek rakudo/nom: Just yet, anyway.
15:53 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/fd69d42903
15:58 cognominal m:   ' nqp::die(); nqp::x() ' ~~ m:g/ 'nqp::' $<nm>=\w+ /
15:58 camelia rakudo-moar dd3d85: ( no output )
15:58 cognominal m:  say  ' nqp::die(); nqp::x() ' ~~ m:g/ 'nqp::' $<nm>=\w+ /
15:58 camelia rakudo-moar dd3d85: OUTPUT«「nqp::die」␤ nm => 「die」 「nqp::x」␤ nm => 「x」␤»
15:58 cognominal It does not make sens to me
16:01 flussence m: .say for ' nqp::die(); nqp::x() ' ~~ m:g/ 'nqp::' $<nm>=\w+ /
16:01 camelia rakudo-moar dd3d85: OUTPUT«「nqp::die」␤ nm => 「die」␤「nqp::x」␤ nm => 「x」␤»
16:02 flussence looks normal to me... what did you want it to return?
16:02 AlexDaniel m: class What { has $.x is rw is readonly = 10; }; my $o = What.new; $o.x = 5; say $o
16:02 camelia rakudo-moar dd3d85: OUTPUT«What.new(x => 5)␤»
16:02 AlexDaniel is rw is readonly!
16:02 AlexDaniel is readonly is rw works exactly the same way, by the way
16:03 flussence well that makes sense, they only add accessors, not delete them
16:04 dalek rakudo/nom: d12e1eb | ugexe++ | CREDITS:
16:04 dalek rakudo/nom: Update CREDITS
16:04 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/d12e1eb492
16:04 dalek rakudo/nom: fc09cd7 | japhb++ | CREDITS:
16:04 dalek rakudo/nom: Merge pull request #477 from ugexe/patch-12
16:04 dalek rakudo/nom:
16:04 dalek rakudo/nom: Update CREDITS with info for ugexe
16:04 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/fc09cd73b3
16:05 cognominal m:   ' nqp::die(); nqp::x() ' ~~ m:g/ 'nqp::' $<nm>=\w+ /; say @$<nm>
16:05 camelia rakudo-moar dd3d85: OUTPUT«postcircumfix:<{ }> not defined for type List␤  in block <unit> at /tmp/YgTug8k0Ib:1␤␤Actually thrown at:␤  in block <unit> at /tmp/YgTug8k0Ib:1␤␤»
16:06 yqt joined #perl6
16:09 RabidGravy joined #perl6
16:09 RabidGravy boom
16:09 cognominal m: say  ' nqp::die(); nqp::x() ' ~~ m:g/ 'nqp::' $<nm>=[\w+] /; say $_<nm> for $/
16:09 camelia rakudo-moar dd3d85: OUTPUT«「nqp::die」␤ nm => 「die」 「nqp::x」␤ nm => 「x」␤postcircumfix:<{ }> not defined for type List␤  in block <unit> at /tmp/CRa4NFrQD2:1␤␤Actually thrown at:␤  in block <unit> at /tmp/CRa4NFrQD2:1␤␤»
16:11 moritz note that $<nm> isn't quantified
16:11 cognominal m:   ' nqp::die(); nqp::x() ' ~~ m:g/ 'nqp::' $<nm>=[\w+] /; say $_<nm> for @$/
16:11 camelia rakudo-moar dd3d85: OUTPUT«「die」␤「x」␤»
16:11 cognominal ok, now everything makes sense
16:12 dalek rakudo/nom: b8d3772 | lizmat++ | docs/announce/2015.07.md:
16:12 dalek rakudo/nom: Remove ! sugar mention from announcement
16:12 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/b8d3772210
16:15 TimToady masak: re 63de9a14, notice the next patch put the \d+ inside
16:15 iH2O joined #perl6
16:16 iH2O left #perl6
16:18 kaare_ joined #perl6
16:22 dalek roast: 49828cd | PerlJam++ | S (2 files):
16:22 dalek roast: Add some Cool tests for Parcel.rotate and List.rotate
16:22 dalek roast: review: https://github.com/perl6/roast/commit/49828cd6e0
16:22 AlexDaniel m: .say.say.say
16:22 camelia rakudo-moar fc09cd: OUTPUT«(Any)␤True␤True␤»
16:22 dalek rakudo/nom: 6f292f5 | PerlJam++ | src/core/IO/Handle.pm:
16:22 dalek rakudo/nom: Return $*IN and $*OUT rather than create a new IO::Handle
16:22 dalek rakudo/nom:
16:22 dalek rakudo/nom: This allows for $*IN.ins to always have the number of lines read from
16:22 dalek rakudo/nom: stdin no matter how stdin was opened.  See RT#113100
16:22 synbot6 Link:  https://rt.perl.org/rt3/Public/Bug/Display.html?id=113100
16:22 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/6f292f5a6c
16:22 dalek rakudo/nom: 53bf41f | PerlJam++ | src/core/ (2 files):
16:22 lizmat .tell masak did you use the p5 script for the contributors?
16:22 yoleaux lizmat: I'll pass your message to masak.
16:22 dalek rakudo/nom: Make .rotate's argument Int(Cool)
16:22 dalek rakudo/nom:
16:22 dalek rakudo/nom: This will do the right thing when a non-integer number is passed.
16:22 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/53bf41f957
16:23 lizmat .tell masak the p6 version also looks at doc / examples / etc. contributions
16:23 yoleaux lizmat: I'll pass your message to masak.
16:24 moritz lizmat: why not remove the p5 version?
16:24 lizmat :-)  will do
16:26 dalek rakudo/nom: 7cf9425 | lizmat++ | tools/contributors.pl:
16:26 dalek rakudo/nom: Remove obsolete contributors script, moritz++
16:26 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/7cf9425aaf
16:31 dalek rakudo/nom: 7a15752 | lizmat++ | docs/announce/2015.07.md:
16:31 dalek rakudo/nom: Use p6 version of contributor list
16:31 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/7a1575211e
16:32 xinming joined #perl6
16:32 japhb Looks like only 'skids' and a few on the second to last line are now un-CREDITS-ed
16:33 lizmat yeah, do you know their RealName(TM) ?
16:33 japhb No, but even if I did, I wouldn't CREDITS them without their permission -- that would be a pseudonymity violation, methinks.
16:34 lizmat yeah
16:34 lizmat I did remove "root" from the list, that just looks bad  :-)
16:34 japhb AGREED
16:34 japhb .oO( Just change it to 'Groot' )
16:35 lizmat that would be a animationy violation  :-)
16:35 japhb I am Groot.
16:35 lizmat nobody seems to have noticed my Pos related changes, or everybody agrees with them
16:36 japhb I usually do my patch reviews in the evening, while y'all are asleep
16:36 lizmat if everybody agrees with them, I think they should be mentioned in the ChangeLog
16:36 japhb (Yes, I know you are currently in my TZ, I meant "usually asleep")
16:37 lizmat :-)
16:37 * lizmat needs to get to OSCON for the last batch of presentations
16:38 lizmat to those that didn't notice it:
16:38 lizmat m: if "foo".index(*f") -> $pos { say $pos }
16:38 camelia rakudo-moar fc09cd: OUTPUT«5===SORRY!5=== Error while compiling /tmp/fE7Cft0NrF␤Unable to parse expression in argument list; couldn't find final ')' ␤at /tmp/fE7Cft0NrF:1␤------> 3if "foo".index(*7⏏5f") -> $pos { say $pos }␤    expecting any of:␤        infix␤ …»
16:38 lizmat m: if "foo".index("f") -> $pos { say $pos }
16:38 camelia rakudo-moar fc09cd: OUTPUT«0␤»
16:39 lizmat aka, index/rindex/grep-index/first-index/last-index return 0 but True, so it's only False if the needle was not found
16:40 japhb Oh, yeah, I like that quite a bit as a user.  I never liked > -1.  However -- does this make it less optimizable?
16:41 PerlJam Didn't the synopses call that StrPos at one point?
16:41 japhb Perhaps that's a jnthn question
16:44 [Coke] if that was in nom, definitely want someone to say yes or no before it goes into a release.
16:46 ShimmerFairy PerlJam: kinda, but earlier I mentioned how a StrPos-like thing could be useful for more than strings
16:46 lizmat [Coke]: it is in nom
16:46 lizmat and it's not StrPos, but Pos
16:46 lucasb I found Blob and Buf that responds to .Int but are not Cool, so they would work with a coercion of Int(), but will not work with Int(Cool). I know, this is a extreme case of passing this types to .rotate, so I'm just mentioning it :)
16:47 [Coke] is it from the design docs or something new?
16:47 PerlJam lucasb: um ... that sounds like a *good* thing though.
16:48 lizmat [Coke]: the actual implementation is:
16:48 lizmat my class Pos is Int { multi method Bool(Pos:) { self.defined } }
16:48 PerlJam lucasb: at least as far as the .rotate method goes
16:48 lizmat so instead of creating Int's on return, they create Pos
16:48 njmurphy joined #perl6
16:48 lizmat I'm pretty sure that optimizes pretty well
16:51 domidumont joined #perl6
16:52 dalek rakudo/nom: e12548c | lizmat++ | src/core/ (3 files):
16:52 dalek rakudo/nom: Postpone introduction of Pos until after release
16:52 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e12548c59b
16:53 lizmat [Coke]: it was not in any design docs, just something that occurred to me yesterday as to the simplicity of implementation
16:59 AlexDaniel joined #perl6
17:03 lizmat fwiw, there are quite a number of optimization opportunities in the core itself if .index and friends would return 0 but True
17:12 jnthn ugexe: Updated the GitHub description; thanks for noticing
17:12 dalek doc: fdb37eb | paultcochrane++ | lib/Type/IO/Path.pod:
17:12 dalek doc: Move IO::FileTestable methods into IO::Path
17:12 dalek doc:
17:12 dalek doc: This addresses issue #97.  The methods and operators are now on IO::Path
17:12 dalek doc: anyway (IO::FileTestable no longer exists).
17:12 dalek doc: review: https://github.com/perl6/doc/commit/fdb37ebe9b
17:12 dalek doc: 2502d2d | paultcochrane++ | / (6 files):
17:12 dalek doc: Remove IO::FileTestable
17:12 dalek doc:
17:12 dalek doc: This addresses issue #97.
17:12 dalek doc: review: https://github.com/perl6/doc/commit/2502d2d4cc
17:12 dalek doc: ec719b8 | paultcochrane++ | type-graph.txt:
17:12 dalek doc: Add Proc to the type-graph information
17:12 dalek doc: review: https://github.com/perl6/doc/commit/ec719b8bf4
17:13 moritz [ptc]++
17:15 jnthn lizmat: .DEFINITE would optimize even better than .defined, but only marginally since we can multi-level inline.
17:16 lizmat ok, after release I will re-introduce with .DEFINITE
17:16 lizmat otherwise you think it's a useful feature ?
17:17 jnthn lizmat: It seems sane at first blush :)
17:17 lizmat :-)
17:17 * lizmat is off to OSCON
17:18 jnthn Have fun :)
17:18 espadrine_ joined #perl6
17:19 El_Che lizmat: yeah!
17:19 El_Che lizmat: do some bootleg recordings of the perl room ;)
17:29 Hor|zon joined #perl6
17:30 lucasb m: $a::b = 42; say $a::b
17:30 camelia rakudo-moar e12548: OUTPUT«42␤»
17:30 dalek ecosystem: 7c6cd5b | azawawi++ | META.list:
17:30 dalek ecosystem: Add Atom::Electron - An experiment to write cross-platform Perl 6 desktop web-based applications using the Electron platform
17:30 dalek ecosystem: review: https://github.com/perl6/ecosystem/commit/7c6cd5b9b4
17:30 AlexDaniel m: ...
17:30 camelia rakudo-moar e12548: OUTPUT«Unhandled exception: Stub code executed␤   at <unknown>:1  (/home/camelia/rakudo-inst-1/share/perl6/runtime/CORE.setting.moarvm:throw:4294967295)␤ from src/gen/m-CORE.setting:17505  (/home/camelia/rakudo-inst-1/share/perl6/runtime/CORE.setting.moarvm:t…»
17:30 lucasb ^^ What is this? Is it a implicity 'our' variable? No need to predeclare it?
17:31 lucasb m: sub f { my $a::b = 42 }; f(); say $a::b
17:31 camelia rakudo-moar e12548: OUTPUT«42␤»
17:31 jnthn lucasb: If you fully qualify it then yes, you're talking about a package variable
17:31 jnthn And no, you don't have to declare those
17:31 AlexDaniel is it correct that ... throws that thing?
17:31 moritz though 'my' plus fully qualified seems odd
17:31 dalek ecosystem: dc344b0 | azawawi++ | META.list:
17:31 dalek ecosystem: Fix typo. azawawi--
17:31 dalek ecosystem: review: https://github.com/perl6/ecosystem/commit/dc344b0f67
17:31 moritz AlexDaniel: yes
17:31 amurf joined #perl6
17:31 AlexDaniel m: !!!
17:31 camelia rakudo-moar e12548: OUTPUT«Stub code executed␤  in block <unit> at /tmp/62Y68XpcVp:1␤␤»
17:32 AlexDaniel m: ???
17:32 camelia rakudo-moar e12548: OUTPUT«Stub code executed  in block <unit> at /tmp/s2jelIzNwv:1␤»
17:32 AlexDaniel moritz: why?
17:32 lucasb And the 'my' case? Doesn't it seem that it escaped its scope?
17:33 jnthn Oh, I didn't sopt the my $a::b
17:33 smls joined #perl6
17:33 jnthn That should probably be illegal :)
17:33 moritz AlexDaniel: ... fails, but it's in sink context, which makes failures fatal
17:33 lucasb m: my $a::b = 10; { my $a::b = 20; say $a::b }; say $a::b
17:33 camelia rakudo-moar e12548: OUTPUT«20␤20␤»
17:34 AlexDaniel moritz: ok, but why does it show that stacktrace?
17:34 moritz AlexDaniel: dunno
17:34 AlexDaniel I mean, should I really see it?
17:35 moritz probably not
17:35 moritz m: ...; 1
17:35 camelia rakudo-moar e12548: OUTPUT«Unhandled exception: Stub code executed␤   at <unknown>:1  (/home/camelia/rakudo-inst-1/share/perl6/runtime/CORE.setting.moarvm:throw:4294967295)␤ from src/gen/m-CORE.setting:17505  (/home/camelia/rakudo-inst-1/share/perl6/runtime/CORE.setting.moarvm:t…»
17:36 jnthn Yuu see it because the sinking is done by the code in perl6.nqp's MAIN method, not inside of your program.
17:36 jnthn We should decide how we want to fix that :)
17:37 moritz jnthn: but my example certainly didn't sink from MAIN
17:37 jnthn moritz: oh. hm
17:37 moritz jnthn: I had the same idea initially :-)
17:37 jnthn moritz: But...uh
17:37 jnthn locally I get sensible stack traces
17:38 jnthn Stub code executed in block <unit> at -e:1
17:38 jnthn Actually thrown at: in block <unit> at -e:1
17:38 jnthn Not sure why we don't get that locally
17:38 moritz locally I get no backtrace at all
17:38 moritz just "Sutb code executed\n\n"
17:38 AlexDaniel huh?
17:38 jnthn I'm on c683fe9 locally
17:39 moritz I'm on e41624e
17:39 * jnthn pulls latest
17:39 moritz could be that some of these latest backtrace tweaks are platform specific?
17:40 jnthn That'd be...odd
17:40 jnthn I'm doing -e fwiw
17:40 * moritz too
17:40 jnthn perl6-m -e "...; 1"
17:40 moritz camelia doesn't
17:40 jnthn That gives me what I pasted above
17:40 moritz it uses tempfiles
17:40 jnthn *nod*
17:40 jnthn Doesn't explain why you got no stacktrace though
17:40 AlexDaniel I'm using a file as well
17:40 moritz *nod*
17:41 jnthn Oh, you're back on a commit from 21st July
17:41 moritz jnthn: ok, I can reproduce your output with a current build
17:41 moritz and I get the long backtrace when running it from a file
17:42 jnthn Me too...wtf
17:42 AlexDaniel :)
17:42 jnthn But...look at the stack trace
17:43 moritz and it mentions throw, sink and MAIN in the backtrace, even though it's not the last statement
17:43 jnthn Yes, what on earth.
17:44 AlexDaniel it is funny how a three-character program can confuse jnthn and moritz that much :D
17:44 jnthn ohhh
17:44 jnthn ... does fail
17:44 [Coke] is this the failure has two backtraces problem?
17:44 jnthn Which does a return
17:44 jnthn And...I have no idea what that return hits, but nothing sensible
17:46 jnthn But the -e codepath and the file one is no doubt a bit different.
17:50 flussence you can also replace -e with <<< (in bash, anyway) to trick perl6 into thinking it's a file
17:59 dalek perl6-roast-data: 93e1420 | coke++ | / (9 files):
17:59 dalek perl6-roast-data: today (automated commit)
17:59 dalek perl6-roast-data: review: https://github.com/coke/perl6-roast-data/commit/93e1420698
18:02 virtualsue joined #perl6
18:04 nwc10 t/spec/S17-procasync/no-runaway-file-limit.t is capable of hanging
18:05 nwc10 at least, the one I started 2 hours ago was still rather busy when I came back
18:05 nwc10 I can't give you massively more useful diagnostics than that. I didn't attack it thoroughly with gdb and strace to work out where it was stuck
18:07 masak lizmat: I did use the .pl6 version of the script -- about three times at this point.
18:07 yoleaux 16:22Z <lizmat> masak: did you use the p5 script for the contributors?
18:07 yoleaux 16:23Z <lizmat> masak: the p6 version also looks at doc / examples / etc. contributions
18:07 masak TimToady: ah, should've seen there was a followup commit.
18:09 masak lizmat: I didn't notice Pos, somehow.
18:10 masak lizmat: but I have a bad feeling, design-wise about that addition, so I'm glad we're waiting until after release.
18:11 masak it feels like "finally we solved the ever-elusive semipredicate problem!" (*thud*)
18:11 masak "this has been another episode of 'Famous Last Words'..."
18:17 masak I do kinda like the pattern `if $s.index($t) -> $pos { ... }`, and that it works.
18:18 masak and I think the ecosystem fallout would be quite mild.
18:18 captain-adequate joined #perl6
18:19 masak but I think we're breaking some kind of Least Surprise in making a value `0 but True`. it confuses people.
18:19 TimToady maybe we want ifdef and whiledef instead
18:19 masak we've had quite limited success with exactly that for shell return values.
18:19 masak TimToady: yes, and I wouldn't mind if they were macros, defined in the ecosystem.
18:20 masak they don't feel itchy enough to be core, somehow.
18:20 masak but being able to define/import them at will, that would be great.
18:20 * masak adds them to his growing list of real macro use cases
18:21 masak I like `ifdef` a lot more than I like `0 but True`
18:22 masak we need to figure out how a macro can be made to parse /ifdef <.ws> <xblock>/
18:23 kaare_ joined #perl6
18:27 nine May I please have a commit bit for rakudo? I sent my CLA to Karen back in June and she forwarded it to Patrick.
18:28 masak seems I have the privs to add you.
18:28 masak going to do that, following "forgiveness > permission", even though I don't know how to confirm that someone indeed got a CLA :)
18:29 masak nine: Github nick?
18:29 nine masak: niner
18:29 masak ah, 'niner'
18:29 masak got it
18:29 masak you should now be getting an invite.
18:30 dalek rakudo/nom: 280e942 | (Stefan Seifert)++ | docs/ChangeLog:
18:30 dalek rakudo/nom: Document incompatible change of P5 EVAL lang in ChangeLog
18:30 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/280e942451
18:30 nine masak: thank you very much :)
18:30 masak nine++
18:30 nine I am now a member of Rakudo Perl! Woohooo!
18:30 masak \o/
18:31 AlexDaniel what are these commit bits btw
18:32 lucasb idk if this idea is good, but if $x.defined (or $x.true) returned the original value "but True" instead of a ordinary boolean, would it fit this .index idiom? Something like 'if $s.index($t).defined -> $pos {}'
18:32 PerlJam Assuming the spreadsheet I have access to is still being updated upon receipt of signed CLAs, nine is not listed
18:33 nine AlexDaniel: I'm now allowed to push commits directly to the rakudo repository. Comes from the time of CVS and subversion, when even committing to a repository was a privileged operation.
18:33 nine PerlJam: is there an entry for Stefan Seifert?
18:34 PerlJam nine: no, that's what I was looking for :)
18:35 masak PerlJam: ok, so do I remove nine from commiters for now?
18:35 nine PerlJam: odd. I got an email from karen@perlfoundation.org at 2015-06-25 01:03 with "Thanks for sending this, and for wanting to contribute to Perl. I have let Patrick know that I have received it."
18:35 masak PerlJam: who or what updates that spreadsheet?
18:35 masak I'm inclined to trust nine on this one :>
18:35 PerlJam masak: Karen updates the spreadsheet afaik
18:36 masak ok, then I don't know what to do.
18:36 PerlJam masak: nothing, I think we're good.  She probably just hasn't updated the spreadsheet yet
18:36 masak *nod*
18:37 * jnthn is fine with nine++ keeping the bit too, fwiw :)
18:37 TimToady are we in release freeze yet?
18:37 masak no, but we will be later tonight.
18:37 * TimToady is thinking about the moving of ~~ to structural infix
18:37 masak I'll ping the channel when that happens.
18:38 masak TimToady: um, please don't do that just berfore release? :/
18:38 nine I've always found it strange that I may push freely to the the Perl 6 specs, the spectests, documentation and probably things I don't even know about with rakudo being the single exception
18:38 masak TimToady: maybe give it a month and check the ecosystem fallout?
18:38 * TimToady should at least fix the tests that would break, which will be compatible because it's just adding parens
18:38 masak that's fine.
18:39 jnthn Yes, *after* release is a good time to do such changes :)
18:39 [Coke] did anyone verify that we actually got niner's CLA?
18:39 nine Also if you take these things seriously, then without a CLA we may not even pull other people's changes, because the CLA is about rights to the code. It makes no difference if the code is pushed or pulled.
18:39 masak [Coke]: nine says he got confirmation from Karen.
18:40 masak nine: yeah, it's rather silly at this point.
18:40 masak nine: please don't be discouraged by the ceremony. I like your commits :>
18:40 jnthn When I've asked why we do it, it's mostly just a matter of degree, that is "make sure the people who're responsible for large amounts of the code are covered"
18:40 PerlJam [Coke]: the spreadsheet doesn't have his name on it however.
18:40 nine masak: oh it would take much more to discourage me :)
18:41 flussence .oO( I prefer sending pull requests from a distance anyway; more likely people will complain I screwed up *before* it gets inflicted on the wider world... :)
18:41 [Coke] yah, I don't see it there either.
18:41 masak PerlJam: but Karen sent an email, and Karen updates the spreadsheet. so it seems she confirmed getting the CLA but didn't update the spreadsheet yet.
18:41 [Coke] "why do we even have this system if we're not going to follow it?"
18:41 masak look, I can remove nine again.
18:41 flussence hysterical raisins, probably
18:41 [Coke] but we only have nine's word on that. :P
18:41 [Coke] Eh. just keep an eye on it.
18:41 PerlJam masak: I'd rather you not :)
18:42 jnthn Maybe somebody could mail Karen just to ask about updating the sheet? :)
18:42 masak yes, that sounds good.
18:42 PerlJam [Coke]: is Karen the only one who takes receipt of the CLAs?  Is she the only one who updates the spreadsheet?
18:42 nine flussence: I sent a pull request for my last change as well because I wanted people to look at it. Just updating the Changelog seemed not worth it :)
18:43 AlexDaniel TimToady: Some time ago you said that maybe -'x' should be added to grammars because it seems like a common thing, and typing <-[x]> is just way too much. Since then I can't get this thought out of my hand, typing <-[x]> is a real pain...
18:43 [Coke] PerlJam: What happens before the google doc is a mystery to me. It often involves receipt of physical mail.
18:44 PerlJam Did someone email Karen?  If not, I will.
18:44 AlexDaniel my head*
18:45 AlexDaniel although it is possible that I am the only one who is using it…
18:46 PerlJam AlexDaniel: the only one who is using <-[x]> ?   Assure you, you are not :)
18:46 FROGGS joined #perl6
18:47 AlexDaniel PerlJam: well, then speak up :)
18:48 rangerprice joined #perl6
18:48 PerlJam <-[...]> is a pain to type, but there are other features that have relieved some of the pressure of having to type it often.
18:49 AlexDaniel in fact, I think that "anything but x" is way more common than "any of x, ...". So, Huffmanly speaking, it is correct
18:50 AlexDaniel PerlJam: like?
18:54 AlexDaniel OH NOES
18:54 AlexDaniel m: say Date.new("0000-01-01").truncated-to('week');
18:54 camelia rakudo-moar 280e94: OUTPUT«-001-12-27␤»
18:55 AlexDaniel m: say Date.new("0000-01-01").pred()
18:55 camelia rakudo-moar 280e94: OUTPUT«-001-12-31␤»
18:55 AlexDaniel nooooo
18:55 dalek roast: ab605d9 | TimToady++ | S (9 files):
18:55 dalek roast: benign prep for ~~ going chained -> structural
18:55 dalek roast:
18:55 dalek roast: Just the addition of parentheses that will be required in the future.
18:55 dalek roast: review: https://github.com/perl6/roast/commit/ab605d96f4
18:55 Hor|zon joined #perl6
18:55 dalek rakudo/nom: cf09f8b | TimToady++ | src/core/ (2 files):
18:55 dalek rakudo/nom: benign prep for ~~ going chained -> structural
18:55 dalek rakudo/nom:
18:55 dalek rakudo/nom: Just a couple places that will need parens in the future.
18:55 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/cf09f8bbd9
19:04 Begi joined #perl6
19:05 lucasb m: say DateTime.now.later
19:05 camelia rakudo-moar 280e94: OUTPUT«No time unit supplied␤  in block <unit> at /tmp/mJXgwC6oPj:1␤␤»
19:05 lucasb m: say Date.today.later
19:05 camelia rakudo-moar 280e94: OUTPUT«Use of uninitialized value $unit of type Any in string context  in block <unit> at /tmp/P1Y8eVTqed:1␤Use of uninitialized value of type Any in string context  in block <unit> at /tmp/P1Y8eVTqed:1␤Cannnot use unit  with Date.delta␤  in block <unit> at…»
19:07 bin_005 joined #perl6
19:07 lucasb masak++ put this test in DateTime: die "No time unit supplied" unless %unit.keys;
19:07 lucasb Date could use the same...
19:08 FROGGS lucasb: can you pull request it?
19:08 lucasb FROGGS: sure, will do
19:08 FROGGS lucasb++
19:09 masak m: say Date.new("0000-01-01")
19:09 camelia rakudo-moar 280e94: OUTPUT«0000-01-01␤»
19:09 masak I don't know why we write 0000 there and not just 0
19:10 moritz because we produce and consume ISO8601?
19:12 TimToady because it sorts correctly for the next 7984 years?
19:13 masak oh, ISO-8601 actually seems to want it that way. never mind.
19:13 nine A bit short sighted isn't it? *hides*
19:13 masak nine: yeah, doesn't anticipate Y10K at all.
19:14 TimToady .oO(year A000)
19:14 AlexDaniel $d = $d.pred() for 1..500000;
19:14 AlexDaniel guess what
19:14 AlexDaniel -1369-01-18
19:15 flussence .oO( by Y10k maybe we'll have moved to a metric date system anyway... )
19:16 masak AlexDaniel: you can also do $d--
19:16 moritz ISO-8601 also totally neglects that earth might not be the only relevant reference frame for time measurements
19:16 AlexDaniel masak: oh cool
19:16 moritz m: say Date.today - 500000
19:16 camelia rakudo-moar 280e94: OUTPUT«0646-08-10␤»
19:17 moritz m: say Date.today - 5000000
19:17 camelia rakudo-moar 280e94: OUTPUT«-11674-01-10␤»
19:17 moritz if you want to skip the loop entirely
19:17 AlexDaniel yeah
19:17 AlexDaniel didn't know that
19:18 AlexDaniel ok, gonna eat a little bit, then report that
19:18 AlexDaniel by the way
19:18 AlexDaniel m: say Date.new("0000-02-29")
19:18 camelia rakudo-moar 280e94: OUTPUT«0000-02-29␤»
19:18 AlexDaniel m: say Date.new("0001-02-29")
19:18 camelia rakudo-moar 280e94: OUTPUT«day of 1/2 out of range. Is: 29, should be in 1..28␤  in block <unit> at /tmp/EMz5FiwSwE:1␤␤»
19:18 AlexDaniel what calendar is that?
19:19 masak Greg's.
19:19 masak ok, starting the nqp release cycle now.
19:20 AlexDaniel masak: is it actually defined on such old dates?
19:20 dalek nqp: 8bc386a | (Carl Masak)++ | VERSION:
19:20 dalek nqp: bump VERSION to 2015.07
19:20 dalek nqp: review: https://github.com/perl6/nqp/commit/8bc386a836
19:21 masak AlexDaniel: google "proleptic".
19:21 masak ok, `make realclean` didn't work properly in nqp for me.
19:21 masak but I did `git clean -xdf` instead, which should work just as well.
19:22 yqt joined #perl6
19:25 Begi1 joined #perl6
19:25 dalek rakudo/nom: cb4b31d | (Lucas Buchala)++ | src/core/Temporal.pm:
19:25 dalek rakudo/nom: disallow .later() without any named arguments
19:25 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/cb4b31d4b6
19:25 dalek rakudo/nom: 3458e97 | FROGGS++ | src/core/Temporal.pm:
19:25 dalek rakudo/nom: Merge pull request #478 from lucasbuchala/tempo
19:25 dalek rakudo/nom:
19:25 dalek rakudo/nom: disallow .later() without any named arguments
19:25 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/3458e9756d
19:26 masak ok, nqp ready for upload: http://masak.org/carl/tmp/nqp-2015.07.tar.gz
19:26 masak if ++someone with the proper ssh keys would be so kind. :)
19:27 FROGGS I'll do
19:27 masak yay
19:27 masak nqp tag pushed.
19:27 masak this concludes the nqp release cycle.
19:27 masak back to Rakudo.
19:28 masak ok, please. feature freeze.
19:28 FROGGS masak: have you signed the tarball and the .dsc at hand?
19:28 masak no.
19:28 FROGGS k
19:28 FROGGS np
19:28 masak if someone at some point is willing to *show* me, in excruciating detail, how the hell I sign tarballs, I'm willing to do that as part of the release process.
19:29 masak until such a point, though, I'm going to ignore the signing step.
19:29 moritz masak: do you have a gpg key already?
19:29 masak yes, I think so.
19:29 masak I'm not stupid, but I *feel* stupid when I follow every bloody step of some signing process, and still fail it at the last step :(
19:29 masak I'm not interested in learning about signing right now. feel free to show me at some point, though.
19:30 moritz masak: then gpg --armor -b $tarball (followed by entering the passphrase for your private key) should be enough
19:32 * masak tries
19:32 smls m: say Bool.HOW;
19:32 camelia rakudo-moar cf09f8: OUTPUT«Perl6::Metamodel::ClassHOW.new␤»
19:33 smls Is there a way to detect an enum type?
19:33 FROGGS m: say Bool ~~ Enum
19:33 camelia rakudo-moar cf09f8: OUTPUT«False␤»
19:33 geekosaur Bool is a special case IIRC
19:33 Begi1 I must make a presentation of Perl 6. In your opinion, what points should I approach ?
19:33 geekosaur because it's needed before Enum is set up
19:33 FROGGS I think Bool is not an enum in rakudo... but I could be mistakes
19:33 FROGGS mistaken*
19:34 masak also, beware the Enum type. it's not what you think it is.
19:34 smls m: enum A <foo bar baz>; say A.HOW
19:34 camelia rakudo-moar cf09f8: OUTPUT«Perl6::Metamodel::EnumHOW.new␤»
19:34 masak m: enum W <a b c>; say W ~~ Enum
19:34 camelia rakudo-moar cf09f8: OUTPUT«False␤»
19:34 FROGGS Begi1: who's the audience?
19:36 FROGGS Begi1: we often try to show how well it fits for the next decades... in the way it is designed to grow and get customized...
19:36 smls Given an enum type, can I find its member corresponding to index $i ?
19:37 FROGGS m: enum A <foo bar baz>; say A(1)
19:37 camelia rakudo-moar cf09f8: OUTPUT«bar␤»
19:37 FROGGS smls: ^^
19:37 smls nice, thanks
19:38 masak moritz: it "works" in that it's asking me for a password I created back in April when I tried this the first time. I don't recall if that's progress compared to the first time.
19:38 Begi1 FROGGS: computer scientists from... all levels. Mostly beginner in comouter programming
19:38 smls m: enum A <foo bar baz>; say A.HOW; say foo.HOW
19:38 camelia rakudo-moar cf09f8: OUTPUT«Perl6::Metamodel::EnumHOW.new␤Perl6::Metamodel::EnumHOW.new␤»
19:38 masak moritz: actually I think I failed on the "tag a commit" step back then. I'd have to hit the logs to be sure.
19:38 smls Also, can I differentiate between the enum and its members?
19:38 masak moritz: in either case, this is nice to tinker with, but I'd rather not let it block the release.
19:38 FROGGS Begi1: then show then how to build a json parser :o)
19:38 FROGGS Begi1: or something like that
19:39 AlexDaniel hahaaha
19:39 AlexDaniel m: say Date.new("0000-02-29") + 10000000000
19:39 camelia rakudo-moar cf09f8: OUTPUT«920823-7017919-9448928074␤»
19:39 AlexDaniel what is that! a phone number?
19:39 masak all the signing (and not understanding when it goes wrong) raises my stress levels and makes me less likely to want to be a release manager. :/
19:39 Begi1 FROGGS : Nice idea. I'll try to show an exemple
19:39 geekosaur uuid :p
19:39 masak AlexDaniel: that looks like a bug.
19:39 AlexDaniel masak: OH really?
19:39 Begi1 like a json parser :)
19:39 masak AlexDaniel: more exactly, some modulo is off somewhere.
19:40 masak AlexDaniel: if you could golf that, you'd have a ticket. :)
19:40 masak maybe even without golfing it, in fact.
19:40 AlexDaniel masak: isn't it short enough?
19:40 masak AlexDaniel: I think the year might be right.
19:40 masak AlexDaniel: it's short, but it's not revealing the real cause, which is somewhere inside Date.
19:40 AlexDaniel m: say Date.new("0000-02-29") + 1000000000
19:40 camelia rakudo-moar cf09f8: OUTPUT«-201898-7017920-858993469␤»
19:40 AlexDaniel m: say Date.new("0000-02-29") + 10000000000
19:40 camelia rakudo-moar cf09f8: OUTPUT«920823-7017919-9448928074␤»
19:40 AlexDaniel m: say Date.new("0000-02-29") + 10000000
19:40 camelia rakudo-moar cf09f8: OUTPUT«27379-03-26␤»
19:41 AlexDaniel masak: well, so negative year number is not a bug to you?
19:41 masak AlexDaniel: ...no. it's not. what's wrong with a negative year number?
19:42 AlexDaniel m: say Date.new("0000-02-29") - 200
19:42 camelia rakudo-moar cf09f8: OUTPUT«-001-08-13␤»
19:42 masak ok, continuing the Rakudo release cycle. feature freeze applies, folks.
19:42 AlexDaniel because it is not yyyy-mm-dd
19:42 masak AlexDaniel: what does ISO 8601 say about this?
19:43 dalek rakudo/nom: aee46fc | (Carl Masak)++ | tools/build/NQP_REVISION:
19:43 dalek rakudo/nom: [release] bump NQP revision
19:43 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/aee46fc6f6
19:43 PerlJam masak: re signing stress ...  [Coke]++ foresaw this.  Maybe we should have listened to him   :)
19:43 AlexDaniel “To represent years before 0000 or after 9999, the standard also permits the expansion of the year representation but only by prior agreement between the sender and the receiver.”
19:43 masak PerlJam: it should be easy, and stress-free. but it's not.
19:44 masak PerlJam: I *hate* it when a component I have no control over fails for reasons I don't understand.
19:44 AlexDaniel hm, so it looks like it is allowed
19:44 masak AlexDaniel: that said, I think -000 looks ugly.
19:44 masak AlexDaniel: it should maybe be -0000
19:44 AlexDaniel "by convention 1 BC is labelled +0000, 2 BC is labeled -0001, and so on"
19:45 dalek rakudo/nom: a7f193a | (Carl Masak)++ | VERSION:
19:45 dalek rakudo/nom: [release] bump VERSION
19:45 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/a7f193a0d7
19:45 AlexDaniel so yeah, it should be -0000, but I wonder what is going to happen to things that split by -
19:45 masak AlexDaniel: that quote makes it sound like we should never see -0000
19:46 AlexDaniel masak: and we don't?
19:46 AlexDaniel masak: we see just 0000
19:46 AlexDaniel which is ok
19:46 masak ok, good.
19:46 * masak is distraced
19:47 moritz m: say Date.new('20001-01-01')
19:47 camelia rakudo-moar cf09f8: OUTPUT«Invalid Date string '20001-01-01'; use yyyy-mm-dd instead␤  in block <unit> at /tmp/Gs89yhF0qM:1␤␤»
19:47 TimToady masak: that's fine, we don't have a tracing jit yet
19:48 moritz PerlJam: I don't really see the problem; if signing doesn't work for the release manager, there's no signature. Better to have some signed releases than none
19:48 diana_olhovik joined #perl6
19:48 AlexDaniel moritz: yeah you can't use all that when creating a date
19:48 smls Is it possible to declare an enum *without* installings its member types into the main namespace?
19:49 smls So you'd have to write A::Foo instead of Foo.
19:49 moritz m: constant A = anon enum A <Foo Bar>
19:49 camelia rakudo-moar cf09f8: ( no output )
19:49 moritz m: constant A = anon enum A <Foo Bar>; say Foo
19:49 camelia rakudo-moar cf09f8: OUTPUT«5===SORRY!5=== Error while compiling /tmp/NBSZ0PKggb␤Undeclared name:␤    Foo used at line 1␤␤»
19:49 moritz m: constant A = anon enum A <Foo Bar>; say A::Foo
19:49 camelia rakudo-moar cf09f8: OUTPUT«Foo␤»
19:49 moritz smls: ^^ semes to work
19:49 smls thanks
19:49 PerlJam moritz: the only problem is the added frustration when the signing part goes wrong for some reason.
19:50 PerlJam moritz: frustration discourages release managers.
19:50 llfourn joined #perl6
19:50 espadrine_ joined #perl6
19:51 FROGGS the release doc states "If you have no PGP key, you might need to create one first. Should that prove impossible, you can omit the -s from the command line."
19:51 eternaleye joined #perl6
19:51 FROGGS which is totally fine
19:55 masak the frustration discourages me. I'm less likely to volunteer in the future because of the extra steps which I haven't been able to pass yet.
19:56 masak in my ideal world, the release process grows shorter and simpler over time.
19:56 smls joined #perl6
19:56 masak the good news is, I'm willing to put in tuits to improve the release process, if I see there's some way to make it less stressful and prone to fail.
19:57 rangerprice oh
19:57 * masak is running the stresstest, which despite the name don't contribute to any stress :)
20:00 masak failure in t/spec/S17-lowlevel/lock.rakudo.moar -- news at 11
20:01 masak failure in t/spec/S17-promise/start.rakudo.moar
20:02 masak failure in t/spec/S32-io/IO-Socket-Async.rakudo.moar
20:03 rangerprice You have to do it masak :)
20:04 AlexDaniel m: say Date.new("2000-01-01") + 10000000000000000000000000000000;
20:04 camelia rakudo-moar 3458e9: OUTPUT«1999--14035828--4570789517646521952␤»
20:04 AlexDaniel -- :)
20:04 AlexDaniel ok submitting rakudobug
20:04 masak AlexDaniel: second one is a minus sign in each case, I guess.
20:04 AlexDaniel masak: sure
20:04 masak AlexDaniel: and now the year is clearly wrong, too.
20:05 AlexDaniel yeah it just overflows everywhere
20:05 domidumont joined #perl6
20:05 masak failures in t/spec/integration/advent2012-day04.t and t/spec/S17-procasync/kill.rakudo.moar
20:05 domidumont joined #perl6
20:05 masak only the advent2012-day04.t one sounds worthy of investigation.
20:06 masak m: my %cache; multi factors($n where %cache{$n}:exists) {}
20:06 camelia rakudo-moar 3458e9: OUTPUT«5===SORRY!5=== Error while compiling /tmp/_GSF3lnUup␤Invalid typename 'exists' in parameter declaration.␤at /tmp/_GSF3lnUup:1␤------> 3multi factors($n where %cache{$n}:exists7⏏5) {}␤»
20:06 masak ...that one looks like a real error.
20:06 masak std: my %cache; multi factors($n where %cache{$n}:exists) {}
20:06 camelia std 28329a7: OUTPUT«5===SORRY!5===␤In parameter declaration, typename 'exists' must be predeclared (or marked as declarative with :: prefix) at /tmp/0eYXmI7jDO line 1:␤------> 3multi factors($n where %cache{$n}:exists7⏏5) {}␤    expecting an infix operator with prece…»
20:07 PerlJam maybe it's parsing the colon as an invocant colon
20:07 jnthn No
20:07 jnthn It's that adverbs are parsed as infixes
20:07 jnthn And are too loose to parse as part of the when there
20:07 masak *nod*
20:07 jnthn Well, yes, it is then taking the : as the invocant colon
20:07 masak so the test is undeniably wrong, and should be changed?
20:07 jnthn So PerlJam was right
20:07 * masak changes the test
20:07 jnthn masak: Yes
20:08 jnthn masak: I spent a while on preclimit stuff and STD alignment and so on
20:08 masak *nod*
20:08 masak guess this is a stresstest-only and no-one's run it until now?
20:08 masak or some such
20:08 TimToady t/spec/S32-io/IO-Socket-Async.rakudo.moar fails the normal test too
20:08 jnthn I'm guessing so, yes
20:08 masak yeah, it's pretty slow :)
20:08 masak TimToady: any idea why?
20:09 TimToady first test disappears, probably due to the try
20:09 AlexDaniel m: say (Date.new("2000-01-01") + 536103961).perl; say (Date.new("2000-01-01") + 536103962).perl;
20:09 camelia rakudo-moar 3458e9: OUTPUT«Date.new(1469802, 10, 17)␤Date.new(-1470002, 7017915, 858993485)␤»
20:09 jnthn masak: I suspect the fix to rakudo that changed behavior was when I fixed assigning a default after a where clause
20:09 dalek roast: fe6e70f | (Carl Masak)++ | integration/advent2012-day04.t:
20:09 dalek roast: fix syntax of adverb in where clause
20:09 dalek roast:
20:09 dalek roast: This fails after jnthn++'s work on the EXPR preclimit
20:09 dalek roast: got things more right.
20:09 dalek roast: review: https://github.com/perl6/roast/commit/fe6e70fa86
20:09 jnthn star: sub foo($x where { $_ %% 2 } = 42) { }
20:09 camelia star-m 2015.03: ( no output )
20:09 jnthn star: sub foo($x where { $_ %% 2 } = 42) { }; foo()
20:09 camelia star-m 2015.03: OUTPUT«Too few positionals passed; expected 1 argument but got 0␤  in sub foo at /tmp/3ZKzWO2hXX:1␤  in block <unit> at /tmp/3ZKzWO2hXX:1␤␤»
20:09 jnthn That one
20:09 jnthn m: sub foo($x where { $_ %% 2 } = 42) { }; foo()
20:09 camelia rakudo-moar 3458e9: ( no output )
20:10 jnthn We used to parse the = as an assignment to the block :P
20:10 araujo joined #perl6
20:10 masak oh ouch :)
20:10 jnthn indeed :)
20:11 jnthn That's why I fux it :)
20:11 * masak .oO( refuxtor )
20:11 jnthn Uh...fixed...wow, sometimes ablaut games don't go so well :P
20:11 Hor|zon joined #perl6
20:11 masak TimToady: ok, so that test isn't blocking the release in any way?
20:11 TimToady well, it fails, I dunno why
20:11 masak ok, holding until we've investigated.
20:13 jnthn Which tests are we on now?
20:13 TimToady oh, the test is # by the macosx skip
20:13 kaare_ joined #perl6
20:13 masak um, doing an `is` inside of `try` seems wrong in either case, no?
20:13 TimToady so the plan is off
20:14 TimToady the try returns Any
20:14 masak oh, ok.
20:14 TimToady so not the try
20:14 masak ok, knowing that, we don't need to block on this for the release, right?
20:14 masak the fix to the test can go on in parallel
20:14 masak jnthn: t/spec/S32-io/IO-Socket-Async.t
20:15 masak ok, Rakudo tarball ready for upload! rakudo-2015.07.tar.gz
20:15 masak FROGGS?
20:15 masak er
20:15 masak http://masak.org/carl/tmp/rakudo-2015.07.tar.gz
20:15 * masak .oO( note to self: just pasting the local file name onto the channel is not enough )
20:15 * FROGGS grabs it
20:16 isBEKaml joined #perl6
20:16 masak tags pushed.
20:16 PerlJam masak++ FROGGS++
20:16 masak we're not quite done yet.
20:17 FROGGS masak: done :D
20:17 masak FROGGS++
20:17 masak there's p6c, and then ye ole Wikipedia
20:17 masak olde*
20:17 jnthn .oO( The whole Wikipedia? Accidentally? )
20:18 TimToady .oO(ole automation)
20:18 FROGGS hmmm, there should be an Accident Alley in Harry Potters world...
20:19 masak p6c email sent.
20:19 isBEKaml masak++ FROGGS++
20:20 FROGGS I do not deserve karma, I just spend one minute on this :o)
20:21 masak not done yet.
20:22 AlexDaniel OK, now DateTime...
20:22 masak Wikipedia article updated: https://en.wikipedia.org/wiki/Rakudo_Perl_6
20:22 AlexDaniel m: say DateTime.new('2012-02-29T00:00:00+99:99');
20:22 camelia rakudo-moar a7f193: OUTPUT«2012-02-29T00:00:00+100:39␤»
20:22 masak "You're done!  Celebrate with the appropriate amount of fun."
20:22 jnthn masak++
20:22 masak standing down release process.
20:23 masak please move along, nothing to see here. :)
20:23 * masak has a beer
20:23 jnthn masak: Hope it's a nice one :)
20:24 dalek rakudo/nom: 81ad2c0 | TimToady++ | src/Perl6/Grammar.nqp:
20:24 dalek rakudo/nom: move ~~ from chaining to structural
20:24 dalek rakudo/nom:
20:24 dalek rakudo/nom: This prevents attempts to use ~~ as a chain op or as a reduction, and
20:24 dalek rakudo/nom: forces non-associativity with respect to cmp-like and ..-like operators,
20:24 dalek rakudo/nom: which thankfully reports the difficulty.
20:24 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/81ad2c0db9
20:24 jnthn That has to be one of the quickest "release done"..."I'm breaking something!" pairing I've seen :)
20:25 TimToady :)
20:25 TimToady let's hope we can break a lot more this month
20:25 jnthn :)
20:25 masak TimToady++ # break fast
20:27 TimToady ShimmerFairy++ and masak++ for noticing ~~ difficulties
20:27 masak I'm not sure I'm to blame for this one :)
20:27 masak at least I don't remember it...
20:28 jnthn Well, once I get next week's 3 days of teaching done, I've no $otherjob deadlines until September. So August is looking very good for me having lots of time to break Perl 6 things. :)
20:28 rangerprice great !
20:28 TimToady masak: you are to blame at http://irclog.perlgeek.de/perl6/2015-07-21#i_10932148
20:28 masak what rangerprice said! :D
20:29 masak TimToady: so I am. blame accepted.
20:29 Begi1 For my presentation, I'll use very bascis exemple : a guessNumber and  Fibonacci. Have you please a third basic exemple idea ?
20:29 masak Begi1: rock paper scissors!
20:30 jnthn TimToady: I think a while back you said something about us blurring generators/iterators and lists less. Could you elaborate on that a bit? :)
20:31 Begi1 masak : Yeah ! :)
20:31 Begi1 I think this code is correct... https://github.com/Emeric54/perl6/blob/master/fibonacci.p6 Can I do better ?
20:31 * masak looks
20:32 masak Begi1: yes, that one quickly grows slow.
20:32 jnthn m: say (1, 1, * + * ... Inf)[12]
20:32 camelia rakudo-moar a7f193: OUTPUT«233␤»
20:32 masak um, what jnthn++ said, but... :)
20:32 jnthn obw :P
20:32 masak one step at a time :)
20:32 TimToady jnthn: just I have the vague feeling there are a lot of calls to .list that are intended to produce something to iterate, not something to store as a list
20:32 masak Begi1: if you want to avoid the `given $n` block altogether, you can just name your $n parameter $_
20:32 TimToady so we accidentally a lot of lists
20:33 rangerprice masak ehhehehehee
20:33 masak m: sub fib($_) { when 0 { 0 }; when 1 { 1 }; default { fib($_ - 1) + fib($_ - 2) } }; say fib(12)
20:33 camelia rakudo-moar a7f193: OUTPUT«144␤»
20:33 masak Begi1: like that.
20:33 masak *but* the real trick I wanted to tell you about was `is cached`
20:34 masak m: sub fib($_) is cached { when 0 { 0 }; when 1 { 1 }; default { fib($_ - 1) + fib($_ - 2) } }; say fib(12)
20:34 camelia rakudo-moar a7f193: OUTPUT«144␤»
20:34 masak Begi1: which speeds the thing up ridiculously.
20:34 jnthn TimToady: You're thinking about things like .lines?
20:34 muraiki joined #perl6
20:34 [Coke] masak: on moar, anyway. :)
20:34 TimToady I'm think for/map don't really want a list, they want an iterator
20:34 masak Begi1: basically there are many identical subtrees in the call graph of fib. `is cached` remembers the result of each.
20:34 timotimo lizmat: (reading backlog) about Pos's method Bool: it might be even more optimizable if it had one candidate for Pos:U and one for Pos:D and would just return True or False in the appropriate case
20:35 [Coke] (pretty sure jvm ignores it0
20:35 masak Begi1: if you need help understanding jnthn++'s solution, I can explain it to you :)
20:35 jnthn TimToady: Well, for sure, the question is whether we want that to be visible at the language level.
20:35 masak Begi1: note that jnthn-- didn't get the same result, because he started the sequence with 1, 1 and not 0, 1 :P
20:35 jnthn TimToady: As in, a type difference.
20:35 masak m: say (0, 1, * + * ... Inf)[12]
20:35 camelia rakudo-moar a7f193: OUTPUT«144␤»
20:36 masak there ya go.
20:36 moritz jnthn: it might solve some of our problems
20:36 jnthn 'cus in the current implementation we go to great lengths to hide it, and it makes us all kinds of pain.
20:36 moritz jnthn: if lines() returned an iterator, we can forbid positional access, so we never have to worry about storing old values
20:37 jnthn moritz: That is current, but we need to take some care over the transition.
20:37 Begi1 masak : I'm so curious, I can't say no !
20:37 jnthn moritz: uh, correct :)
20:37 Begi1 Yes, the jnthn was strange. It'sbetter now :)
20:37 Begi1 *jnthn result
20:37 jnthn haha!
20:37 TimToady I've been thinking that if I want to keep playing with glrish, I should push a new iteration layer in the middle, and start switching things over to it
20:37 masak Begi1: explanation. sure, here goes.
20:38 masak Begi1: let's start with the sequence operator, `...`
20:38 moritz m: say (0, 1, &[+] ... *)[12]
20:38 camelia rakudo-moar a7f193: OUTPUT«144␤»
20:38 masak and ignore moritz++' input until I tell you :P
20:38 moritz TimToady, jnthn: might be worth looking how python does it
20:39 TimToady well, python doesn't particularly try to support "lazy lists"
20:39 masak m: .say for 1, 2 ... 9
20:39 camelia rakudo-moar a7f193: OUTPUT«1␤2␤3␤4␤5␤6␤7␤8␤9␤»
20:39 jnthn Well, C#/.Net too given we stole a bunch of the supply semantics from there...
20:39 jnthn for $handle.lines() -> $foo { } # really easy case - you can happily chew through values
20:39 masak Begi1: that one is fairly straightforward, yes? `...` simply keeps going until it reaches the endpoint. in this case 9.
20:39 masak Begi1: it also works backwards.
20:39 masak m: .say for 9, 8 ... 1
20:39 camelia rakudo-moar a7f193: OUTPUT«9␤8␤7␤6␤5␤4␤3␤2␤1␤»
20:39 masak (unlike ordinary ranges made with `..`)
20:40 rangerprice so
20:40 jnthn for $handle.lines.grep(/beer/) -> $yay { } # also not too hard
20:40 masak Begi1: now, the only thing that the fib sequence solution adds to this...
20:40 masak Begi1: ...is the fact that the second term is a "recipe" for constructing more terms in the sequence
20:40 jnthn sub beer(@lines) { @lines.grep(/beer/); for beer($handle.lines) -> $hmm { } # how about this? :)
20:40 masak Begi1: well, actually not "the second term", even. the term before the `...` operator itself
20:40 jnthn uh
20:41 jnthn sub beer(@lines) { @lines.grep(/beer/); } for beer($handle.lines) -> $hmm { } # how about this? :)
20:41 jnthn 'cus as soon as you get the thing bound to a name, you can talk about it multiple times, and expect to be able to index it
20:41 rangerprice i love spaghetti, GNU/Linux, LWP&Forks::Super module (and maybe WWW::Mechanize), perl.
20:41 masak Begi1: how do we form more terms in the fib sequence. well, it's kind of $last + $secondlast, right?
20:42 Begi1 masak : Sure
20:42 jnthn But if you make @lines in the signature "bind" then you need an "escape hatch" so you can even implement .grep :)
20:42 TimToady yes, binding to @ would certainly have to force storage, not so sure about \name
20:42 masak m: sub next-term($last, $secondlast) { $last + $secondlast }; say next-term(8, 5)
20:42 camelia rakudo-moar a7f193: OUTPUT«13␤»
20:42 masak m: sub next-term($last, $secondlast) { $last + $secondlast }; .say for 0, 1, &next-term ... 144
20:42 camelia rakudo-moar a7f193: OUTPUT«0␤1␤1␤2␤3␤5␤8␤13␤21␤34␤55␤89␤144␤»
20:42 jnthn TimToady: Right, \name is one escape hatch, and since self is really bound like \self then methods on List are easily done.
20:42 masak Begi1: see the above? getting clearer now? :)
20:43 masak Begi1: (`&next-term` refers to the sub without calling it, essentially "handing" the sub to the sequence operator)
20:43 masak Begi1: we could also do it all inline, with a block
20:43 jnthn That'd also mean that my @lines := $handle.lines; gives you the iterator, but my @lines ::= $handle.lines binds as a signature would. And and assignment, well, assigns
20:43 masak m: .say for 0, 1, -> $last, $secondlast { $last + $secondlast } ... 144
20:43 camelia rakudo-moar a7f193: OUTPUT«0␤1␤1␤2␤3␤5␤8␤13␤21␤34␤55␤89␤144␤»
20:43 jnthn I just wonder where the gotcha with *that* model shows up :)
20:44 Begi1 masak: It's magic :) Thanks a lot !
20:44 masak Begi1: that's the same thing, but with an "anonymous block" providing the recipe instead of a named sub.
20:44 masak Begi1: I'm not done yet :P
20:44 TimToady jnthn: well, that's why I was wanting to start to prototype it top down
20:44 masak Begi1: now, of course, writing out the parameters like that is tedious :)
20:44 vike joined #perl6
20:44 masak Begi1: so we use the $^parameter form, which is "automatically declared parameters"
20:45 TimToady but I'm still hung up with the auto-slipping behavior of Range and Array for the moment
20:45 jnthn TimToady: That probably makes sense.
20:45 masak m: .say for 0, 1, { $^last + $^secondlast } ... 144
20:45 camelia rakudo-moar a7f193: OUTPUT«0␤1␤1␤2␤3␤5␤8␤13␤21␤34␤55␤89␤144␤»
20:45 jnthn TimToady: I'll do much better at the bottom-up parts.
20:45 moritz fwiw in python, one sometimes needs explicit coercers
20:46 moritz list(some_iterator) for example
20:46 masak Begi1: ...but even *that* gets too long sometimes. so there's a final form, which just gets rid of the `{}` block and the names of the parameters, just replacing them with `*`s
20:46 moritz doesn't seem to be such a big deal
20:46 masak m: .say for 0, 1, * + * ... 144
20:46 camelia rakudo-moar a7f193: OUTPUT«0␤1␤1␤2␤3␤5␤8␤13␤21␤34␤55␤89␤144␤»
20:46 masak Begi1: of course, we could continue onto Inf, which means simply never stopping
20:46 masak m: .say for 0, 1, * + * ... Inf
20:47 camelia rakudo-moar a7f193: OUTPUT«(timeout)0␤1␤1␤2␤3␤5␤8␤13␤21␤34␤55␤89␤144␤233␤377␤610␤987␤1597␤2584␤4181␤6765␤10946␤17711␤28657␤46368␤75025␤121393␤196418␤317811␤514229␤832040␤1346269␤2178309␤3524578␤5702887␤9227465␤1…»
20:47 masak Begi1: and, since Perl 6 lists are lazy, we can index the list, and it will only compute up to that element and no more.
20:47 masak m: say (0, 1, * + * ... Inf)[12]
20:47 camelia rakudo-moar a7f193: OUTPUT«144␤»
20:47 TimToady moritz: if @ implies list(iterator) coercion, we get most of that for free
20:47 masak Begi1: now I'm done :D
20:47 jnthn moritz: Similar in C#, but they screwed up their developer guidelines by encouraging people to write the type that could be an iterator (so you have to assume the worst) even when you have a concrete thing...
20:48 masak Begi1: so, as I said, use `is cached` :P
20:48 moritz Begi1: and the next stept is reconizing that * + * just adds two numbers, which is exactly the same as the + operator itself, to which you can refer as &[+]
20:48 masak oh, right. now you can look at moritz++' solution :P
20:48 masak moritz++ # explaining it
20:48 moritz masak++ # explaining
20:48 moritz masak++ # release
20:48 masak aw, he quit
20:48 Begi1 joined #perl6
20:49 TimToady and the step after that is hoping that rakudo will optimize *+* to &[+]
20:49 masak Begi1: did we lose you there for a while?
20:49 moritz TimToady: well, the problem with implicit coercions is that they are, well, implicit, and thus easy to surprise
20:49 masak Begi1: logs are at http://irclog.perlgeek.de/perl6/today
20:49 moritz masak: you just have to turn it into a blog post :-)
20:49 masak heh.
20:49 TimToady moritz: but @ implies Positional, and iterators are (probably) explicitly not positional post GLR
20:49 llfourn joined #perl6
20:49 masak Begi1: another way to refer to the + operator is `&infix:<+>`. note that & is used for both subs and operators, because, in a very real sense, operators are subs.
20:50 Begi1 A very short time, but fortunately, I've saw everything :)
20:50 isBEKaml joined #perl6
20:51 moritz TimToady: maybe @ is not coercive, which *@ is?
20:51 moritz s/which/but/
20:51 * moritz not very concentrated anymore
20:51 masak Begi1: just like Patrick Stewart :P
20:52 * TimToady --> nap &
20:53 Begi1 masak : Exactly :)
20:53 Begi1 m: say (0, 1, * + * ... Inf)[8]
20:53 camelia rakudo-moar 81ad2c: OUTPUT«21␤»
20:54 masak Begi1: oh, another cool thing.
20:54 masak Begi1: even though the sequence is infinite, you can store it in a constant.
20:54 Begi1 masak: yes ?
20:54 masak m: constant @fibs := 0, 1, * + * ... Inf; say @fibs[8]
20:54 camelia rakudo-moar 81ad2c: OUTPUT«21␤»
20:55 masak m: constant @fibs = 0, 1, * + * ... Inf; say @fibs[8]
20:55 camelia rakudo-moar 81ad2c: OUTPUT«21␤»
20:55 masak Begi1: and it doesn't blow up or run forever or something.
20:56 masak Begi1: so you've basically stored this potentially infinite solution inside of a constant. and it computes more values for you on a by-need basis.
20:56 masak Begi1: very Haskell. very chic.
20:56 Begi1 masak : I did not thinks that was possible
20:57 Begi1 masak : I've never used Haskell but very chic, yes !
20:58 masak so chic
20:58 jnthn such chic
20:59 jnthn very laziness
20:59 masak oh hey, it even works in a normal `my` variable
20:59 masak m: my @fibs = 0, 1, * + * ... Inf; say @fibs[8]
20:59 camelia rakudo-moar 81ad2c: OUTPUT«21␤»
20:59 masak didn't expect that.
20:59 masak guess the infinitude of the sequence somehow "wins" over the default mostly-eagerness of `=`
21:00 schmooster joined #perl6
21:01 * lizmat back from OSCON just now
21:01 jnthn masak: Pretty much
21:01 jnthn lizmat: Enjoy it?
21:01 dolmen joined #perl6
21:01 lizmat so, am I getting this correct that the Rakudo release did have an NQP bump, but not a MoarVM bump ?
21:02 lizmat jnthn: I enjoyed it to an extent
21:02 lizmat someone showed a nice graphical representation of the expo hall
21:03 lizmat the open source organizations located in the back behind a black curtain (he called that "Diagon Alley")
21:03 rangerprice joined #perl6
21:03 lizmat and the rest of the expo floor reserved for muggles
21:03 isBEKaml lizmat: the OSCON was HP themed? :-)
21:03 lizmat I'm afraid from now on, OSCON is for muggles
21:04 masak lizmat: well, I bumped the Moar dep in NQP, and the NQP dep in Rakudo, if that's what you mean.
21:04 lizmat Euro OSCON certainly will be only for muggles
21:04 bin_005 joined #perl6
21:05 lizmat nqp/tools/build/MOAR_REVISION is 2015.06-98-gf22142b for me
21:06 masak huh.
21:06 masak yes.
21:06 masak :/
21:07 masak I see now that I skipped step 1 because it was about Parrot, but there's a last bit about MoarVM...
21:08 masak lizmat++ # noticing
21:09 dalek nqp: a8aad8a | (Carl Masak)++ | tools/build/MOAR_REVISION:
21:09 dalek nqp: bump MOAR_REVISION to latest release
21:09 dalek nqp: review: https://github.com/perl6/nqp/commit/a8aad8a1a6
21:09 amurf joined #perl6
21:09 jnthn lizmat: For muggles = they're focus on less technical content?
21:09 masak so, I can prep 2015.07.1 versions of NQP and Rakudo, and provide those for upload.
21:10 masak FROGGS: still available?
21:10 lizmat I noticed because Moar did not get rebuilt after I pulled the version
21:10 lizmat jnthn: O'Reilly's focus is on business
21:11 jnthn lizmat: *nod*
21:11 lizmat in my view, they're only interested in businesses (ab)using open source
21:11 lucasb m: .say for class { has $.a; has $.b }.^methods
21:11 camelia rakudo-moar 81ad2c: OUTPUT«a␤b␤»
21:11 lucasb For core classes, attribute accessors are not installed with their names. For user defined classes it's fine. For example, Range.^methods does not show .min, .max, etc. It shows <anon> for them. Some detail I'm missing here?
21:12 jnthn lucasb: Probably some bootstrapping shenanigans.
21:12 lizmat m: .say for class { has $!a; method a { $!a } }.^methods
21:12 camelia rakudo-moar 81ad2c: OUTPUT«a␤»
21:12 lizmat hmmm...
21:12 lizmat strange
21:12 lucasb jnthn: oh, thanks
21:12 jnthn m: .say for (1..10).^methods
21:12 camelia rakudo-moar 81ad2c: OUTPUT«new␤BUILD␤flat␤iterator␤list␤bounds␤reify␤roll␤pick␤excludes_min␤excludes_max␤of␤WHICH␤ACCEPTS␤Method+{<anon>}.new␤perl␤Numeric␤<anon>␤<anon>␤<anon>␤<anon>␤<anon>␤elems␤item␤fmt␤Int␤Num␤Numeric␤Str␤»
21:13 jnthn Curious.
21:13 lizmat m: .say for class { has $!a; multi method a { $!a } }.^methods
21:13 camelia rakudo-moar 81ad2c: OUTPUT«a␤»
21:13 lizmat m: .say for class { has $!a; proto method a(|) { * }; multi method a { $!a } }.^methods
21:13 camelia rakudo-moar 81ad2c: OUTPUT«a␤»
21:14 masak someone else besides FROGGS who can upload things to rakudo.org ?
21:14 jnthn I don't actually see why it'd happen.
21:14 moritz masak: me
21:15 jnthn .set_name should be being called in either case.
21:15 moritz uhm
21:15 moritz at least I hope I can
21:15 moritz new hard disk, new ssh key :/
21:15 dalek rakudo/nom: 430bc6c | (Carl Masak)++ | tools/build/NQP_REVISION:
21:15 dalek rakudo/nom: [release] bump NQP revision
21:15 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/430bc6c62c
21:15 dalek rakudo/nom: 95c07cc | (Carl Masak)++ | VERSION:
21:15 dalek rakudo/nom: [release] bump VERSION
21:15 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/95c07cc896
21:15 * moritz boots the desktop
21:16 masak just running the spectests again, real quick.
21:17 * lizmat as well
21:17 dalek rakudo/nom: cf30a75 | (Carl Masak)++ | docs/release_guide.pod:
21:17 dalek rakudo/nom: add another release to the list
21:17 dalek rakudo/nom:
21:17 dalek rakudo/nom: Also, correct the date of #90. We were one day late this month.
21:17 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/cf30a75202
21:19 moritz masak: there's a pubkey of yours in the rakudo@rakudo.org account
21:19 moritz masak: so you should be able log in already; if not, please /msg me your current ssh pubkey
21:19 masak moritz: yes, I distinctly remember that.
21:19 * masak tries
21:20 masak somehow it's asking me for a password, not going by SSH key.
21:23 lizmat t/spec/S32-io/IO-Socket-INET.t failed for me, but has been failing for weeks now
21:23 lizmat MoarVM spectest is otherwise clean for me on OS X
21:24 lizmat building JVM now
21:24 jnthn lizmat: Oddness; I've not seen any issues with that test on Windows...
21:24 jnthn lizmat: Must be something platform-specific.
21:25 masak moritz: http://masak.org/carl/tmp/nqp-2015.07.1.tar.gz http://masak.org/carl/tmp/rakudo-2015.07.1.tar.gz
21:26 moritz masak: uploaded
21:27 masak moritz++
21:27 masak updating the Wikipedia article.
21:27 lizmat https://gist.github.com/lizmat/7f6069a83f62ae01e03f
21:29 lucasb A tiny detail is that nqp/VERSION is 2015.07, not 2015.07.1, but I don't know if this affects the build process
21:31 masak :(
21:31 masak clearly I should take a break.
21:32 lizmat :-(
21:32 masak I honestly don't know if it matters or not.
21:32 lizmat I should have seen that as well, sorry  :-(
21:32 masak if that's inessential, I can fix it now.
21:32 masak if it's essential, we should proably put out new releases.
21:32 masak I'm getting a bit exhausted, though. and clearly making errors.
21:33 isBEKaml masak: take it easy. it's only a dev release
21:33 jnthn I'm not sure I see a way in which it will bite anyone right off.
21:33 jnthn If it does it's easy enough to make another point release.
21:33 masak jnthn: are you fine with me just updating it now?
21:33 jnthn masak: Yeah, you can.
21:33 jnthn masak: But you've done enough, I think.
21:33 jnthn :)
21:33 masak :P
21:33 dalek nqp: 7259356 | (Carl Masak)++ | VERSION:
21:33 dalek nqp: bump VERSION
21:33 dalek nqp:
21:33 dalek nqp: (A little late.)
21:33 dalek nqp: review: https://github.com/perl6/nqp/commit/7259356932
21:34 lucasb Yeah, masak++
21:35 lizmat afk again&
21:35 dalek nqp: 348e2a0 | (Carl Masak)++ | docs/release_guide.pod:
21:35 dalek nqp: [docs/release_guide.pod] remove Parrot paragraphs
21:35 dalek nqp:
21:35 dalek nqp: These paragraphs hide the only (currently) relevant paragraph about
21:35 dalek nqp: MoarVM.
21:35 dalek nqp: review: https://github.com/perl6/nqp/commit/348e2a052a
21:37 masak if/when we start targeting Parrot again in our release cycle, we can bring those paragraphs back.
21:37 isBEKaml we aren't?
21:37 isBEKaml when did that happen? Not targeting parrot?
21:37 Begi1 masak : thank you for the explanations. I'll dream of Perl6 :)
21:37 Begi1 Good night #perl6 !
21:38 masak Begi1: good night :)
21:39 masak isBEKaml: earlier this year.
21:39 masak isBEKaml: http://pmthium.com/2015/02/suspending-rakudo-parrot/
21:39 masak "In order to better focus our limited resources on the tasks needed for a Perl 6 language release later in the year, we’re expecting to suspend Rakudo’s support for the Parrot backend sometime shortly after the 2015.02 release."
21:44 isBEKaml masak: thanks for the link. It makes the picture clearer to me.
21:44 AlexDaniel is-leap-year, isNaN, is_type – what's the logic behind this “naming convention”?
21:44 PerlJam btw, Karen emailed and confirmed nine's signed CLA  :)
21:46 masak \o/
21:46 masak Karen++
21:46 masak nine++ for not lying to us, I guess :P
21:46 PerlJam AlexDaniel: I think the logic is ... we've cribbed stuff from other languages and that's what they used.  :)
21:46 masak AlexDaniel: well, at least isNaN is from IEEE 754.
21:47 timotimo i can report that Ant-Man is a quite fantastic movie
21:47 AlexDaniel PerlJam: well, such naming looks much like PHP
21:47 masak AlexDaniel: is_type is from compiler internals. "low-level" stuff. then it has an underscore, because an underscore is on a low level.
21:47 isBEKaml AlexDaniel: Now you know perl6's heritage - C, lisp and java(script) :P
21:47 masak (yes, that's the actual stated reason)
21:47 PerlJam POSIX uses isnan()
21:47 masak AlexDaniel: is-leap-year, however, is exposed to the user.
21:48 AlexDaniel masak: ooohhhh....
21:48 timotimo i didn't know we have is_type
21:48 masak timotimo: it's in World.nqp
21:48 timotimo ah
21:50 AlexDaniel is this some low-level stuff? http://doc.perl6.org/type/Parameter#method_named_names
21:50 timotimo well, it *is* part of the MOP
21:51 masak so, yes.
21:51 AlexDaniel hm
21:53 * jnthn wonders why we have isNaN at all; doesn't === NaN work?
21:53 jnthn m: say NaN === NaN
21:53 camelia rakudo-moar cf30a7: OUTPUT«True␤»
21:53 jnthn m: say NaN == NaN # False I hope :)
21:53 camelia rakudo-moar cf30a7: OUTPUT«False␤»
21:53 jnthn Phew :)
21:55 jnthn Folks waving their PHP flag of fear around ended up with one round of epic renaming already that caused more than enough upheavel. The MOP stuff can stay as it is.
22:00 masak thank you.
22:05 TimToady but the MOP is high level, so we should use FOO‾BAR instead :)
22:06 timotimo not everybody can reach this high
22:06 sjn \o
22:06 sjn is there some clever way to do conditional chaining?
22:07 TimToady as opposed to the obvious way?
22:07 AlexDaniel m: if 2 < 5 < 10 { say 'huh' }
22:07 camelia rakudo-moar cf30a7: OUTPUT«huh␤»
22:07 sjn ahm.
22:07 sjn no, I meant "chaining calls, with a condition inside the chain"
22:08 TimToady what's the condition supposed to do?
22:08 sjn MyClass.new.dosomething().success # and if success is True, call .say
22:09 TimToady well, that's kinda what "andthen" is supposed to do, except it's only partly implemented
22:09 isBEKaml sjn: I don't understand. What's different from, say, foo && bar && dothat?
22:10 sjn TimToady: ok
22:10 timotimo TimToady: i thought "orelse" is the one that's only partly implemented?
22:11 TimToady m: [1,2,3] andthen .say
22:11 camelia rakudo-moar cf30a7: OUTPUT«(Any)␤»
22:11 TimToady $_ is supposed to topicalize to the left there
22:11 timotimo oh
22:12 Hor|zon joined #perl6
22:12 masak I wonder if we have an RT about that.
22:12 masak I also wonder if it's easy :>
22:13 ugexe m: [1,2,3] andthen { .say for @_ }
22:14 camelia rakudo-moar cf30a7: OUTPUT«1␤2␤3␤»
22:14 TimToady m: [1,2,3] andthen { $_.say }
22:14 camelia rakudo-moar cf30a7: OUTPUT«Too many positionals passed; expected 0 or 1 arguments but got 3␤  in block <unit> at /tmp/sVROCPPDiT:1␤␤»
22:14 TimToady erm
22:16 timotimo yeesh
22:16 masak so something gets passed?
22:20 cognominal joined #perl6
22:20 AlexDaniel m: say 0b02001;
22:20 camelia rakudo-moar cf30a7: OUTPUT«5===SORRY!5=== Error while compiling /tmp/bpcDbx28lg␤Confused␤at /tmp/bpcDbx28lg:1␤------> 3say 0b07⏏2001;␤»
22:21 AlexDaniel well, gonna report that as LTA, but is there any reason why it gets confused?
22:21 TimToady 2 is not a valid binary digit?
22:21 AlexDaniel TimToady: yeah, why can't it say that?
22:22 AlexDaniel std: say 0b02001;
22:22 camelia std 28329a7: OUTPUT«5===SORRY!5===␤Whitespace is required between alphanumeric tokens at /tmp/Eeet0LLF0P line 1:␤------> 3say 0b07⏏2001;␤Two terms in a row at /tmp/Eeet0LLF0P line 1:␤------> 3say 0b07⏏2001;␤    expecting any of:␤   POST␤   feed_separato…»
22:22 masak it's shocked that you forgot since just two characters ago? :P
22:22 AlexDaniel :)
22:23 AlexDaniel masak: well, it could have been 0x in the past!
22:24 TimToady m: say :2<02001>
22:24 camelia rakudo-moar cf30a7: OUTPUT«===SORRY!===␤Invalid character '2' in number literal␤»
22:24 telex joined #perl6
22:25 TimToady thing is, 0b and friends just parse as many characters as make sense, and assume that what comes after will be a valid infix or some such
22:25 AlexDaniel TimToady: oh, so that's an answer to my question! :)
22:26 TimToady that doesn't mean we couldn't improve the message at least to STD's level
22:27 AlexDaniel m: say 0b000l01;
22:27 camelia rakudo-moar cf30a7: OUTPUT«5===SORRY!5=== Error while compiling /tmp/5sXIi5zMmA␤Confused␤at /tmp/5sXIi5zMmA:1␤------> 3say 0b0007⏏5l01;␤»
22:27 AlexDaniel :)
22:27 TimToady but remembering the base on the off chance that we might want to use it in an error message seems a bit useless most of the time
22:27 AlexDaniel well, makes sense
22:28 TimToady unless we can find a way to pass the last term into the TTIAR handler
22:32 nine masak: sometimes it's really, really, really, ridiculously simple to get karma in here ;)
22:32 masak nine: Just Don't Lie :P
22:33 AlexDaniel maybe this error could be more noob-friendly though? Like hey, it is a hex(!) number, it may only contain 0-F. As stupid as it sounds, but it feels like this error should make sense to someone who is new to programming.
22:35 TimToady m: say 0b01ff "hi"
22:35 camelia rakudo-moar cf30a7: OUTPUT«5===SORRY!5=== Error while compiling /tmp/d75PWFgQZh␤Confused␤at /tmp/d75PWFgQZh:1␤------> 3say 0b017⏏5ff "hi"␤»
22:35 TimToady m: say 0b01 ff "hi"
22:35 camelia rakudo-moar cf30a7: OUTPUT«Use of uninitialized value of type Any in numeric context  in block <unit> at /tmp/j1LdR0kvtK:1␤Nil␤»
22:35 timotimo good old ff infix operator
22:39 AlexDaniel m: say :2<000.0101>;
22:39 camelia rakudo-moar cf30a7: OUTPUT«0.3125␤»
22:39 AlexDaniel haven't ever thought about that
22:42 jnthn time for some rest; 'night o/
22:58 AlexDaniel m: say 'True' if !not! True;
22:58 camelia rakudo-moar cf30a7: ( no output )
22:58 AlexDaniel :)
23:00 masak you negated it thrice. and very skillfully, I might add.
23:00 masak m: say 'True' if !!! True
23:00 camelia rakudo-moar cf30a7: OUTPUT«True␤  in block <unit> at /tmp/J2l09O714j:1␤␤»
23:01 masak doing it that way is confusing in several ways :P
23:01 AlexDaniel masak: emphasized not!
23:05 TEttinger joined #perl6
23:11 AlexDaniel m: say DateTime.new('2015-12-24T12:23:00Z').later(days => 536098125);
23:11 camelia rakudo-moar cf30a7: OUTPUT«1469802-10-17T12:23:00Z␤»
23:11 AlexDaniel m: say DateTime.new('2015-12-24T12:23:00Z').later(days => 536098125).perl;
23:11 camelia rakudo-moar cf30a7: OUTPUT«DateTime.new(year => 1469802, month => 10, day => 17, hour => 12, minute => 23, second => 0)␤»
23:11 skids joined #perl6
23:11 AlexDaniel m: say DateTime.new('2015-12-24T12:23:00Z').later(days => 536098126);
23:11 camelia rakudo-moar cf30a7: OUTPUT«month out of range. Is: 7017915, should be in 1..12␤  in block <unit> at /tmp/QLcBsBkMlE:1␤␤»
23:12 masak heh.
23:12 AlexDaniel masak: yeah...
23:16 masak 'night, #perl6
23:20 hahainternet night masak
23:20 hahainternet i couldn't find any reference to that 'type capture' ::T stuff timotimo showed me
23:20 hahainternet i need to find that in the spec at some point, but holy crap lots of reading
23:21 timotimo i bet i could capture a hundred types
23:22 hahainternet :D
23:23 hahainternet if you can help me find it at some point that'd be fine, but maybe not friday night :D
23:23 hahainternet s/fine/nice
23:24 timotimo If you can't, don't feel badly about yourself. With my special training program, anyone can capture 100 types in 7 weeks
23:24 hahainternet can i pay in instalments for a ludicrous APR?
23:27 timotimo Well, I certainly applaud anyone wanting to capture 100 types, but take it from this old typesystem rat, I've spent my entire adult life capturing types, and a program like this one can do more harm than good.
23:33 sjn tadzik: would it be sensible to allow builing rakudo star with rakudobrew?
23:33 sjn building*
23:38 skids hahainternet: http://design.perl6.org/S06.html#En_passant_type_capture
23:39 hahainternet skids: perfect, merci!
23:40 tadzik sjn: hm, I guess
23:41 tadzik I don't see why not, it is just a matter of fetching a git repo and building it :)
23:41 skids Well, the real problem is the bundled modules eventually mod something that breaks on star, so they all need revs too.
23:50 chansen__ joined #perl6
23:53 isBEKaml_ joined #perl6

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

Perl 6 | Reference Documentation | Rakudo