»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, std:, or /msg camelia p6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by masak on 12 May 2015.
00:08 dawgout joined 00:09 dawgout left 00:20 Hor|zon joined 00:24 isacloud left, isacloud joined 00:25 Colonel-X joined, Hor|zon left
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'?␤␤»
smls { } interpolates code in "" strings
Colonel-X yes, I see, but is it right???? 00:28
smls m: $_ = '{abc}'; say "OK" if m/'{' \w+ '}'/; 00:29
camelia rakudo-moar 5d1ec3: OUTPUT«OK␤»
smls you need to use '{abc}' or "\{abc\}" if you want literal braces in your string
not sure what you mean with "right" 00:31
{ } interpolation in "" strings is definitely an intended feature
like $variable interpolation
00:38 AlexDaniel left 00:39 laouji left 00:40 laouji joined 00:44 laouji left 00:45 laouji joined 00:50 skids joined 00:53 Mhoram left 00:54 Mhoram joined
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.
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:02 smls left 01:05 brisby left, cognominal left, cognominal joined 01:08 BenGoldberg joined
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, rmgk is now known as Guest58562, Guest58562 left, rmgk_ is now known as rmgk 01:21 Hor|zon joined 01:23 mr-foobar left 01:26 Hor|zon left 01:28 govt joined
dalek ast: c0cef60 | skids++ | S04-phasers/enter-leave.t:
skip/fudge some newer tests that have trouble on JVM
01:32
01:33 tinyblak joined 01:37 llfourn joined 01:41 llfourn left 01:46 yqt left
dalek ast: 039c1ec | skids++ | S09-typed-arrays/native-int.t:
Fudge a new test that does not work on JVM
02:01
02:16 nightfrog joined
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 Colonel-X left, Hor|zon joined 02:27 Hor|zon left 02:29 rangerprice left
dalek ast: 5c22c1f | skids++ | S32-exceptions/misc.t:
Refine some new tests not to fail due to unsynced JVM error messages
02:34
ast: 8df768a | skids++ | S19-command-line/arguments.t:
Fix test which relied on exact match of error message on JVM.

   two outputs have their merits, and both satisfy requirements of RT#112988.
02:42
synbot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=112988
02:45 BenGoldberg left 02:47 konsolebox joined 02:57 gfldex left 02:59 noganex_ joined 03:01 noganex left
dalek ast: f5665a1 | skids++ | S32-list/pick.t:
Make a failing test non-lethal on JVM, then fudge it.
03:04
b2gills Larry's Linux Voice interview was just mentioned on TechSNAP 224 youtu.be/UQMf5z0RZdw?t=3615
03:06 bin_005 joined 03:12 dmitri joined
dmitri Hola! 03:12
03:14 jack_rabbit joined
dmitri How come #perl6 is here and not on irc.perl.org? 03:14
dalek ast: 068a332 | skids++ | S32-temporal/calendar.t:
Avoid octalism worries
03:16
03:16 tinyblak left 03:18 tinyblak joined 03:22 tinyblak left 03:23 tinyblak joined, cognominal left, Hor|zon joined 03:27 vendethiel joined 03:28 Hor|zon left 03:39 llfourn joined
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:42
03:43 llfourn left
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:46
It's quite intriguing 03:47
b2gills There is a messaging bot as well. 03:48
03:48 bin_005 left 03:50 vendethiel left 04:01 TEttinger joined 04:03 hoelzro_ii joined 04:04 hoelzro_ii left 04:12 dmitri left 04:20 atroxaper joined 04:22 laouji left 04:24 Hor|zon joined 04:27 khw left 04:29 Hor|zon left 04:34 mr-foobar joined 04:45 ssqq joined
ssqq Why Perl6 index Str behaviour only support [0]. 04:47
p6: "perl"[0].say; 04:48
camelia rakudo-moar 5d1ec3: OUTPUT«perl␤»
ssqq p6: "perl"[1].say
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␤␤»
skids There is only one thing there, the string "perl" at index 0.
What you are lookig for is a substr. 04:49
moritz use substr for indexing str
skids m: "perl".substr(1,1).say
camelia rakudo-moar 5d1ec3: OUTPUT«e␤»
ssqq Str is consist of char, index str should return char. 04:52
skids Str is not a Positional.
It does not use the .[] API. 04:53
ssqq p6: "str".[0]
camelia ( no output )
ssqq p6: "str".[0].say
camelia rakudo-moar 5d1ec3: OUTPUT«str␤»
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)
skids m: my $a = "perl"; $a[0].say; my $b = ("perl", "6"); $b[1].say 04:55
camelia rakudo-moar 5d1ec3: OUTPUT«perl␤6␤»
skids m: <perl 6>[1].say 04:56
camelia rakudo-moar 5d1ec3: OUTPUT«6␤»
04:58 ssqq_ joined 05:00 ssqq left 05:01 aborazmeh joined, aborazmeh left, aborazmeh joined
ssqq_ If it is same in before version? I need test. 05:01
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␤»
skids "before version"?
05:04 ssqq_ left 05:09 laouji joined 05:10 lizmat joined 05:13 skids left 05:19 FROGGS left
dalek href="https://perl6.org:">perl6.org: 4010451 | lizmat++ | source/documentation/index.html:
Remove "Using Perl 6" book from newbie list

Until we have unbitrotted this effort, it should probably not be mentioned to Perl 6 newbies, as it gives a *very* bad impression.
05:22
05:22 abraxxa joined, xfix joined, xfix left, xfix joined
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"
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 05:30 Hor|zon left
lizmat re: irclog.perlgeek.de/perl6/2015-07-23#i_10943127 05:32
I wonder whether it would make sense for the -index functions to return "0 but True" for 0 ?
then:
if "foo".index(...) -> $pos { }
would simply work
always 05:33
Or maybe we should revive StrPos as a subclass of Int where method Bool { self.defined } 05:38
ShimmerFairy lizmat: I really like the sound of "0 but True". Sounds like a really good case for that seemingly-silly declaration. 05:40
05:40 llfourn joined
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:41
lizmat I realize they were pre-NFG, but maybe at least StrPos could be repurposed 05:42
and the way I see it, it wouldn't cost any performance
05:42 atroxaper left
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
05:43 atroxaper joined
ShimmerFairy wonders if the really old cruft like Char is still in the specs in places 05:43
lizmat S29 has some Char 05:45
ShimmerFairy Yeah, I recall S29 having a lot of old-ness to it 05:46
oh wow, the "Matcher" type I saw in S32 isn't just a placeholder name, according to S29 05:48
"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:54
lizmat seems all of that is from 23d760e0 from 2006 :-() 05:58
ShimmerFairy yeah, with just a couple lines from 2008 and 2010 :)
lizmat ah, it's even older...
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:00
lizmat indeed... sometimes I wonder whether we would need subclassing at all 06:03
especially since roles in Perl 6 autopun to a class
How does this look: 06:04
$ 6 'if "foo".index("f") -> $pos { say $pos }'
0
$ 6 'if "foo".index("g") -> $pos { say $pos }' 06:05
(nothing)
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 Calibellus left
ShimmerFairy subclassing in Perl 6, to be specific :) 06:06
lizmat hmmm... maybe StrPos is not the best name 06:07
since we probably also want to use this for grep-index, and then it's not a StrPos
(as Position in String) 06:08
maybe just Pos would be better 06:09
ShimmerFairy Pos sounds like it could be useful in more places, such as Buf. Maybe even in post-GLR lists. 06:10
06:12 mr-foobar left 06:14 aborazmeh left
lizmat grrr... my patch breaks the optimizer optimizing rindex("foo","x") 06:14
dalek ecs: af82a6f | ShimmerFairy++ | S (3 files):
Remove ancient string types

This bids fairwell to the C<AnyChar>, C<Char>, C<CharLingua> C<Grapheme>, C<Codepoint>, and C<Byte> types. Note that S32::Str needs some more involved editing to be more in line with how strings are handled handled nowadays.
06:15
06:16 domidumont joined
dalek kudo/nom: af22999 | lizmat++ | src/Perl6/Optimizer.nqp:
Don't die optimizing a type object as return value
06:22
06:26 Hor|zon joined
lizmat On the parallelizing and >>.method front: 06:28
06:28 domidumont left
lizmat I wonder whether it would make sense to add a Routine trait such as "is ok2async" (name TBD) 06:28
06:29 RabidGravy joined
lizmat that would indicate that it is ok to actually run the method in parallel when called in a >>. meta op 06:29
as a runtime / compiler hint
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 Hor|zon left
lizmat as opposed to something like @people>>.name 06:31
it would at least give us some data points as to actually auto-parallelizing >>. would work
06:32 [Tux] joined
ShimmerFairy is thready ? 06:32
dalek kudo/nom: 9582ebc | lizmat++ | src/core/Int.pm:
Introduce Pos is Int where 0 is still True
06:34
kudo/nom: 7c615ad | lizmat++ | src/core/Cool.pm:
Make index/rindex return Pos rather than Int
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) :)
lizmat like the pun on ready
but would like to not mention threads as much as possible
maybe "is asyncy" ? 06:35
or, to keep in line with start { }
"is starty" ?
06:37 dolmen joined
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:37
asyncy would be more immediately obvious, however 06:38
06:38 amurf left
ShimmerFairy Building off the hyper op this idea is caused by, I can also think of "hypery", "hyperish", and "hyperable" 06:39
06:40 espadrine_ joined
lizmat hmmm... hypery 06:40
I guess that makes the most sense... 06:41
06:41 gfldex joined
lizmat hyperable to be more "English" probably 06:42
06:43 domidumont joined
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:44
lizmat indeed 06:45
06:47 domidumont left 06:48 domidumont joined 06:50 darutoko joined, dolmen left
dalek kudo/nom: f971dbd | lizmat++ | src/core/ (2 files):
Make grep/first/last-index return Pos
06:50
ast: f266c4e | lizmat++ | S32-list/grep-index.t:
Test grep-index less precisely to allow for Pos
06:51
lizmat re: irclog.perlgeek.de/perl6/2015-07-23#i_10945167 on has $!x! 06:55
yes, that would be a bit awkward
06:56 FROGGS joined
lizmat on the other hand, I don't think many private attributes are generally intializable through .new 06:56
so generally, it would always be $.x!
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/
ShimmerFairy o/
"Can't publicly require private attribute", perhaps? 06:58
lizmat well, "is required" is moot if you make your own BUILD anyway
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)␤»
lizmat m: class A { has $.a is required; method BUILD(:$!a) {} }; A.new(a => 42).perl.say
camelia rakudo-moar 7c615a: OUTPUT«A.new(a => 42)␤»
lizmat FROGGS o/ 07:00
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:02
lizmat Indeed 07:03
.oO( starting to sound like Teal'c now )
ShimmerFairy Same goes for whatever "is optional" looks like, of course :)
07:14 Tux__ joined
RabidGravy morning! 07:14
07:14 tinyblak left 07:15 tinyblak joined
lizmat RabidGravy o/ 07:16
RabidGravy are we all fabulous?
lizmat is that a junction ? 07:21
lizmat goes to bed 07:22
07:25 bjz joined 07:27 Hor|zon joined 07:32 zakharyas joined, Hor|zon left 07:35 dayangkun joined
jdv79 i thought >> means async the calls - why make it more complicated with a hint? 07:36
FROGGS a hint? what have I missed? 07:37
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
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
jdv79 ditto. seems like unnecesary complexity.
ShimmerFairy FROGGS: ». just does parallelization. AFAIK there's no guarantee it would be safe to do so.
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"
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.
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.
01:14Z <japhb> jnthn: Although I suppose it could just be the general non-threadsafe qualities of Rakudo's Test module ....
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
ShimmerFairy: in any case, concurrency should be the default, not the exception
jnthn No need for any such thing; writing >>.bar in a situation where it's not OK to parallelize is erroneous.
FROGGS +1
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.
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.
jnthn ShimmerFairy: Method calls are late bound, how can it possibly be a compiler hint? 07:44
ShimmerFairy: What if I have a list of objects of different types?
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
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
("you" in the general sense, if that's not clear)
07:45 bjz left
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:47
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.
dalek ok: 1ae49ec | paultcochrane++ | README:
Add note about archival nature of repo
ok: a036141 | moritz++ | README:
Merge pull request #83 from paultcochrane/pr/add-obsolescence-note

Add note about archival nature of repo
jnthn jdv79: Not yet
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)
jdv79 oh, that's why. i know i've seen >>. break stuff that map/for work fine on
jnthn ShimmerFairy: I don't really get the "I learned the language badly and now want to change the langauge" argument.
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 telex left
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:49
jnthn ShimmerFairy: Sure, which means we'd probably better do it sooner rather than later. 07:50
07:50 telex joined
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
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
By all means, fix it sooner rather than later :)
jdv79 also, wasn't there something like >>., if not that, that retained order but did parallel?
jnthn jdv79: >>. retains order of *results*, it just dis-orders evaluation.
jdv79 ah, gotcha. 07:52
07:52 tinyblak left
jdv79 that makes the failures i observed make even more sense 07:52
du
h
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
07:53 tinyblak joined
jnthn Not all, of course. 07:54
fwiw, @foo.map(*.bar).race *is* allowed to disorder the results. 07:55
jnthn bbi30 07:56
08:04 mr-foobar joined, atroxaper left
jdv79 so, how does that line of code work then? @foo calls map which calls race... 08:05
08:10 rindolf joined
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
sup rindolf?
rindolf jdv79: hi.
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 08:13 atroxaper joined
rindolf jdv79: yes, I went to sleep relatively late. 08:13
But not that late.
jdv79 btw, does "Testing Digest" hand for anyone else? 08:14
i had to kill it before it ate all ram 08:15
:(
xiaomiao jdv79: 'ulimit' ftw
rindolf jdv79: what's up with you?
jdv79 well, i don't want to just stop it from breakin 08:16
i'd like it to install
xiaomiao ulimit just avoids that you manually need to kill things 08:17
08:17 atroxaper left
masak morning, #perl6 08:17
jdv79 not really my goal
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.
morning, masak 08:19
jdv79 still thinks in p5 terms - oops 08:23
thanks
rindolf: just seein sights and relazing 08:26
*relaxing
08:27 amurf joined
rindolf jdv79: ah, OK. 08:28
jdv79: nice.
08:31 amurf left 08:33 atroxaper joined 08:39 rindolf left 08:45 Ven joined, jack_rabbit left 08:47 espadrine_ left 08:49 rindolf joined 09:07 inokenty joined 09:08 smls joined
Woodi hallo #perl6 :) 09:09
09:09 espadrine_ joined
nine Hello Woodi 09:10
Woodi found article about spreadsheets on HN semantic-domain.blogspot.com/2015/0...sheet.html
now we have native arrays so we can overload them a bit :)
looks cell is a structure that have @observers, so suplies could be used :) 09:11
09:13 Ven left
jnthn Yeah, supplies would be a neat fit for that :) 09:13
Just tap your dependencies.
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:14
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:19
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
Would also provided an easier upgrade path from non-async to async in some cases.
llfourn so if you try to read the val it will block? 09:21
smls yeah
moritz smls: except that type checks also need to read the value
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.
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
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.
hm. that was almost a good way to say it :) 09:24
jnthn smls: You could probably do it today with Proxy 09:25
smls: But what moritz said also.
09:25 atroxaper left
dalek c: 89bc3de | paultcochrane++ | lib/Type/IO/Path.pod:
Wrap long lines for easier POD readability

