[Tux] This is Rakudo version 2017.06-103-g2a8d1e7ce built on MoarVM version 2017.06-30-g389e9732 06:23
csv-ip5xs 2.728
test 12.485
test-t 4.184 - 4.274
csv-parser 12.911
timotimo buggable: speed 06:40
buggable timotimo, ███▆↑▇▃▄▄▄↑▃▅▃▃▃▃▃▃▅▃▂▃▃▃▃▆▅▁▂▂▂▃▃▄↑▃▃▅▄▄▃▄▆▆▅▃▂▇▅ data for 2017-06-13–2017-06-29; range: 3.907s–4.588s; 4% faster
timotimo huggable: speed
huggable timotimo, tux.nl/Talks/CSV6/speed4.html
[Tux] runs it again. box was relatively busy 06:53
This is Rakudo version 2017.06-103-g2a8d1e7ce built on MoarVM version 2017.06-30-g389e9732 07:00
csv-ip5xs 2.634
test 12.669
test-t 4.097 - 4.187
csv-parser 12.268
DeadDelta m: class Foo does Iterable {} 10:35
camelia 5===SORRY!5=== Error while compiling <tmp>
Method 'iterator' must be implemented by Foo because it is required by roles: Iterable.
at <tmp>:1
DeadDelta But it IS implemented :/
m: class Foo {}.iterator.say 10:36
camelia <anon|190488128>.new
lizmat no, it isn't in that code
you don't need to be Iterable to have an iterator
m: dd 42.iterator
camelia <anon|190488128>.new
DeadDelta I inherit one. What does it care where it comes from? 10:37
lizmat if it inherits one, and the base class does Iterable
you don't need the "does Iterable" in your subclass
problem solved ?
DeadDelta Not really. I have a method in my class thought by a role I'm trying to do, but it complains that it's not there. 10:38
s/thought/sought/;
lizmat hmmm...
DeadDelta m: class Foo { method x {} }; role Meow { method x {…} }; class Bar is Foo does Meow {} 10:39
camelia ( no output )
DeadDelta And actually seems to work here ^ when the inherited-from class isn't a Mu
lizmat so you're saying the implementation check should be a .can() check rather than an exists check on the stash ?
DeadDelta m: class Foo { method x {} }; role Meow { method elems {…} }; class Bar is Foo does Meow {} 10:40
camelia ( no output )
DeadDelta Works for Any
m: class Foo { method x {} }; role Meow { method x {…} }; class Bar is Foo does Meow {}
camelia ( no output )
DeadDelta m: class Foo { method x {} }; role Meow { method Bool {…} }; class Bar is Foo does Meow {}
camelia ( no output )
DeadDelta Oh, it's the Iterable that complains?
m: class Foo { method x {} }; role Meow { method iterator {…} }; class Bar is Foo does Meow {} 10:41
camelia ( no output )
lizmat the does Iterable states that you need to implement an iterator method
at composition time of Foo it doesn't see one in Foo and complains
DeadDelta method iterator() { ... } ? Is that it? 10:42
lizmat think so
DeadDelta So why doesn't above it doesn't complain with Meow role?
m: role Meow { method iterator {…} }; class Bar does Meow {}
camelia 5===SORRY!5=== Error while compiling <tmp>
Method 'iterator' must be implemented by Bar because it is required by roles: Meow.
at <tmp>:1
DeadDelta :|
lizmat hmmm.. that smells wrong
:-) 10:43
DeadDelta Filed as rt.perl.org/Ticket/Display.html?id=131676 10:46
Geth rakudo/nom: 5e34258850 | (Elizabeth Mattijsen)++ | src/core/Rakudo/QuantHash.pm
Introducing R:Q.COERCE-MAP-TO-(SET|BAG|MIX)

