»ö« 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/Paj7tM2cQBUndeclared 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:1Actually 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«perl6» | ||
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«PERLperl» | ||
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_ECBvZk56Missing blockat /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 failedFAILED 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«525» | ||
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«ABE» | ||
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_pYGbayZUndeclared 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 listat /tmp/kd9N6GbARI:1------> 3[::|||7⏏5||||||::]Arg-flattening | is only valid in an argument listat /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«1111» | ||
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:1Actually 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:1Actually 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)TrueTrue» | ||
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/fE7Cft0NrFUnable 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«2020» | ||
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:1Use of uninitialized value of type Any in string context in block <unit> at /tmp/P1Y8eVTqed:1Cannnot 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.newPerl6::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/NBSZ0PKggbUndeclared 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/_GSF3lnUupInvalid 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«123456789» | ||
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«987654321» | ||
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«01123581321345589144» | ||
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«01123581321345589144» | ||
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«01123581321345589144» | ||
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«01123581321345589144» | ||
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)0112358132134558914423337761098715972584418167651094617711286574636875025121393196418317811514229832040134626921783093524578570288792274651…» | 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«ab» | ||
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«newBUILDflatiteratorlistboundsreifyrollpickexcludes_minexcludes_maxofWHICHACCEPTSMethod+{<anon>}.newperlNumeric<anon><anon><anon><anon><anon>elemsitemfmtIntNumNumericStr» | ||
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«123» | ||
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/bpcDbx28lgConfusedat /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/5sXIi5zMmAConfusedat /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/d75PWFgQZhConfusedat /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:1Nil» | ||
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_
|