This does not change any content.
09:26
jnthn smls: Plus a bunch of the time you *do* want the Promise to use it with some other combinator.
smls true
jnthn Folks can easily experiment with such things in module space, though. 09:27
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
smls masak: In Perl 6, postfixes tend to be tighter than prefixes. 09:28
Granted, the only postfixes are method calls and ++, so it's not much to establish a patter from :P
*pattern
well, unless you count postcircumfixes 09:29
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
smls I.e. more as a performance improvement, rather than proper concurrent algorithms. 09:32
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
RabidGravy the proxy thing surprised me 09:34
masak smls: in 007, postfixes tend to be tighter than prefixes, too.
smls: but in both Perl 6 and 007, you're free to give them any precedence level.
09:35 atroxaper left
RabidGravy right, Whitstable beer festival! see you all later! 09:35
09:40 RabidGravy left, atroxaper joined 09:49 tinyblak left 09:54 [Tux] left 09:57 sivoais left, sivoais joined 10:00 Hor|zon left
Woodi why check promise type ? it can be predeclared and throw type error if other type is returned ? 10:01
for me promise is just strange routine 10:02
10:02 tinyblak joined
moritz it's an object 10:02
or a class, to be more precise
and smls talked about hiding it more, making it implicit
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
smls unless of course you could strictly type it to know ikt's eventual value's type, like PromiseScalar[Int] ;) 10:04
10:05 sivoais left
moritz but then it's not implicit anymore, and the benefit gone 10:05
smls Why?
from the caller perspective, nothing changes
moritz why what?
huh? 10:06
smls it's the source that would need to take care of constructing it appropriately
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...
then message sending would have sense :)
smls moritz: Well, the caller of foo() would not have to care much whether foo returns an Int or a PromiseScalar[Int]
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
smls: neither approach seems to fit this situation
10:07 sivoais joined
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:07
smls "ignored in type checks" and it can't override that? 10:08
jnthn Well, more accurately, FETCH is called to get the value to check. 10:09
And no, you can't override that. 10:10
You don't know why the thing is being fetched.
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
and you'd break that assumption with a typed promise 10:11
smls why would it break it?
my Int $x = f(); would still work
moritz I don't see how.
afk
smls but, I see what jnthn is saying, that's not technically feasible then. 10:12
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:13
jnthn nine: That'll end horribly badly at present. 10:14
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.
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 :)
jnthn wonders which VMs supports this case already :) 10:16
10:16 bin_005 joined
Woodi probably C[++] :) 10:17
jnthn That's not a VM :P
Woodi but such thing is just a step from distributed computing :)
jnthn Apparently you're just a step from understanding threads vs processes :P 10:19
10:19 Begi joined
Woodi they are similiar, right ? 10:19
too many abstract thinking, ok 10:20
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.
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
nine I wonder how Python bindings deal with this 10:23
10:24 TEttinger left 10:36 chansen_ left, chansen_ joined, cibs left 10:38 dayangkun left 10:40 JimmyZ_ joined
timotimo easy: the GIL 10:42
or is "this" something else?
10:42 ribasushi joined
timotimo .o( python bindings don't have to deal with this, they have to deal with self ) 10:43
jnthn
.oO( As a Java programmar used to this, I wonder how you Python folks live with your self... )
10:44
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…»
daxim_ I don't understand this error message
jnthn Me either. o.O I mean, the use of return outside of a sub is wrong... 10:48
m:({a=>1,b=>2}, {c=>3,d=>4}).map({ if (.<a>) {$_} })
m: ({a=>1,b=>2}, {c=>3,d=>4}).map({ if (.<a>) {$_} })
camelia ( no output )
jnthn m: ({a=>1,b=>2}, {c=>3,d=>4}).map({ if (.<a>) {$_} }).say
camelia rakudo-moar f971db: OUTPUT«a => 1, b => 2␤»
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␤»
ShimmerFairy or for clarity, $_<a>:exists :)
smls or .grep(*.<a>)
jnthn .grep(*<a>) probably does it even 10:50
m: sub foo { ({a=>1,b=>2}, {c=>3,d=>4}).map({ if (.<a>) {return $_} else { return } }) }; say foo
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…»
daxim_ what is the inner of map, if not a sub?
smls a Block
jnthn You can make it a sub if you want
daxim_ with explicit sub keyword? 10:51
jnthn Yes
daxim_ I see
jnthn return applies to the enclosing sub/method
smls «sub { }» is a Sub which is a kind of Routine which is a kind of Block; «{ }» is merely a Block
jnthn I thought it worked that way in Perl 5 too... o.O
moritz m: say Sub ~~ Block 10:52
camelia rakudo-moar f971db: OUTPUT«True␤»
daxim_ do we already have a perltrap document?
jnthn Perhaps the best way to think of it is that C<for> in Perl 6 is just sugar for `map`
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
with the bare blocks provided by built-in constructs like map 10:54
10:54 llfourn left
smls ➜ perl -E 'sub a { map { return; } 42; say "alive" }; a(); say "end"' 10:55
end
jnthn Was gonna say
daxim_ oh wow, the return only worked incidentally. I probably have lots of wrong code 10:57
10:57 cognominal joined
jnthn .tell skids See around 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.
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:02
11:07 ggherdov left 11:10 ggherdov joined 11:16 Psyche^ joined, AlexDaniel joined
timotimo at least sharing thread-local variables doesn't become problematic, though? 11:19
11:20 Psyche^_ left
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…»
ShimmerFairy ^ S32::Str says this should work, but do we really need a string-constant-based comb? 11:21
11:21 pnu left, pnu joined
jnthn ShimmerFairy: I think split has one; if so, it's a nice consistency if comb does too 11:23
ShimmerFairy jnthn: fair enough, it just seems kinda silly for comb (though I imagine +$str.comb("B") would be a nice trick) 11:24
jnthn True. 11:25
moritz www.reddit.com/r/lolphp/comments/3...d_numbers/ 11:28
and www.reddit.com/r/lolphp/comments/3...rs/ctdifqp in particular
timotimo This script was stopped while abusing our resources 11:31
11:33 brrt joined 11:35 tinyblak left
AlexDaniel timotimo: it is just a bunch of odd numbers 11:38
timotimo 01f36c6700000001, 3ea3da3300000001, 728f8ab300000001 ... 11:39
AlexDaniel yea 11:40
moritz it hurts
they just scale up the numbers
timotimo well 11:41
it *is* a mersenne twister implementation
how do you expect it to react? :)
ShimmerFairy I think rakudo has a similar gap of zeros in its random numbers atm (though hopefully not for the same reasons :P)
timotimo hm, maybe consume two "numbers" from the twister
11:42 piotr_ joined
moritz timotimo: yes, and bin-pack them into one 11:42
11:43 piotr_ left
timotimo right 11:43
like you would expect any random number generator to do it
but now you can't
because backwards compatibility
colomon Doesn’t moar do that?
ShimmerFairy Or use a 64-bit twister (C++11 gives you mt19937_64 even)
timotimo time to implement mt_rand_really
11:43 abraxxa left
brrt perl5 question; how do I add the directory including the script to the 'use' include directory 11:47
literally: i have perl tools/tree-expr-compiler.pl and i want to use SEXPR.pm
which is located in tools/SEXPR.pm
preferably by command line flag 11:49
for some reason, perl tools/foo.pl -Ifoo/ doesn't work
oh, perl -Itools/ tools/foo.pl does 11:50
11:54 bin_005 left 11:57 laouji left 12:00 tinyblak joined
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{ };␤»
AlexDaniel missing block? But there it is 12:01
timotimo haha
AlexDaniel does anybody have any idea how I can make it eat that block?
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?
jnthn Dunno 12:03
std: if True if { };
camelia std 28329a7: OUTPUT«5===SORRY!5===␤Missing block at /tmp/XbS0PJUJZo line 1:␤------> 3if True 7⏏5if { };␤Parse failed␤FAILED 00:00 135m␤»
jnthn That gets it where it wants to go.
AlexDaniel oooh, holly std does it right again 12:04
-l
12:04 amurf joined 12:05 domidumont left
brrt camelia outputs color? :-o 12:06
or
AlexDaniel brrt: yea?
brrt never seen that before
arnsholt Always has, I think 12:07
timotimo for a long time
jnthn Upgraded/changed IRC client maybe? 12:08
brrt pidgin, rather than polari
so yeah
12:09 amurf left
timotimo i think it outputs color as ascii sequences, no? 12:09
FROGGS brrt: welcome in 2015 :o)
brrt :-) 12:10
(polari is supposed to be modern gnome3, figure that)
FROGGS modern often does not mean colourful though 12:11
looking at you, iPhone and BlackBerry
brrt that's a shame, i think, i like colours 12:12
12:14 brrt left
moritz too, as long as they are black and white :-) 12:15
FROGGS has not yet seen a color which was black and white 12:16
jnthn Yeah, but you didn't do an optics PhD... :)
moritz didn't finish it either 12:17
jnthn Oh, I thought you had... 12:18
12:19 atroxaper left
moritz no, after two years I started a real job 12:19
12:20 JimmyZ_ left, Begi left
jnthn You made it two years further than me :) 12:21
12:21 Begi joined
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
12:22 llfourn joined
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.
AlexDaniel m: .say if $_ < 6 for 5, 9, 2, 5; 12:24
camelia rakudo-moar f971db: OUTPUT«5␤2␤5␤»
AlexDaniel it looks so weird :)
Juerd jnthn++
colomon jnthn++ 12:28
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…»
AlexDaniel I'm not sure what this code should actually mean, but the error is scary
colomon pondered a PhD, but liked the idea of making money rather than just spending it. :)
timotimo m: { $_ * 2 }.say 12:30
camelia rakudo-moar f971db: OUTPUT«-> (;; $_? is parcel) { #`(Block|56863456) ... }␤»
ShimmerFairy m: (1, 2, 3).map({ $_ * 2 }.say)
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…»
ShimmerFairy ^ It ideally would be spec'd as equivalent to that :)
AlexDaniel ShimmerFairy: sure 12:31
jnthn I think something has rather upset error reporting...
The message is correct but that's a low-level backtrace :S
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…»
ShimmerFairy ^ golfs to that
AlexDaniel yay
jnthn multi method map($block, :$label) is rw { 12:33
If you hate it, shoulda put an & on it
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)
(if the coder insisted on the $ sigil, that is)
jnthn ShimmerFairy: Callable $block is equivalent, yeah
I don't mind much either way
AlexDaniel jnthn: should I submit rakudobug or will you fix it right away?
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
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
AlexDaniel OK done 12:39
smls What is "IBM Code Page 437" called for the purposes of Perl 6's .decode ? 12:41
timotimo probably "NYI"?
12:41 mr-foobar left
ShimmerFairy It probably _would_ be CP437 , as that's the abbreviation I usually see. 12:42
AlexDaniel is there any unicode equivalent to * (Whatever) ?
smls its not that unusual of an encoding; older file formats like ZIP and NFO, specify it as the default.
AlexDaniel * * 2 looks horrible
12:43 tinyblak left
smls AlexDaniel: you can always use {$_ * 2} 12:43
AlexDaniel * × 2
12:44 tinyblak joined
AlexDaniel smls: yeah, hm, true 12:44
12:45 tinyblak_ joined, bjz left 12:48 tinyblak left 12:52 diana_olhovik joined
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:55
12:56 xinming_ joined
moritz ShimmerFairy: from .substr(*-2) for indexing from the end 12:57
smls Doesn't Rakudo use iconv or something for character encodings?
colomon Pretty sure that "ABCD".substr(*-1) has been understood to work for at least a decade. :)
moritz smls: I'm pretty sure it doesn't
colomon: used to be -1, iirc
ShimmerFairy moritz: That's what it seemed like (checking git history), I just wanted to make sure.
moritz though I can't say when
smls so it has a custom implementation for all encodings? 12:58
colomon moritz: perl 5, sure. :)
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)
12:58 xinming left 12:59 diana_olhovik left
jnthn smls: For one iconv isn't reliably available everywhere anyway, and for another we need to decode to NFG. 13:02
13:03 tinyblak_ left
jnthn smls: And even then I don't think every encoding in the world belongs in the core language either... 13:03
13:03 tinyblak joined
jnthn Granted the API for plugging in further ones is not really there yet. 13:03
13:04 diana_olhovik_ joined
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:08 tinyblak left 13:09 tinyblak joined 13:11 tinyblak left 13:12 tinyblak joined
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␤»
smls I agree with ShimmerFairy there 13:14
Shouldn't it accept (Int, Int) *or* (Pair) ?
s/Pair/Range/ 13:15
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
m: say (0..1).Int
camelia rakudo-moar f971db: OUTPUT«2␤»
ShimmerFairy I believe that's how the second example happens. I think the first one is just ignoring the 4 13:17
13:20 brrt joined 13:21 lucasb joined 13:22 virtualsue joined 13:26 skids joined, tinyblak left 13:29 tinyblak joined
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)␤␤»
Begi my $key = prompt('> '); @letters.rotate($key) 13:38
13:38 Uniaika joined
Begi Why shoul I convert $key to Int ? 13:38
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?
Begi perljam : yes
PerlJam I dunno 13:40
I suppose it could
13:41 Woodi left
masak PerlJam: I don't understand. what's Perl not doing here? 13:41
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␤»
jnthn m: my @a = 1..10; say @a.rotate('2')
camelia rakudo-moar f971db: OUTPUT«Type check failed in binding $n; expected 'Int' but got 'Str'␤ in block <unit> at /tmp/h5MzeoRZjT:1␤␤»
jnthn Not Cool
masak yeah, I'd say that's very uncool. 13:43
masak submits rakudobug
Begi I do not expect that with Perl6. Thanks masak 13:44
masak spectests a fix 13:46
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?
and no-one else volunteered, so I guess I'll do it...
13:48 JimmyZ_ joined
PerlJam brrt: With a module perhaps. 13:48
brrt ok; that won't do :-) 13:49
13:49 Uniaika left
masak why won't a module do? 13:49
brrt because this has to run as part of MoarVM building
PerlJam you can also use glob(), but that's a little weird
brrt: you can bundle the module
brrt yeah, that'd be possible too 13:50
how would glob() work?
PerlJam brrt: blogs.perl.org/users/dana_jacobsen/...tions.html btw
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
masak metacpan.org/pod/App::FatPacker
PerlJam: that's not a permutation, though.
PerlJam no, but that's the start :)
brrt hmmm
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.
Begi To use my @a.rotate(prompt()), how can I do ?
masak Begi: @a.rotate(+prompt()) 13:53
Begi: but I'm spectesting a fix.
13:54 amurf joined
masak failing test (13) in t/spec/S05-metasyntax/unknown.rakudo.moar 13:54
doesn't look like that one was me. someone want to investigate?
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 ?
masak now.
dalek kudo/nom: f14919c | (Carl Masak)++ | src/core/List.pm:
make the argument to .rotate Cool
PerlJam masak: Wouldn't Int(Cool) be a little more self-documenting? 13:56
13:57 tinyblak left
masak PerlJam: you might be right. feel free to change it to that. 13:57
PerlJam: is there prior art? what do we do in other similar methods?
PerlJam acks
masak mentioned the fix in rt.perl.org/Ticket/Display.html?id=125677
13:57 tinyblak joined
masak starts the release process, somewhat reluctantly 13:58
13:58 amurf left
masak it bothers me that we went a day late. I was trying to prevent that yesterday, but somehow failed. 13:58
13:58 diana_olhovik_ left
masak guess everyone is in vacation mode or something ;) 13:58
dalek kudo/nom: 75374dd | (Carl Masak)++ | docs/release_guide.pod:
grab this release
13:59
14:00 diana_olhovik_ joined
jnthn masak: On release stuff: I fear we may have a nasty regression in error reporting. :/ 14:00
masak :/
jnthn: tell me more. should we hold off the compiler release for it?
jnthn: is it likely to get fixed soon?
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?
ok, good.
masak prepares the release in the meantime
jnthn masak: Yeah a revert may be in order. We'll see.
timotimo the moarvm changelog seems kind of sparse at the moment
skids Well, I can easily restore the errors. As to why the backtrace is (Any) is a depper nystery
yoleaux 10:58Z <jnthn> skids: See around irclog.perlgeek.de/perl6/2015-07-24#i_10947364 but I suspect your recent improvements to error reporting may have regressed the reporting here
PerlJam notices that Parcel has a .rotate method that's remarkably similar to List's 14:02
masak was moarvm released this month?
(no rush -- still a ways off from releasing Rakudo)
jnthn masak: Not yet, I guess I'd better take care of that today also.
masak jnthn: if you don't, then I have the perfect excuse not to release Rakudo today :P 14:03
14:03 khw joined
lizmat is just awake, didn't backlog and wonders what needs to be reverted 14:03
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.
PerlJam We apparently only use things like Int(Cool) in very few places.
lucasb Should it be just Int() ? Passing a Num like [email@hidden.address] 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.
(just not the backtrace)
jnthn Well, the case in the backlog today was quite ugly.
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?
lizmat because of anybody makes their own class with an .Int method, it would most likely not inherit from Cool, but Any
*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
masak jnthn: mind if I name this month's release "Prague"? :D
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
masak gah, I can't generate the necessary keys either :( 14:08
or, at least I failed last time.
lizmat masak: +1 to Prague :-)
masak did anyone *succeed* since I tried back in April?
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.
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
skids: Still doing the build
lizmat so you're saying that if someone creates a numeric like class, it should inherit from Cool ?
ShimmerFairy masak: generate keys for what? I see something about GPG keys under step 13, but that shouldn't be dependent on rakudo... right?
masak to me, Cool is "those string-int-double things that sit in Perl 5 scalars" 14:10
ShimmerFairy: no, but it's part of the release process now.
jnthn lizmat: If they want it to behave like the built-in ones, yes
timotimo Coercable Objects Or l'exception
masak ShimmerFairy: and I tried last time -- even prepared it a day in advance -- and still failed. :(
timotimo heads off for the rest of the day
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)
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
masak if not, I will try my best, and if I can't get it to work, I might release the stuff keyless.
lizmat because it is more general
masak I will need help uploading nqp and Rakudo to the normal places anyway.
lizmat jnthn: like, if you want your class coercable to Foo, you supply a .Foo method 14:13
if you want your class to be coercable to Set, you only need to supply a .Set method
that's general and easy to explain
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:14
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
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.
lizmat masak: I think it is indeed less needed
ShimmerFairy masak: So types that Cool covers are redundant with coerced type params? That's... suboptimal.
masak I wouldn't say redundant.
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 kudo/nom: 9908374 | (Carl Masak)++ | docs/announce/2015.07.md:
stub new release announcement 2015.07.md
masak ShimmerFairy: it would be a fun experiment to remove Cool in a branch, I guess.
jnthn It's sub-optimal people whine without understanding the reasosn for things properly too, but we can't all have what we want. :/
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
ShimmerFairy masak: I agree, that does sound interesting.
lizmat re: irclog.perlgeek.de/perl6/2015-07-24#i_10946843 "is hyperable" 14:19
masak jnthn: Dunning-Kruger and youth. have patience. :)
lizmat point taken, will start working on making it really parallelize after the release
14:19 [Tux] joined
skids jnthn: I sent a PR with the half-fix. 14:19
jnthn skids: looking
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.
ShimmerFairy: Cool is also where a bunch of methods we want to behave weakly typed on their invocant live. 14:21
14:21 tinyblak left
lizmat jnthn: maybe before we do parallelize >>. , we need to develop some back pressure functionality in .cue ing jobs 14:22
dalek kudo/nom: c0cd929 | skids++ | src/core/Exception.pm:
Half-fix regression where somehow we now get a Backtrace of (Any)

   still output the error message. Why the backtrace is (Any) in the
   first place still needs to be figured out.
