Geth rakudo/nom: 8990529295 | (Zoffix Znet)++ | src/core/Str.pm
Remove trailing whitespace
00:17
rakudo/nom: 6e9d08c8ba | (Zoffix Znet)++ | src/core/Str.pm
move Str.subst proto to be next to its methods

No functional changes. The proto for Str.subst seems to be hundreds of lines away from Str.subst methods, tucked next to Str.substr-*
Fix by moving the proto in the source code.
00:18
rakudo: wchristian++ created pull request #1011:
RFC: increase readability of REPL.pm by reducing verbosity
00:21
rakudo/nom: 354ad9ab1c | (Christian Walde)++ | src/core/REPL.pm
increase readability of REPL.pm by reducing verbosity
01:10
rakudo/nom: f249689979 | (Zoffix Znet)++ | src/core/REPL.pm
Merge pull request #1011 from wchristian/readability

RFC: increase readability of REPL.pm by reducing verbosity
TimToady heh, I'm told that six or eight generations back, my last name used to be spelled "Walde" 01:42
MasterDuke TimToady: in a quick attempt to get rid of @*comp_line_directives, i tried turning it into an attribute (with an accessor method) in src/HLL/World.nqp and then calling $*W.comp_line_directives() in src/HLL/Compiler.nqp 01:45
but it compains, `Cannot find method 'comp_line_directives' on object of type NQPMu`
*complains 01:46
TimToady it might be set up before there even is a World 01:53
I wouldn't sweat it too much; it might end up riding around in the new braid object anyway 01:54
MasterDuke k, i'll leave it for now at least 01:58
pyrimidine_ Anyone present who knows much about dynamic module loading? I've run into a bug: RT#130709 04:49
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130709
pyrimidine_ it seems to be related to some of the lexical module fixes in August
travis-ci Rakudo build passed. Elizabeth Mattijsen 'Streamline Any::IterateTwoWithoutPhasers.push-all 07:14
travis-ci.org/rakudo/rakudo/builds/197467470 github.com/rakudo/rakudo/compare/b...15a4d649ec
Geth nqp/braids: e40c5baa97 | TimToady++ | 2 files
Add Braid type, move actions to braid object

Cursors now maintain a braid delegate to hold aspects of the current language braid that are outside the scope of the current set of cursor methods, but nonetheless contribute to the notion of "current language" in the current lexical scope. We will be migrating various dynamic variables into the braid over time, such as %*LANG, %*PRAGMAS, and $*PACKAGE.
07:45
rakudo/braids: f526c7d72d | TimToady++ | 2 files
Start using new braid abstractions from nqp