Shortcuts that don't need to check for existence of keys.
11:33
[Coke] fires up a docker container with ubuntu to see if his mac segv happens elsewhere... can't build rakudo... there is no /tmp in there. weird. 11:36
Geth rakudo/nom: f34af72fc7 | (Elizabeth Mattijsen)++ | src/core/Rakudo/QuantHash.pm
Tweaks in R:Q.COERCE-MAP-TO-(BAG|MIX)
11:39
rakudo/nom: 72e5d61411 | (Elizabeth Mattijsen)++ | src/core/Map.pm
Make Map.(Bag|Mix) 2.5x to 5x faster

  - based on a 26-element hash
  - 2.5x for normal hash
  - 5x for object hash
llfourn [Coke]: I just pulled ubuntu:latest and it had /tmp 11:49
[Coke] llfourn: weird. wonder what happened to it in my container. 11:57
dogbert2 lizmat: 'say $?BITS' returns 64 on my 32 bit linux VM 11:58
lizmat :-(
dogbert2: what does int.Range say ? 11:59
jnthn Well, what's it supposed to represent?
lizmat the size of a native int
dogbert2 lizmat: -9223372036854775808..9223372036854775807
jnthn Then it's correct in that that's alwasy 64 bits on MoarVM 12:00
lizmat yeah, that's the 64 bit one
jnthn: even on a 32 bit system ?>?
jnthn Depending what definition of "native" you're suing :)
lizmat: Yes
s/suing/using/ :)
lizmat ok, then how can one know whether you're running on a 32bit system or not ? 12:01
jnthn I guess see how nativecall figures out the size_t size :)
lizmat well, but don't we want to be able to do that in core? 12:02
lizmat is getting confused now
jnthn NativeCall surely does it by asking the VM 12:03
Anything in the VM that it's using, you could use in CORE.setting too :)
pmurias paste.debian.net/973884 - does this nqp::spawnprocasync test look sane? it passes I just want to make sure it tests for proper behavior 12:05
dogbert2 m: $*KERNEL.bits 12:06
camelia ( no output )
dogbert2 m: say $*KERNEL.bits
camelia 64
jnthn pmurias: Just glanced over it, seems reasonable to me
dogbert2 lizmat: that one gives 32 on my system 12:07
dunno if that should be used though 12:08
lizmat well, I don't know either anymore :-(
Geth rakudo/nom: 495fb5f8ac | (Elizabeth Mattijsen)++ | src/core/set_operators.pm
Make Map (+) Map between 3x and 6x faster

  - based on a 26-element hash with itself
  - 3x for normal hash (+) normal hash
  - 6x for object hash (+) object hash
12:15
dogbert2 m: Buf.new((my int $i = 10) +& 0xFF) 12:23
camelia ( no output )
dogbert2 lizmat: I may be wrong but it looks as if RT #128655 has been fixed at some point 12:24
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=128655
dogbert2 bisect: Buf.new((my int $i = 10) +& 0xFF) 12:27
bisectable6 dogbert2, On both starting points (old=2015.12 new=495fb5f) the exit code is 0 and the output is identical as well
dogbert2, Output on both points: «»
lizmat bisect: old=2016.06 Buf.new((my int $i = 10) +& 0xFF) 12:28
bisectable6 lizmat, On both starting points (old=2016.06 new=495fb5f) the exit code is 0 and the output is identical as well 12:29
lizmat, Output on both points: «»
lizmat hmmm
m: dd Buf.new((my int $i = 10) +& 0xFF)
DeadDelta So Gabor is now spreading anti-Perl 6 propaganda? Must be raising too much money on that Perl 6 Web book
camelia Resource temporarily unavailable
lizmat DeadDelta: if this is about fayerplay.com/perl-is-schrodinger_state/ , don't blame the messenger :-) 12:30
DeadDelta IIRC that bug was fixed by pmurias with the removal of optimizer bit, which was then reverted, but the bug remained fixed somehow
I'm not blaming. I'm just amused 12:31
dogbert2 cool, if that one is fixed then RT #128624 must also be fixed
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=128624
DeadDelta IIRC there's commented out code in rakudo for 128655 12:32
That could be uncommented now
Ohh... or maybe that's why the bug is not there, cause the native candidates are commented out
Or maybe i'm thinking of a different bug :/ 12:33
s: &infix:<+&>
SourceBaby DeadDelta, Sauce is at github.com/rakudo/rakudo/blob/495f...ic.pm#L320
DeadDelta shrugs 12:34
dogbert2 DeadDelta: if you think that 128655 is sorted then RT #129844 can also be closed, that's three RT's for the price of one :)
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=129844
Geth rakudo/nom: ae4c04cef7 | (Elizabeth Mattijsen)++ | src/core/Setty.pm
Make Setty.(Bag|Mix) about 5% faster

  - based on a 1000 elem Set
  - don't call raw_hash, use $!elems directly
  - don't use helper sub