kudo/nom: 417660b | jnthn++ | src/core/Exception.pm:
Merge pull request #476 from skids/Failure2

Half-fix regression where somehow we now get a Backtrace of (Any)
14:22 brrt left
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
14:23 tinyblak joined
lizmat so that .cue ing jobs for 100K elements will block after reaching a high-water mark 14:23
and unblock when reaching a low-water mark again
jnthn lizmat: Oh, there's no way we cue every single array item separately, that's horrible.
skids jnthn: unfortunately I'm not supposed to be working on this at this moment in time :-)
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.
jnthn skids: OK, I can try and figure it out if you're busy 14:24
skids Yeah, firewall rules to transcribe :-/
ShimmerFairy masak: I don't think my grep arity fix is in there
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
jnthn lizmat: Something more like that, yes 14:26
lizmat jnthn: yuck :-)
jnthn lizmat: That plus some work stealing is the standard way to implement these things.
lizmat work stealing?
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:27
dalek kudo/nom: cd17648 | (Carl Masak)++ | docs/ChangeLog:
small fixes and one addition

Added ShimmerFairy++'s .grep fix.
14:28
jnthn perl6-m -e "(1,2,3).map(True)" # still gives the icky error
14:28 tinyblak left
jnthn m: return 14:28
camelia ( no output )
jnthn That one doesn't swallow the error any more
Though gives it as SORRY
Hmm
14:29 tinyblak joined
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...
Hm, so that *isn't* a regression
lizmat .?count ?
jnthn Oh, I get I know why.
lizmat: No, we should just never bind True 14:31
lizmat: The problem we're looking at here is the backtrace being a VM-level one, not a Perl 6 level one
lizmat: Which I'd thought was a regression, but it seems not.
14:31 virtualsue left
lizmat ack 14:31
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…»
jnthn That one still dies horribly..
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.…»
jnthn But also no regression.
OK, skids++ is not as to blame as I first feared ;) 14:34
skids Well, I am for one of them :-)
jnthn skids: Which one?
skids m: sub foo { ({a=>1,b=>2}, {c=>3,d=>4}).map({ if (.<a>) {return $_} else { return } }) }; say foo
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…»
jnthn oh, that one :) 14:35
star: sub foo { ({a=>1,b=>2}, {c=>3,d=>4}).map({ if (.<a>) {return $_} else { return } }) }; say foo
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␤␤»
jnthn m: sub foo { ({a=>1,b=>2}, {c=>3,d=>4}).map({ if (.<a>) {return $_} else { return } }) }; say foo
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…»
jnthn oh, duh, not rebuilt yet ;)
skids But with the new fix it will do a SORRY with that PR applied, just the bactrace is AWOL.
jnthn Yeah, OK, so that one *is* a regression. 14:36
14:37 xinming_ is now known as xinming
lizmat hmmm... a SORRY is a compile time error, how can that have a backtrace ? 14:38
14:39 tinyblak left
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...
Ah, skids was faster 14:40
skids: This bit:
- method throw($bt?) {
+ method throw(Exception:D: $bt?) {
Is that right?
14:40 tinyblak joined
lizmat I have no idea 14:40
breakfast and stuff&
jnthn skids: 'cus we do:
nqp::bindattr(self, Exception, '$!bt', $bt); # Even if !$bt
And that field would want to be a BackTrace?
masak .oO( Breakfast and Stuff at Tiffany's )
jnthn oh argh 14:41
I misread, ignore me :)
skids jnthn: that clears the cache if you throw the same exception again (not .rethrow but .throw)
14:42 JimmyZ_ left, darutoko left 14:43 darutoko joined 14:44 inokenty left, JimmyZ_ joined 14:45 tinyblak left, inokenty joined, tinyblak joined
masak I again extend a request for someone who knows about the key management for Rakudo releases. 14:46
14:46 smls left
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:46
14:49 tinyblak left 14:50 tinyblak joined
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)
masak - token prefix:sym<^> { <sym> <O('%symbolic_unary')> }
+ token prefix:sym<^> {
+ <sym> <O('%symbolic_unary')>
+ [ \d+ <?before \. <?alpha> > <.worry: "Precedence of ^ is looser than method; please parenthesize"> ]?
+ }
ShimmerFairy: I already tried that. (and succeeded.)
ShimmerFairy: I failed later, when trying to sign the tar file.
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:51
14:51 tinyblak left 14:53 tinyblak joined
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:55
14:55 inokenty left
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.
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
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
nwc10 7:57am - good morning, ShimmerFairy :-)
14:57 Woodi joined
masak ShimmerFairy: sounds nice :) some of us are too old and responsible to manage that kind of sleep schedule :P 14:58
14:58 inokenty joined
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
jnthn skids: And $!bt contains something non-concrete
well, and falsey 14:59
masak m: say :16(':8<377>')
camelia rakudo-moar cd1764: OUTPUT«255␤»
masak m: say :8<377> 15:00
camelia rakudo-moar cd1764: OUTPUT«255␤»
flussence ↓ thanks for doing that for me, moritz++
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.
Begi m : my @list = 'a','b','c'; say first-index('b', @list);
m: my @list = 'a','b','c'; say first-index('b', @list);
camelia rakudo-moar cd1764: OUTPUT«1␤»
Begi I'm not sure, but is it a mistake in the doc ? doc.perl6.org/type/List#routine_first-index 15:01
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
(if it's in fact causing issues)
masak m: :16(':8< :10<500> >')
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 left, xinming joined
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.
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
Begi PerJam : Oups, sorry'
PerlJam Begi: I guess the docs need improving so that others won't make the same mistake. 15:05
flussence: I second your minor whine. (I do that too :) 15:06
Begi PerlJam: Yes, it's not alwais clear
masak skids: I'd like to discuss commit messages with you at some point when you have time :) 15:07
skids: tl;dr: second line should be blank.
dalek kudo/nom: eba7e0e | (Carl Masak)++ | docs/ChangeLog:
[docs/ChangeLog] add many features/fixes from log
15:08
masak I now believe docs/ChangeLog to be caught up with the month. please let me know if I missed something important. 15:09
15:11 Hor|zon joined
dalek kudo/nom: 42113a0 | (Carl Masak)++ | docs/announce/2015.07.md:
make selection of features/fixes for announcement
15:12
15:12 llfourn left
jnthn oh...I think I found the regression 15:13
dalek ecs: 6d5f4ac | ShimmerFairy++ | S32-setting-library/Str.pod:
Update S32::Str to align better with S15

This commit removes quite a bit of cruft from the pre-S15 days, and additonally reformats the code blocks so that they stand out more in the file, and for longer function signatures, makes them less crowded.
The only functional changes in this commit is the removal of the special exception for C<&tcuc> in the C<wordcase> method (since C<&tcuc> apparently doesn't exist), and a clarification for sprintf that the '%' directive can only appear as a literal '%%' (both bringing it in line with C's printf behavior and ensuring nonsense like '%1$+*v0.5%' isn't accepted).
Ideally this synopsis would talk about the role(s) shared by the string types, instead of focusing on C<Str> as a model for other types. However the nature of these potential roles isn't clear enough yet to make that kind of change to this.
masak could someone *please* fix this? :( :( :( gist.github.com/masak/3b35401f80d3b6708d5f 15:15
(the deprecation message is coming from *inside* of Rakudo, how is this even possible?)
that is, we're spamming the user with something that's not their fault.
15:15 llfourn joined
masak I believe I've seen exactly this before. I think I may have submitted an RT ticket. will check. 15:15
yep, we ran into this back in June: irclog.perlgeek.de/perl6/2015-06-22#i_10785456 15:17
ugexe ill give it a shot in 10 minutes 15:18
looks easy enough
masak ugexe: the .pipe thing?
ShimmerFairy masak: there's IO/Path.pm:122 and io_operators.pm:85 , after a quick grep
masak well, anyone is welcome to fix this.
ShimmerFairy (of src/core only, I should clarify)
masak the winning condition is very simple.
you run the contributors.pl6 script, and it *doesn't* give you the deprecation warning :) 15:19
dalek kudo/nom: 814ea11 | moritz++ | tools/contributors.pl6:
Avoid deprecation warning in tools/contributors.pl6
moritz won
masak moritz++!
PerlJam heh
flussence
.oO( do we need a Carp.pm6? )
ugexe a better solution still is run with :cwd set to $repo
skids masak: I can do that. 15:20
masak confirmed. moritz++'s fix wins.
jnthn skids: Got it, and I'm not even sure it was you who bust it
Attempt to return outside of any Routine in block <unit> at -e:1
\o/
I'd better spectest it :)
masak hm, I guess "Sue" == "Sue Spence" in the contributors list? 15:21
and who is "root"? do we have a name there? :)
jnthn masak: I think so 15:22
masak [email@hidden.address] -- oh, that seems to be skids
skids: you commit things as root? :P
moritz masak: all "root" mails are contributed to "Reginald Oot" at $work :-)
15:22 domidumont left
masak moritz: "attributed"? 15:22
also, :P
moritz yes
skids masak: no, but I might have accidentally pulled that tree as root once. 15:23
15:23 inokenty left
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 :)
masak AlexDaniel: it's Release Day.
skids masak: I've never looked at how any of that is plumbed.
PerlJam AlexDaniel: when is this channel not crazy?
dalek kudo/nom: de3420e | moritz++ | tools/contributors.pl6:
use run(:cwd(...)) in contributors.pl6, ugexe++
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
:)
masak dang.
:P
skids masak: it hasn't been a priority for me to figure out why git did that, is all.
dalek kudo/nom: 0d2fea2 | (Carl Masak)++ | docs/announce/2015.07.md:
[announce] add this month's contributor list
masak skids: did you see my "second line blank" comment above? :) 15:25
^^ people plz check above list for duplicates, kthx
skids masak: yep, I'll take care about that in the future.
moritz skids: git config --global user.email 'your email here'
jnthn skids, masak: Fix for the error reporting regression nearly spectust
masak skids: gureit. :)
also people plz have a read-through of the entire announcement. I believe it's ready now.
kthx, kthx 15:26
PerlJam ShimmerFairy: Are you not in CREDITS?
jnthn Oh wow, I was top contrib this month?
masak: $?ROUTINE and $?BLOCK
masak jnthn: I believe they're listed in first-commit order :)
moritz * Numeric conversion ops (== > etc) for DateTimes
jnthn &?ROUTINE and &?BLOCK, no?
masak oh!
moritz shouldn't those be comparison ops?
masak yes
moritz: yes
masak fixes both of these
moritz++ jnthn++ 15:27
moritz Calling the .clone method with alternate values, no longer changes original
the comma, is a bit weird, no?
masak aye
moritz .grep and &grep now consumes multiple elements for many-param blocks
s/consumes/consume/
masak aye
jnthn masak: ENTER phaser now works as an r-value may be worth a mention
masak aye 15:28
masak is, somehow, keeping up
dalek kudo/nom: c683fe9 | jnthn++ | src/core/Exception.pm:
Fix a regression in reporting illegal C<return>.

