»ö« 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:15
Peter_R left
|
|||
ShimmerFairy | m: sub foo(int $a) { say "OK! $a" }; foo(42) | 00:21 | |
camelia | rakudo-moar 631ac4: OUTPUT«OK! 42» | ||
ShimmerFairy | m: sub foo(int $a) { say "OK! $a" }; foo(val("42")) | ||
camelia | rakudo-moar 631ac4: OUTPUT«Failed to unbox object to integer in sub foo at /tmp/Z7ps_bteHQ:1 in block <unit> at /tmp/Z7ps_bteHQ:1» | ||
ShimmerFairy | Util, timotimo: ^^^ that's the basic issue | ||
binding an allomorph to a natively-typed parameter, apparently | 00:25 | ||
00:30
leont left
00:52
sufrostico left
|
|||
TimToady | m: my @v := [1, 2]; my \step1 = 8 X* ^4; my \step2 = @v X+> step1; say step2 X% 256; | 01:00 | |
camelia | rakudo-moar 631ac4: OUTPUT«===SORRY!===Cannot invoke this object (REPR: Uninstantiable)» | ||
TimToady | m: my @v := [1, 2]; my \step1 = (8 X* ^4).eager; my \step2 = @v X+> step1; say step2 X% 256; | ||
camelia | rakudo-moar 631ac4: OUTPUT«(1 0 0 0 2 0 0 0)» | ||
01:07
kanishka left
01:09
aborazmeh joined,
aborazmeh left,
aborazmeh joined
01:28
yqt left
01:45
ilbot3 left
01:46
ilbot3 joined
01:52
zakharyas joined
02:01
telex left
02:02
telex joined
02:14
vendethiel joined,
zed_ left
02:19
dnmfarrell joined
02:23
kid51 joined
|
|||
dnmfarrell | woo it's quiet here for once. Guess the everyone's asleep eh? FWIW, I just published perltricks.com/article/194/2015/9/2...ing-in-Vim | 02:26 | |
02:38
thou joined
02:43
grondilu left
02:44
noganex joined
02:47
noganex_ left
02:53
grondilu joined
02:56
dnmfarrell left
02:57
kid51 left
03:03
kaare_ joined
03:05
vendethiel left
03:10
aborazmeh left
03:15
zed_ joined,
zed_ left
03:30
shinobi-cl joined
|
|||
shinobi-cl | Hi | 03:32 | |
03:38
pdcawley joined
03:39
pdcawley left
03:55
shinobi-cl left
04:14
khw left
04:21
skids left
04:26
rmgk_ joined,
rmgk left,
rmgk_ is now known as rmgk
04:30
prevost joined
04:34
rurban joined
04:37
prevost left
04:39
thou left
04:44
_28_ria left,
_28_ria joined
04:54
rurban left
04:59
Sqirrel_ left,
Sqirrel joined
05:09
BenGoldberg left
05:18
davido_ joined
05:37
aborazmeh joined,
aborazmeh left,
aborazmeh joined
|
|||
dalek | kudo/nom: be02b7c | TimToady++ | src/Perl6/Grammar.nqp: unbreak @a>>.[] dotted form |
05:43 | |
TimToady | oh, that fixes #124513 if anyone has rt write privs | 05:59 | |
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=124513 | ||
dalek | ast: 124aef3 | TimToady++ | S03- (2 files): True ^^= True is Nil, so var should end up Any |
06:02 | |
06:04
gugod joined
|
|||
ShimmerFairy | TimToady: I find it hard to believe that you don't :) | 06:05 | |
06:07
diana_olhovik joined
|
|||
bartolin closed RT #124513 | 06:10 | ||
06:14
domidumont joined
|
|||
mst got told I must hate larry earlier today for saying that perl6 and perl5 weren't the same language and I wasn't trying to port my modules to it any more than I was to python | 06:16 | ||
I. um. really? | |||
06:18
pochi left
06:19
aiacob joined,
domidumont left
06:20
domidumont joined
|
|||
[Tux] | test 50000 36.333 36.232 | 06:20 | |
test-t 50000 37.206 37.106 | |||
06:22
xfix joined,
xfix left,
xfix joined
|
|||
dalek | ast: 57f2fdf | usev6++ | S12-methods/parallel-dispatch.t: Unfudge passing test for RT #124513 |
06:23 | |
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=124513 | ||
06:27
espadrine joined
06:38
Ven joined
|
|||
grondilu | rosettacode.org/wiki/Reverse_words_...ing#Perl_6 now prints parenthesis. | 06:44 | |
m: say ("foo",) | 06:45 | ||
camelia | rakudo-moar be02b7: OUTPUT«(foo)» | ||
grondilu | m: say ~("foo",) | ||
camelia | rakudo-moar be02b7: OUTPUT«foo» | ||
grondilu | m: say ~("foo", "bar") | ||
camelia | rakudo-moar be02b7: OUTPUT«foo bar» | ||
grondilu | ok, I just have to stringify then | ||
Ven | Hi, #perl6!/ | 06:48 | |
s/\/, o\// | |||
grondilu | \o | 06:49 | |
dalek | ast: 30f08b1 | TimToady++ | S03-operators/orelse.t: update to new orelse semantics |
||
07:03
darutoko joined
07:04
Ven left
07:08
quester joined
07:10
Ven joined
07:14
davido_ left
|
|||
[Tux] | tux.nl/Talks/CSV6/test-t.png | 07:17 | |
dalek | kudo/nom: 5a534d6 | TimToady++ | src/core/Any.pm: Mu ~~ 0 is false By default, nothing defined should be accepting anything undefined. |
||
ast: f3a52d4 | TimToady++ | S03-smartmatch/any-num.t: Mu ~~ 0 and such should return False |
|||
ast: 579fc71 | TimToady++ | S03-smartmatch/any-str.t: Mu ~~ '' should also be false |
07:22 | ||
07:23
Ven left
07:24
Ven joined
|
|||
Ven | perl6.org/compilers/features – should the LoL part be removed? | 07:25 | |
.ask TimToady also – perl6.org/compilers/features – can we remove the "missing exception semantics" to orelse/andalso? | |||
yoleaux | Ven: I'll pass your message to TimToady. | ||
[Tux] | tux.nl/Talks/CSV6/speed3.html | 07:26 | |
TimToady | Ven, yes you can remove that | 07:27 | |
yoleaux | 07:25Z <Ven> TimToady: also – perl6.org/compilers/features – can we remove the "missing exception semantics" to orelse/andalso? | ||
07:28
larion left
|
|||
Ven | TimToady: so, I can mark them as "working as intended" now? | 07:29 | |
TimToady | yup | 07:30 | |
Ven | somehow, I keep writing "andthen" as "andalso"..:) | 07:32 | |
07:33
RabidGravy joined
07:34
Woodi joined
|
|||
dalek | atures: 4a6ab85 | ven++ | features.json: Mark andthen/orelse as working see irclog.perlgeek.de/perl6/2015-09-23#i_11260976 and github.com/perl6/roast/commit/30f0...bc1bb35ff4 |
07:34 | |
07:39
brrt joined
|
|||
brrt | \o | 07:39 | |
07:40
rindolf joined
|
|||
nine | Ven: hasn't NFG been default for several months now? Is still marked red in features | 07:44 | |
Ven | nine: yeah, jnthn++ might want to confirm we have "everything", but it warrants at least a +- | 07:47 | |
nine | Well I don't know what StrPos/StrLen is about and I can't find it in src/, so I guess it's gonna end up as +- | ||
moritz | StrPos and StrLen are no longer needed | 07:50 | |
they were from a time where we thought Buf, Uni and Str were one type | |||
nine | Oh, so it might end up as + after all :) | ||
07:50
domidumont left
07:51
abraxxa joined
|
|||
moritz | does rakudo-jvm do graphemes? | 07:53 | |
TEttinger | hm, someone brought up an odd question: if you were using perl 6 code to model English, you'd need to track certain things for verb usage like he swims, she swims, you swim, they swim, I swim, etc. being all only dependent on number. but if you modeled Spanish, you'd need to track formality for the Usted conjugation, and for adjectives you'd need genders for the applied nouns. | ||
ShimmerFairy | nine: StrPos and StrLen come from before we knew that the different normalizations would be different types. (A time where you were speculated to need to sprinkle :nfkd adverbs in every call, *shudder* :P) | ||
TEttinger | is there some way to attach arbitrary metadata to a perl6 variable, like "how formally this person is to be addressed" or their preferred gender (which also varies between which language, like how German has a neuter gender) | 07:54 | |
07:54
domidumont joined
|
|||
DrForr | English used to have formality too. (see 'thou') and Catalan and Andalusian still have formality for both singular and plural forms. | 07:55 | |
ShimmerFairy | nine: They don't matter now, since using position/length numbers you get from a Str and then turning around and trying them on a Buf is your own fault :) | ||
07:56
Ven left
|
|||
TEttinger | and I think Japanese has a much more in-depth formality system than most Western languages | 07:56 | |
DrForr | TEttinger: Offhand I'd package that into an object and overload stringification, or whatever the proper term is now. | ||
TEttinger | (the bowing custom alone has so many grades of formality in Japan) | ||
ShimmerFairy | DrForr: and before that we didn't have any formality :P (silly French language influences...) | ||
TEttinger | and the other question would be, is there a way to enforce that, if you were making say a dictionary, every object that represents a noun has a gender, but verbs and adjectives do not ever have that? | 07:58 | |
DrForr | One way would be to create a gender role and apply it only to the noun? | 07:59 | |
TEttinger | the literal question was about gendered natural languages made into an analogy about gendered programming languages. I suggested "perl 6 has every other feature, it probably has a way to represent that" | ||
ShimmerFairy | TEttinger: I think the best option (or at least one of the easier ones) would be to have custom classes for that, with maybe a base role .oO(role Word ?) to at least make checking for the right collection of types easier. | 08:00 | |
TEttinger | yeah | ||
I think it's completely possible, I wonder about a slang... | |||
DrForr | Great, Perl6::InEsperanto :) | 08:01 | |
ShimmerFairy | TEttinger: perhaps I don't understand the question well enough, but I get the sense that anything more complex than classes (messing with the metamodel or such) would likely be overengineering. | 08:02 | |
08:02
Ven joined,
abaugher left
08:03
abaugher joined
08:04
Ven left
|
|||
DrForr | And really, the natural evolution I would see would be to at least start with an object hierarchy that you can poke and prod at your leisure, then add whatever overloading or casting operations you see fit on top of the working framework, so the code reads how you want. | 08:08 | |
08:08
dakkar joined
08:17
espadrine left,
aborazmeh left
08:18
jack_rabbit_ joined
08:36
duncan_dmg joined
08:40
larion joined
08:48
jack_rabbit_ left
08:54
brrt left
|
|||
Ulti | ShimmerFairy does your example of the allomorph issue work with normal Int and not just the native form, because the issue I had only turned up when I added the MAIN with an Int parameter being passed | 08:56 | |
ShimmerFairy | m: sub foo(Int $a) { say $a }; foo(val("42")) | 08:57 | |
camelia | rakudo-moar 5a534d: OUTPUT«42» | ||
ShimmerFairy | m: sub foo(int $a) { say $a }; foo(val("42")) | ||
camelia | rakudo-moar 5a534d: OUTPUT«Failed to unbox object to integer in sub foo at /tmp/2r9hthsr_R:1 in block <unit> at /tmp/2r9hthsr_R:1» | ||
ShimmerFairy | Ulti: the problem is with binding to natively-typed parameters in signatures, in the implementation of Range's iterator IIRC. (Use --ll-exception with perl6 to see where the error really comes from.) | 08:58 | |
09:06
Ven joined
09:19
espadrine joined,
cognominal joined
09:22
domidumont left
09:23
domidumont joined
09:24
woolfy joined
09:32
pat_js joined
09:33
TEttinger left
09:36
woolfy left
09:38
domidumont left
09:39
domidumont joined
09:43
AlexDaniel joined
09:46
brrt joined
|
|||
dalek | kudo/nom: c3ba558 | lizmat++ | src/core/Any-iterable-methods.pm: Reinstate original grep handler for junctions The new Seq based code for some reason does not handle grepping using with a junction (at least according to test 28 in S32-list/grep.t). Adding this candidate using the original code, makes the test pass. Not 100% if that test is legit, though. At least this reinstates the previous behaviour. |
09:53 | |
Ulti | ShimmerFairy well the issue for me is in MAIN I specify Int as the type and thats not what I got | 09:56 | |
just calling .Int on that before passing it in fixes everything | |||
so its something to do with the MAIN wrangling | |||
09:57
Ven left
|
|||
ShimmerFairy | Ulti: you get an IntStr, which isa Int. If you really mean integer, you have to convert it to numeric (and if you really mean string, you have to convert it to string) | 09:57 | |
09:59
andreoss joined
|
|||
ShimmerFairy | The issue isn't with MAIN, the issue is with the fact that IntStr won't unbox like Int does in binding to natively-typed signature params, for whatever reason. | 10:00 | |
Ulti | I kind of expect what I got from MAIN to be an instance of that specific type though :/ | 10:01 | |
10:02
brrt left
|
|||
Ulti | but yeah I guess I wouldnt notice if it was all working as expected | 10:02 | |
ShimmerFairy | Ulti: that's not how parameters work in general, though. (You can use Int() as a coercive type parameter however, which say "accept objects of type Any, and call .Int on it, and give me that") | ||
Hm, I think perhaps I don't have that quite right, so nvm | 10:03 | ||
Ulti | also another big win, the junction form of finding primes (which is incredibly elegant) now runs in 1 second instead of 11 from two years ago :) | ||
ShimmerFairy sure but whats coming from MAIN is a little magical since I'm not passing into it | 10:04 | ||
psch is kind of relieved to see allomorphs have bumps on both backends :P | |||
moritz | lizmat: fwiw grep is supposed to work with arbitrary matches, smart-matching against them | ||
m: say ('a', 42).grep(Int) | |||
camelia | rakudo-moar 5a534d: OUTPUT«(42)» | ||
moritz | so also with junctions, yes | ||
m: say ('a', 42).grep(Int|Str) | |||
camelia | rakudo-moar 5a534d: OUTPUT«any((42), (a))» | ||
moritz | but that's wrong | 10:05 | |
it should just return ('a', 42).Seq, not a junction | |||
psch | m: sub f(int $x) { say $x }; f val("42") # points at MoarVM/src/core/args.c:199, which suggests the composition get the storage spec right | 10:06 | |
camelia | rakudo-moar 5a534d: OUTPUT«Failed to unbox object to integer in sub f at /tmp/Gf51tkPs9p:1 in block <unit> at /tmp/Gf51tkPs9p:1» | ||
Ulti | m: my @primes.push($_) unless $_ %% any(@primes) for 2 .. 1000; say @primes[0..2] | ||
camelia | rakudo-moar 5a534d: OUTPUT«(2 3 5)» | ||
psch | +doesn't | ||
lizmat | moritz: that's the bug I just fixed | ||
moritz | lizmat: ok, great | ||
ShimmerFairy | Ulti: P6 automatically processes stuff that comes through the commandline with val(), since there's no way for someone typing at the commandline to specify numbers vs. string data :) | ||
10:07
aiacob left
|
|||
psch | unless there's bigint wonkiness hiding there somewhere, which is possible... | 10:07 | |
ShimmerFairy | Ulti: before val() and allomorphs existed, rakudo did a hackish version of it just for val() | ||
Ulti | apart from me the programmer did specify I wanted an Int | ||
if its not numeric MAIN exits with usage | |||
ShimmerFairy | *just for MAIN | ||
psch: fwiw this also occurs trying to bind a native num | |||
psch | m: sub f(num $x) { say $x }; f val("42.0") | ||
camelia | rakudo-moar 5a534d: OUTPUT«coerce string to num NYI in sub f at /tmp/Et088YiAuO:1 in block <unit> at /tmp/Et088YiAuO:1» | ||
ShimmerFairy | m: sub foo(num $x) { say $x }; foo(val("42e0")) | ||
camelia | rakudo-moar 5a534d: OUTPUT«Failed to unbox object to number in sub foo at /tmp/vtqU8dcPV5:1 in block <unit> at /tmp/vtqU8dcPV5:1» | ||
psch | aah right | 10:08 | |
hmm | |||
yeah "42.0" is a RatStr isn't it | |||
ShimmerFairy | yep, and there aren't any native rats out there :) | ||
psch | ShimmerFairy: well, in that case it's probably not the add_I workaround, but an actual problem in delegation of $!box_target | 10:09 | |
m: use nqp; my $x = IntStr.new(5, "5"); say nqp::unbox_i($x) # but uhh | 10:10 | ||
camelia | rakudo-moar 5a534d: OUTPUT«5» | ||
psch | m: use nqp; my $x = IntStr.new(5, "5"); say nqp::unbox_i($x).WHAT # but uhh | ||
camelia | rakudo-moar 5a534d: OUTPUT«(Int)» | ||
psch | .WHAT reboxed iirc? | ||
moritz | all method calls do | ||
psch | right | ||
ShimmerFairy | psch: makes sense, multiple box targets is something I spotted when working on this, and I'm surprised it didn't cause an explosion of problems :) | ||
moritz | it did, on JVM, no? | 10:11 | |
psch | moritz: kind of, yes. but the first hint at the problem was because the getBI implementation was overly optimistic | 10:12 | |
moritz: as in, it assumed that the unboxIntSlot is always 0 | |||
(which it isn't with IntStr) | |||
trying to fix it lead me to discover that we don't even get the right values for the unbox{*}Slot fields... | 10:13 | ||
well, for IntStr at least | |||
which is kind of weird..? | |||
10:13
quester left
|
|||
ShimmerFairy | m: use nqp; sub foo(num $x) { say $x }; foo(nqp::unbox_n(val("42e0"))) | 10:15 | |
camelia | rakudo-moar 5a534d: OUTPUT«42» | ||
ShimmerFairy | psch: if I had the expertise to look into it, I'd try seeing what exactly the whole signature binding business does, and why it fails on allomorphs | ||
psch | j: sub foo(num $x) { say $x }; foo(val("42e0")) | 10:19 | |
camelia | rakudo-jvm 5a534d: OUTPUT«42» | ||
psch | huh | ||
ShimmerFairy | psch: considering the error message exists in MoarVM, I don't find that _too_ surprising :) | 10:20 | |
psch | ShimmerFairy: well, a similar error message exists in org.perl6.rakudo.Binder... | ||
ShimmerFairy: the surprising bit is that apparently the storage spec seems to differ, because both backends look rather similar in their checking code | 10:21 | ||
ShimmerFairy | sure, I'm just saying that, as a VM-level error message, I'm not surprised to find only one VM with an issue :) | ||
andreoss | # grammar Y { token TOP { [<a> | <b> | <c>]+ } { make ... } } | ||
how can I make a ordered list here? | 10:22 | ||
$/.values>>.made has broken order | |||
psch | andreoss: named captures build a hash, you can &sort them by e.g. .pos | 10:23 | |
andreoss: oh, i think Match.caps() already does that | |||
10:24
pat_js left
|
|||
psch | m: grammar G { token TOP { [$<a>=a | $<b>=b | $<c>=c ]+ { make $/.caps() } } }; G.parse("abaacab").say; | 10:25 | |
camelia | rakudo-moar c3ba55: OUTPUT«「abaacab」 a => 「a」 b => 「b」 a => 「a」 a => 「a」 c => 「c」 a => 「a」 b => 「b」» | ||
10:25
mattprelude joined
|
|||
psch | m: grammar G { token TOP { [$<a>=a | $<b>=b | $<c>=c ]+ { make $/.caps()>>.Str } } }; G.parse("abaacab").say; | 10:25 | |
camelia | rakudo-moar c3ba55: OUTPUT«「abaacab」 a => 「a」 b => 「b」 a => 「a」 a => 「a」 c => 「c」 a => 「a」 b => 「b」» | ||
psch | ...something like that | ||
m: grammar G { token TOP { [$<a>=a | $<b>=b | $<c>=c ]+ { make $/.caps()>>.values } } }; G.parse("abaacab").ast.say; # i suppose | 10:26 | ||
camelia | rakudo-moar c3ba55: OUTPUT«((「a」) (「b」) (「a」) (「a」) (「c」) (「a」) (「b」))» | ||
10:26
zakharyas left
|
|||
andreoss | m: grammar Y { token TOP { ^^ [ <a> | <b> ]+ % \s $$ { make $/.caps()>>.values>>.made } } ; token a { \d+ { make +$/ } }; token b { \w+ { make ~$/ } } ; }; Y.parse("A 1 b 3 c 2").ast.perl.say | 10:41 | |
camelia | rakudo-moar c3ba55: OUTPUT«($("A",), $(1,), $("b",), $(3,), $("c",), $(2,))» | ||
andreoss | m: grammar Y { token TOP { ^^ [ <a> | <b> ]+ % \s $$ { make do $_.made for $/.caps()>>.values } } ; token a { \d+ { make +$/ } }; token b { \w+ { make ~$/ } } ; }; Y.parse("A 1 b 3 c 2").ast.perl.say | 10:44 | |
camelia | rakudo-moar c3ba55: OUTPUT«Method 'made' not found for invocant of class 'List' in block at /tmp/edy3yFPLqk:1 in regex TOP at /tmp/edy3yFPLqk:1 in block <unit> at /tmp/edy3yFPLqk:1» | ||
andreoss | m: grammar Y { token TOP { ^^ [ <a> | <b> ]+ % \s $$ { make $/.caps()».values.flat».made } } ; token a { \d+ { make +$/ } }; token b { \w+ { make ~$/ } } ; }; Y.parse("A 1 b 3 c 2").ast.perl.say | 10:46 | |
camelia | rakudo-moar c3ba55: OUTPUT«("A", 1, "b", 3, "c", 2)» | ||
andreoss | so not obvious | 10:48 | |
10:49
tomboh left
10:51
pmurias joined
10:52
aiacob joined
10:57
pat_js joined
11:09
wind_chh joined
|
|||
lizmat | .tell jnthn got a diff for grep-index: gist.github.com/lizmat/bc7a10a695d361d94e71 the win does not seem to warrant the code bloat, do you agree? | 11:11 | |
yoleaux | lizmat: I'll pass your message to jnthn. | ||
11:13
Ven joined
|
|||
dalek | kudo/nom: 62a5033 | lizmat++ | src/core/Any-iterable-methods.pm: Only instantiated Junctions, please |
11:15 | |
11:25
raiph left
11:26
raiph joined
11:29
Ven left
|
|||
nine | andreoss: if order is important, use .map instead of >> | 11:31 | |
andreoss: err...disregard that | 11:33 | ||
11:35
andreoss` joined,
kid51 joined
11:37
andreoss left,
Gothmog_ left
11:40
rurban joined
11:46
Ven joined
11:48
kid51 left
|
|||
lizmat | DrForr++ : blogs.perl.org/users/drforr/2015/09...pdate.html | 11:57 | |
DrForr | Oh, thanks. | 11:58 | |
I figured I was straight enough to write something up. There's lots more of course, but that's best kept off public networks :) | |||
lizmat | :-) | 11:59 | |
dalek | kudo/nom: 1acccc2 | lizmat++ | src/core/Any-iterable-methods.pm: Make .unique about 2x / 3x faster 2x for pull-one situation, 3x for push-all situations |
||
Ven | lizmat++ # great perf. improvements :D | 12:03 | |
lizmat: I wonder which kind of abstractions we'll be able to factor out of these classes after some point | 12:04 | ||
12:04
wind_chh left
|
|||
lizmat | yeah, it feels it can use a lot of sugar / macro's :-) | 12:05 | |
12:16
Ven left
|
|||
nine | Well all those optimizations have in common that they replace the abstracted, generic code with concrete, optimized implementations. So abstracting might be counter productive ;) | 12:17 | |
moritz | nine: what they all have in common is knowledge about when the end is reached, and how to generate the next value; it's just that avoiding doing that in several method calls is faster | 12:21 | |
nine: so there really is something that can be abstracted, and the default Iterator API does it; it just does it with too much overhead | 12:22 | ||
lizmat | I see the following reason: | 12:25 | |
map needs to take care of: 1 returning more than one value per iteration, 2. making sure any loop-like phasers are fired | |||
the latter could be fixed, I think | 12:26 | ||
the former is basically not generically possible | |||
perhaps we need a map that does not fire any loop-like phasers and must take 1 return value per iteration? | 12:27 | ||
perhaps filter() ? | 12:28 | ||
nine | filter sounds more like grep | 12:29 | |
lizmat | well, unique is a grep, grep-index is a grep, squish is a grep :-) | 12:30 | |
hmmmm.... | |||
nine | They don't seem to be implemented as grep | 12:31 | |
dalek | kudo-star-daily: b59e098 | coke++ | log/ (9 files): today (automated commit) |
||
lizmat | no, they weren't, because of grep being implemented in terms of map | ||
that's no longer the case :-) | 12:32 | ||
nine | >( | ||
:) | |||
12:37
Ven joined
|
|||
lizmat | turning that last opt into a generic grep, makes it 2x as slow :-( | 12:40 | |
12:40
thou joined
|
|||
lizmat | at least :-( | 12:41 | |
12:41
guest11534 left
|
|||
nine | Let's not do that then :) | 12:42 | |
lizmat | hmmm.... may have a test failure here, double checking | 12:43 | |
jnthn | afternoon, #perl6 | 12:46 | |
yoleaux | 11:11Z <lizmat> jnthn: got a diff for grep-index: gist.github.com/lizmat/bc7a10a695d361d94e71 the win does not seem to warrant the code bloat, do you agree? | ||
lizmat | jnthn o/ | ||
ok, between 1.2 and 1.5 times slower :-( | |||
RabidGravy | erp | ||
jnthn guesses he has some patches to read... | |||
lizmat: Note that one downside of making grep not be implemented in terms of map is that it'll also no longer be parallelized without further work | 12:47 | ||
(though maybe you already took care of that and implemented HyperSeq.grep) | |||
lizmat | no, I didn't... but will do when I get around to it :-) | 12:48 | |
jnthn | ok | ||
I will review what's happened in grep | |||
I guess it still supports next/last/redo like map? | |||
lizmat | yes, the only spectest breakage is handling regexes directly | 12:50 | |
sorry, no, regexes directly is fine | |||
having a regex inside a callable by itself: /a/ is ok, { /a/ } fails, { m/a/ } is ok | |||
[Coke] | RT: 1,024; GLR: 4, testneeded: 9; xmas: 108 | ||
12:50
Ven left,
Psyche^_ joined
|
|||
jnthn | { /a/ } is more than a little dubious. | 12:51 | |
I'm surprised it worked before | |||
lizmat | well, yes, that's why I didn't fix the code or the test | ||
I wasn't sure which one was dubious | |||
jnthn | { m/a/ } is fine | ||
Because it means "immediately match against $_" | 12:52 | ||
lizmat | yup | ||
jnthn | But { /a/ } means "return a Regex" | ||
lizmat | /a/ is also fine, as we have a separate candidate (opt) to handle that | ||
[Coke] | m: (2/6).WHAT.say; (2/6).perl.WHAT.say; | ||
camelia | rakudo-moar 1acccc: OUTPUT«(Rat)(Str)» | ||
jnthn | And boolifying it will try to match it against...some $_, but you'd be darn lucky if what's in $_ is the right thing | ||
[Coke] | m: (2/6).WHAT.say; (2/6).perl.EVAL.WHAT.say; | ||
camelia | rakudo-moar 1acccc: OUTPUT«(Rat)(Rat)» | ||
jnthn | So I think .grep({ /a/ }) is bogus, and if it worked it was an accident. | 12:53 | |
lizmat | ok, then I'll adapt the tests | ||
12:54
Psyche^ left
|
|||
dalek | ast: b8cd2e8 | lizmat++ | integration/advent201 (2 files): Fix bogus tests wrt to { /a/ } |
12:55 | |
lizmat | jnthn: theoretical question: if grep is a HyperSeq, and unique is a grep, how would the system know that unique has a global state that doesn't let itself be hypered ? | 13:00 | |
jnthn | lizmat: It doesn't; we need to review such things and .serial them | 13:01 | |
lizmat | ok, that's what I thought :-) | ||
jnthn | lizmat: Or, better still, to give them a parallel implementation. | ||
lizmat | yeah, that would be the consequence of that | ||
jnthn | .uniq is a little challening I guess | 13:02 | |
13:02
Ven joined
|
|||
jnthn | .squish is quite easy | 13:02 | |
You just need to be very careful at the join points | |||
lizmat | it's unique nowadays :-) | ||
jnthn | gah, stop renaming stuff! :P | ||
lizmat | well, uniq in unix is squish around here :) | 13:03 | |
jnthn | True :) | ||
lizmat | so I think that made sense :) | ||
13:06
skids joined
13:10
abaugher left
13:11
abaugher joined
|
|||
pmurias | hi | 13:15 | |
moritz | \o pmurias | 13:18 | |
13:18
Debolaz joined
|
|||
jnthn is looking into the POST regression | 13:19 | ||
13:19
rurban left
13:25
carlin joined
|
|||
jnthn | lizmat: I don't think you need to keep the custom candidate for Junction | 13:27 | |
(for grep) | |||
lizmat: I think that it should be a small fix in the grep iterator | |||
Of note, I suspect: | 13:28 | ||
method BUILD(\list,\test) { | |||
Needs to be Mu \test | |||
lizmat | jnthn++ I will test that | ||
jnthn | Oh, it's a BUILD | ||
But I think you know where I mean :) | |||
oh, I did copy it...gah, wake up brane! :) | |||
lizmat | yeah, all the way through | ||
jnthn | Well, variables default to Mu, it's just parameters | ||
(which default to Any) | 13:29 | ||
13:29
khw joined
|
|||
moritz | also, I think you can optimiize $value ~~ $!test into $!test.ACCEPTS($value) | 13:29 | |
lizmat | moritz: I seem to recall I tried that, but that it caused spectest failures | ||
but I will check again | |||
carlin | m: need Test; Test::ok 1; | 13:30 | |
camelia | rakudo-moar 1acccc: OUTPUT«Could not find symbol '&ok' in block <unit> at /tmp/bKFqz9j1YQ:1Actually thrown at: in block <unit> at /tmp/bKFqz9j1YQ:1» | ||
carlin | is it possible to call an exported sub that you didn't export? | ||
*didn't import | |||
jnthn | carlin: Only if it declared itself "our" | 13:31 | |
You're better off importing. Note that import is lexical in Perl 6, so you can easily control the scope of the import. | |||
moritz | carlin: only if you go hunting in the packages EXPORT scope (oh, and don't do that) | ||
dalek | kudo/nom: e741fcd | jnthn++ | src/Perl6/World.nqp: Unbust POST. |
13:32 | |
carlin | okay, thanks jnthn and moritz | ||
jnthn | .oO( POST no bills about that bug any more... ) |
||
13:32
Ven left
|
|||
[Coke] wonders if all post stuff is working now, testing... | 13:36 | ||
jnthn | [Coke]: Well, pre-post.t is clean (well, as clean as it was before, e.g. nothing unfudged is failing) | 13:37 | |
[Coke] | ok, there are fudged things in there, so the ticket is still open. danke. | 13:38 | |
jnthn | I just unbusted the regression, so wasn't expecting anything beyond that. | ||
Anything anyone has that they really want me to look at? | |||
13:39
sufrostico joined
|
|||
psch | m: sub f(int $x) { $x }; f val("42") | 13:39 | |
camelia | rakudo-moar 1acccc: OUTPUT«Failed to unbox object to integer in sub f at /tmp/xi58JTFI5R:1 in block <unit> at /tmp/xi58JTFI5R:1» | ||
psch | m: sub f(int $x) { $x }; f nqp::unbox_i(val("42")) | ||
camelia | ( no output ) | ||
dalek | kudo/nom: 0cd80e4 | lizmat++ | src/core/Any-iterable-methods.pm: Remove unnecessary Junction candidate Default for parameters is Any, not Mu. jnthn++ for the pointer |
||
ast: 5015ba2 | coke++ | S04-phasers/pre-post.t: less forceful fudge |
|||
jnthn | psch: Hmm | 13:40 | |
psch | jnthn: ^^^ that seems kinda easy-ish from a distance, and allomorphs still have 1/3rd failures in their test file | ||
on moar that is, jvm jumps between "dies the first test" and "fails 2/3" | |||
depending on my progress and guesses... :) | |||
13:41
Gothmog_ joined
|
|||
ShimmerFairy | psch: allomorphic.t passes everything for me on moar | 13:41 | |
psch | ShimmerFairy: oh? my last run on moar was a few days ago, but i doubt you changed anything..? | 13:43 | |
ShimmerFairy | I did update the test files a bit a couple days ago | ||
psch | ah, that might be it i guess | ||
jnthn | Do we have a test to cover that native issue? | ||
(Or an RT?) | |||
hm, what the heck is this code doing... | 13:45 | ||
ah... | 13:46 | ||
But yeah, I think I see the fix. | |||
m: my $x = 42; sub foo(num $) { }; foo($x) | 13:47 | ||
camelia | ( no output ) | ||
jnthn | grmbl | ||
m: my $x = 42; sub foo(num $a) { say $a }; foo($x) | |||
camelia | rakudo-moar 1acccc: OUTPUT«42» | ||
jnthn | m: my $x = 42; sub foo(num $a) { say $a.WHAT }; foo($x) | ||
camelia | rakudo-moar 1acccc: OUTPUT«(Num)» | ||
jnthn | m: my $x = 42e0; sub foo(int $a) { say $a.WHAT }; foo($x) | 13:48 | |
camelia | rakudo-moar 1acccc: OUTPUT«(Int)» | ||
jnthn | Those should die... | ||
13:50
Goblin_ joined,
Ven joined
|
|||
Goblin_ | How can i compile perl 6 file to windows executable ? | 13:50 | |
jnthn | Goblin_: Don't know of a way to do that yet | 13:51 | |
13:52
machin joined
13:53
kanishka joined
|
|||
Goblin_ | How to distribute program? | 13:54 | |
moritz | same as with Perl 5: as source | ||
and the user must have the compiler installed | |||
DrForr | Same way you do in perl5, source ideally packaged in a module like what's on modules.perl.org. | ||
moritz | though fat packing would be cool | 13:55 | |
(but requires Rakudo and all dependencies to be relocatable) | |||
psch | well, there's this half-baked jar-packaging in a branch... | 13:56 | |
moritz | .oO( There's Java in the Jar! ) |
||
jnthn | I expect somebody will build a way at some point to bundle a load of modules up into an executable with the VM linked in | 13:57 | |
13:57
timbunce_ joined,
Ven left
|
|||
jnthn is muchly relieved to find that NQP and its tests don't rely anywhere on the magical int/num unbox coercion accident | 13:58 | ||
13:58
Goblin_ left
|
|||
psch | oh, insight! | 13:58 | |
pmurias | jnthn: what's that incident about? | 13:59 | |
psch | the type object that gets passed into add_I from IntStr.new has the proper unbox{Int,Str}Slot values! | ||
...but that'd mean all the other _I ops also need to care for the type..? | |||
13:59
rurban joined
|
|||
jnthn | pmurias: The thing I pasted above | 14:00 | |
m: my $x = 42; sub foo(num $) { }; foo($x) # should die | 14:01 | ||
camelia | ( no output ) | ||
jnthn | (Does now locally) | ||
psch | unless i can assume the REPRData is populated correctly after new finishes | ||
but there's nothing indicating that it should be | |||
dalek | kudo/nom: be46c2e | lizmat++ | src/core/Any-iterable-methods.pm: Make .grep(Mu) use .ACCEPTS instead of ~~ moritz++ for the pointer |
||
14:03
hernanGOA joined
|
|||
[Coke] | isn't ~~ ACCEPTS under the coversd? | 14:08 | |
moritz | mostly, yes | ||
but ~~ also topicalizes | |||
[Coke] sees that tools/autounfudge is using the limited perl6 instance (to restrict memory and time) but still seems to get hung up. | 14:10 | ||
14:11
Sqirrel_ joined
|
|||
dalek | ast: a1c7756 | jnthn++ | S02-types/native.t: Tests for int/Int->num and num/Num->int args. Should constrain; in Moar they accidentally coerced. And it seems we had no test coverage for that. |
14:11 | |
14:13
Sqirrel left
14:19
Ven joined
14:21
Ven left,
hernanGOA left
|
|||
dalek | p: e0fdaee | jnthn++ | src/QAST/Node.nqp: Tighten up use of natives in QAST dumping. Also, things end up simpler. This is in anticipation of a MoarVM patch that tightens up int/num native parameters. |
14:21 | |
14:21
machin left
|
|||
dalek | kudo/nom: 49fd469 | jnthn++ | src/Perl6/Actions.nqp: Make sure we end up with int, not num, here. |
14:23 | |
jnthn | psch: Seems I've a fix for val passing to a native int/num, testing it doesn't regress anything and adding tests. | 14:29 | |
14:29
rurban left
|
|||
psch | jnthn++ | 14:30 | |
14:30
telex left
|
|||
jnthn | I'd better check passing to str works too :) | 14:30 | |
14:32
telex joined
14:33
hernanGOA joined
|
|||
[Coke] | t/spectest.data has a test last marked "# last to prevent load interference" - -1 - if that test is failing under load, it needs to be fixed, not hidden. | 14:34 | |
14:35
rurban joined
|
|||
sjn | \o | 14:36 | |
lizmat | sjn o/ | ||
sjn | quick question; can I make a subtype of Positional where I'm only allowed to have a certain max amount of elements? | 14:37 | |
or something | |||
(e.g. an array where I'm allowed max 8 elements) | |||
jnthn | subset Limited of Positional where .elems <= 8 | 14:38 | |
Or something | |||
But | |||
m: my @a := Array.new(:shape(8)); @a[4] = 42 | |||
camelia | ( no output ) | ||
jnthn | m: my @a := Array.new(:shape(8)); @a[8] = 42 | ||
camelia | rakudo-moar be46c2: OUTPUT«Index 8 for dimension 1 out of range (must be 0..7) in block <unit> at /tmp/mCNnUD0mqc:1» | ||
jnthn | You can already do that, and when I wire up the syntax sugar then it'll be just `my @a[8]` | ||
sjn | how would I use that in a signature? | 14:39 | |
jnthn | Ah, in a sig you'll have to do it with a where for the time being | ||
while .elems < 8 | |||
sjn | ok | ||
jnthn | oops | ||
sjn | where* | ||
jnthn | where .elems < 8 | ||
:) | |||
nine | m: subset Limited of Positional where .elems < 8; my Limited $a = [1, 2, 3]; $a.push: $_ for 1 .. 10; say $a.elems; # also .elems is only checked on assignment | ||
camelia | rakudo-moar be46c2: OUTPUT«13» | ||
nine | m: subset Limited of Positional where .elems < 8; my Limited $a = []; say $a ~~ Limited; $a.push: $_ for 1 .. 10; say $a ~~ Limited # funny | 14:41 | |
camelia | rakudo-moar be46c2: OUTPUT«TrueFalse» | ||
14:41
timbunce_ left
|
|||
dalek | p: 8304e17 | jnthn++ | tools/build/MOAR_REVISION: Get Moar with native arg fixes. |
14:43 | |
[Coke] | jnthn: t/spec/S02-types/native.rakudo.moar is failing 50, 52 here. | ||
14:43
timbunce_ joined
|
|||
dalek | kudo/nom: ddd2fe6 | jnthn++ | tools/build/NQP_REVISION: NQP bump for Moar/NQP native param fixes. |
14:43 | |
[Coke] | ... trying again. :) | ||
jnthn | [Coke]: Yeah, I pushed it by accident | ||
[Coke] | I assume those last 2 commits fix it? | ||
jnthn | [Coke]: Meant to git push in another window, and push the test after the thing I jsut pushed now :) | 14:44 | |
14:44
rurban left
|
|||
dalek | ast: 71f348a | jnthn++ | S02-literals/allomorphic.t: Tests for allomorphs and native parameters. |
14:44 | |
jnthn | psch: ^^ now passing on Moar; hope that covers what you were meaning :) | 14:45 | |
psch | jnthn: tbh, i just caught ShimmerFairy++ and Ulti++ discussing the behavior this morning... :) | ||
14:45
rurban joined
|
|||
sjn | m: subset Limited of Positional where .elems < 8; sub foo (Limited @myargs) { say "got {@myargs.elems} args" }; foo(1,2,3,4) | 14:45 | |
camelia | rakudo-moar be46c2: OUTPUT«Too many positionals passed; expected 1 argument but got 4 in sub foo at /tmp/ySySsT2Enq:1 in block <unit> at /tmp/ySySsT2Enq:1» | ||
jnthn | psch: Well, good to clear it up :) | 14:46 | |
sjn | not sure what do do here | ||
jnthn | OK, that next... | 14:47 | |
*what next... :) | |||
psch | std: sub f(:\a) { } | ||
camelia | std 28329a7: OUTPUT«ok 00:00 138m» | ||
psch | m: sub f(:\a) { } | ||
camelia | rakudo-moar be46c2: OUTPUT«5===SORRY!5=== Error while compiling /tmp/4hi5ah4pK3Missing blockat /tmp/4hi5ah4pK3:1------> 3sub f(:7⏏5\a) { }» | ||
psch | that's something that i postponed RTing because RT was really slow at that time | 14:48 | |
but i guess that's mostly Perl6::Grammar | |||
jnthn | :\a looks...pretty :P | ||
But yeah, makes sense it should work | |||
psch | got the idea to try when there was the "is parcel" to "is raw" change | 14:49 | |
nine | m: subset Limited of Positional where .elems < 8; sub foo (Limited @myargs) { say "got {@myargs.elems} args" }; foo((1,2,3,4)) | ||
camelia | rakudo-moar be46c2: OUTPUT«Type check failed in binding @myargs; expected 'Positional[Positional]' but got 'List' in sub foo at /tmp/fBjklpqXuM:1 in block <unit> at /tmp/fBjklpqXuM:1» | ||
nine | m: subset Limited of Positional where .elems < 8; sub foo (Limited $myargs) { say "got {$myargs.elems} args" }; foo((1,2,3,4)) | ||
camelia | rakudo-moar be46c2: OUTPUT«got 4 args» | ||
nine | sjn: ^^^ | ||
sjn: Limited @myargs means an Array where each element is a Limited. | |||
sjn | it does? | 14:50 | |
hm | |||
jnthn | sub foo(*@args where Limited) { } # may cut it | ||
[Coke] runs spectest with TEST_JOBS=50 for grins. | 14:51 | ||
dalek | kudo/nom: abb9712 | lizmat++ | src/core/Any-iterable-methods.pm: Make .unique(:as) about 1.5x faster There is little point in optimising the cases with a :with parameter, as the bottleneck there is the use of first() to check identity. |
||
nine | sjn: my Int $foo; # $foo should obviously be an Int; my Int @foo; # @foo should almost as obviously contain Ints | 14:52 | |
ilmari | m: subset Limited of Positional where .elems < 8; sub foo(*@args where Limited) { say "got {@args.elems} args" }; foo(1..3); foo(1..9) | ||
camelia | rakudo-moar be46c2: OUTPUT«got 3 argsConstraint type check failed for parameter '@args' in sub foo at /tmp/c58rugr1hW:1 in block <unit> at /tmp/c58rugr1hW:1» | ||
dalek | kudo/nom: 564a255 | coke++ | t/spectest.data: Add these already passing tests to spectest |
||
[Coke] | S04-statements/lift.t appears to be a conjectural test that refers to something that no longer exists. | 14:54 | |
Can I kill it? | |||
ah. RT #124579 was rejected, but the test wasn't deleted. Killing test.. | 14:55 | ||
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=124579 | ||
lizmat | [Coke]:: also spec commit eb0f21689e70b3280745 | 14:56 | |
"This is going away in favor of better parameter declarations that can implicitly default to operators as seen by the caller." | |||
dalek | ast: 0a0e339 | coke++ | S04-statements/lift.t: Lift was unspecced. Removing test file RT #124579 |
14:57 | |
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=124579 | ||
TimToady wanted to close a couple of tickets last night but doesn't have the RT charm to do that yet | 15:06 | ||
jnthn | [Coke]: Do you have admin access to fix ^^? :) | 15:07 | |
zostay | m: sub f(*@a) { @a.say }; f('a' => 1, 'b' => 2, 'c' => 3); f(a => 1, b => 2, c => 3); | ||
camelia | rakudo-moar 49fd46: OUTPUT«[a => 1 b => 2 c => 3]Unexpected named parameter 'a' passed in sub f at /tmp/oXPl6sok4E:1 in block <unit> at /tmp/oXPl6sok4E:1» | ||
jnthn | zostay: If you want to capture named params into a hash, there's *%h | 15:08 | |
zostay | right, i'm just trying to understand the nuances of when an arg is a Pair and when an arg is a named parameter | 15:09 | |
jnthn | zostay: Whenever there's an identifier to the left of the => it's a named arg | 15:10 | |
TimToady | basically it comes down to whether there's a bare identifier | ||
and :foo is always considered bare | |||
zostay | that makes sense to me, thx | ||
TimToady | and has to be at the arg level, so parens are also hiding | 15:11 | |
15:11
Ven joined,
royalkiran007 joined
|
|||
jnthn | m: say uniname(0x7F) | 15:12 | |
camelia | rakudo-moar 49fd46: OUTPUT«DELETE» | ||
jnthn | m: say 0x7F | ||
camelia | rakudo-moar 49fd46: OUTPUT«127» | ||
TimToady | shoulda been named RUBOUT :) | ||
jnthn | Just looking into the missing <.print> and <.graph> in regexen | 15:13 | |
zostay | cool beans, now that Pair has been refactored to handling binding, i am making KnottyPair obsolete and removing it | ||
jnthn | TimToady: iiuc, <.print> is the same as <-cntrl>? | ||
15:14
domidumont left
|
|||
TimToady | that's at least a good first approximation | 15:15 | |
jnthn | Ah, Perl 5's re docs have a different definition | ||
"All printable characters, which is the set of all graphical characters plus those whitespace characters which are not also controls." | 15:16 | ||
And | |||
(graphical is defined as) | |||
"Any character that is graphical, that is, visible. This class consists of all alphanumeric characters and all punctuation characters." | |||
15:17
aiacob left
|
|||
jnthn leaves print as "not control" for now, and makes graph annum + punct | 15:18 | ||
timotimo | jnthn: i realize people keep piling things onto your plate; how do you feel about investigating the chaining of flattening in the perl6 optimizer or the nfa to statelist thing branch? :| | 15:19 | |
jnthn | m: say nqp::iscclass(nqp::const::CCLASS_PUNCTUATION, '_', 0) | ||
camelia | rakudo-moar 49fd46: OUTPUT«1» | ||
jnthn | timotimo: Chaining of flattening? | 15:21 | |
The NFA thing...I know that at some point I need to deal with the fact that our NFAs don't quite get NFG right, so probably something to poinder when I get to that. | 15:22 | ||
timotimo | jnthn: the optimizer has a flag that signifies "was this block flattened?" that gets passed to "incorporate_inner", but it's never set to 1 | 15:23 | |
jnthn | Oh, *that* kind of flattening | 15:24 | |
timotimo | when i set it to 1 after flattening the block, it causes problems: a QAST::Var that gets turned from lex to local inside a block that's far removed from where i'd've expected it, and it breaks because the var wasn't defined in that block | ||
jnthn apparently still has the GLR swapped in... :) | |||
timotimo | right, i should have disambiguated immediately :) | 15:25 | |
TimToady | let's not overload "flat" any further | ||
15:25
rurban left
15:26
diana_olhovik left
|
|||
timotimo | we should call executables that contain modules and scripts and such "flat", too | 15:26 | |
jnthn | TimToady: Yeah, though thankfully this one's in the bowels of the optimizer only :) | ||
timotimo | so, i thought there's some kind of oversharing and the one thing i recalled that shares qast nodes across large distances was build_inline_info, but that's not at fault here | 15:28 | |
jnthn | ooh yay, seems I get to remove the last fudge marks from stdrules.t. | 15:30 | |
[Coke] | TimToady: you should be a bug admin now. | 15:31 | |
timotimo | if not, bug admins now | ||
[Coke] | (please be sure to cc the mailing list when replying to tickets via the webterface, which is pretty much the only advice I give to people answering tickets. :) | ||
TimToady | okay | 15:32 | |
15:33
rurban joined
15:34
xinming_ joined
15:36
adu joined
|
|||
nine | [Coke]: what mailing list? | 15:37 | |
15:37
xinming left
|
|||
timotimo | perhaps rakudobug@ ? | 15:37 | |
dalek | p: bf1d2ad | jnthn++ | src/QRegex/Cursor.nqp: Implement <.print> and <.graph> rules. |
||
hoelzro | o/ #perl6 | 15:39 | |
dalek | ast: ba45802 | coke++ | S05-syntactic-categories/new-symbols.t: Add refs to RT #126142 |
||
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=126142 | ||
[Coke] | perl6-compiler - it's one of the options when replying to a ticket via the webterface, to cc the mailing list. | 15:40 | |
dalek | kudo/nom: c43ac75 | jnthn++ | tools/build/NQP_REVISION: Bump NQP_REVISION for <.print>/<.graph>. |
||
jnthn | [Coke]: Isn't that the default? | ||
[Coke] | the mailing list gets the initial email ona ticket, but the default is not to cc them on comments later. | ||
so, no. | |||
jnthn | I see a | 15:41 | |
TimToady | it's a single click to do it though | ||
jnthn | Bcc: [email@hidden.address] | ||
[Coke] | jnthn: yes. you have to click to enable it. | ||
jnthn | I'd been assuming that meant it was mailing the list... :S | ||
TimToady | the bullet is misleading | ||
15:41
Ven left
|
|||
TimToady | it looks like a clicked button | 15:41 | |
[Coke] adds a NYI ticket. | |||
jnthn | I see this in the Recipients section, though? | ||
TimToady | it didn't send my last message when I forgot to click | 15:42 | |
but this time it did | |||
dalek | ast: cafa204 | jnthn++ | S05-mass/stdrules.t: Unfudge tests for <.print> and <.graph>. |
15:43 | |
jnthn | There's an easy one off my "stuff before xmas" list :) | 15:44 | |
[Coke] | r: use Test; ok(" a b\tc" ~~ m/@<chars>=( \s+ \S+ )+/, 'Named simple array capture'); | ||
camelia | rakudo-moar 564a25: OUTPUT«===SORRY!===QAST::Block with cuid cuid_1_1443023098.31053 has not appeared» | 15:45 | |
..rakudo-jvm 564a25: OUTPUT«===SORRY!===setcodeobj can only be used with a CodeRef» | |||
jnthn | TimToady: Please can you at some point make a ruling on rt.perl.org/Ticket/Display.html?id=67128 ? | ||
[Coke] | ^^ that's at least LTA, but should that work? | ||
dalek | kudo/nom: 3970634 | lizmat++ | src/core/Str.pm: Oops, we need an if instead a while here timotimo++ for spotting. No noticeable performance difference, though |
15:47 | |
jnthn | [Coke]: I...think so, yeah | ||
m: multi foo(:$d!, *@f) {}; multi foo(*@f) { say "works" }; foo() | |||
camelia | rakudo-moar 564a25: OUTPUT«works» | ||
jnthn | m: multi foo(*@f, :$d!) {}; multi foo(*@f) { say "works" }; foo() | ||
camelia | rakudo-moar 564a25: OUTPUT«Ambiguous call to 'foo'; these signatures all match::(*@f, :$d!):(*@f) in block <unit> at /tmp/Ck5R19Bsbw:1» | ||
jnthn | std: multi foo(:$d!, *@f) {}; multi foo(*@f) { say "works" }; foo() | ||
camelia | std 28329a7: OUTPUT«Potential difficulties: @f is declared but not used at /tmp/rT08h6Drfz line 1:------> 3multi foo(:$d!, *7⏏5@f) {}; multi foo(*@f) { say "works" }; ok 00:00 140m» | ||
jnthn | std: multi foo(:$d!, *@f) {}; multi foo(*@f) { say "works" }; foo() # OK shut up about unused crapp STD | 15:48 | |
camelia | std 28329a7: OUTPUT«Potential difficulties: @f is declared but not used at /tmp/NwpdpWFw_3 line 1:------> 3multi foo(:$d!, *7⏏5@f) {}; multi foo(*@f) { say "works" }; ok 00:00 141m» | ||
jnthn | std: multi foo(:$d!, *@f) {}; multi foo(*@f) { say "works" }; foo() # OK | ||
camelia | std 28329a7: OUTPUT«Potential difficulties: @f is declared but not used at /tmp/KO9jaF8oLB line 1:------> 3multi foo(:$d!, *7⏏5@f) {}; multi foo(*@f) { say "works" }; ok 00:01 141m» | ||
jnthn | std: multi foo(:$d!, *@f) {}; multi foo(*@f) { say "works" }; foo() #OK | ||
camelia | std 28329a7: OUTPUT«ok 00:00 141m» | ||
jnthn | *sigh* | ||
One feature Rakudo will NOT be borrowing from STD... | |||
timotimo | :D | ||
jnthn | std: multi foo(*@f, :$d!) {}; multi foo(*@f) { say "works" }; foo() #OK | ||
camelia | std 28329a7: OUTPUT«ok 00:01 141m» | ||
jnthn | Hm, so you can order things that way | ||
15:48
Ven joined
15:49
Alina-malina left
15:50
Ven left
|
|||
lizmat | m: (^10).grep( { .say } ).grep( { last } ) # did this work pre-GLR (as in only say 0 ?) | 15:52 | |
camelia | rakudo-moar 564a25: OUTPUT«0» | ||
15:53
kanishka left
|
|||
lizmat | if not, yeah GLR :-) | 15:53 | |
jnthn | lizmat: I think it should have worked pre-GLR | ||
lizmat | star: (^10).grep( { .say } ).grep( { last } ) | 15:54 | |
camelia | star-m 2015.03: OUTPUT«0» | ||
jnthn | Though I'm sure it works more efficiently nowadays :) | ||
lizmat | ok, but it still workd now :-) | ||
jnthn wonders if there's a test for that :) | |||
15:54
yqt joined
15:55
abraxxa left
|
|||
lizmat | well, one could wonder whether they should live in roast | 15:55 | |
as laziness is really optional, no? | |||
jnthn | Yes, I think those semantics are something one should be able to rely on | 15:56 | |
15:56
xinming_ left
|
|||
jnthn | I mean, for $*IN.lines.grep(/a/) { last if /b/; } | 15:56 | |
15:56
xinming joined
|
|||
jnthn | We don't expect it to swallow ahead on the filehandle there | 15:56 | |
In fact, we'd be rather upset if it did :) | 15:57 | ||
dalek | ast: 442a23d | coke++ | S05-capture/array-alias.t: Add note for RT #126143 |
||
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=126143 | ||
jnthn | So I think such semantics are required by the language. | ||
(And so are a good thing to roast) | |||
lizmat | ok, time to write some tests, then | ||
as I think these are most definitely, not tested yet | |||
dakkar | hmm. I have a class with a «submethod DESTROY { }» that serialises some state; what's the best way to test that it works? | 15:58 | |
in other words, how do I trigger object destruction? | |||
lizmat | from Perl 6, you can't | ||
dakkar | (or am I thinking too much like perl5 / c++ here?) | ||
lizmat: I feared such a response :) | |||
lizmat | you can never be sure that your DESTROY method will be called | ||
dakkar | not at all? not even at process termination? | 15:59 | |
timotimo | correct | ||
lizmat | especially not at process termination | ||
dakkar | argh | ||
so I have to *explicitly* tell my objects to save themselves? :( | |||
lizmat | well, there are things like LEAVE phasers | ||
and will leave | 16:00 | ||
jnthn | And END still exists | ||
lizmat | my $object will leave { $object.save } | ||
my $object will leave { $object.save } = Class.new | |||
dakkar | eh. conceptually, to me, that's the "wrong" place to say it | ||
why should the caller have to know that the object is caching state to disk? | |||
it could (in my case) just rebuild the state every time | 16:01 | ||
it's an implementation detail, inside the class | |||
lizmat | dakkar: I think we will find some syntactic sugar for will leave in the future | 16:02 | |
16:02
rindolf left
|
|||
lizmat | but I don't think that will be before Christmas :-( | 16:02 | |
dakkar | I'm not objecting to the syntax | ||
lizmat | I understand your point... | ||
dakkar | if, when creating an object, I want to attach some code to "when this name goes out of scope", «will leave» is fine | ||
I'm trying to solve a slightly different problem… | 16:03 | ||
lizmat | I've been looking at making a "use Class" in a scope make magic happen to variables with objects of that type leaving that scope | ||
it's hard :-) | |||
dakkar | if it weren't hard, it would have been done already :)))) | 16:04 | |
looks like you people have already solved all the easy and medium problems | |||
moritz | there are still a lot of low-hanging fruits in Perl 6 land | ||
lizmat | cycling& | 16:06 | |
jnthn | dakkar: If we wanted to keep timely destruction of objects in Perl 6 then we'd pretty much be forced to do ref counting, which is (a) not good for concurrency, and (b) would rule out running on things like the JVM | 16:07 | |
dakkar | I understand that | ||
it's the part where DESTROY may not be called at all that worries me | |||
dalek | rl6-roast-data: 272b4a7 | coke++ | / (8 files): today (automated commit) |
||
dakkar | I have no issues with "it will be called at some point between last-ref-goes-away and global destruction" | ||
moritz | maybe we should have a way to signal "always do a global destruction at exit" | 16:08 | |
[Coke] | pmurias: what can I do to fix the nqp-js builds on hack? | ||
TimToady | which an embedding interface would turn on by default | ||
jnthn | Trouble is, even if we do manage to find a way to make that happen on, say, MoarVM, it'll only be setting you up for bug reports about misbehavior on JVM et al. | 16:09 | |
TimToady: Yes, embedding is where we'd want to find a way, though note that "free all memory" != "call all DESTROYs" | |||
16:10
Alina-malina joined
|
|||
jnthn | We could arrange for the latter too, or a decent approximation. | 16:10 | |
16:10
mattprelude left
|
|||
[Coke] | psch: you're working on jvm, aye? currently 1432 failing tests. | 16:11 | |
jnthn | Darn, fixing RT #118467 - or at least the first attempt - caused a small number of odd regressions. | 16:12 | |
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=118467 | ||
[Coke] | 63 failures on moar-jit and moar-nojit. | ||
psch | [Coke]: yeah, i'm still working on the IntStr stuff | ||
[Coke] | (not on my os x box, but on hack) | ||
psch++ | |||
TimToady | jnthn: yeah, I've noticed lately that fixing one corner case tends to light up several others :/ | 16:13 | |
jnthn | TimToady: Why didn't we just design a really simple language like Java where there aren't enough features for corner caess? ;) | 16:14 | |
TimToady | because it wasn't there! | ||
jnthn | :) | ||
psch | checked vs unchecked exceptions, native arrays vs object arrays... | ||
i'll admit, javas corners are rounded and padded :) | 16:15 | ||
16:15
larion left
|
|||
jnthn | Apparenlty it's time to ponder dinner :) Will continue hunting later. :) | 16:16 | |
16:21
carlin left
16:22
xinming_ joined
|
|||
pmurias | [Coke]: do you have a stack trace of the builds failing? | 16:24 | |
16:25
xinming left
|
|||
pmurias | [Coke]: or do you mean how to we make the version of nqp-js the evalbot automatically rebuilt? | 16:26 | |
[Coke] | not evalbot, my daily runs. one sec. | ||
github.com/coke/perl6-roast-data/b...y.out#L120 | 16:27 | ||
16:28
rindolf joined
|
|||
pmurias checks | 16:28 | ||
[Coke]: it's an issue with building the node.js module we use to implement nqp::sleep | 16:31 | ||
16:32
rurban left
|
|||
pmurias | [Coke]: while googling the error message someone seems to suggest that it's the fault of the debian node.js package | 16:33 | |
16:33
Ven joined
|
|||
pmurias | and using a nodesource node.js fixes that | 16:33 | |
16:34
xinming joined
|
|||
[Coke] | ok. verified this is debian. How does one do that last thing? | 16:34 | |
TimToady | hmm, the message cc'd to p6c doesn't mention the state change | ||
[Coke] | nope. for bonus points, you need to say "so I'm resolving/rejecting/whatever" in the comment. :| | 16:35 | |
the originator of the ticket gets an email on the state chagne. | |||
16:37
xinming_ left
16:38
pat_js left,
diana_olhovik_ joined
|
|||
pmurias | [Coke]: I'm not sure, I'm a lousy sysadmin and I don't have root on hack (and likely shouldn't :) ) | 16:38 | |
16:39
pat_js joined,
dakkar left
16:41
Ven left
|
|||
psch | github.com/RobertCNelson/omap-imag.../issues/61 has <npm install -g npm> as workaround for that error | 16:42 | |
16:43
diana_olhovik_ left
|
|||
[Coke] | that page also says, "This is not a good idea". :) | 16:46 | |
I'll leave this to moritz. :) | |||
psch | oh, i must've overlooked that | 16:47 | |
16:49
hernanGOA left
16:51
hernanGOA joined
16:52
pochi joined
16:53
raiph left
16:56
raiph joined
17:02
liztormato joined
|
|||
TimToady | actually, I find it kind of reassuring that my fan backs off during S17; means we're sleeping and not busylooping | 17:03 | |
liztormato | dakkar: if you don't mind objects hanging around until global destruction, it would be trivial to put objects of a class in an array to be used to execute DESTROY on in an END block | 17:05 | |
17:07
hernanGOA left
|
|||
PerlJam | liztormato: sounds like someone could write a role/module just for that purpose too. | 17:10 | |
liztormato | Yeah. Will prototype when I get home unless someone beats me to it | 17:11 | |
17:17
diana_olhovik__ joined
17:20
duncan_dmg left
17:23
domidumont joined,
diana_olhovik__ left
17:30
Peter_R joined
17:32
diana_olhovik_ joined
17:36
raiph left
17:37
diana_olhovik_ left
|
|||
jnthn back for a little bit | 17:39 | ||
nine | liztormato: Inline::Perl5 does something similar with the first object | 17:42 | |
17:43
yqt left,
diana_olhovik joined
17:48
diana_olhovik left,
vendethiel joined
17:54
diana_olhovik joined
|
|||
jnthn | m: multi foo(*@x where True) { }; foo(1,2) | 17:58 | |
camelia | ( no output ) | ||
jnthn | m: multi foo(*@x where True) { say @x }; foo(1,2) | ||
camelia | rakudo-moar 397063: OUTPUT«[1 2]» | ||
jnthn | m: multi foo(*@x where @x) { say @x }; foo(1,2) | 17:59 | |
camelia | rakudo-moar 397063: OUTPUT«[1 2]» | ||
18:01
timbunce_ left,
liztormato left
18:03
timbunce_ joined
18:04
diana_olhovik left
18:06
liztormato joined
18:12
liztormato left
|
|||
jnthn | The move.t and rename.t spectest fails after my multi patch are pretty odd | 18:16 | |
18:16
espadrine left,
patrickz joined
18:17
FROGGS[mobile] joined
|
|||
[Coke] | S32-io/move.t was -just- added. | 18:18 | |
it passed here, so I added it. might not have been passing for you yet. | |||
(rename.t is from May, no such luck there.) | |||
jnthn | Oh... | 18:20 | |
FROGGS[mobile] | o/ | 18:21 | |
hello from a bus | |||
[Coke] | Hello, bus, I'm dad. | 18:22 | |
jnthn | Huh, rename.t is unhappy without my patches too | ||
18:22
hernanGOA joined
|
|||
psch | o/ FROGGS[mobile] | 18:22 | |
[Coke] | ship it! | ||
FROGGS[mobile] | bus it! | 18:23 | |
jnthn runs a fresh spectest to make sure his fix for the real regression is really fine enough :) | 18:25 | ||
18:29
diana_olhovik_ joined
18:31
rurban joined
|
|||
TimToady | m: constant @digs = flat (0..9 xx *) X% 10; | 18:32 | |
camelia | rakudo-moar 397063: OUTPUT«5===SORRY!5=== Error while compiling /tmp/QtHfi3cEDgAn exception occurred while evaluating a constantat /tmp/QtHfi3cEDg:1Exception details: Earlier failures: Cannot .elems a lazy list in block at /tmp/QtHfi3cEDg:1 Final …» | ||
TimToady | that's...not so good | 18:33 | |
jnthn | What tries to .elems, I wonder... | 18:34 | |
TimToady | m: constant @digs = (|(0..9) xx *) X% 10; | ||
camelia | ( no output ) | ||
TimToady | flat? | ||
FROGGS[mobile] | why should it? | 18:35 | |
jnthn | I can't imagine why .flat would. | ||
Well, or flat | |||
TimToady | handle-begin-time-exceptions from the trace | 18:36 | |
18:36
leont joined
|
|||
patrickz | Is there any initiative or plan to get a CPAN lookalike (CPAN as in a Website where one can browse modules, look at documentation and a store where versioned modules can be put) up and running by 6.christmas? | 18:36 | |
[Coke] | patrickz: I doubt that will happen, no. | ||
TimToady | no, that's after, I guess | ||
[Coke] | work is being done to take advantage of the PAUSE infrastructure. | 18:37 | |
FROGGS[mobile] | patrickz: I've got such a dream, but I'm not working on that bit this year I fear | ||
jnthn | *sigh* Gah, now I've managed to make a couple of spectests hang with the fix :/ | 18:38 | |
TimToady | m: constant @digs = ((0..9 xx *) X% 10).flat; | ||
camelia | rakudo-moar 397063: OUTPUT«5===SORRY!5=== Error while compiling /tmp/E9qpH898ebAn exception occurred while evaluating a constantat /tmp/E9qpH898eb:1Exception details: Earlier failures: Cannot .elems a lazy list in block at /tmp/E9qpH898eb:1 Final …» | ||
patrickz | It's neither decided whether it'll be CPAN that's adapted or a separate platform, is it? | ||
FROGGS[mobile] | it kinda is | 18:39 | |
patrickz | no CPAN? | ||
[Coke] | PAUSE looks very likely. CPAN is more than just the website, though. | ||
I suspect the website is not going to be done before christmas, no. | |||
FROGGS[mobile] | as most of us dont expect that either search.cpan.org or metacpan will Mix P5 an P6 stuff | 18:40 | |
TimToady | m: constant @digs = ((0..9 xx *) X% 10).WHAT; | ||
camelia | rakudo-moar 397063: OUTPUT«5===SORRY!5=== Error while compiling /tmp/StJIjX20KcAn exception occurred while evaluating a constantat /tmp/StJIjX20Kc:1Exception details: Earlier failures: Cannot .elems a lazy list in block at /tmp/StJIjX20Kc:1 Final …» | ||
patrickz | I have read something on ShimmerFairies blog that CPAN is fundamentaly incompatible with Perl6s versioning schema. | ||
TimToady | curious | ||
[ptc] | m: my @files = find(:dir("/tmp"), :type("file")); say @files; say @files.WHAT | ||
camelia | rakudo-moar 397063: OUTPUT«5===SORRY!5=== Error while compiling /tmp/DplRL7tSFuUndeclared routine: find used at line 1» | ||
pink_mist | my personal expectation is that metacpan will make a p6.metacpan.org site for p6 | ||
[Coke] | patrickz: as far as I know, that's not the case. | 18:41 | |
[ptc] | m: use File::Find; my @files = find(:dir("/tmp"), :type("file")); say @files; say @files.WHAT | ||
camelia | rakudo-moar 397063: OUTPUT«===SORRY!===Could not find File::Find in any of: file#/home/camelia/.perl6/2015.09-95-g3970634/lib inst#/home/camelia/.perl6/2015.09-95-g3970634 file#/home/camelia/rakudo-inst-2/share/perl6/lib file#/home/camelia/rakudo-inst-2/share/perl…» | ||
patrickz is looking that up | |||
[ptc] | bother... | ||
[Coke] | no one at metacpan is going to do that on their own, I'm sure. | ||
anyway, yes, it'd be great to have. Probably won't be by christmas. | |||
[ptc] | patrickz: I had a discussion with Andreas König at the Austrian Perl Workshop about that last year, and it seems that Perl6 modules can be uploaded without problems; only Perl5 modules get indexed | 18:42 | |
patrickz: however, afaict it was planned to have Perl6 modules on CPAN | |||
patrickz | rdstar.wordpress.com/2014/03/09/perl6-and-cpan/ | 18:43 | |
[ptc] | come to think of it, FROGGS[mobile] probably knows more about thaty | ||
*that | |||
FROGGS[mobile] | we can upload stuff via PAUSE, yes | 18:44 | |
so we make use of their mirrors, and author registrations | 18:45 | ||
18:46
sufrostico left
|
|||
FROGGS[mobile] | patrickz: we have our own distribution indexer running on cpan already btw | 18:46 | |
patrickz | Ignoring the website for now, I think it'd be great to have the module platform efforts point in one single direction by christmas, to make sure Perl6 will end up with one single most famous place for modules to be put. (And not end up with a fractured ecosystem like Java or Android) | ||
TimToady | oh, duh, 0..9 xx * is a precedence problem | 18:48 | |
18:48
spider-mario joined
|
|||
FROGGS[mobile] | patrickz: there can be a douzen sites that use the same data from cpan, mind | 18:49 | |
18:49
diana_olhovik_ left
|
|||
dalek | kudo/nom: cf3439c | jnthn++ | src/core/List.pm: Add missing .cache in flat slurpy handling. Needed if we end up doing a bind check in a multi-dispatch. Has been a potential issue for a while, but an upcoming multi-dispatch tweak made a spectest show up this problem. |
18:52 | |
kudo/nom: f2488e7 | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.nqp: Multi-dispatcher shouldn't ignore all beyond **@x. There may be extra, required, named arguments beyond it that serve as a tie-breaker. |
|||
ast: d35c69e | jnthn++ | S06-multi/positional-vs-named.t: Unfudge tests for RT #118467. |
|||
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=118467 | ||
jnthn | Finally... | ||
FROGGS[mobile] | jnthn++ | 18:53 | |
patrickz | I'm fine with that (there is CPAN/MetaCPAN after all). But having documentation looking different and having to use different installation strategies for two modules is time-consuming and annoying. That's one of the features I like so much about Perl. Go to MetaCPAN, find the fitting module, and look at the synopsis at the top of the page. Happyness. :-) | ||
FROGGS[mobile] | patrickz: the site showing dists is independend from your dist installer anyway | 18:55 | |
18:55
andreoss` left
|
|||
jnthn | TimToady: From S11: "Any proto declaration that is not declared my is exported by default. Any multi that depends on an exported proto is also automatically exported. Any autogenerated proto is assumed to be exported by default." Do we still want those semantics? | 18:58 | |
TimToady: Especially as "my" is now the default for any routine declaration. | |||
FROGGS[mobile] | I envision a shop like page btw, that allows to create profiles like "dev-laptop", and install the dists of that profile | 18:59 | |
18:59
diana_olhovik joined
|
|||
patrickz | Compare that to Java. Documentation for Tomcat is different from documentation for Guava. They start to converge on Maven Central. But some time ago one had to add separate repository links for nearly every library one wished to depend on. | 19:00 | |
FROGGS[mobile] | like the app-/playstore remembers what you've bought to ease reinstallation | ||
19:01
sufrostico joined
|
|||
FROGGS[mobile] | eww | 19:01 | |
19:03
rindolf left
|
|||
FROGGS[mobile] | docs are Pod shipped with the dist, there should be no trouble | 19:03 | |
patrickz | Once Pod6 hits PrimeTime. :-) Go ShimmerFairy! | 19:04 | |
Until then there is README.md... | |||
FROGGS[mobile] | jnthn: pollut\Wexport something by default? I'd say no | 19:05 | |
patrickz: well, the web page renders it | |||
it might be less fun to read locally | 19:06 | ||
same goes for markdown though | |||
patrickz | True. I can't blame WIP of documentation of modules on markdown I guess. | ||
19:06
rurban left
19:07
rindolf joined
|
|||
jnthn | FROGGS[mobile]: Yes, my gut feeling is "I'd think we maybe don't want that feature any more", in which case I can remove that bit from the design docs, close the RT, and we're another issue before Christmas down. :) | 19:07 | |
RabidGravy | all my modules just have pod no actually documentation in the README | ||
rindolf | Hi all. Sup? | ||
jnthn | But will hold fire in case TimToady++ feels different :) | ||
FROGGS[mobile] | :o) | 19:08 | |
rindolf: supper'sup | |||
almost at least | |||
rindolf | FROGGS[mobile]: bon appetit. | 19:09 | |
FROGGS[mobile] | thanks :o) | 19:10 | |
TimToady | jnthn: we can get rid of it | 19:11 | |
jnthn | TimToady: Will do :) | 19:13 | |
dalek | ecs: bab6c34 | jnthn++ | S11-modules.pod: Remove language on auto-export of protos. It probably made more sense before we settled on lexical scoping for resolving routine calls and `my` as the default routine scope. Today, less so. |
19:15 | |
19:16
yqt joined
19:18
timbunce_ left
|
|||
FROGGS[mobile] | language? | 19:19 | |
19:19
CurtisOvidPoe joined,
CurtisOvidPoe is now known as CurtisPoe
|
|||
CurtisPoe | p6: class Point { has Rat $.x; has Rat $.y }; my $p = Point.new(x => 5.0,y => 3.0); say $p.x | 19:19 | |
camelia | rakudo-moar 397063: OUTPUT«5» | ||
rindolf | So my rakudobrew solution to that Project Euler problem used to run in under a second, and after the latest rakudobrew update it started running at 1.2s. | 19:20 | |
CurtisPoe | Question: if I must pass “5.0” instead of “5” for the Rat, why does it print a value it can’t accept? | ||
A clearer example: | 19:21 | ||
p6: my Rat $x = 5.0; print $x | |||
camelia | rakudo-moar 397063: OUTPUT«5» | ||
CurtisPoe | p6: my Rat $x = 5; print $x; # boom | 19:22 | |
camelia | rakudo-moar 397063: OUTPUT«Type check failed in assignment to '$x'; expected 'Rat' but got 'Int' in block <unit> at /tmp/tmpfile:1» | ||
pink_mist | p6: print my Rat $x = 5.0; #shorter example | ||
camelia | rakudo-moar 397063: OUTPUT«5» | ||
pink_mist | anyway, I'd guess it's because that's how it stringifies | ||
FROGGS[mobile] | because .Str is not .perl | ||
it is not meant to roundtrip | 19:23 | ||
19:23
timbunce_ joined
|
|||
CurtisPoe | I know it’s not meant to round-trip, but it seems odd that we now display to people values that we cannot use in the program. | 19:24 | |
19:24
domidumont left,
fling left
|
|||
jnthn | Do you expect us strings to not need quoting too? | 19:25 | |
s/us// | |||
CurtisPoe | jnthn: The quotes aren’t part of the string :) | ||
Since Int/1 is guaranteed to always hold true, I was arguing that having ‘my Rat $foo = 3’ be allowed. Most did not agree, but seeing that “disallowed | 19:26 | ||
But seeing that “disallowed” value in the output was odd. | |||
19:27
pullphinger joined
|
|||
jnthn | Heh, fine, if you can argue that then I can argue that the .0 isn't part of the value, and also just needed to make it clear we're writing a Rat literal :P | 19:27 | |
FROGGS[mobile] | stringifying something is very much known to be a lossy transformation | ||
CurtisPoe | If we’re going to be consistent, it seems like Rats should stringify to have a decimal place. | ||
FROGGS[mobile] | how does this apply to other things, say, a Match? | 19:29 | |
skids | m: now.Str.say; | 19:33 | |
camelia | rakudo-moar f2488e: OUTPUT«Instant:1443036825.257303» | ||
skids | m: Instant:⏏1443036775.442184; | ||
camelia | rakudo-moar f2488e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/z8taWeCKdIConfusedat /tmp/z8taWeCKdI:1------> 3Instant:7⏏5⏏1443036775.442184; expecting any of: colon pair» | ||
skids | m: Instant:1443036775.442184; | ||
camelia | rakudo-moar f2488e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/TGvoTYusAZConfusedat /tmp/TGvoTYusAZ:1------> 3Instant:7⏏051443036775.442184; expecting any of: colon pair» | ||
19:35
rurban joined
19:43
rindolf left
19:54
[particle] joined
|
|||
[Coke] | m: my Rat $x = 5.0; say $x.perl; | 19:59 | |
camelia | rakudo-moar f2488e: OUTPUT«5.0» | ||
[Coke] | ^^ that is expected to roundtrip. | ||
.gist is not. | 20:00 | ||
m: my $a = (1..10023423).flat; say $a.perl; | |||
m: my $a = (1..1002).flat; say $a.perl; | 20:01 | ||
camelia | rakudo-moar f2488e: OUTPUT«(timeout)» | ||
rakudo-moar f2488e: OUTPUT«(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, …» | |||
[Coke] | gist is, for better or worse, lossy. | ||
20:02
darutoko left
|
|||
[Coke] | (btw, CurtisPoe, I agree with your request - Rats should be able to take literal Ints and DTRT. I was hoping masak could explain -why- the type system ended up in a way that didn't let that happen, but I'm not sure that ever came through.) | 20:02 | |
20:03
larion joined
20:04
espadrine joined
|
|||
TimToady | but as for print round trippng, that's what .perl is for | 20:04 | |
m: say 5.0.perl | |||
camelia | rakudo-moar f2488e: OUTPUT«5.0» | ||
TimToady | notice that one puts the .0 | ||
CurtisPoe | Thanks, Coke. I never did here a counter-example of why ‘my Rat $foo = 2’ is bad. There was discussion about performance in hot code, but that was the only convincing argument (to me) :) | 20:05 | |
TimToady | we might be able to intuit a Rat() type rather than a Rat type, but we don't even implement Rat() there on assignment yet, and that's considered post 6.0 anyway | 20:06 | |
unless someone who is not jnthn sneaks in an implements coercive assignment :) | 20:07 | ||
jnthn | It's not a performance thing. I need to go sleep, but I can probably explain 3 or 4 ways we could make `my Rat $x = 3` "work", and why they all make things worse than the status quo, and thus why things won't be chaning. | 20:08 | |
But...tomorrow... 'night | |||
TimToady | o/ | ||
speaking of which, never et lunch... & | 20:09 | ||
CurtisPoe | ‘night jnthn | 20:11 | |
zacts | CurtisPoe: are you ovid? | 20:12 | |
or an ovid wannabe? :-P | |||
if you are ovid, I like your beginning perl book. | |||
CurtisPoe | Yes, I’m Ovid :) | ||
zacts | coolio! :-) | ||
CurtisPoe | But that nick is apparently taken. | ||
zacts | ah I see | ||
anyway, cool. I can't wait for this hopeful release of Perl 6 this winter | 20:13 | ||
20:14
colomon left
20:16
patrickz left
|
|||
CurtisPoe | Quick question: if you had to name the top 3 benefits the average programmer will get from Perl 6, what would it be? (I think subsets, the OO model, and working concurrency in a dynamic language (though the latter might not be for the average programmer)) | 20:17 | |
20:18
espadrine left
|
|||
lizmat | CurtisPoe: remember that concurrency may be hidden in junctions and >> hypers | 20:19 | |
so average programmers may be using concurrency (I should say: async features) without knowing it | |||
pink_mist | what about perl6's infinite list features? | 20:21 | |
vendethiel today learned that "F[2;3]" worked in APL | 20:26 | ||
they didn't use * tho, only M[;3] if they wanted to skip the 1st one :P | |||
dalek | osystem: e6f1f9a | Carlin++ | META.list: Add UNIX::Privileges |
20:27 | |
20:31
colomon joined
20:39
FROGGS[mobile] left
20:40
larion left,
kaare_ left
20:41
sufrostico left
20:50
pullphinger left
20:54
xfix left
|
|||
[Coke] | CurtisPoe: yah, Coke was also taken. :P | 20:54 | |
20:55
thou left,
carlin joined
|
|||
CurtisPoe | That sentence, out of context, makes Perl 6 hackers seem dangerous :) | 20:55 | |
[Coke] wonders if there's anythign to rescue from his APL grammar on parrot. | |||
20:55
colomon left
20:56
colomon joined
|
|||
cognominal | CurtisPoe: you forgot first class Unicode support with NFG. Also, grammars bring in the support of OO for regexen. This gives a new dimension to the motto : only perl can parse Perl because the lexer and parser are written in Perl. Perl 6 brings string handling to a higher level, leapfrogging all the languages that have copied Perl 5. | 20:56 | |
carlin | m: my $x = now; EVAL($x.perl) | 20:57 | |
camelia | rakudo-moar f2488e: OUTPUT«===SORRY!===Cannot find method 'compile_time_value'» | ||
carlin | m: my $x = now; say $x.perl | ||
camelia | rakudo-moar f2488e: OUTPUT«Instant.new(<1176079147668/815>)» | ||
cognominal | rubyists are dangerous too with their rails. | ||
20:57
skids left
|
|||
carlin | m: <1176079147668/815> | 20:57 | |
camelia | rakudo-moar f2488e: OUTPUT«===SORRY!===Cannot find method 'compile_time_value'» | ||
20:58
_sri joined
|
|||
carlin | Is that known? (or somehow expected?) | 20:58 | |
20:59
khw left
|
|||
[Coke] | not expected. | 20:59 | |
please open a ticket via [email@hidden.address] | 21:00 | ||
21:00
_sri left,
_sri joined
|
|||
[Coke] commutes | 21:00 | ||
21:01
_sri left,
_sri joined
21:02
larion joined
|
|||
psch | m: <2147483647/8> | 21:03 | |
camelia | ( no output ) | ||
psch | m: <2147483648/8> | ||
camelia | rakudo-moar f2488e: OUTPUT«===SORRY!===Cannot find method 'compile_time_value'» | ||
psch | carlin: did you rakudobug that yet? | 21:04 | |
apparently not, according to "sort by created" | |||
carlin | psch: working on it now | 21:05 | |
21:05
_sri left
|
|||
psch | carlin: ahh, alright, i'll abort then | 21:05 | |
21:05
_sri joined
|
|||
psch | carlin: i suspect 2**31 - 1 working and 2**31 not is a hint :) | 21:05 | |
lizmat | .tell jnthn should the COMPOSE phaser be in nope or not? | 21:06 | |
yoleaux | lizmat: I'll pass your message to jnthn. | ||
21:06
_sri left,
_sri joined
21:07
_sri left,
_sri joined
|
|||
lizmat | .tell jnthn or maybe some way to export something into a class that will get run when a class is "finalized" at compile time | 21:07 | |
yoleaux | lizmat: I'll pass your message to jnthn. | ||
21:08
adu left
|
|||
lizmat | .tell jnthn thinking about something like class A is reaped {} to make objects run their DESTROY at global destruction | 21:09 | |
yoleaux | lizmat: I'll pass your message to jnthn. | ||
21:09
_sri left
|
|||
psch | # Looks like you planned 93 tests, but ran 45 | 21:11 | |
# Looks like you failed 7 tests of 45 | |||
that's it for today for allomorphic.t | |||
i'm gonna push getBI/makeBI, cause the rest seems to come from somewhere else... | 21:12 | ||
carlin | bug sent, including psch++'s hint | 21:15 | |
21:15
colomon left,
apotheon joined
|
|||
apotheon | CurtisPoe: Hi. | 21:15 | |
apotheon waits to see if CurtisPoe even remembers him. | 21:18 | ||
dalek | p: 97a0490 | peschwa++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java: Fix a comment. |
21:21 | |
p: 7190914 | peschwa++ | src/vm/jvm/runtime/org/perl6/nqp/ (2 files): Fix getBI and makeBI again, differently this time. For Rakudos IntStr, we have to rely on the target type to get the right unboxIntSlot, because for some reason the LHS already comes with the same REPR but different REPRData. It works for now, but I can imagine cases where it would stop working - I'm not sure how likely these cases are to occur, though. |
|||
21:24
travis-ci joined
|
|||
travis-ci | NQP build failed. Pepe Schwarz 'Fix getBI and makeBI again, differently this time. | 21:25 | |
travis-ci.org/perl6/nqp/builds/81859185 github.com/perl6/nqp/compare/bf1d2...90914a1985 | |||
21:25
travis-ci left,
rurban left
|
|||
psch sighs | 21:25 | ||
21:25
timbunce_ left
|
|||
psch | travis, you don't even build nqp-j | 21:25 | |
21:26
ennio joined,
rurban joined
21:27
rurban left
21:28
rurban joined
|
|||
dalek | kudo/nom: 1247986 | peschwa++ | tools/build/NQP_REVISION: Bump NQP_REVISION Get a probably durable enough implementation of getBI and makeBI for IntStr. |
21:29 | |
psch | it keeps happening though | ||
all the last few times i pushed an nqp commit travis complained /o\ | |||
21:30
TEttinger joined
21:31
timbunce_ joined
|
|||
Zefram_Fysh | carlin: your bug is already in RT as [perl #126103] | 21:33 | |
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=126103 | 21:34 | |
21:35
colomon joined
21:38
pmurias left
21:40
khw joined
21:49
patrickz joined
|
|||
Zefram_Fysh | there are a couple of followups to RT tickets that I've sent to [email@hidden.address] (replying to messages from RT) and they haven't shown up in RT. followups that I send manually to [email@hidden.address] do show up. are the followups to the former address lost, or merely being delayed? | 21:49 | |
lizmat | my replies to [email@hidden.address] arrive back at the mailing list, so I would expect to see them at some point | 21:51 | |
21:53
spider-mario left
|
|||
Zefram_Fysh | do they show up in the RT web interface too? | 21:53 | |
lizmat | afaik they do | 21:54 | |
Zefram_Fysh will wait a bit then | |||
21:55
carlin left
21:56
espadrine joined
22:02
Grrrr left,
Grrrr joined
22:03
felher left
22:04
psch left,
TimToady left,
psch joined
22:05
felher joined
22:06
TimToady joined
|
|||
dalek | kudo/nom: 747c69f | lizmat++ | src/core/Any-iterable-methods.pm: Make .squish()/.squish(:with) about 2.5x faster |
22:08 | |
22:08
cognominal left
22:09
larion left,
ennio left
22:10
espadrine left
22:16
larion joined
22:19
colomon left,
colomon joined
22:24
Sqirrel_ left
22:26
hernanGOA left
22:27
skids joined
22:31
RabidGravy left,
kid51 joined
22:39
vendethiel left
22:41
dnmfarrell joined
22:45
AlexDaniel left
22:51
adu joined
|
|||
dnmfarrell | does Perl 6 have an equivalent of P5's "select"? I'm thinking for checking whether a socket will block or not when read | 22:54 | |
pink_mist | why not do it async instead? attach a Supply and whenever it | 22:58 | |
dnmfarrell | ah well because I want to build a multiplexer :) | ||
pink_mist | no need, that's already in the language =) | 22:59 | |
dnmfarrell: www.youtube.com/watch?v=JpqnNCx7wVY please see this excellent talk on the topic by jnthn++ | |||
dnmfarrell | thanks for the link, is there a particular part of that talk that discusses multiplexing? I don't want to watch an hour long video if possible | 23:01 | |
dalek | ast: 4841832 | thundergnat++ | S06-advanced/return.t: Add tests for RT #126049, remove faulty test that didn't catch it. Add tests for RT #126049. Remove faulty test. String comparison on arrays with empty elements leads to tears... or bugs, at least. |
23:02 | |
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=126049 | ||
pink_mist | I ... would haveto rewatch it myself to be able to say :P | ||
and that'd take an hour :P | |||
lizmat | 6guts.wordpress.com/2015/09/23/updates/ # jnthn++ | 23:03 | |
23:04
patrickz left
|
|||
geekosaur would appreciate language materials that are not videos, btw | 23:07 | ||
dalek | kudo/nom: 88c191b | lizmat++ | src/core/Any-iterable-methods.pm: Make .squish(:as)/squish(:as,:with) 1.5..2x faster The fact that for each value, a block needs to be called, dampens the optimization fun here. |
||
geekosaur | (Being that videos and I are increasingly incompatible) | ||
pink_mist | geekosaur: well there are the excellent slides for that talk too =) | 23:08 | |
lizmat would appreciate finding people willing to make such materials | |||
pink_mist | geekosaur: you can find them on the link lizmat++ posted =) | ||
lizmat goes to bed | |||
so good night, #perl6! | |||
pink_mist | goog night, lizmat | 23:09 | |
23:15
Peter_R left
23:16
adu left
23:17
mattprelude joined
23:35
araujo_ joined,
leont left
23:36
araujo left
23:37
silug left
23:38
adu joined
23:45
diana_olhovik left
|
|||
pink_mist | dnmfarrell: alright, so it's basically from the 18 minute mark until a few minutes before the 40 minute mark | 23:50 | |
23:50
adu left
|
|||
dnmfarrell | pink_mist: I'm at 41:57 right now :D | 23:51 | |
pink_mist | haha alright :P | ||
23:52
BenGoldberg joined
|
|||
pink_mist | hope it was enlightening =) | 23:52 | |
23:52
telex left
|
|||
dnmfarrell | Yeah I'm enjoying it! But ... here's the issue: if you try to read from a socket and it's empty, it blocks. So what I want is way to check socket before I read from it. I'm not sure this helps with that problem. | 23:52 | |
23:53
silug joined
|
|||
dnmfarrell | Or maybe I'm not thinking about it in the right way | 23:53 | |
23:54
telex joined
|
|||
geekosaur | async lets you have a bunch of threads that block on reads but collect their output as it becomes available? | 23:54 | |
this is how most languages that aren't C or Perl5 handle it | 23:55 | ||
pink_mist | doc.perl6.org/type/IO::Socket::Async have a look at this maybe? | ||
dnmfarrell | pink_mist: thanks, I'd overlooked that | 23:58 |