12:35
pmurias DeadDelta: the problem with the Bufs was 2 part, the multi dispatch optimizer bug (which was fixed and reverted as it speeds some other stuff up) and Buf.new failing when passed a native int (which I didn't fix) 12:38
DeadDelta "...and reverted..." 12:39
Yeah, but it looks like even after the revert the bug is gone?
lizmat: what do you think about generalizing this commit to use a hash of options instead of a single dynvar? github.com/rakudo/rakudo/commit/af...47f6a4e64d 12:45
lizmat: it's probably not the only thing users will want to have configurable. Or perhaps there could be an option to provide a parsing class (like GetOpt::Whatever) 12:46
lizmat All for it, I see MAIN-ALLOW... as a hack really
pmurias DeadDelta: if the native candidates are commented out they multi inliner won't see it (and do it's incorrect but sometimes wanted optimalization)
m: my int $x = 123;my $y = Buf.new($x+1) 12:48
camelia Type check failed in initializing element #0 to Buf; expected uint8 but got Int (124)
in block <unit> at <tmp> line 1
pmurias DeadDelta: it's still a problem for ops that are too important to comment their fast path out
DeadDelta Oh, ok, the bug's still there 12:49
pmurias m: my $x = 2**63-1;say($x+1) 12:50
camelia 9223372036854775808
pmurias m: my int $x = 2**63-1;say($x+1)
camelia -9223372036854775808
DeadDelta And disappears with --optimize=off
dogbert2 :( 12:51
jnthn I suspect we'll have to at some point consider whether the native integer literal handling stuff in the optimizer really belongs in the optimizer, since it's actually required for resolving which literals are compiled as int and which are compiled as Int
otoh, do we want slower compilers by adding another pass? 12:52
*compiles
DeadDelta greppable6: MAIN-ALLOW-NAMED-ANYWHERE
greppable6 DeadDelta, gist.github.com/fe7f6681e9b331914c...d2ac6b2039
pmurias jnthn: we do have QAST::Want so the optimizer could turn $native-int + 123 into a add_i in native int context and a bignumy infix:<+> when we want an object 12:56
jnthn pmurias: That's not the only reason 12:57
pmurias: It's much more generally used by the QAST compiler
So anywhere that an nqp::op is used and there's an integer/num/string literal, it knows it can use the native version for the nqp::op 12:58
lizmat DeadDelta: if that's the only occurrence of MAIN-ALLOWED, I guess we're good :-)
pmurias jnthn: what would be an example of that? 12:59
jnthn nqp::substr($foo, 0, 1) 13:00
DeadDelta lizmat: yeah. I'll implement a hash tonight 13:01
Geth rakudo/nom: d5bf5b0c25 | (Elizabeth Mattijsen)++ | src/core/Rakudo/QuantHash.pm
Add some internal documentation