The X::ControlFlow set of exceptions coming with the backtrace of the place that did the wrong control flow is certainly a good thing, but unfortunately the patch to make that happen meant we lost backtraces for C<return>. This fixes the regression.
15:29
kudo/nom: 8cedd59 | (Carl Masak)++ | docs/ (2 files):
numerous improvements to ChangeLog and announcement

  jnthn++ and moritz++
15:29 mr-foobar joined
jnthn masak: So, known regression dealt with :) 15:30
masak oh phew
also, jnthn++
AlexDaniel m: [::|||||||||::]
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…»
jnthn masak: I'm away for a bit, then I'll do the MoarVM release.
masak no problemo
jnthn AlexDaniel: yay, we get that one right :) 15:31
(For those curious, :: is a valid term, and || is a valid infix) 15:32
(So the first actual problem is the |
Uh, third |, which is parsed as a prefix
AlexDaniel :D
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
jnthn: how did you know
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
masak skids: feel like adding a line about that in ChangeLog? 15:33
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?"
jnthn: and sometimes I'm hunting stuff down on purpose
jnthn: like what's going to happen if I try to execute a directory
masak skids: sure. or paste the line here and I'll add it
AlexDaniel jnthn: then, when it reports an error, I'm almost reading it out loud 15:35
jnthn: and trying to do what it suggests me
jnthn: like, "expecting a block". So OK, I'll give you a block and see what happens next
ShimmerFairy PerlJam: what CREDITS?
15:35 telex left
ugexe a human fuzzer 15:36
masak ShimmerFairy: github.com/rakudo/rakudo/blob/nom/CREDITS
skids masak: ".assuming now produces closures with populated signatures, and tests binding of primers."
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
masak skids: "primers"? 15:36
15:37 inokenty joined
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
skids The design docs go on a minirant about how .assuming should be called "priming" not "currying"
jnthn AlexDaniel: Well, good error reporting is really a lot of work.
AlexDaniel jnthn: so yeah, sometimes I'm just doing stuff that nobody tried before, and there is a problem in most of them
ShimmerFairy PerlJam: I'm not even in that one (that masak linked) O_o
masak skids: yes. but what is a primer?
dalek kudo/nom: dd3d859 | moritz++ | docs/announce/2015.07.md:
Be more up-to-date in the acknowledgements
15:37 FROGGS left
skids The targuments you prime with. 15:38
PerlJam masak: The parameters are being "primed with values"
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 :)
PerlJam ShimmerFairy: you are or I wouldn't have noticed :)
jnthn (MSVC being the one that most often reminds me)
Anyway, afk for a bit
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:
masak skids, PerlJam: can I just write "arguments"?
AlexDaniel jnthn: once I woke up and saw notifications about 3 closed tickets. Whoa
all fixed by you 15:40
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
ShimmerFairy PerlJam: not in this one: github.com/rakudo/rakudo/blob/nom/CREDITS
moritz the python error messages are also... LTA 15:41
skids masak: That's ambiguous because there are two sets of "arguments"
AlexDaniel it feels like in other languages they will tell you "less than awesome? so what?"
masak skids: only one set gets bound, though, no?
ugexe the github description needs an edit 'Rakudo Perl -- Perl 6 on Parrot, JVM and MoarVMrakudo.org/'
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 :)
AlexDaniel I mean development of other languages
skids masak: that depends on how smart the compiler is
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
AlexDaniel m: say [::]/\/\/\/\/\/\[:/ 15:43
camelia rakudo-moar cd1764: OUTPUT«11␤»
masak 11 :)
PerlJam AlexDaniel: You clearly win the Perl6 obfuscation contest ;)
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)
moritz AlexDaniel: the price is 11, of course
masak ShimmerFairy: please go ahead.
isBEKaml moritz, price isn't prize ;-) 15:45
masak no-one said it was :)
PerlJam m: say [::]/\/\/\/\/\/\[\/\/:/
camelia rakudo-moar cd1764: OUTPUT«11␤»
PerlJam huh
flussence m: say 1 XZXZXZXZXZXZXZXZXZXZXZ 1 # I remember the fun we had figuring out why this caused OOM-death
camelia rakudo-moar cd1764: OUTPUT«1 1␤»
masak 11, obviously, is what Perl 6 goes up to.
AlexDaniel m: say [::]/\/\[:/ # much simpler
camelia rakudo-moar cd1764: OUTPUT«11␤»
moritz for those who are wondering: perlpunks.de/paste/show/55b25dc9.7bcc.ab 15:46
15:46 araujo left
dalek kudo/nom: 8d1a7a0 | ShimmerFairy++ | CREDITS:
Add me to the CREDITS
15:46
PerlJam m: say [::]/\/\[:/; say [::]/\/\[:/;
camelia rakudo-moar cd1764: OUTPUT«11␤11␤»
moritz m: say +:: 15:47
camelia rakudo-moar cd1764: OUTPUT«MVMContext representation does not support elems␤ in block <unit> at /tmp/BEAqz7tswG:1␤␤»
dalek kudo/nom: 235eaef | (Carl Masak)++ | docs/release_guide.pod:
[docs/release_guide.pod] move this release down
kudo/nom: 0851d1d | (Carl Masak)++ | docs/announce/2015.07.md:
[announce] update ShimmerFairy's name in contrib list
15:49
masak ok, next up is NQP release. I think that one'll block on Moar release.
15:50 zakharyas left
masak but I'll take a break now anyway to go out and push the swing for $babby. 15:50
to be continued, later :)
&
dalek kudo/nom: fd69d42 | lizmat++ | docs/ChangeLog:
We don't have postfix ! as sugar for "is required"

Just yet, anyway.
15:53
cognominal m: ' nqp::die(); nqp::x() ' ~~ m:g/ 'nqp::' $<nm>=\w+ / 15:58
camelia ( no output )
cognominal m: say ' nqp::die(); nqp::x() ' ~~ m:g/ 'nqp::' $<nm>=\w+ /
camelia rakudo-moar dd3d85: OUTPUT«「nqp::die」␤ nm => 「die」 「nqp::x」␤ nm => 「x」␤»
cognominal It does not make sens to me
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」␤»
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
camelia rakudo-moar dd3d85: OUTPUT«What.new(x => 5)␤»
AlexDaniel is rw is readonly!
is readonly is rw works exactly the same way, by the way
flussence well that makes sense, they only add accessors, not delete them 16:03
dalek kudo/nom: d12e1eb | ugexe++ | CREDITS:
Update CREDITS
16:04
kudo/nom: fc09cd7 | japhb++ | CREDITS:
Merge pull request #477 from ugexe/patch-12

Update CREDITS with info for ugexe
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 16:09 RabidGravy joined
RabidGravy boom 16:09
cognominal m: say ' nqp::die(); nqp::x() ' ~~ m:g/ 'nqp::' $<nm>=[\w+] /; say $_<nm> for $/
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␤␤»
moritz note that $<nm> isn't quantified 16:11
cognominal m: ' nqp::die(); nqp::x() ' ~~ m:g/ 'nqp::' $<nm>=[\w+] /; say $_<nm> for @$/
camelia rakudo-moar dd3d85: OUTPUT«「die」␤「x」␤»
cognominal ok, now everything makes sense
dalek kudo/nom: b8d3772 | lizmat++ | docs/announce/2015.07.md:
Remove ! sugar mention from announcement
16:12
TimToady masak: re 63de9a14, notice the next patch put the \d+ inside 16:15
16:15 iH2O joined 16:16 iH2O left 16:17 espadrine_ left 16:18 kaare_ left, kaare_ joined
dalek ast: 49828cd | PerlJam++ | S (2 files):
Add some Cool tests for Parcel.rotate and List.rotate
16:22
AlexDaniel m: .say.say.say
camelia rakudo-moar fc09cd: OUTPUT«(Any)␤True␤True␤»
dalek kudo/nom: 6f292f5 | PerlJam++ | src/core/IO/Handle.pm:
Return $*IN and $*OUT rather than create a new IO::Handle

This allows for $*IN.ins to always have the number of lines read from stdin no matter how stdin was opened. See RT#113100
synbot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=113100
kudo/nom: 53bf41f | PerlJam++ | src/core/ (2 files):
Make .rotate's argument Int(Cool)

This will do the right thing when a non-integer number is passed.
lizmat .tell masak did you use the p5 script for the contributors?
yoleaux lizmat: I'll pass your message to masak.
lizmat .tell masak the p6 version also looks at doc / examples / etc. contributions 16:23
yoleaux lizmat: I'll pass your message to masak.
moritz lizmat: why not remove the p5 version? 16:24
lizmat :-) will do
16:26 kaare_ left
dalek kudo/nom: 7cf9425 | lizmat++ | tools/contributors.pl:
Remove obsolete contributors script, moritz++
16:26
kudo/nom: 7a15752 | lizmat++ | docs/announce/2015.07.md:
Use p6 version of contributor list
16:31
16:32 xfix left, xinming left, xinming joined
japhb Looks like only 'skids' and a few on the second to last line are now un-CREDITS-ed 16:32
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.
lizmat yeah 16:34
I did remove "root" from the list, that just looks bad :-)
japhb AGREED
.oO( Just change it to 'Groot' )
lizmat that would be a animationy violation :-) 16:35
japhb I am Groot.
lizmat nobody seems to have noticed my Pos related changes, or everybody agrees with them
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
japhb (Yes, I know you are currently in my TZ, I meant "usually asleep")
lizmat :-) 16:37
lizmat needs to get to OSCON for the last batch of presentations
to those that didn't notice it: 16:38
m: if "foo".index(*f") -> $pos { say $pos }
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␤ …»
lizmat m: if "foo".index("f") -> $pos { say $pos }
camelia rakudo-moar fc09cd: OUTPUT«0␤»
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:39
japhb Oh, yeah, I like that quite a bit as a user. I never liked > -1. However -- does this make it less optimizable? 16:40
PerlJam Didn't the synopses call that StrPos at one point? 16:41
japhb Perhaps that's a jnthn question
[Coke] if that was in nom, definitely want someone to say yes or no before it goes into a release. 16:44
16:46 njmurphy left
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 AlexDaniel left
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 :)
[Coke] is it from the design docs or something new? 16:47
PerlJam lucasb: um ... that sounds like a *good* thing though.
lizmat [Coke]: the actual implementation is: 16:48
my class Pos is Int { multi method Bool(Pos:) { self.defined } }
PerlJam lucasb: at least as far as the .rotate method goes
lizmat so instead of creating Int's on return, they create Pos
16:48 njmurphy joined
lizmat I'm pretty sure that optimizes pretty well 16:48
16:51 domidumont joined
dalek kudo/nom: e12548c | lizmat++ | src/core/ (3 files):
Postpone introduction of Pos until after release
16:52
lizmat [Coke]: it was not in any design docs, just something that occurred to me yesterday as to the simplicity of implementation 16:53
16:54 tinyblak left 16:57 isBEKaml left 16:59 AlexDaniel joined
lizmat fwiw, there are quite a number of optimization opportunities in the core itself if .index and friends would return 0 but True 17:03
jnthn ugexe: Updated the GitHub description; thanks for noticing 17:12
dalek c: fdb37eb | paultcochrane++ | lib/Type/IO/Path.pod:
Move IO::FileTestable methods into IO::Path

