gfldex | i rakudobugged this issue just in case | 00:04 | |
geekosaur wonders if this is a holdover from when the setting couldn't bootstrap properly, so things like CALL-ME had to be implied and defined NQP-side | 00:15 | ||
(...or maybe it's still true and more work needs to be done) | 00:16 | ||
MasterDuke | gfldex: not sure. i have code that is stable when run serially and not when parallelized. haven't been able to figure out where exactly the problem is, and wanted to check my assumptions | ||
github.com/perl6/whateverable/blob...r/build.p6 | |||
gfldex | known problem but I failed to golf it so far. | 00:17 | |
your example is not exacly short either. :( | |||
MasterDuke | yeah, i'm trying to golf it | 00:19 | |
Zoffix | dogbert17, I'd say adding test's before the bug is fixed is perfectly fine (as long as you're sure it is a bug and what the correct behaviour should be). The tests fudged as `todo` are still run and if the harness sees them passing it'll alert about it. The more blunt fudge is the `skip` fudge that comments the test out entirely; these are for tests that crash the test suite or hang. Seeing if they pass is done by running the test suite without | 00:36 | |
a fudge. | |||
[Coke] | Zoffix: are you familiar with autounfudge? | 01:46 | |
it will try to unfudge things, one at a time, and create a patch file with all the functioning unfudges. | 01:51 | ||
tools/autounfudge.pl | 01:52 | ||
Zoffix | neat | 01:57 | |
MasterDuke | is there any difference between 'nqp::istype($elem, QAST::Op)' and '$elem ~~ QAST::Op' in NQP? | 02:39 | |
[Coke] | t/spec/S32-basics/pairup.t appears to pass its one test, but isn't in t/spectest.data | 03:10 | |
[TuxCM] | This is Rakudo version 2016.09-85-ged0ced2 built on MoarVM version 2016.09-3-g9b39aa5 | 05:54 | |
csv-ip5xs 4.599 | |||
test 16.940 | |||
test-t 7.071 | |||
csv-parser 18.033 | |||
arnsholt | MasterDuke: IIRC ~~ will call ACCEPTS, while the istype op checks the type directly | 07:32 | |
lizmat | Files=1143, Tests=53180, 229 wallclock secs (12.87 usr 4.00 sys + 1399.79 cusr 131.40 csys = 1548.06 CPU) | 07:42 | |
dalek | kudo/nom: 5a3df86 | (Zoffix Znet)++ | t/spectest.data: Add S32-basics/pairup.t to test file list |
12:16 | |
hackedNODE | .tell MasterDuke Just an FYI: adding new files to roast doesn't make the test suite use them automatically. You also need to list them in Rakudo's t/spectest.data file. github.com/perl6/roast/commit/ca2b03d63c4 | ||
yoleaux2 | hackedNODE: I'll pass your message to MasterDuke. | ||
hackedNODE | weird | 12:21 | |
m: .signature.say for Array.^lookup("splice").candidates | |||
camelia | rakudo-moar ed0ced: OUTPUT«(Array:D \SELF: *%_)(Array:D $: Whatever, *%_)(Array:D $: Callable:D $offset, *%_)(Array:D $: Int:D $offset, *%_)(Array:D $: Whatever, Whatever, *%_)(Array:D $: Whatever, Int:D $size, *%_)(Array:D $: Callable:D $offset, Callable:D $size, …» | ||
hackedNODE | Works, right... | ||
m: .signature.say for Buf.^lookup("splice").candidates | |||
camelia | rakudo-moar ed0ced: OUTPUT«No such method 'candidates' for invocant of type 'Mu' in block <unit> at <tmp> line 1» | ||
hackedNODE | Doesn't | ||
m: .signature.say for Buf.new(<1 2 3>).^lookup("splice").candidates | |||
camelia | rakudo-moar ed0ced: OUTPUT«(Buf:D \SELF: *%_)(Buf:D $: Int $offset, $size = Whatever, *%_)(Buf:D $: Int $offset, $size, int $got, *%_)(Buf:D $: Int $offset, $size, Int $got, *%_)(Buf:D $: Int $offset, $size, Mu $got, *%_)(Buf:D $: Int $offset, $size, Buf:D $buf, *%_)…» | ||
hackedNODE | But this does :/ | ||
m: .signature.say for Buf.^pun.^lookup("splice").candidates | 12:22 | ||
camelia | rakudo-moar ed0ced: OUTPUT«(Buf:D \SELF: *%_)(Buf:D $: Int $offset, $size = Whatever, *%_)(Buf:D $: Int $offset, $size, int $got, *%_)(Buf:D $: Int $offset, $size, Int $got, *%_)(Buf:D $: Int $offset, $size, Mu $got, *%_)(Buf:D $: Int $offset, $size, Buf:D $buf, *%_)…» | ||
hackedNODE | I see... | ||
jnthn | .^lookup on a role will only give you things declared in that role | ||
hackedNODE | But it has to be punned, it seems. splice is in that role | 12:23 | |
jnthn | m: role R { method m() { } }; say R.^lookup('m') | ||
camelia | rakudo-moar ed0ced: OUTPUT«m» | 12:24 | |
hackedNODE | :S | ||
jnthn | m: say Buf.WHO | 12:25 | |
camelia | rakudo-moar ed0ced: OUTPUT«Buf» | ||
hackedNODE | m: role R[::T = uint8] does Blob[T] is repr('VMArray') is array_type(T) { method m() { } }; say R.^lookup('m') | ||
camelia | rakudo-moar ed0ced: OUTPUT«m» | ||
jnthn | m: say Buf.HOW.^name | ||
camelia | rakudo-moar ed0ced: OUTPUT«Perl6::Metamodel::ParametricRoleGroupHOW» | ||
jnthn | Curious | ||
hackedNODE | m: role R { multio method m() { } }; say R.^lookup('m') | 12:26 | |
camelia | rakudo-moar ed0ced: OUTPUT«===SORRY!=== Error while compiling <tmp>Undeclared routine: multio used at line 1» | ||
hackedNODE | m: role R { multi method m() { } }; say R.^lookup('m') | ||
camelia | rakudo-moar ed0ced: OUTPUT«(Mu)» | ||
jnthn | Ah | 12:27 | |
hackedNODE | ^ making it a multi makes a difference | ||
jnthn | Yeah | ||
I dunno quite what we can/should do about that. | |||
We'd have to create a fictional proto | |||
Which feels a bit odd | 12:28 | ||
Given lookup is meant to just give you stuff that exists | |||
hackedNODE | .oO( proto proto... ) |
||
oh god, that even compiles | 12:29 | ||
m: proto proto (|) {} | |||
camelia | ( no output ) | ||
hackedNODE | m: proto proto proto proto (|) {} | ||
camelia | rakudo-moar ed0ced: OUTPUT«===SORRY!=== Error while compiling <tmp>Missing blockat <tmp>:1------> proto proto⏏ proto proto (|) {} expecting any of: new name to be defined» | ||
lizmat | m: sub sub() { say "sub" }; sub() | ||
camelia | rakudo-moar ed0ced: OUTPUT«sub» | ||
gfldex | it's recursion all the way down :) | 12:30 | |
DrForr | Poor turtles. | 12:33 | |
masak | DrForr: "structural integrity challenges in transfinite-cardinality turtle-stack architectures" | 12:48 | |
DrForr | Cheloid axial compression... | 12:49 | |
[Coke] | m: multi proto anon sub eek {...} | 12:51 | |
camelia | rakudo-moar 5a3df8: OUTPUT«===SORRY!=== Error while compiling <tmp>Missing blockat <tmp>:1------> multi proto⏏ anon sub eek {...} expecting any of: new name to be defined» | ||
DrForr | Oo, Chaitin-Kolmogorov chitin compression | 12:53 | |
masak | finding the omega in your tortoise chain | 12:56 | |
dalek | p: a6425aa | coke++ | docs/ops.markdown: jnthn++'s notes about sha1 |
13:23 | |
gfldex | lizmat: lookin at multi sub infix:<eqv>(Seq:D \a, Seq:D \b) in src/core/Seq.pm, wouldn't it make sense to check for a.elems == b.elems before iterating All The Elements? | 13:34 | |
timotimo | not all sequences can tell you how many elements it'll have | 13:35 | |
that could make it problematic :) | |||
jnthn | Asking how many elements a Seq has consumes the Seq | 13:36 | |
And then you can't get the elements | |||
timotimo | oh, that'll be a problem, too! :) | ||
dalek | p: ec03b35 | coke++ | t/docs/opcodes.t: allow for js-specific doc'd opcodes |
13:46 | |
kudo/nom: 84b7ebd | (Zoffix Znet)++ | src/core/Numeric.pm: Fix failure to smartmatch Numeric:U against Numeric:D The candidate is too wide and when Numeric:U is given, throwage occurs when it's used with the `==` operator inside the method's body. Restrict the candidate to :D types only and let Any's candidates take care of the :U types. |
16:28 | ||
ast: 8a8bd60 | (Zoffix Znet)++ | S32-num/int.t: smartmathing :U numeric against :D numeric does not throw Tests for issue fixed by github.com/rakudo/rakudo/commit/84b7ebdf42 |
16:29 | ||
moritz | smartmathing. Nice! :-) | 16:30 | |
I've always tried to smartmath my way through math class, without ever learning formulas or techniques by heart | 16:31 | ||
hackedNODE | :) | ||
timotimo | at some point, deriving all of linear algebra, calculus, and trigonometry from just five or six axioms gets really time consuming in front of the exam ... | 16:32 | |
dalek | kudo/nom: 58cf9d8 | (Zoffix Znet)++ | src/core/Str.pm: Throw away useless ACCEPTS candidate The :U case is already handled by Any's candidates[^1] [1] github.com/rakudo/rakudo/blob/5a3d...Any.pm#L21 |
16:37 | |
hackedNODE thinks up dirty Perl 6 pick up lines involving :U and :D ... | 16:39 | ||
timotimo | i think there's something naughty you can construct with "decont" | 16:41 | |
not based on that it sounds like "cunt", mind you | |||
jnthn | Now being indecont, please :P | ||
timotimo prefers clean jokes | 16:43 | ||
make clean jokes | 16:44 | ||
hackedNODE | make: *** No rule to make target 'jokes'. Stop. | 16:45 | |
dalek | ast: afd609e | (Zoffix Znet)++ | S32-num/int.t: Fix typo in test description |
16:48 | |
hackedNODE | m: enum Foo <bar ber>; say Foo ~~ bar | 16:53 | |
camelia | rakudo-moar 58cf9d: OUTPUT«True» | ||
hackedNODE | That's wrong, isn't it? | 16:54 | |
m: say Str ~~ "x" | |||
camelia | rakudo-moar 58cf9d: OUTPUT«False» | ||
hackedNODE | ^ that's an equivalent for Str, I think and that returns false | ||
timotimo | right, if you have a defined value on the right, i don't think it should be type-check-esque | 16:55 | |
hackedNODE | I see it was made that way on purpose, in this commit: github.com/rakudo/rakudo/commit/49...df8cb35a52 | 16:56 | |
hackedNODE investigates that | |||
timotimo | ho-hum | ||
hackedNODE | No idea how signatures work, so I'll leave it as is, until I'm smarter :) | 16:58 | |
star: enum Options(<Foo Bar>); (sub f(Foo $o?){ ... })() | |||
camelia | star-m 2016.04: OUTPUT«Invocant requires an instance of type Options, but a type object was passed. Did you forget a .new? in sub f at <tmp> line 1 in block <unit> at <tmp> line 1» | ||
hackedNODE | m: enum Options(<Foo Bar>); (sub f(Foo $o?){ ... })() | ||
camelia | rakudo-moar 58cf9d: OUTPUT«Stub code executed in sub f at <tmp> line 1 in block <unit> at <tmp> line 1Actually thrown at: in block <unit> at <tmp> line 1» | ||
hackedNODE | m: enum Options(<Foo Bar>); (sub f(Foo $o?){ ... })(Bar) | 16:59 | |
camelia | rakudo-moar 58cf9d: OUTPUT«Constraint type check failed for parameter '$o' in sub f at <tmp> line 1 in block <unit> at <tmp> line 1» | ||
timotimo | well, that's about Foo and Bar, not Options and Bar | 17:00 | |
hackedNODE | I guess this is basically due to trying to use a :D Enumeration as a type constraint type... It's like having sub f("42" $o?) {} there | ||
m: enum Options(<Foo Bar>); (sub f(Foo $o?){ ... })(Options) | 17:02 | ||
camelia | rakudo-moar 58cf9d: OUTPUT«Stub code executed in sub f at <tmp> line 1 in block <unit> at <tmp> line 1Actually thrown at: in block <unit> at <tmp> line 1» | ||
hackedNODE | I'd argue that's bug. | 17:04 | |
star: enum Options(<Foo Bar>); (sub f(Options $o where Foo){ ... })(Foo) | |||
camelia | star-m 2016.04: OUTPUT«Stub code executed in sub f at <tmp> line 1 in block <unit> at <tmp> line 1Actually thrown at: in block <unit> at <tmp> line 1» | ||
hackedNODE | star: enum Options(<Foo Bar>); (sub f(Options $o where Foo){ ... })(Bar) | ||
camelia | star-m 2016.04: OUTPUT«Constraint type check failed for parameter '$o' in sub f at <tmp> line 1 in block <unit> at <tmp> line 1» | ||
timotimo | well if you put a question mark there ... you're allowing undefined, too? | ||
hackedNODE | This is how the original should've been written, and the commit basically introduced a shortcut for that | ||
timotimo | i see | 17:05 | |
hackedNODE leaves it until there are any issues with this behaviour :) | |||
m: say Set ~~ ∅ | 17:25 | ||
camelia | rakudo-moar 58cf9d: OUTPUT«Invocant requires an instance of type Setty, but a type object was passed. Did you forget a .new? in block <unit> at <tmp> line 1» | ||
hackedNODE | m: say Bag ~~ Bag.new | ||
camelia | rakudo-moar 58cf9d: OUTPUT«True» | ||
hackedNODE | m: say Bag ~~ Bag.new: <a b c> | ||
camelia | rakudo-moar 58cf9d: OUTPUT«Use of uninitialized value of type Any in numeric context in block <unit> at <tmp> line 1False» | ||
hackedNODE | m: say Int ~~ 'x'.IO | 17:26 | |
camelia | rakudo-moar 58cf9d: OUTPUT«Use of uninitialized value of type Int in string context.Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful. in block <unit> at <tmp> line 1Use of uninitialized value of type Int in string context.Methods…» | ||
hackedNODE | Same issue as the Int ~~ 42. And the Baggy/Setty is a bug due to it coercing things, which catches too many of them. | 17:27 | |
hackedNODE will fix it tomorrow | |||
MasterDuke | hackedNO1: thanks | 22:25 | |
yoleaux2 | 12:16Z <hackedNODE> MasterDuke: Just an FYI: adding new files to roast doesn't make the test suite use them automatically. You also need to list them in Rakudo's t/spectest.data file. github.com/perl6/roast/commit/ca2b03d63c4 |