ugexe zef master (0.1.13) now sends reports to p6c testers if Net::HTTP is installed, and to cpan testers if Zef::CPANReporter is installed (not in ecosystem yet, but can `zef install github.com/garu/Zef-Reporter`) 01:24
the cpan test reports dont seem to be viewable by the web ui yet, but i assure you they are being stored 01:26
[Tux]: gist.github.com/ugexe/0e77eaba67c8...a59f20c164 # installs Text::CSV from cpan and sends test report to cpan testers 02:11
[Tux] ugexe++ 06:26
This is Rakudo version 2017.04.3-275-g84502dc20 built on MoarVM version 2017.04-64-g6d5ea042 06:39
csv-ip5xs 2.539
test 12.727
test-t 4.336 - 4.341
csv-parser 12.659
lizmat . 07:24
yoleaux 16 May 2017 11:27Z <Zoffix> lizmat: just remembered, it was samcv++ that fixed the +> op in MoarVM. I just removed a kludge from rakudo
lizmat .tell Zoffix fixed +> in P6W, thanks! 07:25
yoleaux lizmat: I'll pass your message to Zoffix.
lizmat hmmm... looking at supporting System::Info on Win: but that's a rabbit hole requiring Win32 and Win32::TieRegistry modules :-( 08:32
m: EVAL "print $^O":lang<Perl5> 08:57
camelia 5===SORRY!5=== Error while compiling <tmp>
Unsupported use of $^O variable; in Perl 6 please use VM.osname
at <tmp>:1
------> 3EVAL "print $^O7ā5":lang<Perl5>
lizmat m: EVAL q/print $^O"/,:lang<Perl5> 09:07
camelia Could not find Inline::Perl5 at line 0 in:
/home/camelia/.perl6
/home/camelia/rakudo-m-inst-1/share/perl6/site
/home/camelia/rakudo-m-inst-1/share/perl6/vendor
/home/camelia/rakudo-m-inst-1/share/perl6
CompUnit::Repository::ā€¦
lizmat hmmm
jnthn lizmat: I think you can probably bind Windows registry lookups using NativeCall 09:20
eater ohh 09:21
jnthn I've certainly called Win32 API using NativeCall in the past 09:22
lizmat jnthn: that'd be well possible, but I've eradicated Windows from my lIfe well over 15 years ago
jnthn VM? :P :P 09:23
lizmat so what I'm going to do is to make System::Info::Generic depend on Inline::Perl5 -> System::Info there
jnthn My new dev machine in the office doesn't actually have Windows at all yet either :)
lizmat and let other people provide PR's for their native system
jnthn And I need to figure out why on earth VirtualBox's kernel module isn't loading :/ 09:24
OK, but Inline::Perl5 isn't in Rakudo Star yet? And I thought that System::Info would want to be part of that?
lizmat I thought Inline::Perl5 *was* part of R* ? 09:27
samcv oh yeah that is a thing i did. also hi everyone 09:32
being sick is no fun. was sick all day
jnthn did that all day yesterday and can fully agree :/ 09:33
lizmat samcv: know the feeling... bad cold during PTS
woolfy was well on her way to get pneumonia
hmmm... so why is zavolaj still part of R* ? 09:35
jnthn No idea :) 09:36
The only thing in that repo now is examples
lizmat hmnmm...
jnthn I didn't even think it was listed in the ecosystem now :) 09:37
Since NativeCall is bundled
(With Rakudo)
lizmat guess I was looking at an old repo somehow 09:38
so why isn't Inline::Perl5 part of R* ?
alternately, maybe we should set up a different meta-distro for testers ? 09:39
Zoffix . 09:55
yoleaux 07:25Z <lizmat> Zoffix: fixed +> in P6W, thanks!
nine AFAIK the list of modules contained in R* ist purely historical and has no system whatsoever 10:22
lizmat if "use System::Info:from<Perl5>" works, shouldn't "require System::Info:from<Perl5>" also work ? 11:40
nine: P6M Merging GLOBAL symbols failed: duplicate definition of symbol Darwin :-( 12:21
jnthn If only we had a way to know which one should survive... 12:23
lizmat didn't we have a syntax to rename a module with ? 12:25
jnthn OK, beanstalk makes reverts easy
uh, ww
lizmat guess it's NYI: 12:26
$ 6 'use System::Info:from<Perl5>:as<Foo>; dd Foo.new'
===SORRY!=== Error while compiling -e
Undeclared name:
Foo used at line 1
jnthn Wasn't it called :name ? 12:28
lizmat nope :-( same error
jnthn aww 12:29
Geth rakudo/nom: 2e34c9e015 | (Zoffix Znet)++ | src/core/Str.pm
Remove comments about deprecating $limit in Str.lines/words

No, we shouldn't deprecate this feature, as it serves a very useful feature in IO::Handle.lines/words: closing the handle when reaching the limit. The Str.* routines then have the $limit param to maintain consistent interface with the IO versions.
12:33
nine lizmat: ooooh, that may be what the local changes were about. Found something about require in my Inline-Perl5 repo but didn't remember what that was actually about 12:39
lizmat nine: my approach would be to try to use Perl5's version of System::Info until we have a Perl 6 version available 12:40
nine lizmat: :as or :name support would have to be implemented in Inline::Perl5 itself, but I didn't even know that it exists :)
lizmat: you can however use the module in its own lexical scope 12:41
{ use System::Info:from<Perl5>; #`expose it somehow to the outside` }
Zoffix m: dd WHAT lines "a\nb"
camelia Seq
lizmat $ PERL6LIB=lib 6 'use System::Info; { use System::Info:from<Perl5> }' 12:42
===SORRY!===
P6M Merging GLOBAL symbols failed: duplicate definition of symbol Info
Zoffix m: dd .WHAT for (lines "a\nb"), (lines "a\nb", 2), (words "f b"), (words "f z", 2)
camelia Seq
List
Seq
List
Zoffix :(
lizmat nine: like this ^^^
nine darn
lizmat Zoffix: fix under way 12:44
Zoffix OK. Though I'm about to commit a fix for a different bug to Str.words $limit 12:45
ZOFVM: Files=1242, Tests=135582, 108 wallclock secs (21.88 usr 3.18 sys + 2249.35 cusr 144.81 csys = 2419.22 CPU)
lizmat Zoffix: - !! self.lines[ lazy 0 .. $limit.Int - 1 ] 12:46
+ !! self.lines.head($limit)
- !! self.words[ 0 .. $limit.Int - 1 ]
+ !! self.words.head($limit)
should be oodles faster as well
and lazier
Geth rakudo/nom: 641641f9d4 | (Zoffix Znet)++ | src/core/Str.pm
Fix Str.words($limit) padding returned list with Nils

We don't pad stuff in any of the related routines that accept limit. Fix by making words return up-to-$limit elements.
Zoffix lizmat: oh and that fixes that bug too 12:47
m: dd <a b c d e>.head: 100
camelia ("a", "b", "c", "d", "e").Seq
Geth rakudo/nom: d70bf14afc | (Zoffix Znet)++ | src/core/Str.pm
Revert "Fix Str.words($limit) padding returned list with Nils"

This reverts commit 641641f9d44dc2f172f586b0e9e147b6174cc850.
lizmat yup
Zoffix lizmat: sorry :) Go ahead :)
lizmat running spectest now, will in a mo 12:48
argh spectest failures 12:49
Zoffix weird 12:50
lizmat checking errors now
Zoffix Other than Inf and * limit, doesn't look like $limit is tested at all in S32-str/words.t 12:51
lizmat perhaps I didn't have the off-by-one error fix yet
yeah, it was that 12:53
Zoffix \o/
Geth rakudo/nom: 4bcf84a2c7 | (Elizabeth Mattijsen)++ | src/core/Str.pm
Fix various issues with Str.(lines|words)($limit)

Original code predated the existence of .head. Both forms of calling
  .lines and .words on Str should now return .Seq and be properly lazy.
[Coke] doc examples failing on doc/Language/list.pod6 and doc/Type/Any.pod6
(any is missing a comment on the OUTPUT lines) 12:55
List put a syntax error in a code block that is compiled to be tested.
lizmat afk for some fresh air (for some value of fresh at 30 degrees C) 12:56
[Coke] .seen skids
yoleaux I saw skids 00:31Z in #perl6: <skids> o/
Zoffix Fixed a couple; dunno if all 12:57
dogbert11 [Coke], I was making changes to Any yesterday, where is the error? 12:58
[Coke] Zoffix++ 12:59
dogbert11: already fixed.
github.com/perl6/doc/commit/7ef469cca3
dogbert11 cool, I guess it was the new duckmap examples
[Coke] Remember, all the examples are compiled unless explicited tagged 13:00
dogbert11 what do I have to do in order to verify the code examples?
or would it have been enough to do a 'perl6 htmlify.p6' 13:01
[Coke] Zoffix: -1 on adding that extra space.
dogbert11: 'make xtest'
dogbert11 [Coke], thx, will keep that in mind
[Coke] xtest runs test plus some extra (slower) stuff. consensus was that we didn't want a some things to break the build because they were hard to get right when editing via the github UI 13:02
I think the examples can probably be moved to test/ at this point, and that they should break the build.
dogbert11 ok :) now I'm up to speed 13:03
Zoffix pmurias[TAB]... 13:05
*sigh* the devs don't even bother joining the -dev channel anymore :/ 13:06
ugexe is it possible to capture the stdout/stderr from a specific thread only? or for that thread to capture only its own stdout/stderr (and not anything from the parent)?
Zoffix pmurias: MoarVM does return `. ..` for opendir/nextfiledir but JVM doesn't, so there's a precedent for not returning it, and we can just add js to the `#ifjvm` blocks here, I guess: github.com/rakudo/rakudo/blob/nom/...#L579-L588 13:07
[Coke]: reverted 13:09
jnthn ugexe: Are you creating the thread directly rather than using the pool? If so, setting $*OUT and $*ERR should work out 13:11
Since everything that runs on the thread will use them
ugexe jnthn: i haven't tried it yet, but basically yeah I have something that prints to stdout/stderr and want to create an interface to the output like Proc's :out/:err - but whatever is using this interface would likely print whatever it gets through this interface to stdout itself after processing it. I wasn't sure if using $*OUT would cause an infinite loop in this case like it would if no new thread was 13:16
used
jnthn I guess just make really sure that the processing of the output happens somewhere other than the thread that's collecting it 13:20
So then the collecting $*OUT/$*ERR will not be in scope 13:21
Geth rakudo/nom: f3f99b3ac4 | (Zoffix Znet)++ | lib/Test.pm6
Fix crash in is-deeply when Seq type objects are given
13:22
roast: 3ea879737b | (Zoffix Znet)++ | S24-testing/9-is_deeply.t
Test is-deeply does not crash with Seq type objects
13:23
ugexe m: my $s = Supplier.new; my $err-supply = $s.Supply; $err-supply.tap({ note $_ }); my $stderr = $*ERR; my $err = ""; my class ERR_CAPTURE { my $err-store = ""; method print(*@_) { $err ~= @_.join("\n"); my $self = self; $*ERR = $stderr; $s.emit($_) for @_; $*ERR = $self; $err ~= $err-store; True }; }; my $t = start { $*ERR = ERR_CAPTURE.new; note 1; }; await $t; $*ERR = $stderr; 13:29
camelia 1
ugexe assuming I use a lock around a method to write to $err instead of directly using $err ~= the above should be good then? or am I getting lucky with thread-ids being the same (so no error)? 13:31
i thought I would not need the logic in method print to switch $*ERR to/from the capturing class using a thread, but without it its stuck 13:35
jnthn Yes, supplies don't ever switch to a new thread
The tap block will run on the thread that does the .emit, not on the thread that did the .tap 13:36
ugexe ah
jnthn A neat trick is to take a Supply and then do .Channel.Supply on it
Which means spit the stuff into a channel, and then schedule something in the thread pool to grab stuff out of it 13:37
Taking care of ordering and termination and errors and so forth 13:38
I used that trick in the LibSSH binding to make sure we didn't get deadlocks or clog up the event processing thread: github.com/jnthn/p6-ssh-libssh/blo...H.pm6#L827
ugexe to make sure this is the right path, i'll clarify my intention: I need to isolate a specific module's stdout/stderr such that it still gets printed to stdout/stderr for the user to see (maybe not exactly the same, but close enough) while also storing all the output (to be saved as some string for possible later processing) 13:42
processing does not have to happen until I'm finished with the thread 13:43
yeah that looks like the pattern I need 13:45
jnthn ugexe: I guess my only question would be, "what if the module also spans threads" 14:05
Geth roast: 41e9adadbc | (Zoffix Znet)++ | 2 files
Add `is-eqv` test function

Same as `is-deeply`, but without the Seq bug, so we can correctly spec things returning Seqs when we need to.
14:10
ugexe jnthn: i guess ideally I would want to multiplex those at the level of the module in question, such that the module in question would appear to be the sole source of the stdout/stderr to whatever is using said module 14:19
$client <== $multiplexor-adapter <<== ($thread1-streaming-stdout <== $thread2-streaming-stdout) # attempt to show with pipes 14:22
Zoffix m: dd "foobar_#fsd ɦ5ā™„".comb: /<.-[_]>/ 14:30
camelia ("f", "o", "o", "b", "a", "r", "#", "f", "s", "d", " ", "ɦ", "5", "ā™„")
Zoffix m: dd "foobar_#fsd ɦ5ā™„".comb: /<\w-[_]>/
camelia 5===SORRY!5===
Unrecognized regex metacharacter < (must be quoted to match literally)
at <tmp>:1
------> 3dd "foobar_#fsd ɦ5ā™„".comb: /<7ā5\w-[_]>/
Unrecognized regex metacharacter \ (must be quoted to match literally)
at <tmp>:1
ā€¦
Zoffix So what's the trick here? `.` can be used as-is but \w must be placd into square bracked? 14:31
jnthn I wonder how that parses... 14:35
geekosaur guesses: subrule, negate, cclass. unexpected tangle between . and non-identifiers, similar to some other odd edge cases I've run into where features combine in unexpected ways 14:50
jnthn Yeah, my guess is it's the non-caputring . 14:54
That shows up in <.foo>
ugexe: Is there a reason you're not doing this by starting a Perl 6 sub-process, which would seemingly be more robust? 14:55
Geth roast: 779cb8a237 | (Zoffix Znet)++ | S32-str/words.t
Test Str.words($limit)

Rakudo fix: github.com/rakudo/rakudo/commit/4bcf84a2c7
15:00
Zoffix and Cool.words
timotimo give us some cool words 15:24
Zoffix m: dd "foobar_#fsd ɦ5ā™„".comb: /<-[_]>/ 15:28
camelia ("f", "o", "o", "b", "a", "r", "#", "f", "s", "d", " ", "ɦ", "5", "ā™„")
Zoffix Ah. Now I get it...
m: dd "foobar_#fsd ɦ5ā™„".comb: /<āˆ’[_]>/ 15:43
camelia 5===SORRY!5===
Unrecognized regex metacharacter < (must be quoted to match literally)
at <tmp>:1
------> 3dd "foobar_#fsd ɦ5ā™„".comb: /<7ā5āˆ’[_]>/
Unrecognized regex metacharacter āˆ’ (must be quoted to match literally)
at <tmp>:1ā€¦
Zoffix One more place where the bug of āˆ’ minus still lives.
Interesting how Perl 6's "latest" Twitter feed is full of Japaneese and Chineese tweets... 15:57
Pretty good. Only one confused, negative tweet out of a whole lot :) 16:02
m: sub g(Pair (Str :key($desc), Pair :value((UInt :key($plan) where .so, :value(&g:(Int)))))) { dd [ $desc, $plan, g $plan ] }( 'foo' => 1 => -> Int $p { say "hi $p"; 42 } ) 18:19
camelia hi 1
["foo", 1, 42]
Zoffix nerdgasms 18:20
m: sub g(&g){g}(g) 18:35
camelia Too few positionals passed; expected 1 argument but got 0
in sub g at <tmp> line 1
in block <unit> at <tmp> line 1
Zoffix m: sub g(&g){g}(&g) 18:36
camelia Too few positionals passed; expected 1 argument but got 0
in sub g at <tmp> line 1
in sub g at <tmp> line 1
in block <unit> at <tmp> line 1
Zoffix wonders how that's interpreted...
Ah :( not that exitedly :(
ugh... but calling it right was quite exciting for a second. Almost "forkbombed" my box :( 18:37
m: sub g(&g){g &g}(g &g)
camelia MoarVM panic: Memory allocation failed; could not allocate 131072 bytes
Zoffix huggable: release commits :is: tags=('2015.12' '2016.01' `git tag -l 201{6,7}.??` '2017.04' 'HEAD'); for (( i=0; i<${#tags[@]} ; i+=2 )); do printf "\e\e%-9s - %-11s: \e" ${tags[i]} ${tags[i+1]}; git log --oneline "${tags[i]}...${tags[i+1]}" | wc -l; done; printf "\e" 23:42
huggable Zoffix, Added release commits as tags=('2015.12' '2016.01' `git tag -l 201{6,7}.??` '2017.04' 'HEAD'); for (( i=0; i<${#tags[@]} ; i+=2 )); do printf "\e\e%-9s - %-11s: \e" ${tags[i]} ${tags[i+1]}; git log --oneline "${tags[i]}...${tags[i+1]}" | wc -l; done; printf "\e"
Zoffix ^ number of commits in each release. Looks purty: twitter.com/zoffix/status/864989737387536384 23:43
oh oops, missing every 3rd release... 23:46
You know what bash needs? .rotor!
geekosaur sighs at cargo-culted escapes 23:48
Zoffix :) 23:49
Which ones? The colours?
geekosaur ... printf "\e[0;1;33m%-9s - %-11s: \e" ${tags[i]} ${tags[i+1]}; git log --oneline "${tags[i]}...${tags[i+1]}" | wc -l; done; printf "\e[m"
Zoffix m: say Date.new('2015-12-15', :formatter{"hi"})
camelia hi
Zoffix m: say Date.new('2015-12-15', :formatter{"hi"}).later: :month
camelia 2016-01-15
Zoffix Feels like .earlier/.later should copy the formatter too, eh?
geekosaur don't see why you have one reset split out and the other combined, and the resets explicitly say 0 when that's the default
Zoffix geekosaur: I just copy-pasted those. I don't know what they mean 23:50
#21stCenturyProgramming
geekosaur also I suspect you don't even need the reset on the middle one (\e should be sufficient)
which might even make the 0; on the first one irrelevant, come to think of it 23:51
BenGoldberg \e[0;<blah blah blah>m causes the colors to be reset.
geekosaur oh well
Zoffix hm, there's also .succ/.pred/.truncate-to that'd need formatter copying
Zoffix leaves it all alone
geekosaur yes, 0 turns off all attributes, then a fg color is set. but default for all escapes is 0 (which some translate to something in range, so \e[H = \e[0H = \e[0;0H = \e[1;1H)
ANSI X3.64's quite regular in its handling of parameters 23:52
(had to be, since the original implementation ran on an 8-bit CPU which kinda limited the firmware size a bit...) 23:53