This addresses issue #97. The methods and operators are now on IO::Path anyway (IO::FileTestable no longer exists).
c: 2502d2d | paultcochrane++ | / (6 files):
Remove IO::FileTestable

This addresses issue #97.
c: ec719b8 | paultcochrane++ | type-graph.txt:
Add Proc to the type-graph information
moritz [ptc]++ 17:13
17:13 estrabd_afk is now known as estrabd
jnthn lizmat: .DEFINITE would optimize even better than .defined, but only marginally since we can multi-level inline. 17:15
lizmat ok, after release I will re-introduce with .DEFINITE 17:16
otherwise you think it's a useful feature ?
jnthn lizmat: It seems sane at first blush :) 17:17
lizmat :-)
lizmat is off to OSCON
jnthn Have fun :) 17:18
17:18 espadrine_ joined, Hor|zon left
El_Che lizmat: yeah! 17:19
lizmat: do some bootleg recordings of the perl room ;)
17:29 Hor|zon joined
lucasb m: $a::b = 42; say $a::b 17:30
camelia rakudo-moar e12548: OUTPUT«42␤»
dalek osystem: 7c6cd5b | azawawi++ | META.list:
Add Atom::Electron - An experiment to write cross-platform Perl 6 desktop web-based applications using the Electron platform
AlexDaniel m: ...
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…»
lucasb ^^ What is this? Is it a implicity 'our' variable? No need to predeclare it?
m: sub f { my $a::b = 42 }; f(); say $a::b 17:31
camelia rakudo-moar e12548: OUTPUT«42␤»
jnthn lucasb: If you fully qualify it then yes, you're talking about a package variable
And no, you don't have to declare those
AlexDaniel is it correct that ... throws that thing?
moritz though 'my' plus fully qualified seems odd
dalek osystem: dc344b0 | azawawi++ | META.list:
Fix typo. azawawi--
moritz AlexDaniel: yes
17:31 amurf joined
AlexDaniel m: !!! 17:31
camelia rakudo-moar e12548: OUTPUT«Stub code executed␤ in block <unit> at /tmp/62Y68XpcVp:1␤␤»
AlexDaniel m: ??? 17:32
camelia rakudo-moar e12548: OUTPUT«Stub code executed in block <unit> at /tmp/s2jelIzNwv:1␤»
AlexDaniel moritz: why?
lucasb And the 'my' case? Doesn't it seem that it escaped its scope?
jnthn Oh, I didn't sopt the my $a::b 17:33
17:33 smls joined
jnthn That should probably be illegal :) 17:33
moritz AlexDaniel: ... fails, but it's in sink context, which makes failures fatal
lucasb m: my $a::b = 10; { my $a::b = 20; say $a::b }; say $a::b
camelia rakudo-moar e12548: OUTPUT«20␤20␤»
AlexDaniel moritz: ok, but why does it show that stacktrace? 17:34
17:34 brisby left
moritz AlexDaniel: dunno 17:34
AlexDaniel I mean, should I really see it?
moritz probably not 17:35
m: ...; 1
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 amurf left
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
We should decide how we want to fix that :)
moritz jnthn: but my example certainly didn't sink from MAIN 17:37
jnthn moritz: oh. hm
moritz jnthn: I had the same idea initially :-)
jnthn moritz: But...uh
locally I get sensible stack traces
Stub code executed in block <unit> at -e:1 17:38
Actually thrown at: in block <unit> at -e:1
Not sure why we don't get that locally
moritz locally I get no backtrace at all
just "Sutb code executed\n\n"
AlexDaniel huh?
jnthn I'm on c683fe9 locally
moritz I'm on e41624e 17:39
jnthn pulls latest
moritz could be that some of these latest backtrace tweaks are platform specific?
jnthn That'd be...odd 17:40
I'm doing -e fwiw
moritz too
jnthn perl6-m -e "...; 1"
moritz camelia doesn't
jnthn That gives me what I pasted above
moritz it uses tempfiles
jnthn *nod*
Doesn't explain why you got no stacktrace though
AlexDaniel I'm using a file as well
moritz *nod*
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
and I get the long backtrace when running it from a file
17:42 espadrine_ left
jnthn Me too...wtf 17:42
AlexDaniel :)
jnthn But...look at the stack trace
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 domidumont left
AlexDaniel it is funny how a three-character program can confuse jnthn and moritz that much :D 17:44
jnthn ohhh
... does fail
[Coke] is this the failure has two backtraces problem?
jnthn Which does a return
And...I have no idea what that return hits, but nothing sensible
But the -e codepath and the file one is no doubt a bit different. 17:46
flussence you can also replace -e with <<< (in bash, anyway) to trick perl6 into thinking it's a file 17:50
17:53 llfourn left 17:54 yqt left
dalek rl6-roast-data: 93e1420 | coke++ | / (9 files):
today (automated commit)
17:59
17:59 Hor|zon left 18:00 inokenty left 18:02 virtualsue joined
nwc10 t/spec/S17-procasync/no-runaway-file-limit.t is capable of hanging 18:04
at least, the one I started 2 hours ago was still rather busy when I came back 18:05
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
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?
16:23Z <lizmat> masak: the p6 version also looks at doc / examples / etc. contributions
masak TimToady: ah, should've seen there was a followup commit.
lizmat: I didn't notice Pos, somehow. 18:09
lizmat: but I have a bad feeling, design-wise about that addition, so I'm glad we're waiting until after release. 18:10
it feels like "finally we solved the ever-elusive semipredicate problem!" (*thud*) 18:11
"this has been another episode of 'Famous Last Words'..."
I do kinda like the pattern `if $s.index($t) -> $pos { ... }`, and that it works. 18:17
and I think the ecosystem fallout would be quite mild. 18:18
18:18 captain-adequate joined
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
masak we've had quite limited success with exactly that for shell return values.
TimToady: yes, and I wouldn't mind if they were macros, defined in the ecosystem.
they don't feel itchy enough to be core, somehow. 18:20
but being able to define/import them at will, that would be great.
masak adds them to his growing list of real macro use cases
I like `ifdef` a lot more than I like `0 but True` 18:21
we need to figure out how a macro can be made to parse /ifdef <.ws> <xblock>/ 18:22
18:23 kaare_ joined
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:27
masak seems I have the privs to add you. 18:28
going to do that, following "forgiveness > permission", even though I don't know how to confirm that someone indeed got a CLA :)
nine: Github nick? 18:29
nine masak: niner
masak ah, 'niner'
got it
you should now be getting an invite.
dalek kudo/nom: 280e942 | (Stefan Seifert)++ | docs/ChangeLog:
Document incompatible change of P5 EVAL lang in ChangeLog
18:30
nine masak: thank you very much :)
masak nine++
nine I am now a member of Rakudo Perl! Woohooo!
masak \o/
AlexDaniel what are these commit bits btw 18:31
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 diana_olhovik_ left
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
PerlJam: is there an entry for Stefan Seifert?
PerlJam nine: no, that's what I was looking for :) 18:34
masak PerlJam: ok, so do I remove nine from commiters for now? 18:35
nine PerlJam: odd. I got an email from [email@hidden.address] 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."
masak PerlJam: who or what updates that spreadsheet?
I'm inclined to trust nine on this one :>
PerlJam masak: Karen updates the spreadsheet afaik
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
masak *nod*
jnthn is fine with nine++ keeping the bit too, fwiw :) 18:37
TimToady are we in release freeze yet?
masak no, but we will be later tonight.
TimToady is thinking about the moving of ~~ to structural infix
masak I'll ping the channel when that happens.
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
masak TimToady: maybe give it a month and check the ecosystem fallout?
TimToady should at least fix the tests that would break, which will be compatible because it's just adding parens
masak that's fine.
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?
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.
masak [Coke]: nine says he got confirmation from Karen.
nine: yeah, it's rather silly at this point. 18:40
nine: please don't be discouraged by the ceremony. I like your commits :>
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"
PerlJam [Coke]: the spreadsheet doesn't have his name on it however.
nine masak: oh it would take much more to discourage me :)
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.
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.
[Coke] "why do we even have this system if we're not going to follow it?"
masak look, I can remove nine again.
flussence hysterical raisins, probably
[Coke] but we only have nine's word on that. :P
Eh. just keep an eye on it.
PerlJam masak: I'd rather you not :)
jnthn Maybe somebody could mail Karen just to ask about updating the sheet? :) 18:42
masak yes, that sounds good.
PerlJam [Coke]: is Karen the only one who takes receipt of the CLAs? Is she the only one who updates the spreadsheet?
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 :)
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.
PerlJam Did someone email Karen? If not, I will. 18:44
18:44 Begi left
AlexDaniel my head* 18:44
although it is possible that I am the only one who is using it… 18:45
PerlJam AlexDaniel: the only one who is using <-[x]> ? Assure you, you are not :) 18:46
18:46 FROGGS joined
AlexDaniel PerlJam: well, then speak up :) 18:47
18:48 rangerprice joined
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:48
AlexDaniel in fact, I think that "anything but x" is way more common than "any of x, ...". So, Huffmanly speaking, it is correct 18:49
PerlJam: like? 18:50
OH NOES 18:54
m: say Date.new("0000-01-01").truncated-to('week');
camelia rakudo-moar 280e94: OUTPUT«-001-12-27␤»
AlexDaniel m: say Date.new("0000-01-01").pred() 18:55
camelia rakudo-moar 280e94: OUTPUT«-001-12-31␤»
AlexDaniel nooooo
dalek ast: ab605d9 | TimToady++ | S (9 files):
benign prep for ~~ going chained -> structural

