dalek | ast: 1458b47 | (Zoffix Znet)++ | S12-introspection/attributes.t: [coverage] cover .gist of Attribute:D |
00:02 | |
travis-ci | Rakudo build passed. Elizabeth Mattijsen 'Make spurt a multi | 00:43 | |
travis-ci.org/rakudo/rakudo/builds/161743252 github.com/rakudo/rakudo/compare/7...89a076355c | |||
dalek | ast: 6cc1a85 | MasterDuke17++ | S17-procasync/stress.t: Test passing :out of one proc to :in of another Tests the fix for RT #129291. Add as a stresstest because while the segfault before the fix was repeatable, it sometimes took a while to happen. |
02:36 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=129291 | ||
kudo/nom: e9409cc | lizmat++ | src/Perl6/Metamodel/EnumHOW.nqp: Give enums a .^elems method |
08:12 | ||
llfourn_ | [Coke]: I just noticed you labeled RT #128846 an RFC. But I think it's a bug tbh. | 09:03 | |
m: my $a = "foo"; (with $a { $a }) = "bar"; | |||
m: my $a = "foo"; ($a with $a) = "bar"; | |||
oh is camelia not here? | |||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128846 | ||
camelia | ( no output ) | ||
rakudo-moar e9409c: OUTPUT«Cannot modify an immutable Str in block <unit> at <tmp> line 1» | |||
llfourn_ | oh there we go | 09:04 | |
m: my $a = "foo"; ($a if $a) = "bar"; | |||
camelia | ( no output ) | ||
llfourn_ | if "if" statement mod works and "with" in non-statement mod form works then "with" in statement mod should work :) | 09:05 | |
travis-ci | Rakudo build failed. Elizabeth Mattijsen 'Give enums a .^elems method' | 09:07 | |
travis-ci.org/rakudo/rakudo/builds/161847102 github.com/rakudo/rakudo/compare/3...409ccbec46 | |||
buggable | [travis build above] ☠ Did not recognize some failures. Check results manually | ||
Zoffix | 13-union | 10:09 | |
llfourn_, isn't that to do with `with` aliasing to $_? | 10:15 | ||
m: my $a = 1; (if $a -> $z { $z }) = 42; | |||
camelia | rakudo-moar e9409c: OUTPUT«Cannot assign to a readonly variable or a value in block <unit> at <tmp> line 1» | ||
Zoffix | m: my $a = 1; (if $a -> $z is rw { $z }) = 42; | ||
camelia | ( no output ) | ||
Zoffix | m: my $a = 1; (with $a -> $z is rw { $z }) = 42; | ||
camelia | ( no output ) | ||
Zoffix | m: my $a = 1; (with $a -> $z { $z }) = 42; | ||
camelia | rakudo-moar e9409c: OUTPUT«Cannot assign to a readonly variable or a value in block <unit> at <tmp> line 1» | ||
psch | m: my $a = 1; (with $a <-> $z { $z }) = 42; | 10:17 | |
camelia | ( no output ) | ||
llfourn_ | Zoffix: $_ should be := to the value so it should work | ||
:= to the container rather | 10:18 | ||
psch | m: say $_.VAR with my $a = 1 | ||
camelia | rakudo-moar e9409c: OUTPUT«1» | ||
psch | m: say $_.VAR if my $a = 1 | ||
camelia | rakudo-moar e9409c: OUTPUT«Any» | ||
llfourn_ | my point is that it works with everything except with in statement mod form | ||
psch reads up what "it" actually is | |||
Zoffix | what's "everything"? I see only an if statement | 10:19 | |
llfourn_ | err yeah I guess that is everything | ||
psch | m: my $a = "foo"; ($_ given $a) = "bar" | ||
camelia | ( no output ) | ||
psch | m: my $a = "foo"; ($_ given $a) = "bar"; say $a | ||
camelia | rakudo-moar e9409c: OUTPUT«bar» | ||
llfourn_ | (and given) :P | ||
Zoffix | :) | 10:20 | |
psch | m: my $a = "foo"; { $_ }($a) = "bar"; say $a | ||
camelia | rakudo-moar e9409c: OUTPUT«bar» | ||
llfourn_ | 'with' with block form works also | ||
Zoffix | m: my $a = "foo"; with $a { $_ = "bar" } | ||
camelia | ( no output ) | ||
Zoffix nods | |||
psch | yeah, that seems inconsistent | ||
so my C that is RF would be "this is actually at least an inconsistency, if not straight up bug" | 10:21 | ||
llfourn_ | m: my $a = "foo"; ($a andthen $_) = "bar"; say $a | ||
camelia | rakudo-moar e9409c: OUTPUT«Cannot modify an immutable Str in block <unit> at <tmp> line 1» | ||
llfourn_ | well andthen also doesn't work :\ | ||
psch | m: say ("a" andthen $_) | 10:22 | |
camelia | rakudo-moar e9409c: OUTPUT«a» | ||
Zoffix | I changed it to LTA | ||
psch | andthen does topicalization? | ||
llfourn_ | psch: yep :) | ||
Zoffix | .oO( BUGSORTA ) |
||
psch | geez all these features :P | ||
llfourn_ | Zoffix: ok. I think $_ should always be := to the topic's container. I'll leave classification up to you :) | 10:23 | |
psch | yeah, implicit topicalization should always be <-> | 10:24 | |
llfourn_ | psch: does <-> mean "is rw" or "is raw" | 10:25 | |
and what is the diff between those two :o | |||
m: say {;}; | |||
camelia | rakudo-moar e9409c: OUTPUT«-> ;; $_? is raw { #`(Block|62246696) ... }» | ||
llfourn_ | m: say <-> $a { }; | ||
camelia | rakudo-moar e9409c: OUTPUT«-> $a is rw { #`(Block|64168488) ... }» | ||
psch | i think there's still some fuzziness wrt the difference | 10:26 | |
but maybe that's just in my head | |||
S04:583 is what i remembered | 10:28 | ||
synopsebot6 | Link: design.perl6.org/S04.html#583_is_wh...remembered | ||
psch | oh ffs | ||
S04:583 | |||
synopsebot6 | Link: design.perl6.org/S04.html#line_583 | ||
psch | well, a bit higher up, like 575 or something | 10:29 | |
and, well, <-> is apparently 'is rw', so topicalization should always be rw, if we take 'for' as reference | 10:30 | ||
llfourn_ | m: { say $_ } for 1,2,3 # hih this works? | ||
camelia | rakudo-moar e9409c: OUTPUT«123» | ||
llfourn_ | didn't know if you statement mod a block it runs it | ||
Zoffix | "for and given privately temporize the current value of $_ for the left side of the statement and restore the original value at loop exit:" | ||
Maybe that's why the `given` worked above but `with` and `andthen` didn't ¯\_(ツ)_/¯ | 10:31 | ||
llfourn_ | ('if' works too) | ||
psch | doesn't that just concern the value of $_ outside of the statement mod? | ||
m: $_ = "foo"; $a = "bar"; ($a if $a) = "baz"; say $a; say $_ | 10:32 | ||
camelia | rakudo-moar e9409c: OUTPUT«===SORRY!=== Error while compiling <tmp>Variable '$a' is not declaredat <tmp>:1------> $_ = "foo"; ⏏$a = "bar"; ($a if $a) = "baz"; say $a; » | ||
psch | m: $_ = "foo"; my $a = "bar"; ($a if $a) = "baz"; say $a; say $_ | ||
camelia | rakudo-moar e9409c: OUTPUT«bazfoo» | ||
psch | m: $_ = "foo"; my $a = "bar"; (with $a <-> $_ { $_ }) = "baz"; say $a; say $_ | ||
camelia | rakudo-moar e9409c: OUTPUT«bazfoo» | ||
Zoffix | m: $_ = "foo"; my $a = "bar"; ($a unless $a) = "baz"; say $a; say $_ | 10:34 | |
camelia | rakudo-moar e9409c: OUTPUT«barfoo» | ||
llfourn_ | ($a unless $a) will be a slip in this case | ||
m: $_ = "foo"; my $a = "bar"; ($a unless not $a) = "baz"; say $a; say $_ | 10:35 | ||
camelia | rakudo-moar e9409c: OUTPUT«bazfoo» | ||
llfourn_ | m: my $a = "foo"; (<-> $_ { $_ } with $a) = "bar"; say $a' # even this doesn't work :S | 10:36 | |
camelia | rakudo-moar e9409c: OUTPUT«===SORRY!=== Error while compiling <tmp>Two terms in a rowat <tmp>:1------> (<-> $_ { $_ } with $a) = "bar"; say $a⏏' # even this doesn't work :S expecting any of: infix infix stopper postfix …» | ||
llfourn_ | m: my $a = "foo"; (<-> $_ { $_ } with $a) = "bar"; say $a # oops | ||
camelia | rakudo-moar e9409c: OUTPUT«Cannot modify an immutable Str in block <unit> at <tmp> line 1» | ||
psch | well, yes | ||
llfourn_ | ? | 10:37 | |
psch | because you're passing a decont $a into the block | ||
llfourn_ | why is it decont? | ||
psch | because that's the problem with statement mod with? | ||
m: say $_.VAR with $ = 10 | |||
camelia | rakudo-moar e9409c: OUTPUT«10» | ||
psch | m: say $_.VAR if $ = 10 | ||
camelia | rakudo-moar e9409c: OUTPUT«Any» | ||
psch | m: say $_.VAR given $ = 10 | ||
camelia | rakudo-moar e9409c: OUTPUT«10» | ||
psch | okay, no | ||
llfourn_ | oh so the with is decont the value that makes sense :) | ||
psch | it's just rwness | 10:38 | |
i think :/ | |||
...i'm actually trying about how to map our built-in types sensibly to java types right now :S | |||
*trying to think | |||
just to explain some confusion, maybe vOv | 10:43 | ||
it's really annoying, honestly | 10:46 | ||
considering we can have any kind of type as array or parameterized List on the Java side as parameter | |||
i mean, it's not hard to imagine that [1,2,3] doesn't dispatch to int[], because we already don't do that on the Perl 6 side | 10:47 | ||
but does 'my Int @a = 1,2,3' dispatch to 'List<Integer>' and int[]? | |||
or only one of them..? | |||
otoh, our Int is more Long, and doesn't that mean only 'my int32 @a' should dispatch to int[]..? >_> | 10:48 | ||
Zoffix | s: &circumfix:<[ ]>, \(1, 2, 3) | 10:54 | |
SourceBaby | Zoffix, Something's wrong: ERR: Could not find candidate that can do \(1, 2, 3) in sub sourcery at /home/zoffix/services/lib/CoreHackers-Sourcery/lib/CoreHackers/Sourcery.pm6 (CoreHackers::Sourcery) line 37 in block <unit> at -e line 6 | ||
Zoffix | aww | ||
s: &circumfix:<[ ]>, \(1) | |||
SourceBaby | Zoffix, Sauce is at github.com/rakudo/rakudo/blob/e940...y.pm#L1379 | ||
Zoffix | s: &circumfix:<[ ]>, \([1, 2, 3]) | 10:55 | |
SourceBaby | Zoffix, Sauce is at github.com/rakudo/rakudo/blob/e940...y.pm#L1342 | ||
MasterDuke | lizmat: do you have any thoughts on RT #129248? | 11:28 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=129248 | ||
lizmat | feels to me they should be consistent, but how I'm not sure :-) | 11:31 | |
yoleaux2 | 21 Sep 2016 22:01Z <gfldex> lizmat: if enums would implement the role Enumeration (as the spec asked) the where-clause would not be needed | ||
MasterDuke | ha, same here | 11:34 | |
should i stick [@LARRY] on it? | 11:35 | ||
nine | Is there any way at all to override stringification or string interpolation in a dynamic scope? I don't care how hacky. | ||
timotimo | in a *dynamic* scope, oh boy | 11:36 | |
lizmat | MasterDuke: sounds like a plan | ||
timotimo | interpolation is just turned into a series of strings and ~ operators by the compiler | ||
dogbert17 | o/ any ideas about RT #129321 | ||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=129321 | ||
timotimo | so you can't differentiate "foo $bar baz" from "foo " ~ $bar ~ " baz" any more when the compiler is done | 11:37 | |
nine | So if I could somehow override ~, I'd have a chance? | ||
lizmat | nine: dynamically ??? | ||
nine | What I actually want to try is just for a lightning talk hack together a little SQL parser that eats "where foo = $foo" and can turn it into something like {foo => $foo} to feed it into DBIX::Class | 11:38 | |
Just for show | |||
gfldex | nine: overloading ~ works if you introduce a new type (SQLString or somesuch) | 11:40 | |
timotimo | you can wrap infix:<~> | ||
dalek | ast: 9a85073 | (Aleks-Daniel Jakimenko-Aleksejev)++ | S17-procasync/stress.t: Fix RT ticket number after 0a49fcbe0 Dear Sir/Madam. We are X, the state-owned oil and gas company of the Kingdom of Saudi Arabia. ??? … Ah, wrong ticket id. |
11:41 | |
AlexDaniel | dammit | 11:42 | |
wrong commit id | |||
*facepalm* | |||
gfldex | nine: you may be able to steal from github.com/gfldex/perl6-typesafe-html | ||
nine | So like: | 11:44 | |
m: class SQLString { has $.str }; sub prefix:<sql>($str) { SQLString.new(:$str) }; multi infix:<~>(SQLString $a, Str:D $b) { "SQL: $a, Value: $b" }; my $bar = "bar"; say sql"foo" ~ $bar | |||
camelia | rakudo-moar e9409c: OUTPUT«SQL: SQLString<80893016>, Value: bar» | ||
nine | But it doesn't seem to work for interpolation: | 11:45 | |
m: class SQLString { has $.str }; sub prefix:<sql>($str) { SQLString.new(:$str) }; multi infix:<~>(SQLString $a, Str:D $b) { "SQL: $a, Value: $b" }; my $bar = "bar"; say sql"foo=$bar" | |||
camelia | rakudo-moar e9409c: OUTPUT«SQLString.new(str => "foo=bar")» | ||
psch | m: class SQLString { has $.str; method Str { "sql " ~ self.WHICH ~ " value: " ~ $.str } }; sub prefix:<sql>($str) { SQLString.new(:$str) }; multi infix:<~>(SQLString $a, Str:D $b) { "SQL: $a, Value: $b" }; my $bar = "bar"; say sql"foo=$bar" | 11:46 | |
camelia | rakudo-moar e9409c: OUTPUT«SQLString.new(str => "foo=bar")» | ||
psch | qq calls .Str apparently | ||
gfldex | you may want to overload .perl as-well to unconfuse yourself | 11:47 | |
nine | Ah, it calls infix ~ before the prefix sql | ||
Can I make prefix:<sql> tighter? | 11:48 | ||
dalek | ast: 5651b5e | (Aleks-Daniel Jakimenko-Aleksejev)++ | S17-procasync/stress.t: Better test description for test added in 6cc1a85cf I am also referring to the right commit hash this time. |
||
nine | Oh wait, it's not just a precedence thing as "foo=$bar" is just one thing | 11:49 | |
gfldex | m: sub prefix:<sql>(Str) is thighter(&infix:<~>) {} | ||
camelia | rakudo-moar e9409c: OUTPUT«===SORRY!=== Error while compiling <tmp>Can't use unknown trait 'is thighter' in a sub+{precedence} declaration.at <tmp>:1 expecting any of: rw raw hidden-from-backtrace hidden-from-USAGE pure default DEPRECATED inlina…» | ||
gfldex | m: sub prefix:<sql>(Str) is tighter(&infix:<~>) {} | ||
camelia | ( no output ) | ||
gfldex | nine: it's not going to hurt to make it tighter | 11:50 | |
nine | m: class SQLString { has $.str }; sub prefix:<sql> ($str) is tighter(&infix:<~>) { SQLString.new(:$str) }; multi infix:<~>(SQLString $a, Str:D $b) { "SQL: $a, Value: $b" }; my $bar = "bar"; say sql"foo=$bar" | 11:51 | |
camelia | rakudo-moar e9409c: OUTPUT«SQLString.new(str => "foo=bar")» | ||
psch | still not quite right though i suppose | ||
dalek | kudo/nom: 73ae93a | lizmat++ | src/core/Array.pm: Abstract shape-setting logic on arrays So we don't need to change it later in several places. |
11:59 | |
lizmat | jnthn: fwiw, perl6 t/spec/S17-procasync/stress.t consistently fails for me (on OSX) with: | 12:05 | |
moar(44327,0x7fff79521300) malloc | |||
: *** error for object 0x7fff533206c0: pointer being freed was not allocated | |||
MasterDuke | since we just had a release, i thought now would be a good time to ask for more comments on github.com/rakudo/rakudo/pull/871 (Disable grammar errors when running under -e) and github.com/rakudo/rakudo/pull/876 (Add Nil return constraints where possible) | 12:18 | |
lizmat | MasterDuke: the problem with 876 is that we're pretty sure we will not want all of them | 12:20 | |
but which ones we *do* want, we can't make up our minds about, apparently | 12:21 | ||
:-( | |||
MasterDuke | it could just serve as a reference for a different PR that just does the ones that are wanted? | 12:23 | |
or i could revert/reset/something some of the commits? | |||
lizmat | considering it a meta-PR could work, I guess | 12:25 | |
nine | m: class SQLValue { has $.str; method Str() { "quoted(" ~ $.str.Str ~ ")" } }; multi sub infix:<~> (Str:D $str, SQLValue:D $val) { $str ~ $val.Str }; sub prefix:<sql> (&block) { my $stringy = Str.^find_method("Stringy"); my $handler = $stringy.wrap(sub ($self) { SQLValue.new(:str($self)) }); my $result = &block(); $stringy.unwrap($handler); $result }; my $foo = "bar"; say sql{"foo=$foo"} | 12:30 | |
camelia | rakudo-moar 73ae93: OUTPUT«foo=quoted(bar)» | ||
nine | Yes, it's fugly :) | ||
lizmat | $ 6 'enum A (<a b c>); my @a[A]; dd @a' | 12:36 | |
Array.new(:shape(3,), [Any, Any, Any]) | |||
lizmat is pleased | |||
travis-ci | Rakudo build failed. Elizabeth Mattijsen 'Abstract shape-setting logic on arrays | 12:53 | |
travis-ci.org/rakudo/rakudo/builds/161891642 github.com/rakudo/rakudo/compare/e...ae93af81b0 | |||
buggable | [travis build above] ☠ Did not recognize some failures. Check results manually | ||
lizmat | ^^^ appears to be a flapper in "make test" | 12:59 | |
dalek | kudo/nom: c4390ff | lizmat++ | src/core/Array.pm: Get rid of allocate-shaped-storage It appears the call to allocate-shaped-storage in STORE is superfluous, because it was either just called in set-shape, or the .STORE is done on an array that already had its shape allocated. |
13:05 | |
rakudo/nom: fef3655 | lizmat++ | src/core/Array.pm: | |||
rakudo/nom: Allow an Enum in an array shape declaration | |||
rakudo/nom: | |||
rakudo/nom: As suggested in gfldex.wordpress.com/2016/09/22/ke...-optional/ | |||
rakudo/nom: | |||
lizmat | review: github.com/rakudo/rakudo/commit/fef3655 | ||
gfldex++ :-) | 13:06 | ||
|Tux| | This is Rakudo version 2016.09-25-g73ae93a built on MoarVM version 2016.09 | 13:11 | |
csv-ip5xs 8.968 | |||
test 15.648 | |||
test-t 6.874 | |||
csv-parser 16.948 | |||
gfldex | lizmat++ # for fixing my bug that I didn't even report | 13:13 | |
lizmat | eh? the @a[Enum] one ? | ||
gfldex | yes | 13:14 | |
lizmat | you're welcome :-) | ||
gfldex: now, I'm not sure whether my %h{Enum} really shouldn't be an array underneath | 13:19 | ||
the hash is really only needed should you specify by Str and you need to look up the associated numeric value | 13:20 | ||
gfldex | there needs to be a type check on they key but underneath it could very well be an array of fixed size | ||
but then, the spec wanted to have Hash with fixed keys (fixed at compile time) | |||
MetaZoffix | It's weird that when I build Rakudo with --optimize=off a ton of stresstests fail.... | 13:45 | |
jnthn | m: my Bool @arr = (True, False).roll(20) | 13:47 | |
camelia | ( no output ) | ||
jnthn | oh, in the *shape* declaration | ||
OK, that's more sensible :P | |||
jnthn misread and worried for a moment :D | 13:48 | ||
lizmat | m: my @a[Bool]; dd @a | ||
camelia | rakudo-moar fef365: OUTPUT«Array.new(:shape(2,), [Any, Any])» | ||
jnthn | commitable: 2016.08 my @a[Bool]; dd @a | 13:49 | |
commitable6: 2016.08 my @a[Bool]; dd @a | |||
committable6: help? | |||
committable6 | jnthn, Like this: committable6: f583f22,HEAD say ‘hello’; say ‘world’ | ||
jnthn | I have to compare? | 13:50 | |
MetaZoffix | committable6: 2016.08 my @a[Bool]; dd @a | ||
committable6 | MetaZoffix, ¦«2016.08»: [] | ||
travis-ci | Rakudo build passed. Elizabeth Mattijsen 'Allow an Enum in an array shape declaration | ||
travis-ci.org/rakudo/rakudo/builds/161905742 github.com/rakudo/rakudo/compare/7...f3655c0fb4 | |||
MetaZoffix | jnthn: you don't, but you have to spell bot's name right :P | ||
jnthn | MetaZoffix: Huh, how wsa what you typed different from what I typed? | ||
Oh :P | |||
[Coke] | jnthn: heh. | 13:51 | |
ilmari | the bot is clearly called com<tab> | ||
jnthn | Dunno why I didn't tab-complete the first time :) | ||
ugexe | m: say reduce { $^a + $^b }, (1, 2); say reduce { $^a + $^b }, (1); say reduce { $^a + $^b }, (); # should reduce work on empty lists like `say [+] ();`? | 13:56 | |
camelia | rakudo-moar fef365: OUTPUT«31Too few positionals passed; expected 2 arguments but got 0 in block <unit> at <tmp> line 1» | ||
ugexe | m: say [+] (); | ||
camelia | rakudo-moar fef365: OUTPUT«0» | ||
[Coke] | ugexe: what would the default value be? | 13:57 | |
for an operator, we can define a multi with the right answer, aye? | |||
ugexe | [Coke]: the same as `[whatever] ()` gives | ||
jnthn | ugexe: I suspect it will if you pass it a multi or something that accepts arity 0/1 | ||
m: say reduce &infix:<+>, () | |||
camelia | rakudo-moar fef365: OUTPUT«0» | ||
[Coke] | ugexe: but that gives different things. | ||
m: say [*] (); | |||
camelia | rakudo-moar fef365: OUTPUT«1» | ||
ugexe | to rephrease: should those two styles of reduce give the same thing | 13:58 | |
rephrase | |||
jnthn | Do you have an example where they don't? | ||
m: say [&({ $^a + $^b })] () | 13:59 | ||
camelia | rakudo-moar fef365: OUTPUT«===SORRY!=== Error while compiling <tmp>Two terms in a rowat <tmp>:1------> say [&({ $^a + $^b })]⏏ () expecting any of: infix infix stopper postfix statement end statement mod…» | ||
MetaZoffix | m: say reduce -> $a?, $b? { $a + $b }, () | ||
camelia | rakudo-moar fef365: OUTPUT«Cannot resolve caller infix:<+>(Mu, Mu); none of these signatures match: ($x = 0) (\a, \b) (Real \a, Real \b) (Int:D \a, Int:D \b --> Int:D) (int $a, int $b --> int) (Num:D \a, Num:D \b) (num $a, num $b) (Ran…» | ||
jnthn | m: my &op = { $^a + $^b }; say [&op] () | ||
camelia | rakudo-moar fef365: OUTPUT«===SORRY!=== Error while compiling <tmp>Two terms in a rowat <tmp>:1------> my &op = { $^a + $^b }; say [&op]⏏ () expecting any of: infix infix stopper postfix statement end st…» | ||
jnthn | m: my &op = { $^a + $^b }; say [[&op]] () | ||
camelia | rakudo-moar fef365: OUTPUT«Too few positionals passed; expected 2 arguments but got 0 in block <unit> at <tmp> line 1» | ||
jnthn | Same behavior as reduce | ||
MetaZoffix | m: say reduce -> $a?, $b? { say 'whatever' }, () | ||
camelia | rakudo-moar fef365: OUTPUT«whateverTrue» | ||
ugexe | m: say reduce { $^a + $^b }, 1; # "expected 2 arguments"? | 14:00 | |
camelia | rakudo-moar fef365: OUTPUT«1» | ||
lizmat | jnthn: would you have anything against splitting out the 1 dimension case of array shapes into a separate role? | 14:01 | |
[Coke] | m: multi sub a($a,$b) {$a+$b};multi sub a() {0}; say reduce &a, (); | ||
camelia | rakudo-moar fef365: OUTPUT«0» | ||
jnthn | lizmat: Do 2 and 3 while you're add it because they also have special-cased ops that we don't use yet ;) | ||
*you're at it | |||
I just didn't get around to putting them to use yet | |||
I suspect we can share most stuff except atpos/bindpos | 14:02 | ||
lizmat | (accessing a @a[Bool] is now 20x slower than an @a array) | ||
jnthn | But yeah, special cases for 1/2/3 was The Idea, so no objects. | ||
lizmat | which ops should I be looking at ? | ||
jnthn | There's some 2d and 3d ops | 14:03 | |
I'm pretty sure they are covered by tests in the NQP repo | |||
lizmat | no special 1d ops? | ||
ok, will look | |||
timotimo | github.com/MoarVM/MoarVM/blob/mast...plist#L706 | ||
jnthn | The 1d ops are just called atpos and bindpos ;) | ||
timotimo | 2d, 3d, and nd | ||
jnthn | (e.g. they're the exact same ops you'd use on an unshaped array) | ||
lizmat | jnthn: yes, but upper bounds would need to be checked "manually" right ? | ||
jnthn | No | 14:04 | |
lizmat | ah ? | ||
jnthn | The upper bound checking is enforced by the REPR | ||
The atpos ops are polymorphic | |||
So on a VMArray they'll have resize semantics | |||
And on a MultiDimArray will throw on out-of-bounds | 14:05 | ||
lizmat | so on array can be multidim even with 1 dim :-) | ||
jnthn | Yes | ||
MultiDim really means FixedDim I guess :) | |||
lizmat | and it will get bounds checking thrown in | ||
ok | |||
jnthn | Apparently the person naming it was a bit dim ;) | 14:06 | |
timotimo | and we'll be able to kick out bounds checking in some cases when we reach spesh and jit stages | ||
lizmat | ok, lemme see if I can hack that in :-) | 14:07 | |
jnthn: fwiw, not sure if you've seen It but t/spec/S17-procasync/stress.t consistently fails for me | 14:08 | ||
moar(63216,0x7fff79521300) malloc: *** error for object 0x7fff572ca6c0: pointer being freed was not allocated | |||
jnthn | shit | ||
jnthn blames OSX | |||
Maybe somebody with OSX can look into it :) | 14:09 | ||
Will see what it does on Windows too, maybe it also busts there | |||
lizmat | who knows :-) | 14:10 | |
jnthn | Though I'm hugely tempted to just concentrate on fixing Proc::Async up well and then re-impelenting the Proc class using Proc::Async :P | ||
lizmat | sounds like a plan, fwiw :-) | ||
ugexe | fwiw `reduce { $a + $b } ()` in perl5 returns undef, which is more useful than an exception because you can chain together grep/map/reduce without worrying about the number of elements before the reduce | 14:11 | |
jnthn | Since we actually use the very same libuv APIs in both | ||
lizmat | as long as we don't lose the JVM completely :-) | ||
jnthn | I think the JVM supports Proc::Async? | ||
MetaZoffix | .oO( but Proc::Async.start returns a Proc... ) |
||
jnthn | Will have to check... | ||
MetaZoffix | Procseption | ||
ugexe | jvm doesnt have proc async | 14:12 | |
MetaZoffix | well, its Promise does :) | ||
jnthn | ugexe: Yes, but in Perl 5 there's no option to design it to take advantage of multi-dispatch to specify what the base value will be | ||
And you can still write it as -> $a?, $b? { DTRT here } | |||
jnthn returns to $day-off :-) | 14:15 | ||
MetaZoffix | New blog post: "Perl 6 Core Hacking: Can Has Moar Cover?": perl6.party/post/Perl-6-Core-Hackin...Moar-Cover | 14:18 | |
timotimo | "bring your butterfly to work day" is the perfect opportunity to have her tested! | 14:21 | |
mst | ugexe: I would write that as 'reduce { $a + $b } 0, ...' in perl5 tbh | 14:24 | |
yoleaux2 | 21 Sep 2016 21:19Z <ZoffixMobile> mst: exactly 1 year ago you told me in magnet #perl to poke you in a year about binary package installer for CPAN :) | ||
mst | MetaZoffix: and, indeed, my work is grinding slowly along | ||
but it wasn't going to be ready for YAPC::EU this year so I shaved the alien6 yak instead | |||
timotimo | MetaZoffix: maybe i didn't read carefully enough, but it says nowhere that the coverage report is far from infallible | 14:26 | |
MetaZoffix | mst++ | ||
timotimo: I mention it in the first sentence here: ds3:3000/post/Perl-6-Core-Hacking-C...tpsreports and here mention they need improvement: ds3:3000/post/Perl-6-Core-Hacking-C...ettercover | 14:27 | ||
timotimo | oh! | ||
MetaZoffix | oops, wrong domain. But you get the idea :) | ||
timotimo | ah | ||
yes, of course | |||
man, i'm not feeling awake at all | |||
MetaZoffix | Coffee! | 14:28 | |
ugexe | mst: but if you want to chain map/grep/reduce would you still do `reduce { $a + $b } 0, grep { $_ > 10 } (1..9)` | 14:32 | |
mst | ugexe: probably not, but I fatalize undef warnings so I'd have to end up with that code before it actually passed its tests | 14:34 | |
i.e. "I wouldn't, to begin with, but that would be a bug" | |||
lizmat | afk& | 14:36 | |
ggoebel | How likely is it that the JVM GLR won't have happened by the time the next Google Summer of Code rolls around? | 15:29 | |
nine | The results of my SQL experimentation: niner.name/talks/DBIC%20in%20Perl%2...revisited/ | ||
t/test.pl6 probably demonstrates what it's about :) | |||
ggoebel | If not, how likely that the JVM GLR would be a viable/submitted/accepted SoC project? | 15:31 | |
Kolin_ | ggoebel: so when is the next SoC? | 15:55 | |
TimToady | um, next S | 15:56 | |
stmuk | northern hemisphere | ||
Kolin_ | committable6: 2015.07 say (<a b c>, (<a b c>)) | 15:57 | |
committable6 | Kolin_, ¦«2015.07»: a b c a b c | ||
Kolin_ | r: say (<a b c>, (<a b c>)) | ||
camelia | rakudo-jvm cd19db, rakudo-moar fef365: OUTPUT«((a b c) (a b c))» | ||
TimToady | I'm not sure JVM GLR is quite a thing, since most of the GLR work was at the rakudo and nqp levels, what remains might just be a smattering of bugs | ||
Kolin_ | Yeah | ||
nine | And a lot of it is probably just looking at the workarounds that were done and figure out what the real fix would be like | 15:58 | |
Kolin_ | What are some good programming books to read? To become better at Rakudo/NQP/MoarVM hacking? | 16:09 | |
ggoebel | Kolin_: The Google SoC timeline for 2016: developers.google.com/open-source/gsoc/timeline | 16:11 | |
SoC is announced in October. Organizations begin submitting applications in February. Applicants apply in March. Accepted Proposals/Students announced in April. Work runs from May to August with various checkpoints and deadlines. Results of SoC Projects are reported at the end of August | 16:13 | ||
Kolin_ | ggoebel: right, but see what others said about. JVM GLR isn't really a thing | ||
stmuk | Kolin_: its more online resources (perl6.party blog etc.) and just trying it | ||
Kolin_ | Surely there's more to it. | 16:14 | |
ggoebel | TimToady: Perhaps I'm mistaking, but I've had the impression that Rakudo on JVM hasn't been a first class citizen since the GLR... | 16:15 | |
s/mistaking/mistaken/ | |||
Kolin_ | ggoebel: right, but I don't think it's GLR itself that's the issue. It's just after GLR it hasn't kept up | ||
ggoebel: you can run the stresstest and see what tests are failing to see its current state. Rakudo on MoarVM passes all of them | |||
ggoebel: git clone github.com/rakudo/rakudo/; cd rakudo; perl Configure.pl --gen-nqp --backends=jvm; make; make test; make install; TEST_JOBS=8 make stresstest; | 16:16 | ||
ggoebel | Kolin_: I got the impression that JVM not being kept up coincided with the GLR | ||
Kolin_ | ggoebel: it also coinsided with frantic efforts to make something releasable for Christmas | 16:17 | |
(if you also want to run Perl5 tests, install Inline::Perl5 per step 12 on github.com/rakudo/rakudo/blob/nom/..._guide.pod ) | 16:18 | ||
nine | Kolin_: TimToady already stated that a 6.c release without JVM is ok back at his FOSDEM talk in February 2015 | ||
ggoebel: ^^^ | |||
TimToady | it would be nice if we could catchup the JVM by 6.d, which is hopefully before next summer | 16:19 | |
ggoebel | TimToady: okay. One of my offspring is a CS Major who might be interested in a Perl6 JVM SoC project if "it would be nice" doesn't turn out to be practical by next Summer. | 16:22 | |
phenny: seen colomon? | 16:27 | ||
hmm | |||
Kolin_ | .seen colomon | ||
yoleaux2 | I haven't seen colomon around. | ||
ggoebel | where is the nice webpage which shows what is implemented in red, yellow, and green? | 16:30 | |
timotimo | perl6.org/compilers/features - ggoebel | 16:31 | |
Kolin_ | It's outdated tho | ||
Ven` | It's been some time :-). | ||
timotimo | yeah | ||
Kolin_ | r: Proc::Async.new | 16:32 | |
camelia | ( no output ) | ||
..rakudo-moar fef365: OUTPUT«Proc::Async is disallowed in restricted setting in sub restricted at src/RESTRICTED.setting line 1 in method new at src/RESTRICTED.setting line 32 in block <unit> at <tmp> line 1» | |||
Kolin_ | j: say shell 'ls *' | 16:33 | |
camelia | rakudo-jvm cd19db: OUTPUT«Proc.new(in => IO::Pipe, out => IO::Pipe, err => IO::Pipe, exitcode => 0, pid => Any, signal => 0)» | ||
Kolin_ | j: shell(:out 'ls *').out.slurp-rest.say | ||
camelia | rakudo-jvm cd19db: OUTPUT«===SORRY!=== Error while compiling <tmp>Unable to parse expression in argument list; couldn't find final ')' at <tmp>:1------> shell(:out⏏ 'ls *').out.slurp-rest.say expecting any of: infix infix stopper» | ||
ggoebel | So the way to figure out the roadmap to bring JVM up to snuff would be to run the stress test, pick a bug, lather, rinse, and repeat? | ||
Kolin_ | ggoebel: yeah. And in particular, you can grep the roast for #?rakudo.jvm fudge | 16:34 | |
All of stuff involving Proc::Async is fudged; I think there's unicode stuff too | |||
j: shell(:out, 'ls *').out.slurp-rest.say | |||
camelia | rakudo-jvm cd19db: OUTPUT«dalek-queueevalbot.logfoomboxp6eval-tokenrakudo-star-2016.01.tar.gzrakudo-star-2016.04.tar.gztestPerlito:ChangeLogLICENSE.mdMakefileREADME-howto-release.mdREADME-perlito5-Java.mdREADME-perlito5-JavaScript.mdRE…» | ||
timotimo | oooh, the dancercon is already going on | 16:35 | |
Kolin_ | Apparently, it isn't using the restricted setting :) | ||
ggoebel | :( | 16:36 | |
Kolin_ | ggoebel: here's one example of the fudge I was talking about: github.com/perl6/roast/blob/master.../Str.t#L12 | ||
r: "ẛ̣".chars | 16:37 | ||
camelia | ( no output ) | ||
Kolin_ | r: "ẛ̣".chars.say | ||
camelia | rakudo-jvm cd19db: OUTPUT«3» | ||
..rakudo-moar fef365: OUTPUT«1» | |||
AlexDaniel | haha | 16:48 | |
was looking at this query | |||
committable6: 2015.07 say (<a b c>, (<a b c>)) | |||
committable6 | AlexDaniel, ¦«2015.07»: a b c a b c | ||
AlexDaniel | and wondering what the hell | ||
took me a while to realize that it is 2015.07, not 2016.07 | |||
dalek | ast: b9264ae | usev6++ | S (2 files): Fudge newly added tests for JVM |
17:24 | |
[Coke] | t/spec/S10-packages/precompilation.t is failing here. | 19:08 | |
TimToady | seems to work here | 19:19 | |
(I'm running with bleadmoar though) | |||
so I've got the recent syncpipe fix, which could be operative in a test running subprocesses | 19:21 | ||
[Coke] | I'm also running with bleadmoar | 19:22 | |
and nqp | |||
opt/local/bin/perl5.22 Configure.pl "--gen-moar=master" "--gen-nqp=master" $* | |||
TimToady | (btw, the syncpipe fix didn't change the hang of my unit lexical scope patch) | ||
timotimo | damn | 19:25 | |
TimToady | I did, however, get a non-reproducible fail with t/spec/S02-literals/allomorphic.t | 19:37 | |
nine | [Coke]: is the precompilation.t failure reproducible? | 20:08 | |
dalek | kudo/nom: 4bcd7e0 | niner++ | src/core/CompUnit/Repository/ (2 files): Fix GLOBAL symbol clash re-compiling due to a repo change After we detected that we need to re-compile a module because one of its dependencies changed, we sometimes turned out to try loading the old version again due to a stale precomp unit cache. However the module would load just fine on the next try. The reason was that we invalidated the cache of a different precomp store object than what we used for loading precomp files as the repository implementations created different objects for the precomp store list (used for loading) and the accessors of their own store (used for storing). |
20:19 | |
nine | Zoffix: that ^^^ is the fix for the bug you reported on Tuesday | 20:20 | |
dalek | kudo/nom: e51cc33 | lizmat++ | t/spectest.data: Mark S17-procasync/stress.t as a stress test The name sorta gives it away, no? |
20:31 | |
nine | lizmat: is it actually a stress test though? It takes about 3 seconds here | 20:32 | |
lizmat | well, not sure... | ||
why would it be called stress.t ? | |||
ZoffixMobile | nine++ thanks | 20:33 | |
the stress.t hung for me today, or at least appeared to | |||
dalek | kudo/nom: 553cedb | lizmat++ | src/core/native_array.pm: We can also use Enums for native array shapes So that 'my int @a[Bool]' will create a 2-element native array |
21:09 | |
timotimo | neato. | ||
lizmat | will look at the 2d/3d cases the coming days | 21:11 | |
this was LHF :-) | |||
m: Bool.^elems.say # the new ^elems makes things a lot easier | 21:12 | ||
camelia | rakudo-moar e51cc3: OUTPUT«2» | ||
masak | yay | 21:24 | |
lizmat | m: my int $a = True; say $a # expected | 21:28 | |
camelia | rakudo-moar e51cc3: OUTPUT«1» | ||
lizmat | m: my str $a = True; say $a # NOT expected | 21:29 | |
camelia | rakudo-moar e51cc3: OUTPUT«This type cannot unbox to a native string: P6opaque, Bool in block <unit> at <tmp> line 1» | ||
lizmat | this feels like a bug / oversight to me | ||
m: my %h = True => 42; dd %h{True} # as this works | |||
camelia | rakudo-moar e51cc3: OUTPUT«Int %h = 42» | ||
lizmat | anyways, going to sleep on that | 21:30 | |
good night, #perl6-dev! | |||
timotimo | huh | 21:31 | |
well, Enum is Int, but not Str | |||
TimToady | the default key type of a hash is not really Str, but Str() | 21:35 | |
timotimo | very true | 21:36 | |
dalek | ast: 3c3b8c6 | usev6++ | S32-io/socket-recv-vs-read.t: Use different ports for IO::Socket::Async servers We already use port 5000 in S32-io/IO-Socket-Async.t |
21:56 | |
Zoffix | Found a piece of code that, form what I gather can't be accessed: perl6.wtf/src_core_Backtrace.pm.cov....html#L282 | 23:54 | |
c: Backtrace.new, 'map', \({...}) | |||
Undercover | Zoffix, The code is hit during stresstest See perl6.WTF/src_core_Any-iterable-met...e.html#L19 for details | ||
Zoffix | ^ that's not the right multi | ||
m: Backtrace.new.map: {...} | |||
camelia | rakudo-moar 553ced: OUTPUT«Ambiguous call to 'map'; these signatures all match::(\SELF: █; :$label, :$item, *%_):(Backtrace:D $: $block, *%_) in block <unit> at <tmp> line 1» | ||
Zoffix | What do we do? | 23:55 | |
c: Backtrace.new, 'map', \(42) | 23:56 | ||
Undercover | Zoffix, The code is NOT hit during stresstest See perl6.WTF/src_core_Backtrace.pm.cov....html#L282 for details | ||
Zoffix giggles at █ being interpreted as an HTML entity in the reports | 23:57 |