Was actually part of a bigger commit, but realized in time it was mostly bogus, so dropped the code but kept the improved comments.
DeadDelta Oh, and another question that was asked before awhile back
m: say set() ~~ Iterable
camelia False
DeadDelta Should QuantHash be Iterable? Maps are. But on the other hand the fact that slurpies break Maps into Pairs is kidna meh, so would we want the same to happen with QuantHashes? 13:02
pmurias jnthn: you mean when the nqp::substr is inside the multi which we are inlining?
jnthn pmurias: I mean in general 13:03
DeadDelta m: sub foo (*@a) { dd @a }; foo %(:a, :b); foo (:a, :b).Bag
camelia [:a, :b]
[("b"=>1,"a"=>1).Bag]
DeadDelta m: sub foo (*@a) { dd @a }; foo $%(:a, :b); foo (:a, :b).Bag.pairs
camelia [{:a, :b},]
[:b(1), :a(1)]
pmurias jnthn: the reverted commit only changed how multis are inlined 13:04
pmurias is confused 13:05
DeadDelta I think current way is fine. But I might write an article about Perl 6 Iterables and so wanted to find out if QuantHash isn't one on purpose :)
jnthn pmurias: Yes, it changed it so that for $a + 1 where $a is declared as a native int so they never were!
By removing the allomorph analysis 13:06
pmurias which is not correct in generally but speeds things like my int $a = 2; $a = $a + 1 up 13:08
lizmat DeadDelta: could you check if something breaks if you add "does Iterable" to the QuantHash role ? 13:09
DeadDelta lizmat: it cries about wanting iterator (the bug I found this morning) and when I worked around it by adding method iterator { self.pairs.iterator } it wanted .kv implemented too. Then I left to work 13:10
pmurias what I mean is that we could explicitly do it for the things that we know work the same with a int or a Int
DeadDelta s: set, 'iterator', \() 13:11
SourceBaby DeadDelta, Something's wrong: ␤ERR: ===SORRY!=== Error while compiling -e␤Function "set" may not be called without arguments (please use () or whitespace to denote arguments, or &set to refer to the function as a noun, or use .set if you meant to call it as a method on $_)␤at -e:6␤------> put sourcery( set<HERE>, 'iterator', \() )[1];␤
DeadDelta *groan*
s: set(), 'iterator', \()
SourceBaby DeadDelta, Sauce is at github.com/rakudo/rakudo/blob/495f...Set.pm#L36
DeadDelta Yeah, it already got its own iterator. So I think what will be affected is how QuantHashes flatten in slurpies or .deepmap or .nodemap or ».foo 13:12
DeadDelta & 13:15
pmurias jnthn: do more complex things then simple ops even get inlined? 13:17
jnthn pmurias: Not in the static optimizer, no 13:18
pmurias: We used to try and do more
There's certainly some cleanups to be had in this area
It dates back to before we were running on VMs that can do inlining
Nowadays all we really want to do is worry about native ops
In terms of transformations 13:19
Though we also do a bunch of catching impossible code at compile time too
Transformation wise, though, we only care about natives 13:20
pmurias so if I get the ops to run as fast as they do know without the allomorph analysis I can remove that again?
jnthn And doing the allomorphic lowering 13:21
Uh
But the allomorph analysis is key to it, no?
We have to compile-time dispatch $a + 1 considering the 1 native
Geth rakudo/nom: 41ed2c03ab | (Elizabeth Mattijsen)++ | src/core/Rational.pm
Allow for "does Rational" and "does Rational[foo]"