Just the addition of parentheses that will be required in the future.
18:55 Hor|zon joined
dalek kudo/nom: cf09f8b | TimToady++ | src/core/ (2 files):
benign prep for ~~ going chained -> structural

Just a couple places that will need parens in the future.
18:55
19:02 Hor|zon left 19:04 Begi joined
lucasb m: say DateTime.now.later 19:05
camelia rakudo-moar 280e94: OUTPUT«No time unit supplied␤ in block <unit> at /tmp/mJXgwC6oPj:1␤␤»
lucasb m: say Date.today.later
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
lucasb masak++ put this test in DateTime: die "No time unit supplied" unless %unit.keys; 19:07
Date could use the same...
FROGGS lucasb: can you pull request it? 19:08
lucasb FROGGS: sure, will do
FROGGS lucasb++
19:09 konsolebox left
masak m: say Date.new("0000-01-01") 19:09
camelia rakudo-moar 280e94: OUTPUT«0000-01-01␤»
masak I don't know why we write 0000 there and not just 0
moritz because we produce and consume ISO8601? 19:10
TimToady because it sorts correctly for the next 7984 years? 19:12
masak oh, ISO-8601 actually seems to want it that way. never mind. 19:13
nine A bit short sighted isn't it? *hides*
masak nine: yeah, doesn't anticipate Y10K at all.
TimToady
.oO(year A000)
19:14
AlexDaniel $d = $d.pred() for 1..500000;
guess what
-1369-01-18
flussence
.oO( by Y10k maybe we'll have moved to a metric date system anyway... )
19:15
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
AlexDaniel masak: oh cool
moritz m: say Date.today - 500000
camelia rakudo-moar 280e94: OUTPUT«0646-08-10␤»
moritz m: say Date.today - 5000000 19:17
camelia rakudo-moar 280e94: OUTPUT«-11674-01-10␤»
moritz if you want to skip the loop entirely
AlexDaniel yeah
didn't know that
ok, gonna eat a little bit, then report that 19:18
by the way
m: say Date.new("0000-02-29")
camelia rakudo-moar 280e94: OUTPUT«0000-02-29␤»
AlexDaniel m: say Date.new("0001-02-29")
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␤␤»
AlexDaniel what calendar is that?
masak Greg's. 19:19
ok, starting the nqp release cycle now.
AlexDaniel masak: is it actually defined on such old dates? 19:20
dalek p: 8bc386a | (Carl Masak)++ | VERSION:
bump VERSION to 2015.07
masak AlexDaniel: google "proleptic". 19:21
ok, `make realclean` didn't work properly in nqp for me.
but I did `git clean -xdf` instead, which should work just as well.
19:22 yqt joined, darutoko left 19:25 Begi1 joined
dalek kudo/nom: cb4b31d | (Lucas Buchala)++ | src/core/Temporal.pm:
disallow .later() without any named arguments
19:25
kudo/nom: 3458e97 | FROGGS++ | src/core/Temporal.pm:
Merge pull request #478 from lucasbuchala/tempo

disallow .later() without any named arguments
masak ok, nqp ready for upload: masak.org/carl/tmp/nqp-2015.07.tar.gz 19:26
if ++someone with the proper ssh keys would be so kind. :)
FROGGS I'll do 19:27
masak yay
19:27 Begi left
masak nqp tag pushed. 19:27
this concludes the nqp release cycle.
back to Rakudo.
ok, please. feature freeze. 19:28
FROGGS masak: have you signed the tarball and the .dsc at hand?
masak no.
FROGGS k
np
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.
until such a point, though, I'm going to ignore the signing step. 19:29
moritz masak: do you have a gpg key already?
masak yes, I think so.
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 :(
I'm not interested in learning about signing right now. feel free to show me at some point, though.
moritz masak: then gpg --armor -b $tarball (followed by entering the passphrase for your private key) should be enough 19:30
masak tries 19:32
smls m: say Bool.HOW;
camelia rakudo-moar cf09f8: OUTPUT«Perl6::Metamodel::ClassHOW.new␤»
smls Is there a way to detect an enum type? 19:33
FROGGS m: say Bool ~~ Enum
camelia rakudo-moar cf09f8: OUTPUT«False␤»
geekosaur Bool is a special case IIRC
Begi1 I must make a presentation of Perl 6. In your opinion, what points should I approach ?
geekosaur because it's needed before Enum is set up
FROGGS I think Bool is not an enum in rakudo... but I could be mistakes
mistaken*
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
camelia rakudo-moar cf09f8: OUTPUT«Perl6::Metamodel::EnumHOW.new␤»
masak m: enum W <a b c>; say W ~~ Enum
camelia rakudo-moar cf09f8: OUTPUT«False␤»
FROGGS Begi1: who's the audience?
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 ?
FROGGS m: enum A <foo bar baz>; say A(1) 19:37
camelia rakudo-moar cf09f8: OUTPUT«bar␤»
FROGGS smls: ^^
smls nice, thanks
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
smls m: enum A <foo bar baz>; say A.HOW; say foo.HOW
camelia rakudo-moar cf09f8: OUTPUT«Perl6::Metamodel::EnumHOW.new␤Perl6::Metamodel::EnumHOW.new␤»
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.
smls Also, can I differentiate between the enum and its members?
masak moritz: in either case, this is nice to tinker with, but I'd rather not let it block the release.
FROGGS Begi1: then show then how to build a json parser :o)
Begi1: or something like that
AlexDaniel hahaaha 19:39
m: say Date.new("0000-02-29") + 10000000000
camelia rakudo-moar cf09f8: OUTPUT«920823-7017919-9448928074␤»
AlexDaniel what is that! a phone number?
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. :/
Begi1 FROGGS : Nice idea. I'll try to show an exemple
geekosaur uuid :p
masak AlexDaniel: that looks like a bug.
AlexDaniel masak: OH really?
Begi1 like a json parser :)
masak AlexDaniel: more exactly, some modulo is off somewhere.
AlexDaniel: if you could golf that, you'd have a ticket. :) 19:40
maybe even without golfing it, in fact.
AlexDaniel masak: isn't it short enough?
masak AlexDaniel: I think the year might be right.
AlexDaniel: it's short, but it's not revealing the real cause, which is somewhere inside Date.
AlexDaniel m: say Date.new("0000-02-29") + 1000000000
camelia rakudo-moar cf09f8: OUTPUT«-201898-7017920-858993469␤»
AlexDaniel m: say Date.new("0000-02-29") + 10000000000
camelia rakudo-moar cf09f8: OUTPUT«920823-7017919-9448928074␤»
AlexDaniel m: say Date.new("0000-02-29") + 10000000
camelia rakudo-moar cf09f8: OUTPUT«27379-03-26␤»
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?
AlexDaniel m: say Date.new("0000-02-29") - 200 19:42
camelia rakudo-moar cf09f8: OUTPUT«-001-08-13␤»
masak ok, continuing the Rakudo release cycle. feature freeze applies, folks.
AlexDaniel because it is not yyyy-mm-dd
masak AlexDaniel: what does ISO 8601 say about this?
dalek kudo/nom: aee46fc | (Carl Masak)++ | tools/build/NQP_REVISION:
[release] bump NQP revision
19:43
PerlJam masak: re signing stress ... [Coke]++ foresaw this. Maybe we should have listened to him :)
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.”
masak PerlJam: it should be easy, and stress-free. but it's not.
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
masak AlexDaniel: that said, I think -000 looks ugly.
AlexDaniel: it should maybe be -0000
AlexDaniel "by convention 1 BC is labelled +0000, 2 BC is labeled -0001, and so on"
dalek kudo/nom: a7f193a | (Carl Masak)++ | VERSION:
[release] bump VERSION
19:45
AlexDaniel so yeah, it should be -0000, but I wonder what is going to happen to things that split by -
masak AlexDaniel: that quote makes it sound like we should never see -0000
AlexDaniel masak: and we don't? 19:46
masak: we see just 0000
which is ok
masak ok, good.
masak is distraced
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␤␤»
TimToady masak: that's fine, we don't have a tracing jit yet
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
19:48 diana_olhovik joined
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?
So you'd have to write A::Foo instead of Foo. 19:49
moritz m: constant A = anon enum A <Foo Bar>
camelia ( no output )
moritz m: constant A = anon enum A <Foo Bar>; say Foo
camelia rakudo-moar cf09f8: OUTPUT«5===SORRY!5=== Error while compiling /tmp/NBSZ0PKggb␤Undeclared name:␤ Foo used at line 1␤␤»
moritz m: constant A = anon enum A <Foo Bar>; say A::Foo
camelia rakudo-moar cf09f8: OUTPUT«Foo␤»
moritz smls: ^^ semes to work
smls thanks
PerlJam moritz: the only problem is the added frustration when the signing part goes wrong for some reason.
moritz: frustration discourages release managers. 19:50
19:50 llfourn joined, eternaleye left, espadrine_ joined
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
19:51 eternaleye joined
FROGGS which is totally fine 19:51
19:55 llfourn left
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:55
19:55 smls left
masak in my ideal world, the release process grows shorter and simpler over time. 19:56
19:56 smls joined
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:56
rangerprice oh 19:57
masak is running the stresstest, which despite the name don't contribute to any stress :)
failure in t/spec/S17-lowlevel/lock.rakudo.moar -- news at 11 20:00
failure in t/spec/S17-promise/start.rakudo.moar 20:01
failure in t/spec/S32-io/IO-Socket-Async.rakudo.moar 20:02
rangerprice You have to do it masak :) 20:03
AlexDaniel m: say Date.new("2000-01-01") + 10000000000000000000000000000000; 20:04
camelia rakudo-moar 3458e9: OUTPUT«1999--14035828--4570789517646521952␤»
AlexDaniel -- :)
ok submitting rakudobug
masak AlexDaniel: second one is a minus sign in each case, I guess.
AlexDaniel masak: sure
masak AlexDaniel: and now the year is clearly wrong, too.
AlexDaniel yeah it just overflows everywhere 20:05
20:05 domidumont joined, domidumont left
masak failures in t/spec/integration/advent2012-day04.t and t/spec/S17-procasync/kill.rakudo.moar 20:05
20:05 domidumont joined
masak only the advent2012-day04.t one sounds worthy of investigation. 20:05
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) {}␤»
masak ...that one looks like a real error.
std: my %cache; multi factors($n where %cache{$n}:exists) {}
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…»
PerlJam maybe it's parsing the colon as an invocant colon 20:07
jnthn No
It's that adverbs are parsed as infixes
And are too loose to parse as part of the when there
masak *nod*
jnthn Well, yes, it is then taking the : as the invocant colon
masak so the test is undeniably wrong, and should be changed?
jnthn So PerlJam was right
masak changes the test
jnthn masak: Yes
masak: I spent a while on preclimit stuff and STD alignment and so on 20:08
masak *nod*
guess this is a stresstest-only and no-one's run it until now?
or some such
TimToady t/spec/S32-io/IO-Socket-Async.rakudo.moar fails the normal test too
jnthn I'm guessing so, yes
masak yeah, it's pretty slow :)
TimToady: any idea why?
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;
camelia rakudo-moar 3458e9: OUTPUT«Date.new(1469802, 10, 17)␤Date.new(-1470002, 7017915, 858993485)␤»
jnthn masak: I suspect the fix to rakudo that changed behavior was when I fixed assigning a default after a where clause
dalek ast: fe6e70f | (Carl Masak)++ | integration/advent2012-day04.t:
fix syntax of adverb in where clause