We will gradually be weaning rakudo off of direct manipulation of cursors and dynvars so that we can abstract the various "current language" concepts into the Braid object that hangs off the current cursor.
[Tux] This is Rakudo version 2017.01-148-gf24968997 built on MoarVM version 2017.01-25-g70d4bd53 09:34
csv-ip5xs 2.755
test 13.105
test-t 4.808 - 2nd run 4.935
csv-parser 13.014
brrt pmurias: NQP commit 5490db6fe491f30edf9de1e553782655acc3b6d3 changes a test in t/qast/01-qast.t that breaks on MoarVM 09:46
i don't know what you intended to hapepn, and if MoarVM behaviour is really wrong, so I'm not sure what to do next
Geth geth: 40e5ce18e6 | (Zoffix Znet)++ | lib/Geth/Plugin/GitHub.pm6
Remove confusing … from 3-10 commit reports
11:04
brokenchicken it fails in not ok 26 - Exception in is_qast: equal requires a concrete string, but got null, test: str local has a zero default 11:12
m: local str $x; dd $x
camelia rakudo-moar f24968: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Two terms in a row␤at <tmp>:1␤------> 3local str7⏏5 $x; dd $x␤ expecting any of:␤ infix␤ infix stopper␤ postfix␤ statement end␤ statement modifier…»
brokenchicken m: my str $x; dd $x
camelia rakudo-moar f24968: OUTPUT«""␤»
brokenchicken nqp: QAST::Block.new( QAST::Var.new( :name('not_set'), :scope('local'), :decl('var'), :returns(str) ), QAST::Op.new(:op<say>, QAST::Var.new(:name('not_set'), :scope('local'))) ) 11:17
camelia ( no output )
brokenchicken :(
travis-ci Rakudo build passed. Elizabeth Mattijsen 'Streamline Any::IterateTwoWithoutPhasers.sink-all 11:31
travis-ci.org/rakudo/rakudo/builds/197473094 github.com/rakudo/rakudo/compare/9...84939eb147
brrt brokenchicken, yeah, so why does it 11:44
Geth nqp: 3fbb5545ad | (Pawel Murias)++ | t/qast/01-qast.t
Fix test.
11:50
nqp: 5b811222ca | (Pawel Murias)++ | src/vm/js/Compiler.nqp
[js] Initialize str variables with null_s instead of ''.
brokenchicken \o/
travis-ci NQP build passed. Pawel Murias '[js] Initialize str variables with null_s instead of ''.' 11:53
travis-ci.org/perl6/nqp/builds/197975244 github.com/perl6/nqp/compare/f21c8...811222cab0
lizmat commute to Brussels& 12:59
nine is sitting at Vienna airport and very much looking forward to seeing Liz&Wendy&friends :) 13:12
tadzik I'm leaving soon too :) 13:13
nine yeah :) 13:14
Looks like my talk's gonna take about 30 minutes which is probably ok for a 40 minute slot with no breaks between talks. 13:15
samcv how do i compile perl 6 for js? 13:54
err nqp. it compiles right? 13:55
[Coke] ISTR pmurias had some special instructions still. 13:59
[Coke] sees brokenchicken and is reminded to do something!
brokenchicken ? dop what? 14:00
? do what?
perlpilot
.oO( fix the chicken? )
14:06
geekosaur (do the funky chicken?) 14:07
[Coke] brokenchicken: check your email?
brokenchicken "Inbox (2487 new)" 14:08
[Coke] I'm your grant manager! 14:09
brokenchicken Aha :)
Sure. Sounds good. I'll post reports on blogs.perl.org, since I see pmurias doing it that way. Right?
perlpilot doh! And I just realized that I forgot to add my voice to the chorus in support of that grant. 14:11
[Coke] brokenchicken: yes, that's fine. 14:12
[Coke] ¿accidentally? volunteers for something. 14:13
Geth nqp: afab417317 | (Zoffix Znet)++ | tools/build/MOAR_REVISION
(moar bump) Fix nqp::div_i / optimize nqp::radix_I

  github.com/MoarVM/MoarVM/compare/2...0-g9258aca
15:05
¦ nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...0-g9258aca
rakudo/nom: c98b3a581f | (Zoffix Znet)++ | tools/build/NQP_REVISION
(nqp bump) Fix premature overflow in nqp::div_i()

On MoarVM, the op uses int which overflows on large numbers, making the op produce wrong results. Fix by using MVMint64 instead.
Fixes RT#130686: rt.perl.org/Ticket/Display.html?id=130686
Bump brought commits:
  github.com/perl6/nqp/compare/2017....7-gafab417
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130686
¦ rakudo/nom: version bump brought these changes: github.com/perl6/nqp/compare/2017....7-gafab417
roast: 13535c7fb5 | (Zoffix Znet)++ | S03-operators/div.t
Test `div` does not prematurely overflow on large `int`s