From a question by cschwenz++ on #perl6
13:22
jnthn That is to say, we treat the fact $a is known native as implying the literal should also be considered native in this context
pmurias yes, but we can do it in a more precise way then just assume multi dispatch works differently then it really does at runtime
jnthn Probably, but it's still going to be the case that multi-dispatch at runtime can't know what's a literal and what's not 13:23
And at compile time we do know that
pmurias do we want to have 2 different multi dispatch algorithms? 13:26
jnthn What do you consider the alternative? 13:27
I mean, I don't think making users write int(1) everywhere is really going to fly 13:28
pmurias the optimizer having knowledge where treating a literal as a native int works
jnthn That's what it has now, though?
It just uses "there's a declared native argument" as its source of knowledge 13:29
pmurias on the jvm if it doesn't inline it just selects a multi variant with a native argument and then just passes a regular not native int 13:31
jnthn Yeah, that approach didn't work out so well with having dynamic optimization stuff going on 13:32
Maybe what we want is just 13:33
pmurias m: my int $x = 2**63-1;say($x+1)
camelia -9223372036854775808
jnthn That result is fine
pmurias jnthn: it works differently with optimize=off 13:34
jnthn 1) if there is a call to a subroutine taking two arguments and one of them is declared native and the other is a literal that has a native value, then replace the QAST::Want with the native value
2) Then the multi-dispatch just works the same way
Yes, I already said earlier that it's only part of optimize for avodiing a separate pass
But if people are upset about --optimize=off making the difference we can do that. 13:35
In fact
Since it's a really quite local analysis anyway
We can pull it up trivially into actions I think
Since we know the types of our lexicals when we compile a call
pmurias so we want to change the semantics? 13:36
jnthn And we also can see the two args and the literal
So that's perhaps the best way to handle it
And then it's not affected by --optimize any more; that will just do the inlining
That's probably the way to do it. 13:37
pmurias do we want $x + 1 to have a different result than $y = 1; $x + $y? 13:38
jnthn Please write an example with types
So we can actually discuss this clearly
Because without them the answer is "yes" and "no" :P 13:39
pmurias m: my Int $y = 1;my int $x = 2**63-1;say($x+$y)
camelia 9223372036854775808
pmurias m: my $y = 1;my int $x = 2**63-1;say($x+$y)
camelia 9223372036854775808 13:40
pmurias m: my int $x = 2**63-1;say($x+1)
camelia -9223372036854775808
jnthn Yes, thsoe three are what I'd expect under the rules today, and under what I'm suggesting we do
It's either that or we make the user always write stuff like int(1) 13:41
So we don't have to try and infer what the literal should be
pmurias rules = the proposed rules? 13:43
m: my Int $y = 1;my int $x = 2**63-1;say($x+(1+1)) 13:44
camelia -9223372036854775807 13:45
jnthn Hm, that one way well change because it relies on constant folding having happened first
(With the move I suggested into actions) 13:46
Since we'd be moving the analysis ahead of constant folding
At the end of the day, all we're really trying to achieve here is making the language user get decent code produced when they use native types without having to annotate every single literal they mention 13:50
To me, if you've already decided to involve something that you *declared* native in an operation, and the other operand is a literal, then you most likely are expecting the native operation to take place. 13:51
That seems like a reasonable and quite easy to teach heuristic 13:52
That's what the allomorph code in Perl6::Optimizer is there to achieve today 13:53
The compile-time multi dispatch semantics were only intended, so far as I recall, to reflect what the result would be given something else already made a decision on whether a literal would count as native or not.
My proposal to move this into the actions would both resolve the "--optimize changes semantics" issue and completely decouple it from multiple dispatch, since it would take effect for single dispatch too 13:54
We are, however, left with the chaining issue 13:55
($x + $y) + 1
Which is harder to solve "peephole"-like
(Since a post-declared + may come later) 13:56
Though we could still move such things ahead or out of the optimization phase.
lizmat afk&
pmurias jnthn: I feel TimToady should have a look at the proposed semantics as it feels like a "if we tweak the semantics that way, I'll compile so right" sort of proposal 14:00
jnthn For sure, maybe he'll spot something I'm missing 14:02
So far as natives go, "we get this compile into the right thing" is the point :P
*compiled
pmurias jnthn: of course, the question is if we should add a 'literal is a native int literal under the right circumstances rule' or have the user just store the result of the operation in a native var (or pass it to a native op) 14:08
jnthn We already have that rule, so the question is if we want to remove it. 14:10
And it's there based on previous discussions about how we'd like to have things work
I agree how/where it happens could use some refinement.
pmurias jnthn: I mean add in terms of have it be the 'official' specced & documented way 14:38
jnthn I'd been under the impression that we had spectests that relied on it, but apparently not 14:39
ugexe gist.github.com/ugexe/799542ce4d1d...ac86096746 So I was chasing down this bug last night. While iterating and digging through strace output that I don't understand anything about I found this which *looked* interesting gist.github.com/ugexe/686d1f775836...xt-L20-L25 15:32
geekosaur that's just from the "cat" exiting 15:33
ugexe darn 15:34
geekosaur so, I would not want to bet on it being safe to close the output just because the input thread exited 15:37
that's not async-think
you are, in effect, assuming that the write thread finishing means that the cat synchronously finished reading what it wrote and writing it back out 15:38
ugexe well i've also tried $proc.out.slurp
jnthn $proc.out.Supply?! 15:41
I mean, it should work but it's a hell of a lot of indirection :) 15:42
ugexe that was just the latest iteration. I also tried $proc.out.slurp
jnthn This version is awaiting the wrong thing, for sure. It'd have to have a Promise that is kept when the output supply is done 15:43
slurp, otoh, really should Just Work 15:44
Seems it must be something in Proc 15:50
Because gist.github.com/jnthn/0add6b73021c...cc95d62d50 works very reliably here
geekosaur my test used saving the Supply and .wait it
but it makes me wonder if, say, we're not restarting the final read
jnthn A version that uses a Channel and Proc::Async also works 15:54
(That's interesting to try because Proc works by having Proc::Async dump incoming stuff into a Channel, so a .read-internal in Pipe just receives from the Channel)
geekosaur huuuuh 15:55
one of my runs got: Cannot invoke null object in block at test.pl6 line 16
line 16 being: $s.tap({ $total += .bytes }); 15:56
jnthn eek
That's...odd indeed
geekosaur ($s is the Supply, which I saved so I can .wait it)
ugexe i played with .wait too with no luck 15:57
geekosaur right, something weird is going on and my message might indicate it's not as simple as losing input
like, somehow the closure is being lost
jnthn Yeah, I'm also somewhat suspecting a data race hiding somewhere 15:59
In Proc. Grrr. 16:00
I sometimes think I'm never going to escape working on this. :/
geekosaur doing this both correctly and portably is known to be littered with random mines :/
jnthn But please, for anything that matters, use Proc::Async. 16:01
Proc is...trying to make something inherently async Just Work in a sync way. 16:03
And it's full of "but if we do X then we fix Y but break Z" 16:04
I suspect this issue is probably that in amongst the cleverness to try and Just Work there's no something nasty. :/ 16:05
*there's now
I'm not immediately seeing it right now, though 16:06
oh hah 16:14
That was dumb
Bad assumptions'll always get you 16:15
jnthn spectests
Geth rakudo/nom: 7b175bd4b3 | (Jonathan Worthington)++ | 2 files
Make Proc cope with zero-length buffers.

It seems libuv sometimes hands over an empty buffer from stdout or stderr. These are dutifully passed along, meaning they may also be observed coming out of Proc::Async. Proc and IO::Pipe assumed that this would not happen, and mis-handled it doing so as an indication of the end.
16:18
jnthn ugexe: That seems to fix the slurp
Probably the Supply too, but I need to wander home now 16:20
[Coke] jnthn++
ugexe ah awesome 16:51
jnthn: how did you you hunt that down? 17:10
jnthn ugexe: Eliminated Proc::Async and the .Channel coercion as likely contenders, then looked carefully at the .read-internal codepath and took a lucky guess at what might be going on :) 17:15
ugexe ah, so there is a level of intuition that is needed to debug such things effectively 17:19
jnthn Well, I figured we were looking for a reason for the slurp loop to terminate prematurely, or a way that something could get dropped 17:20
And the loop was predicated on "did we get an empty buffer" 17:21
timotimo ooooh 17:34
travis-ci Rakudo build failed. Jonathan Worthington 'Make Proc cope with zero-length buffers. 19:07
travis-ci.org/rakudo/rakudo/builds/248437879 github.com/rakudo/rakudo/compare/4...175bd4b367
buggable [travis build above] ☠ Did not recognize some failures. Check results manually.
HelpBot[perl6] github errors 19:08
travis-ci.org/rakudo/rakudo/builds/248437879 19:09
buggable [travis build above] ✓ All failures are due to timeout (0), missing build log (0), GitHub connectivity (1), or failed make test (0).
dogbert2 m: say [1,2,3].dynamic # does the dynamic method tell you whether the (array in this case) has been declared with the 'is dynamic' trait? 21:08
camelia False
dogbert2 m: my @a = ^3 is dynamic; say @a.dynamic 21:10
camelia 5===SORRY!5=== Error while compiling <tmp>
Two terms in a row
at <tmp>:1
------> 3my @a = ^37⏏5 is dynamic; say @a.dynamic
expecting any of:
infix
infix stopper
postfix
statement end
dogbert2 m: my @a is dynamic = ^3; say @a.dynamic 21:11
camelia True
jnthn Yes.
m: my @*a; say @a.dynamic 21:12
camelia 5===SORRY!5=== Error while compiling <tmp>
Variable '@a' is not declared
at <tmp>:1
------> 3my @*a; say 7⏏5@a.dynamic
jnthn m: my @*a; say @*a.dynamic
camelia True
jnthn And * applies it for you
dogbert2 jnthn: thx, it the trai is documented but the method is not. Will fix that
so is * syntactic sugar for is dynamic? 21:13
jnthn In a declaration, yes
dogbert2 anything else I should know about it from a doc standpoint? 21:14
jnthn @*foo outside of a decalration means to look it up using dynamic scope, not lexical scope
dogbert2 cool, so even if a var is declared as 'is dynamic' you can choose which scope to use? 21:15
jnthn Well, thing is
my @*foo installs the variable under the name @*foo 21:16
my @foo is dynamic installs it under the name @foo
And that means you can't look the latter up as @*foo, you'd have to do something like DYNAMIC::<@foo> or so
dogbert2 interesting 21:17
will write something up for Hash and Array then 21:20
my @*foo is dynamic # what happens now 21:28
m: my @*foo is dynamic # what happens now
camelia ( no output )
jnthn That's just a waste of chars :) 21:31
dogbert2 jnthn: should I add/change anything in the doc? gist.github.com/dogbert17/8260285b...c775dd4afe 21:44
jnthn Yes, though you may want to note that in the Scalar case you ahve to ask $foo.VAR.dynamic 21:45
dogbert2 will do 21:46
updated the gist 22:00
.ask AlexDaniel when did you last run your script which finds broken links in the docs? 22:07
yoleaux dogbert2: I'll pass your message to AlexDaniel.
AlexDaniel .
yoleaux 22:07Z <dogbert2> AlexDaniel: when did you last run your script which finds broken links in the docs?
AlexDaniel when it was marked in the ticket
I'll run it again right now then
dogbert2 AlexDaniel++ 22:08
AlexDaniel dogbert2: FWIW, so far I've been doing just this: checklink -b -D 25 -q doc.perl6.org | tee "$(date '+%F')" 22:09
so it's something anybody can run, actually
in fact, it would be nice to do it in some sort of automated way… 22:10
HelpBot[perl6] ZOFFLOP: t/spec/S12-attributes/class.t
ZOFFLOP: t/spec/S17-supply/supplier-preserving.t 22:11
t/spec/S03-operators/mix.t
I'm guess the failures in /mix.t ain't due to my change
AlexDaniel dogbert2: it will take ≈30 minutes I think :) 22:12
dogbert2: github.com/perl6/doc/blob/master/d...#L402-L403 22:16
dogbert2 AlexDaniel: nice find: L<SetHash|/type/BSetash> 22:19
AlexDaniel awwww… some broken html… 22:20
didn't we fix <a> inside <a> problem?
dogbert2 I thought so 22:21
AlexDaniel docs.perl6.org/type/Pod::Block::Para 22:22
see line 322 for example
<a class="u" href="#___top" title="go to top of document"><a href="/routine/contents#class_Pod%3A%3ABlock">
Geth roast: a1d5c4e6d0 | (Zoffix Znet)++ | S06-other/main.t
Remove trailing whitespace
22:32
rakudo/nom: 40b0169d08 | (Zoffix Znet)++ | src/core/Main.pm
Replace $*MAIN-ALLOW-NAMED-ANYWHERE