This fails after jnthn++'s work on the EXPR preclimit got things more right.
jnthn star: sub foo($x where { $_ %% 2 } = 42) { }
camelia ( no output )
jnthn star: sub foo($x where { $_ %% 2 } = 42) { }; foo()
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␤␤»
jnthn That one
m: sub foo($x where { $_ %% 2 } = 42) { }; foo()
camelia ( no output )
jnthn We used to parse the = as an assignment to the block :P 20:10
20:10 araujo joined
masak oh ouch :) 20:10
jnthn indeed :)
That's why I fux it :) 20:11
masak .oO( refuxtor )
jnthn Uh...fixed...wow, sometimes ablaut games don't go so well :P
20:11 Hor|zon joined
masak TimToady: ok, so that test isn't blocking the release in any way? 20:11
TimToady well, it fails, I dunno why
masak ok, holding until we've investigated.
jnthn Which tests are we on now? 20:13
20:13 kaare_ left
TimToady oh, the test is # by the macosx skip 20:13
20:13 kaare_ joined
masak um, doing an `is` inside of `try` seems wrong in either case, no? 20:13
TimToady so the plan is off
20:13 kaare_ left
TimToady the try returns Any 20:14
masak oh, ok.
TimToady so not the try
masak ok, knowing that, we don't need to block on this for the release, right?
the fix to the test can go on in parallel
jnthn: t/spec/S32-io/IO-Socket-Async.t
ok, Rakudo tarball ready for upload! rakudo-2015.07.tar.gz 20:15
FROGGS?
er
masak.org/carl/tmp/rakudo-2015.07.tar.gz
masak .oO( note to self: just pasting the local file name onto the channel is not enough )
20:15 Hor|zon left
FROGGS grabs it 20:15
20:16 isBEKaml joined, virtualsue left
masak tags pushed. 20:16
PerlJam masak++ FROGGS++
masak we're not quite done yet.
FROGGS masak: done :D 20:17
masak FROGGS++
there's p6c, and then ye ole Wikipedia
olde*
jnthn
.oO( The whole Wikipedia? Accidentally? )
20:17 domidumont left
TimToady
.oO(ole automation)
20:18
FROGGS hmmm, there should be an Accident Alley in Harry Potters world...
masak p6c email sent. 20:19
isBEKaml masak++ FROGGS++
FROGGS I do not deserve karma, I just spend one minute on this :o) 20:20
masak not done yet. 20:21
AlexDaniel OK, now DateTime... 20:22
masak Wikipedia article updated: en.wikipedia.org/wiki/Rakudo_Perl_6
AlexDaniel m: say DateTime.new('2012-02-29T00:00:00+99:99');
camelia rakudo-moar a7f193: OUTPUT«2012-02-29T00:00:00+100:39␤»
masak "You're done! Celebrate with the appropriate amount of fun."
jnthn masak++
masak standing down release process.
please move along, nothing to see here. :) 20:23
masak has a beer
jnthn masak: Hope it's a nice one :) 20:24
dalek kudo/nom: 81ad2c0 | TimToady++ | src/Perl6/Grammar.nqp:
move ~~ from chaining to structural

This prevents attempts to use ~~ as a chain op or as a reduction, and forces non-associativity with respect to cmp-like and ..-like operators, which thankfully reports the difficulty.
jnthn That has to be one of the quickest "release done"..."I'm breaking something!" pairing I've seen :)
TimToady :) 20:25
let's hope we can break a lot more this month
jnthn :)
masak TimToady++ # break fast
TimToady ShimmerFairy++ and masak++ for noticing ~~ difficulties 20:27
masak I'm not sure I'm to blame for this one :)
at least I don't remember it...
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 !
TimToady masak: you are to blame at irclog.perlgeek.de/perl6/2015-07-21#i_10932148
masak what rangerprice said! :D
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 ?
masak Begi1: rock paper scissors!
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:30
Begi1 masak : Yeah ! :) 20:31
I think this code is correct... github.com/Emeric54/perl6/blob/mas...bonacci.p6 Can I do better ?
masak looks
Begi1: yes, that one quickly grows slow. 20:32
jnthn m: say (1, 1, * + * ... Inf)[12]
camelia rakudo-moar a7f193: OUTPUT«233␤»
masak um, what jnthn++ said, but... :)
jnthn obw :P
masak one step at a time :)
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
so we accidentally a lot of lists
masak Begi1: if you want to avoid the `given $n` block altogether, you can just name your $n parameter $_ 20:33
rangerprice masak ehhehehehee
masak m: sub fib($_) { when 0 { 0 }; when 1 { 1 }; default { fib($_ - 1) + fib($_ - 2) } }; say fib(12)
camelia rakudo-moar a7f193: OUTPUT«144␤»
masak Begi1: like that.
*but* the real trick I wanted to tell you about was `is cached`
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␤»
masak Begi1: which speeds the thing up ridiculously.
jnthn TimToady: You're thinking about things like .lines?
20:34 muraiki joined
[Coke] masak: on moar, anyway. :) 20:34
TimToady I'm think for/map don't really want a list, they want an iterator
masak Begi1: basically there are many identical subtrees in the call graph of fib. `is cached` remembers the result of each.
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
[Coke] (pretty sure jvm ignores it0 20:35
masak Begi1: if you need help understanding jnthn++'s solution, I can explain it to you :)
jnthn TimToady: Well, for sure, the question is whether we want that to be visible at the language level.
masak Begi1: note that jnthn-- didn't get the same result, because he started the sequence with 1, 1 and not 0, 1 :P
jnthn TimToady: As in, a type difference.
masak m: say (0, 1, * + * ... Inf)[12]
camelia rakudo-moar a7f193: OUTPUT«144␤»
masak there ya go. 20:36
moritz jnthn: it might solve some of our problems
jnthn 'cus in the current implementation we go to great lengths to hide it, and it makes us all kinds of pain.
moritz jnthn: if lines() returned an iterator, we can forbid positional access, so we never have to worry about storing old values
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 !
jnthn moritz: uh, correct :)
Begi1 Yes, the jnthn was strange. It'sbetter now :)
*jnthn result
jnthn haha!
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
masak Begi1: explanation. sure, here goes.
Begi1: let's start with the sequence operator, `...` 20:38
moritz m: say (0, 1, &[+] ... *)[12]
camelia rakudo-moar a7f193: OUTPUT«144␤»
masak and ignore moritz++' input until I tell you :P
moritz TimToady, jnthn: might be worth looking how python does it
TimToady well, python doesn't particularly try to support "lazy lists" 20:39
masak m: .say for 1, 2 ... 9
camelia rakudo-moar a7f193: OUTPUT«1␤2␤3␤4␤5␤6␤7␤8␤9␤»
jnthn Well, C#/.Net too given we stole a bunch of the supply semantics from there...
for $handle.lines() -> $foo { } # really easy case - you can happily chew through values
masak Begi1: that one is fairly straightforward, yes? `...` simply keeps going until it reaches the endpoint. in this case 9.
Begi1: it also works backwards.
m: .say for 9, 8 ... 1
camelia rakudo-moar a7f193: OUTPUT«9␤8␤7␤6␤5␤4␤3␤2␤1␤»
masak (unlike ordinary ranges made with `..`)
rangerprice so 20:40
jnthn for $handle.lines.grep(/beer/) -> $yay { } # also not too hard
masak Begi1: now, the only thing that the fib sequence solution adds to this...
20:40 vike left
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? :)
masak Begi1: well, actually not "the second term", even. the term before the `...` operator itself
jnthn uh
sub beer(@lines) { @lines.grep(/beer/); } for beer($handle.lines) -> $hmm { } # how about this? :) 20:41
'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
rangerprice i love spaghetti, GNU/Linux, LWP&Forks::Super module (and maybe WWW::Mechanize), perl.
masak Begi1: how do we form more terms in the fib sequence. well, it's kind of $last + $secondlast, right?
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 :)
TimToady yes, binding to @ would certainly have to force storage, not so sure about \name
masak m: sub next-term($last, $secondlast) { $last + $secondlast }; say next-term(8, 5)
camelia rakudo-moar a7f193: OUTPUT«13␤»
masak m: sub next-term($last, $secondlast) { $last + $secondlast }; .say for 0, 1, &next-term ... 144
camelia rakudo-moar a7f193: OUTPUT«0␤1␤1␤2␤3␤5␤8␤13␤21␤34␤55␤89␤144␤»
jnthn TimToady: Right, \name is one escape hatch, and since self is really bound like \self then methods on List are easily done.
masak Begi1: see the above? getting clearer now? :)
Begi1: (`&next-term` refers to the sub without calling it, essentially "handing" the sub to the sequence operator) 20:43
Begi1: we could also do it all inline, with a block
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
masak m: .say for 0, 1, -> $last, $secondlast { $last + $secondlast } ... 144
camelia rakudo-moar a7f193: OUTPUT«0␤1␤1␤2␤3␤5␤8␤13␤21␤34␤55␤89␤144␤»
jnthn I just wonder where the gotcha with *that* model shows up :)
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.
Begi1: I'm not done yet :P
TimToady jnthn: well, that's why I was wanting to start to prototype it top down
masak Begi1: now, of course, writing out the parameters like that is tedious :)
20:44 vike joined
masak Begi1: so we use the $^parameter form, which is "automatically declared parameters" 20:44
20:45 isBEKaml left
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.
masak m: .say for 0, 1, { $^last + $^secondlast } ... 144
camelia rakudo-moar a7f193: OUTPUT«0␤1␤1␤2␤3␤5␤8␤13␤21␤34␤55␤89␤144␤»
jnthn TimToady: I'll do much better at the bottom-up parts.
moritz fwiw in python, one sometimes needs explicit coercers
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
moritz doesn't seem to be such a big deal
masak m: .say for 0, 1, * + * ... 144
camelia rakudo-moar a7f193: OUTPUT«0␤1␤1␤2␤3␤5␤8␤13␤21␤34␤55␤89␤144␤»
masak Begi1: of course, we could continue onto Inf, which means simply never stopping
m: .say for 0, 1, * + * ... Inf
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.
m: say (0, 1, * + * ... Inf)[12]
camelia rakudo-moar a7f193: OUTPUT«144␤»
TimToady moritz: if @ implies list(iterator) coercion, we get most of that for free
masak Begi1: now I'm done :D
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 rangerprice left
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 &[+]
masak oh, right. now you can look at moritz++' solution :P
moritz++ # explaining it
20:48 Begi1 left
moritz masak++ # explaining 20:48
masak++ # release
masak aw, he quit
20:48 Begi1 joined
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?
moritz TimToady: well, the problem with implicit coercions is that they are, well, implicit, and thus easy to surprise
masak Begi1: logs are at irclog.perlgeek.de/perl6/today
moritz masak: you just have to turn it into a blog post :-)
masak heh.
TimToady moritz: but @ implies Positional, and iterators are (probably) explicitly not positional post GLR
20:49 llfourn joined
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:49
Begi1 A very short time, but fortunately, I've saw everything :) 20:50
20:50 isBEKaml joined
moritz TimToady: maybe @ is not coercive, which *@ is? 20:51
s/which/but/
moritz not very concentrated anymore
masak Begi1: just like Patrick Stewart :P
20:52 cognominal left
TimToady --> nap & 20:52
20:52 muraiki left
Begi1 masak : Exactly :) 20:53
m: say (0, 1, * + * ... Inf)[8]
camelia rakudo-moar 81ad2c: OUTPUT«21␤»
masak Begi1: oh, another cool thing. 20:54
Begi1: even though the sequence is infinite, you can store it in a constant.
20:54 llfourn left
Begi1 masak: yes ? 20:54
masak m: constant @fibs := 0, 1, * + * ... Inf; say @fibs[8]
camelia rakudo-moar 81ad2c: OUTPUT«21␤»
masak m: constant @fibs = 0, 1, * + * ... Inf; say @fibs[8] 20:55
camelia rakudo-moar 81ad2c: OUTPUT«21␤»
masak Begi1: and it doesn't blow up or run forever or something.
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
Begi1: very Haskell. very chic.
Begi1 masak : I did not thinks that was possible
masak : I've never used Haskell but very chic, yes ! 20:57
20:57 estrabd is now known as estrabd_afk
masak so chic 20:58
jnthn such chic
very laziness 20:59
masak oh hey, it even works in a normal `my` variable
m: my @fibs = 0, 1, * + * ... Inf; say @fibs[8]
camelia rakudo-moar 81ad2c: OUTPUT«21␤»
masak didn't expect that.
guess the infinitude of the sequence somehow "wins" over the default mostly-eagerness of `=`
21:00 schmooster joined
lizmat back from OSCON just now 21:01
jnthn masak: Pretty much
lizmat: Enjoy it?
21:01 dolmen joined
lizmat so, am I getting this correct that the Rakudo release did have an NQP bump, but not a MoarVM bump ? 21:01
jnthn: I enjoyed it to an extent 21:02
someone showed a nice graphical representation of the expo hall
the open source organizations located in the back behind a black curtain (he called that "Diagon Alley") 21:03
21:03 rangerprice joined
lizmat and the rest of the expo floor reserved for muggles 21:03
isBEKaml lizmat: the OSCON was HP themed? :-)
21:03 bin_005 left
lizmat I'm afraid from now on, OSCON is for muggles 21:03
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
lizmat nqp/tools/build/MOAR_REVISION is 2015.06-98-gf22142b for me 21:05
masak huh. 21:06
yes.
:/
I see now that I skipped step 1 because it was about Parrot, but there's a last bit about MoarVM... 21:07
lizmat++ # noticing 21:08
dalek p: a8aad8a | (Carl Masak)++ | tools/build/MOAR_REVISION:
bump MOAR_REVISION to latest release
21:09
21:09 amurf joined
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.
FROGGS: still available? 21:10
lizmat I noticed because Moar did not get rebuilt after I pulled the version
jnthn: O'Reilly's focus is on business
jnthn lizmat: *nod* 21:11
lizmat in my view, they're only interested in businesses (ab)using open source
lucasb m: .say for class { has $.a; has $.b }.^methods
camelia rakudo-moar 81ad2c: OUTPUT«a␤b␤»
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?
jnthn lucasb: Probably some bootstrapping shenanigans. 21:12
lizmat m: .say for class { has $!a; method a { $!a } }.^methods
camelia rakudo-moar 81ad2c: OUTPUT«a␤»
lizmat hmmm...
strange
lucasb jnthn: oh, thanks
jnthn m: .say for (1..10).^methods
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␤»
jnthn Curious. 21:13
lizmat m: .say for class { has $!a; multi method a { $!a } }.^methods
camelia rakudo-moar 81ad2c: OUTPUT«a␤»
lizmat m: .say for class { has $!a; proto method a(|) { * }; multi method a { $!a } }.^methods
camelia rakudo-moar 81ad2c: OUTPUT«a␤»
21:13 amurf left
masak someone else besides FROGGS who can upload things to rakudo.org ? 21:14
jnthn I don't actually see why it'd happen.
moritz masak: me
jnthn .set_name should be being called in either case. 21:15
moritz uhm
at least I hope I can
new hard disk, new ssh key :/
21:15 espadrine_ left
dalek kudo/nom: 430bc6c | (Carl Masak)++ | tools/build/NQP_REVISION:
[release] bump NQP revision
21:15
kudo/nom: 95c07cc | (Carl Masak)++ | VERSION:
[release] bump VERSION
moritz boots the desktop
masak just running the spectests again, real quick. 21:16
21:17 skids left
lizmat as well 21:17
dalek kudo/nom: cf30a75 | (Carl Masak)++ | docs/release_guide.pod:
add another release to the list