RT#130686: rt.perl.org/Ticket/Display.html?id=130686
Rakudo fix: github.com/rakudo/rakudo/commit/c98b3a581f NQP fix: github.com/perl6/nqp/commit/afab417317 MoarVM fix: github.com/MoarVM/MoarVM/commit/9258acaffd
15:07
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130686
pmurias brrt: sorry, the test was wrong 15:14
brrt which test what 15:25
oh, np
pmurias brrt: the qast test I broke
brrt :-)
i figured
it happens
pmurias it should be fixed now
travis-ci Rakudo build passed. Zoffix Znet 'Fix infix:<before>/infix:<after> for Complex 15:27
travis-ci.org/rakudo/rakudo/builds/197514867 github.com/rakudo/rakudo/compare/7...3162c1275f
brokenchicken FWIW, I've not restarted SourceBaby/Undercover for a couple of months (I think?) and they were in just 600-700MB of used RAM. Whatever's leaking in buggable has gotta be applying a regex to a huge chunk of text (entire Travis build log). 16:05
Don't think I'll have the time to golf it any time soon, but yey for other bots seemingly not leaking :) 16:06
jnthn brokenchicken: What Rakudo version? 16:07
A MoarVM commit almost right after the January release fixed a major release
brokenchicken SourceBaby/Undercover were running on some 2016.10-* commit. The box with buggable has 2017.01-144-gf2894d3 installed, but I'm pretty sure the last time I saw it leak it was a slightly earlier commit 16:08
like maybe a week earlier
jnthn OK
Anything using Proc::Async will have got a good bit less leaky
brokenchicken I think it's something with regexes... 16:09
And well, should be easy enough to find out what it is. I just need to find time to do it. 16:10
wooo found a fix for 130688 17:21
And seems $caller_dollar_slash / $SET_DOLLAR_SLASH in Str!APPLY-MATCHES are useless 17:22
brokenchicken always gets suspicious when finding "useless" chunks of code
The method's called only from .subst/.subst-mutate (and Actions for s/// / S///) but in all those cases dollar slash is already set by Str.match call, so there's no point in asking APPLY-MATCHES to set anything. In fact, it's what causing the 130688 bug 17:24
And I don't get why does s/// S/// call .match / !APPLY-MATCHES instead of just calling .subst/.subst-mutate :\ 17:49
:S and apparently s/// | S/// code creates $global_result just to re-bind $result to it, just before sticking it into $/ :/ 18:14
Though I broke something by removing this stuff, so I guess I'm wrong :} 18:18
[Coke] how can I tell what multi is going to get called? 18:21
brokenchicken .cando 18:23
m: &comb.cando( \("meow", 2) )[0].signature.say
camelia rakudo-moar c98b3a: OUTPUT«(Str $matcher, Cool $input, $limit = *)␤»
brokenchicken m: &comb.cando( \("meow", /^/) )[0].signature.say 18:24
camelia rakudo-moar c98b3a: OUTPUT«Nil␤»
brokenchicken orly
m: say comb "meow", /^/
camelia rakudo-moar c98b3a: OUTPUT«Cannot resolve caller comb(Str, Regex); none of these signatures match:␤ (Regex $matcher, Cool $input, $limit = *)␤ (Str $matcher, Cool $input, $limit = *)␤ (Int:D $matcher, Cool $input, $limit = *)␤ in block <unit> at <tmp> line 1␤␤»
brokenchicken Ah, matcher goes firsr
m: &comb.cando( \(42, "meow") )[0].signature.say
camelia rakudo-moar c98b3a: OUTPUT«(Int:D $matcher, Cool $input, $limit = *)␤»
brokenchicken m: &comb.cando( \("x", "meow") )[0].signature.say 18:25
camelia rakudo-moar c98b3a: OUTPUT«(Str $matcher, Cool $input, $limit = *)␤»
brokenchicken It gives you all the matching candidates in narrowest -> widest order
And IIRC for methods you need to include the invocant in the capture you give it
Hm. Weird. I stuck this debug statement into actions quote:sym<s>: QAST::Op.new(:op<say>, QAST::Op.new( :op<callmethod>, :name<gist>, QAST::Var.new( :name('$/'), :scope('lexical') ) )) 18:28
[Coke] weird. it's finding hte method I thought it was, but then my { die "AAA" } in that sub is never invoked.
brokenchicken And it prints TWICE for each of invocation of s/// :S
[Coke] DOH. installed vs. local.
yay, my patch worked. 18:29
brokenchicken hm, but sticking QAST::Op.new(:op<say>, QAST::SVal.new(:value<meows>)), right before that debug statement prints 'meows' just once :S 18:37
brokenchicken doesn't get this...
m: "x" ~~ s/.//; $/.gist 18:38
camelia rakudo-moar c98b3a: OUTPUT«Cannot modify an immutable Str␤ in block <unit> at <tmp> line 1␤␤»
brokenchicken m: ($ ="x") ~~ s/.//; $/.gist
camelia ( no output )
brokenchicken vov
And I changed it to QAST::Op.new( :op<callmethod>, :name<gist>, QAST::Var.new( :name('$/'), :scope('lexical') ) ), and now it prints it just once... waaaaaaat 18:39
oh, I had code as `say s///` oops :P 18:40
-_- don't get it. With my patch $_ = "a b c"; .subst-mutate: :g, / (\w) /, -> $/ { "$0$0" }; replaces with "aa bb cc" but s:g/ (\w) / $0$0/; replaces with "aa aa aa"; my debug print of APPLY-MATCHES shows both versions give the same args and $/ ends up being the same :| 19:45
timotimo maybe the s:g/ / / form tries to go with the lexical $/ outside of the s/// call? 19:57
brokenchicken APPLY-MATCHES doesn't do anything with it and takes matches via an arg; I dumped it from inside APPLY-MATCHES and it's the same for both versions 19:59
brokenchicken goes to compare ASTs 20:00
timotimo unfortunately i don't know how that part of rakudo plays 20:04
brokenchicken I saw the light. 20:29
And I was right... three hours ago... "* │ brokenchicken always gets suspicious when finding "useless" chunks of code"
The s/// S/// forms give matches lazily and rely on $/ being swapped for each substitution, while .subst-mutate expects args to the codeblock 20:30
At least now I have a much better knowledge of thist stuff :) 20:31
Well, if the stresstest ends up clean I will have fixed 130688 and may even have time to commit it before I have to relocate :) 20:41
travis-ci Rakudo build passed. Zoffix Znet 'Revert "Fix infix:<before>/infix:<after> for Complex" 20:43
travis-ci.org/rakudo/rakudo/builds/197517075 github.com/rakudo/rakudo/compare/a...92994729f7
brokenchicken Hm, and it's not 20:46
m: $_ = "(foo,bar,(baz))"; $_.=subst( /<-[(),]>+/, { "|$/|" }, :g ); say $_
camelia rakudo-moar c98b3a: OUTPUT«(|foo|,|bar|,(|baz|))␤»
brokenchicken That now gives: (|foo bar baz|,|foo bar baz|,(|foo bar baz|))
But I'd argue the new version is correct. The block doesn't receive it's own $/; if you want to use $/ inside, block needs to be -> $/ { } 20:47
Well, s/new version/; The only reason it ends up as anything is matches are done before replacements.
Hm. Need to think about this. 20:48
m: say 'fog'.subst: :g, /(.)/, { $0.uc }
camelia rakudo-moar c98b3a: OUTPUT«FOG␤»
brokenchicken And in my version that ends up as FFF 20:49
k, need a differnt fix :)
s/But I'd argue//; # not having to stick -> $/ on it every time is very useful 20:50
Gonna fix later tonight
brokenchicken relocates
gfldex m: use variables :D; sub f(Str $s){ say $s }; f Str; 22:35
camelia rakudo-moar c98b3a: OUTPUT«(Str)␤»
gfldex this feels wrong
brokenchicken Yeah, SmokeMachine pointed that out earlier today. Unsure if they created a ticket for it yet. 22:50
Oh wait
Now I remember
It's supposed to be affected by `use params` not variables, but it's not yet implemented 22:51
m: use param :D
camelia rakudo-moar c98b3a: OUTPUT«===SORRY!===␤Could not find param at line 1 in:␤ /home/camelia/.perl6␤ /home/camelia/rakudo-m-inst-2/share/perl6/site␤ /home/camelia/rakudo-m-inst-2/share/perl6/vendor␤ /home/camelia/rakudo-m-inst-2/share/perl6␤ CompUnit::Reposit…»
brokenchicken m: use params :D
camelia rakudo-moar c98b3a: OUTPUT«===SORRY!===␤Could not find params at line 1 in:␤ /home/camelia/.perl6␤ /home/camelia/rakudo-m-inst-2/share/perl6/site␤ /home/camelia/rakudo-m-inst-2/share/perl6/vendor␤ /home/camelia/rakudo-m-inst-2/share/perl6␤ CompUnit::Reposi…»
brokenchicken looks at backlog
m: use parameters :D
camelia rakudo-moar c98b3a: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤use parameters not yet implemented. Sorry. ␤at <tmp>:1␤------> 3use parameters :D7⏏5<EOL>␤»
brokenchicken gfldex: ^
m: use attributes :D 22:52
camelia ( no output )
brokenchicken And I guess that one is for class/role attrs
Geth rakudo/nom: 98f9d8a7d6 | (Elizabeth Mattijsen)++ | src/core/Iterator.pm
Remove unnecessary not_i from Iterator.push-exactly