With %*SUB-MAIN-OPTS. The way the arguments are parsed is a contentious issue and we might see more options being proposed. There's a motion[^1] to have the $*MAIN-ALLOW-NAMED-ANYWHERE be specced, which was mostly added as a hack[^2] (for panda?). So, pre-emptively let's spec an options hash in which we can keep this and all future options. ... (7 more lines)
22:33
roast: 754a45c006 | (Zoffix Znet)++ | S06-other/main.t
Spec %*SUB-MAIN-OPTS<named-anywhere>

Rakudo impl: github.com/rakudo/rakudo/commit/40b0169d08 Closes github.com/perl6/roast/issues/274
AlexDaniel “zoffixznet commented 9 hours ago” :) 22:40
that was pretty accurate
HelpBot[perl6] ? 22:43
Ah my saying in 10 hours
AlexDaniel e: dd %*SUB-MAIN-OPTS 22:47
evalable6 {}
HelpBot[perl6] e: say $*PERL.compiler.version 22:48
evalable6 v2017.06.112.g.40.b.0169.d.0
AlexDaniel HelpBot[perl6]: can we put named-anywhere => False there by default?
HelpBot[perl6] Dunno. Avoiding repetition is nice :/ 22:49
AlexDaniel what repetition?
I'm just thinking that it will make it easier for users
just dump %*SUB-MAIN-OPTS and see what options are available and what their default values are 22:50
HelpBot[perl6] m: say %*ENV<PERL6_TEST_DIE_ON_FAIL>
camelia (Any)
HelpBot[perl6] AlexDaniel: ah. OK
Geth rakudo/nom: e2517f802b | (Zoffix Znet)++ | src/core/Main.pm
Include default %SUB-MAIN-OPTS arguments in it; AlexDaniel++
23:07
roast: c72357d46a | (Zoffix Znet)++ | S06-other/main.t
Test %SUB-MAIN-OPTS has stuff in it

Discussion: irclog.perlgeek.de/perl6-dev/2017-...i_14806565 Rakudo impl: github.com/rakudo/rakudo/commit/e2517f802b
23:08
AlexDaniel
.oO( what if that's the only option we will ever add :) )
23:10
HelpBot[perl6] Unlikely. %SUB-MAIN-OPTS<parser> = Getopts::Whatever looks very attractive 23:21
travis-ci Rakudo build errored. Zoffix Znet 'Replace $*MAIN-ALLOW-NAMED-ANYWHERE 23:28
travis-ci.org/rakudo/rakudo/builds/248567744 github.com/rakudo/rakudo/compare/7...b0169d0846
buggable [travis build above] ☠ Did not recognize some failures. Check results manually.
AlexDaniel dogbert2: I think I'll rerun it with a hope of a better result… 23:30
because BSetHash appears way too many times, I think :) 23:31
why do we see travis complaining for docs? 23:32
“The job exceeded the maximum time limit for jobs, and has been terminated.” – sure, but what maybe it slower?
HelpBot[perl6] syntax highlights IIRC 23:33
Or rather, building all the stuff
For syntax highlights. + more docs maybe? ::)