Also, correct the date of #90. We were one day late this month.
moritz masak: there's a pubkey of yours in the [email@hidden.address] account 21:19
masak: so you should be able log in already; if not, please /msg me your current ssh pubkey
masak moritz: yes, I distinctly remember that.
masak tries
somehow it's asking me for a password, not going by SSH key. 21:20
lizmat t/spec/S32-io/IO-Socket-INET.t failed for me, but has been failing for weeks now 21:23
MoarVM spectest is otherwise clean for me on OS X
building JVM now 21:24
jnthn lizmat: Oddness; I've not seen any issues with that test on Windows...
lizmat: Must be something platform-specific.
masak moritz: masak.org/carl/tmp/nqp-2015.07.1.tar.gz masak.org/carl/tmp/rakudo-2015.07.1.tar.gz 21:25
moritz masak: uploaded 21:26
masak moritz++ 21:27
updating the Wikipedia article.
lizmat gist.github.com/lizmat/7f6069a83f62ae01e03f
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:29
masak :( 21:31
clearly I should take a break.
lizmat :-( 21:32
masak I honestly don't know if it matters or not.
lizmat I should have seen that as well, sorry :-(
masak if that's inessential, I can fix it now.
if it's essential, we should proably put out new releases.
I'm getting a bit exhausted, though. and clearly making errors.
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.
If it does it's easy enough to make another point release.
masak jnthn: are you fine with me just updating it now?
jnthn masak: Yeah, you can.
masak: But you've done enough, I think.
:)
masak :P
dalek p: 7259356 | (Carl Masak)++ | VERSION:
bump VERSION

  (A little late.)
lucasb Yeah, masak++ 21:34
lizmat afk again& 21:35
dalek p: 348e2a0 | (Carl Masak)++ | docs/release_guide.pod:
[docs/release_guide.pod] remove Parrot paragraphs

These paragraphs hide the only (currently) relevant paragraph about MoarVM.
masak if/when we start targeting Parrot again in our release cycle, we can bring those paragraphs back. 21:37
isBEKaml we aren't?
when did that happen? Not targeting parrot?
Begi1 masak : thank you for the explanations. I'll dream of Perl6 :)
Good night #perl6 !
masak Begi1: good night :) 21:38
isBEKaml: earlier this year. 21:39
21:39 Begi1 left
masak isBEKaml: pmthium.com/2015/02/suspending-rakudo-parrot/ 21:39
"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."
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”?
PerlJam btw, Karen emailed and confirmed nine's signed CLA :)
masak \o/ 21:46
Karen++
nine++ for not lying to us, I guess :P
PerlJam AlexDaniel: I think the logic is ... we've cribbed stuff from other languages and that's what they used. :)
masak AlexDaniel: well, at least isNaN is from IEEE 754.
timotimo i can report that Ant-Man is a quite fantastic movie 21:47
AlexDaniel PerlJam: well, such naming looks much like PHP
masak AlexDaniel: is_type is from compiler internals. "low-level" stuff. then it has an underscore, because an underscore is on a low level.
isBEKaml AlexDaniel: Now you know perl6's heritage - C, lisp and java(script) :P
masak (yes, that's the actual stated reason)
PerlJam POSIX uses isnan()
masak AlexDaniel: is-leap-year, however, is exposed to the user.
AlexDaniel masak: ooohhhh.... 21:48
timotimo i didn't know we have is_type
masak timotimo: it's in World.nqp
timotimo ah
AlexDaniel is this some low-level stuff? doc.perl6.org/type/Parameter#method_named_names 21:50
timotimo well, it *is* part of the MOP
masak so, yes. 21:51
AlexDaniel hm
21:52 lucasb left
jnthn wonders why we have isNaN at all; doesn't === NaN work? 21:53
m: say NaN === NaN
camelia rakudo-moar cf30a7: OUTPUT«True␤»
jnthn m: say NaN == NaN # False I hope :)
camelia rakudo-moar cf30a7: OUTPUT«False␤»
jnthn Phew :)
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. 21:55
masak thank you. 22:00
22:01 dolmen left
TimToady but the MOP is high level, so we should use FOO‾BAR instead :) 22:05
timotimo not everybody can reach this high 22:06
sjn \o
22:06 [Tux] left
sjn is there some clever way to do conditional chaining? 22:06
TimToady as opposed to the obvious way? 22:07
AlexDaniel m: if 2 < 5 < 10 { say 'huh' }
camelia rakudo-moar cf30a7: OUTPUT«huh␤»
sjn ahm.
no, I meant "chaining calls, with a condition inside the chain"
TimToady what's the condition supposed to do? 22:08
sjn MyClass.new.dosomething().success # and if success is True, call .say
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?
sjn TimToady: ok 22:10
timotimo TimToady: i thought "orelse" is the one that's only partly implemented?
TimToady m: [1,2,3] andthen .say 22:11
camelia rakudo-moar cf30a7: OUTPUT«(Any)␤»
TimToady $_ is supposed to topicalize to the left there
timotimo oh
22:12 Hor|zon joined
masak I wonder if we have an RT about that. 22:12
I also wonder if it's easy :>
ugexe m: [1,2,3] andthen { .say for @_ } 22:14
camelia rakudo-moar cf30a7: OUTPUT«1␤2␤3␤»
TimToady m: [1,2,3] andthen { $_.say }
camelia rakudo-moar cf30a7: OUTPUT«Too many positionals passed; expected 0 or 1 arguments but got 3␤ in block <unit> at /tmp/sVROCPPDiT:1␤␤»
TimToady erm
timotimo yeesh 22:16
masak so something gets passed?
22:17 Hor|zon left 22:20 cognominal joined
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⏏052001;␤»
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?
AlexDaniel TimToady: yeah, why can't it say that?
22:22 telex left
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⏏052001;␤Two terms in a row at /tmp/Eeet0LLF0P line 1:␤------> 3say 0b07⏏052001;␤ expecting any of:␤ POST␤ feed_separato…»
masak it's shocked that you forgot since just two characters ago? :P
AlexDaniel :)
masak: well, it could have been 0x in the past! 22:23
TimToady m: say :2<02001> 22:24
camelia rakudo-moar cf30a7: OUTPUT«===SORRY!===␤Invalid character '2' in number literal␤»
22:24 telex joined
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! :)
TimToady that doesn't mean we couldn't improve the message at least to STD's level 22:26
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;␤»
AlexDaniel :)
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
AlexDaniel well, makes sense
TimToady unless we can find a way to pass the last term into the TTIAR handler 22:28
nine masak: sometimes it's really, really, really, ridiculously simple to get karma in here ;) 22:32
masak nine: Just Don't Lie :P
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:33
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"␤»
TimToady m: say 0b01 ff "hi"
camelia rakudo-moar cf30a7: OUTPUT«Use of uninitialized value of type Any in numeric context in block <unit> at /tmp/j1LdR0kvtK:1␤Nil␤»
timotimo good old ff infix operator
AlexDaniel m: say :2<000.0101>; 22:39
camelia rakudo-moar cf30a7: OUTPUT«0.3125␤»
AlexDaniel haven't ever thought about that
jnthn time for some rest; 'night o/ 22:42
22:49 diana_olhovik left 22:56 rindolf left
AlexDaniel m: say 'True' if !not! True; 22:58
camelia ( no output )
AlexDaniel :)
masak you negated it thrice. and very skillfully, I might add. 23:00
m: say 'True' if !!! True
camelia rakudo-moar cf30a7: OUTPUT«True␤ in block <unit> at /tmp/J2l09O714j:1␤␤»
masak doing it that way is confusing in several ways :P 23:01
AlexDaniel masak: emphasized not!
23:05 TEttinger joined 23:10 RabidGravy left
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␤»
AlexDaniel m: say DateTime.new('2015-12-24T12:23:00Z').later(days => 536098125).perl;
camelia rakudo-moar cf30a7: OUTPUT«DateTime.new(year => 1469802, month => 10, day => 17, hour => 12, minute => 23, second => 0)␤»
23:11 skids joined
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␤␤»
masak heh. 23:12
AlexDaniel masak: yeah...
masak 'night, #perl6 23:16
hahainternet night masak 23:20
i couldn't find any reference to that 'type capture' ::T stuff timotimo showed me
i need to find that in the spec at some point, but holy crap lots of reading
timotimo i bet i could capture a hundred types 23:21
hahainternet :D 23:22
if you can help me find it at some point that'd be fine, but maybe not friday night :D 23:23
s/fine/nice
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?
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:27
sjn tadzik: would it be sensible to allow builing rakudo star with rakudobrew? 23:33
building*
skids hahainternet: design.perl6.org/S06.html#En_passan...pe_capture 23:38
hahainternet skids: perfect, merci! 23:39
tadzik sjn: hm, I guess 23:40
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 23:53 isBEKaml_ joined, chansen_ left 23:54 isBEKaml left, captain-adequate left, chansen__ is now known as chansen_