By using an until instead of a while. It's the microest of micro-opts but in a method that is used by a lot of array / list accesses.
22:57
lizmat .tell jnthn there's a bunch of methods in core (e.g. .eager) that have a proto with (|), but never take any arguments. Making the proto have () appears to make it 4% faster. Do you see any downsides to this? 23:36
yoleaux2 lizmat: I'll pass your message to jnthn.
SmokeMachine I didn't open any ticket... :( 23:37
brokenchicken SmokeMachine: nah, no need. I misremembered what happened. 23:38
SmokeMachine variables, parameters and attributes... 23:41
jnthn lizmat: Well, it'd only mean that nobody could add a multi that did have args in a subclass 23:43
yoleaux2 23:36Z <lizmat> jnthn: there's a bunch of methods in core (e.g. .eager) that have a proto with (|), but never take any arguments. Making the proto have () appears to make it 4% faster. Do you see any downsides to this?
jnthn lizmat: But, for eager at least, that seems overwhelmingly unlikely :)
lizmat but wouldn't somebody just need to add their own proto if they wanted an eager with params ?
jnthn They can, but of course they'd also need to handle the zero-arg case 23:44
But it's such a hypothetical thing to want to do anyway, for eager... :)
So, for that case I think no problem to change it
lizmat well, there's a bunch of them
jnthn OK, probably worth considering each of them :) 23:45
lizmat pairup minpairs maxpairs Array List flat
jnthn Array and List are coercers
lizmat hash Hash Map
jnthn flat is like eager
Those are all coercers
So only pairup minpairs maxpairs warrant any particular thought 23:46
And...I can't think of a reason why they can't have () either :)
samcv 4% faster is good :)
lizmat yeah, seems like an easy win :-)
jnthn So, no objects from me on any of those getting ()
*objections
Hope all's well in Brussels? :) 23:47
jnthn drank a Kwak in support of the Perl 6 folk in Brussels :)
lizmat all's well in Brussels so far
the booth has been set up already, so that's a lot less work tomorrow morning :-) 23:48
jnthn Cool :)
lizmat the reason I asked about (|) is that I realized I had (probably inadvertently) done this with .Bool
last March 23:49
going to use that as an example in my talk :-)
jnthn :)
jnthn wonders why it's more expensive...
Given that after the first hit, we should be hitting the multi cache.
samcv m: say so '_' ~~ /<alpha>/ 23:51
camelia rakudo-moar 98f9d8: OUTPUT«True␤»
samcv seems i found a bug in <alpha>. <:alpha> doesn't have this issue
jnthn That's by design, I believe. 23:52
samcv really?
jnthn design.perl6.org/S05.html#Predefined_Subrules
Yup
Been that way for years 23:53
samcv gist.github.com/Whateverable/0a0c7...e560ca639a this is the full list of differences
m: say '🅐' ~~ /<alpha>/ 23:54
camelia rakudo-moar 98f9d8: OUTPUT«Nil␤»
samcv m: say '🅐' ~~ /<:alpha>/
camelia rakudo-moar 98f9d8: OUTPUT«「🅐」␤»
samcv it doesn't seem to be as simple as, <:alpha> plus underscores
lizmat jnthn: re Seq.iterator, should we worry about races there if two threads try to do a .iterator on the same Seq ?
jnthn No 23:55
Iterators aren't thread-safe
lizmat oki
jnthn There's a module Concurrent::Iterator though :)
Geth rakudo/nom: f799a03fcc | (Elizabeth Mattijsen)++ | src/core/Seq.pm
Streamline Seq.sink

No need to call .iterator when we already have it in $!iter.
23:57
samcv ok <alpha> is not like <:alpha> it means character class alphabetic 23:58
which are different things
it doesn't include Nl's or marks 23:59