eveo m: class Foo { multi method foo (Int) { self.foo }; multi method foo() { state $l = 42; dd $l} }; with Foo.new { .foo: 42; } 04:14
camelia Int $l = 42
eveo m: class Foo { multi method foo (Int) { self.foo }; multi method foo(:$foo) { state $l = 42; dd $l} }; with Foo.new { .foo: 42; }
camelia Any $l = Any
eveo Filed as rt.perl.org/Ticket/Display.html?id=131542 04:15
ZOFVM: Files=1254, Tests=138776, 115 wallclock secs (20.30 usr 2.99 sys + 2324.89 cusr 150.79 csys = 2498.97 CPU) 04:43
Geth rakudo/nom: 3ff29d42f0 | (Zoffix Znet)++ | src/core/CompUnit/RepositoryRegistry.pm
Permit IO::Path given as path to `use lib`

Fixes RT#131540: rt.perl.org/Ticket/Display.html?id=131540
04:47
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=131540
Geth roast: 3dce753d7d | (Zoffix Znet)++ | S10-packages/basic.t
Remove trailing whitespace
roast: 0bed372147 | (Zoffix Znet)++ | S10-packages/basic.t
Test `use lib` accepts IO::Path objects

RT#131540: rt.perl.org/Ticket/Display.html?id=131540 Rakudo impl: github.com/rakudo/rakudo/commit/3ff29d42f0
04:48
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=131540
samcv .tell Zoffix yay! you read my mind about `use lib` accepting IO::Path objects! did i ever complain about that or are you a mind reader 05:49
yoleaux samcv: I'll pass your message to Zoffix.
eveo . 09:57
There was a ticket for it.
Though it was first mentioned here. 10:09
irclog.perlgeek.de/perl6/2017-05-02#i_14518610
.tell mscha It now does. RE: irclog.perlgeek.de/perl6/2017-05-02#i_14518610 10:10
yoleaux eveo: I'll pass your message to mscha.
samcv thanks eveo
lizmat Files=1204, Tests=61798, 222 wallclock secs (13.24 usr 4.93 sys + 1362.70 cusr 120.20 csys = 1501.07 CPU) 10:11
[TuxCM] This is Rakudo version 2017.05-386-g3ff29d42f built on MoarVM version 2017.05-71-gad6ab26f 10:25
csv-ip5xs 2.915
test 12.865
test-t 4.359 - 4.475
csv-parser 13.155
cono jnthn: looks like my issue has been fixed and I don't know how :( anything you can recall recently which fix segv ? 11:28
timotimo under what conditions did that segfault happen? 11:29
cono timotimo: github.com/perl6/roast/pull/270
if I understood correctly this object was collected earlier and another nursery was trying to collect it again 11:30
in gen2roots array was the object which shouldn't be there
timotimo oh, ouch
cono But I just ran the test on the recent rakudo[nom]+nqp+moar and it works 11:31
very very intereseted what was the issue :)
timotimo difficult to say 11:32
cono indeed
could be actually this: 239c6153115c63b8151a45193194b9e112a8ac76 11:33
in moar
timotimo hm, that doesn't look like it would impact SC objects or something 11:34
jnthn Synchronous sockets got a complete rewrite. It's possible a bug got squelched. 12:17
Well, I know one did, but I meant in addition to the one I was shooting for :P 12:18
cono would you mind to look to my test rework then and merge it? 12:19
jnthn cono: Will try and find a moment for that later on 12:44
cono thanks a lot! :)
eveo NeuralAnomaly: status 12:50
NeuralAnomaly eveo, [āœ˜] Next release will be in 1 day and 1 week. Since last release, there are 67 new still-open tickets (64 unreviewed and 0 blockers) and 384 unreviewed commits. See perl6.fail/release/stats for details
eveo should have toast data for any regressions since 2017.05 releaste today. 12:51
m: $ = 'tmp/z1/z2/z3'.IO.mkdir; indir '/tmp/z1/z2', { say dir } 13:04
camelia ("z3".IO)
eveo m: $ = 'tmp/z1/z2/z3'.IO.mkdir; indir '/tmp/z1/', { indir 'z2', { say dir } }
camelia Failed to get the directory contents of 'z2': Failed to open dir: 2
in block at <tmp> line 1
in block <unit> at <tmp> line 1
eveo and indir got IO() coercer :/ wonder why it don't like being nested
m: $ = 'tmp/z1/z2/z3'.IO.mkdir; indir '/tmp/z1/', { indir $*CWD.add('z2'), { say dir } } 13:05
camelia ("z3".IO)
eveo even tho that works :S 13:06
dogbert17 eveo: do you understand the last two lines of code on docs.perl6.org/type/UInt ? They look a bit bogus to me 13:17
eveo That code block is ridiculous. It's just a subset like any other, so the example should have like 1 basic thing and a link to the subsets docs for those who don't know them. Also the "defined as" bit is wrong. It's actually `where {not .defined or $_ >= 0};` so it allows type objects too. 13:19
And the last two lines are just saying that you can use a UInt type in math operations just like regular Int, which isn't surprising, since it's just a subset 13:20
dogbert17 but why declare UInt $d and then not use it on next next line. And $a - 3 doesn't equal -3 since $a == 5. Bizarre 13:21
eveo dogbert17: ah, yeah :) That too is wrong :D 13:22
ah, indir coercer is 'cause IO::Path.new stringifies $*CWD instead of .absoluting it 13:30
The IO::Path.Str issue will haunt for ages 13:31
ZOFVM: Files=1254, Tests=138776, 123 wallclock secs (23.06 usr 3.20 sys + 2523.04 cusr 137.77 csys = 2687.07 CPU) 13:47
dogbert17 does the following nqp statement return an Int:D? nqp::p6box_i(nqp::threadid($!vm_thread)) 13:50
jnthn Yes 13:51
dogbert17 thx jnthn, is doing some minor updates to Thread.pod6 13:52
m: say Tap.^methods 14:12
camelia (BUILD new close)
dogbert17 hmm, according to the docs, i.e. docs.perl6.org/type/Tap it has more methods, e.g. emit and supply. Is this correct or should I remove them? 14:14
jnthn No, it doesn't have those 14:15
And shouldn't
dogbert17 then I'll fix that immediately :) 14:16
AlexDaniel oh no, and again I wrote something without seeing previous responses 14:17
ugexe m: sub foo(Str(Cool) $bar) { say $bar }; foo(IO::Path.new("/xxx")); foo(IO::Path.new("xxx/")) # eveo: i'm trying to say this behavior should be used instead of absolutifying it
camelia IO::Path 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
AlexDaniel I should first get well, then finally move to another place, set up a proper internet connection thereā€¦ and then join this kind of discussions
dogbert17 only 'close' will be left 14:18
jnthn Yup
Which is all you can do with a Tap 14:19
That's why you get it; so you can turn it off again later :)
dogbert17 fixed 14:20
eveo ugexe: that's wrong tho. You can't .Str a path if you intend it to use it as path still 14:29
ugexe its not being used as a path at that point
eveo ugexe: the Str candidate is still there. So all the strings will go through it.
ugexe: what is it used as then? It's discarding .CWD attribute. my $p = "foo"; chdir "bar"; foo $p; will give wrong path 14:30
ugexe correct
eveo So why is the wrong path desirable? 14:31
dogbert17 more docs.perl6.org/type/Tap questions. There is a short example on the page which contains the line 'closing => { say "Tap closed" },'. Is that line legit?
ugexe because who to say its wrong? the CUR is supposed to decide this 14:32
eveo ugexe: the user is to say. If I do `use lib IO::Path.new: 'foo', :CWD</program1>` and you discard the "/program1" part the "foo" won't be pointing to the right location 14:33
ugexe should pass an already absolutified IO object 14:34
eveo :/
I'm just gonna move the absolutifcation to `use lib` code in Actions
ZOFFLOP: t/spec/S11-modules/require.t 14:35
ugexe m: require "lib/Test".IO.absolute.IO 14:38
camelia ===SORRY!===
No such method 'IO' for invocant of type 'Any'
ugexe lol 14:39
m: say "lib/Test".IO.absolute.IO
camelia "/home/camelia/lib/Test".IO
Geth rakudo/nom: b0fc9eecab | (Zoffix Znet)++ | src/core/io_operators.pm
Simplify &indir code

  - The ||, &&, and ?? !! already codegen to nqp::if/nqp::unless
  - No functional changes
14:40
rakudo/nom: 9151ebaaec | (Zoffix Znet)++ | src/core/io_operators.pm
Fix $*CWD inside &indir when using relative paths

  $*CWD gets .Str stringified in IO::Path.new, so it should always
be set to a IO::Path whose .path is an absolute path.
This fixes the issue with nested indirs with relative Str paths as args and any other IO::Path creation inside indir
roast: 0757d88130 | (Zoffix Znet)++ | S32-io/indir.t
Test $*CWD is absolute inside indir

Rakudo fix: github.com/rakudo/rakudo/commit/9151ebaaec
14:41
eveo spec isn't set? 14:43
m: BEGIN dd $*SPEC; require "lib/Test".IO.absolute.IO
camelia IO::Spec::Unix <element> = IO::Spec::Unix
===SORRY!===
No such method 'IO' for invocant of type 'Any'
eveo hm.
Ah, it ends up being (require "lib/Test").IO.absolute.IO ? 14:44
ugexe fwiw we *do* have a way to pass in arguments to a cur in string form, which could possibly be used to handle the cwd issue (but may require a new cur class) ala `path#cwd<...>#some/path` 14:45
eveo but there's no cwd issue there? 14:46
eveo is really confused
ugexe thats what a io::path argument to cur in string form should probably look like, so the cur can decide to absolutify it (with the proper cwd) or use the relative path part 14:48
github.com/ugexe/rakudo/blob/nom/s...ath.pm#L13 # if $file.is-absolute { 14:53
github.com/ugexe/rakudo/blob/nom/s...tem.pm#L91 # unless $file.is-absolute {
dogbert17 is confused by the Supply/Tap docs 14:54
ugexe granted we probably should get rid of the first one
eveo gah. Google killed my toaster VM when it was almost done :( Was doing letter 'S' already
dogbert17 eveo: out of money?
eveo (the final toaster won't be on pre-emptible VM, but this one is)
dogbert17: no, it's "pre-emptible". Meaning they can kill it at any time in exchange for it being zillion times cheaper 14:55
Doesn't happen often, so for dev work it's a big win
dogbert17 aha, good to know
eveo: are you any good with supplies and taps? 14:56
eveo Not really. 14:57
dogbert17 :(
am a bit suspicious about this line from the Concurrency pod:
"Calling done on the supply object calls the done callback that may be specified for any taps, but does not prevent any further events being emitted to the stream, or taps receiving them."
ugexe which part? 14:58
dogbert17 but does not prevent ...
perhaps I'm misunderstanding the text but to me it implies that I can do emit's on a supplier after having call 'done' and things will continue to work 14:59
ugexe maybe its referring to race condition 15:00
Geth rakudo/nom: 326faed6c5 | (Zoffix Znet)++ | 2 files
Rework `use lib IO::Path...` feature

Remove CURR interface change and instead convert any IO::Paths given to `use lib` to Str directly in World.
This reverts commit 3ff29d42f026fde6ed4483aa022c6d9512c61700.
Discussions:
  github.com/rakudo/rakudo/commit/3f...t-22461302
  irclog.perlgeek.de/perl6-dev/2017-...i_14710384
eveo ugexe: ^ that addresses your concerns, I believe.
dogbert17 ugexe: perhaps, guess I'll leave that line alone
ugexe dogbert17: well, what happens when you try to explicitly .emit after .done? if you cant then I agree its confusing 15:01
dogbert17 ugexe, m: my $supplier = Supplier.new; my $supply = $supplier.Supply; my $tap = $supply.tap( -> $v { say $v }); $supplier.emit("OK"); $supplier.done; $supplier.emit("What will happen");sleep 1; # bad golf 15:04
m: my $supplier = Supplier.new; my $supply = $supplier.Supply; my $tap = $supply.tap( -> $v { say $v }); $supplier.emit("OK"); $supplier.done; $supplier.emit("What will happen");sleep 1; # bad golf
camelia OK
dogbert17 it is indeed confusing 15:05
ugexe well 15:07
`await $supplier.done`
thats probably what needs to be clarified
nevermind thats not right heh
dogbert17 so we have that and then the 'closing' callback mystery in the example here docs.perl6.org/type/Tap 15:10
running the code in the example does not trigger the 'closing => { say "Tap closed" },' line 15:11
ugexe dogbert17: looks like supply is passing `closing` to something that expects `on-close` 15:19
well, nevermind that cant be it either (its positional)
i'd say this is a bug 15:21
dogbert17 oops 15:24
ugexe: the closing callback is mentioned in the signature here, docs.perl6.org/type/Supply#method_tap, but is is not mentioned in the docs below 15:27
ugexe should turn it into a roast test
github.com/rakudo/rakudo/blob/6d12...ly.pm#L102 15:28
github.com/rakudo/rakudo/blob/6d12...ply.pm#L12
so the docs *should* be right - it just isn't working
Geth roast: a520037d7f | (Zoffix Znet)++ | S32-num/power.t
Test power ops with uncommon No chars

Covers RT#126732: rt.perl.org/Ticket/Display.html?id=126732 Closes github.com/rakudo/rakudo/pull/1095
15:29
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=126732
dogbert17 wonder why it's not working, the code looks innocent enough 15:31
Geth roast: ed4d510255 | (Zoffix Znet)++ | S32-num/power.t
Fill missing test descriptions
15:32
dogbert17 looks at github.com/rakudo/rakudo/blob/6d12...ply.pm#L77 15:33
eveo The docs don't match the code. 15:35
.tap is using &!closing and doesn't take :&closing arg
dogbert17 yeah, so who's right, the code or the docs? 15:36
eveo the roast 15:37
So either the docs are wrong or the feature is unspecced
dogbert17 I'm leaning towards unspecced 15:39
would be nice to be able to correct the docs though 15:41
ugexe `self.Supply::tap(|c, closing => { ... });` this was in the older code, so I suspect the docs at least *were* correct at one point 15:45
dogbert17 ugexe: what about github.com/rakudo/rakudo/blob/6d12...ly.pm#L102 is it a leftover? 15:52
ugexe well that is the code that the snippet i pasted above replaces 16:10
eveo "Deprecated use of %*LANG<MAIN> assignment detected in use" 16:13
damn, how to supress that :/ it's in the code path to support old slang interface
"No such method '!make' for invocant of type 'Perl6::Grammar+{BioInfo::Grammar}'" 16:15
Well, guess it don't matter much since I've no idea how to make the new way work anyway 16:16
Weird. Slang::Tuxic doesn't have the same issues and I basically copied over its method. gist.github.com/zoffixznet/fce7475...fa6ecbbccc 16:18
s:3rd/'$MAIN-grammar'/$MAIN-actions/ # doesn't avoid the issues tho 16:21
dogbert17 ugexe: I wonder what the intended workings of this are supposed to be 16:26
eveo .ask TimToady any idea what to do about "No such method '!make'" when trying to mix in a slang? Having trouble fixing BioInfo module: github.com/MattOates/BioInfo/issues/7 16:30
yoleaux eveo: I'll pass your message to TimToady.
ugexe m: my $supplier = Supplier.new; my $supply = $supplier.Supply.on-close({ say "closing" }); my $tap = $supply.tap(-> $v { say "the value is $v" }); $supplier.emit(100); $tap.close; 16:33
camelia the value is 100
closing
dogbert17 aha, so the behaviour has changed a bit from what it used to be 16:35
ugexe i wonder if github.com/rakudo/rakudo/blob/nom/...ly.pm#L102 should be like #L234 16:37
dogbert17 who would know, jnthn, lizmat? 16:38
ugexe probably. but you could always try and see what happens :) 16:39
lizmat dogbert17: doesn't ring a bell
afk again&
jnthn tries to figure out what the Supply question is :) 16:48
dogbert17 ugexe: I'll give it a shot
jnthn It's certainly the case that Tap takes a thing to run when the tap is closed in its constructor.
Not that normal code would ever produce a Tap instance by itself 16:49
The Supply.on-demand factory method lets the user pass in something to do when the tap is closed, so they can do a resource cleanup
.on-close is the more typical user-level way to insert cleanup into a Supply chain 16:50
Well, Supply.on-demand is user-level too, but you might have a Supply from elsewhere
dogbert17 we were discussing this line, github.com/perl6/doc/blob/master/d...p.pod6#L15
which does not seem to to anything 16:51
jnthn Ah
method tap does not take a closing named argument any more
Hasn't since the big Supply refactor of 2015 :) 16:52
You'd use .on-close({...}).tap(...) now
dogbert17 aha, the fog begins to lift :)
we also questioned the following text from the concurrency pod: "Calling done on the supply object calls the done callback that may be specified for any taps, but does not prevent any further events being emitted to the stream, or taps receiving them." 16:53
the second part of that text "but does not prevent ..." feels slightly wrongish 16:54
jnthn Yeah 16:55
eveo sqlite> select count(*) from toast where status != 'Succ' and rakudo = '2017.05';
169
sqlite> select count(*) from toast where status != 'Succ' and rakudo = 'e538cbc';
128
Well, at least overall looks like a lot more modules are passing on HEAD than on 20167.05 :)
jnthn Almost every Supply you'll encounter today is "sane" 16:56
Or "sanitry2
TimToady eveo: that looks more like assumptions from before the Cursor/Match merge
yoleaux 16:30Z <eveo> TimToady: any idea what to do about "No such method '!make'" when trying to mix in a slang? Having trouble fixing BioInfo module: github.com/MattOates/BioInfo/issues/7
jnthn Which means that the protocol emit* [done|quit] is enforced
TimToady I'd just change .'!make' to .make and see if it works
jnthn So you'd have to really go out of your way to see emit after a done :) 16:57
eveo Ohhhhh... I didn't even notice there was a !make in BioInfo. I assumed it was something from Rakudo/nqp
TimToady there is no '!make' in either nqp or rakudo anymore 16:58
eveo Thanks. 16:59
dogbert17 m: my $supplier = Supplier.new; my $supply = $supplier.Supply; my $tap = $supply.tap( -> $v { say $v }); $supplier.emit("OK"); $supplier.done; $supplier.emit("What will happen");sleep 1; # bad golf
camelia OK
TimToady user modules that rely on private nqp implementation methods sometimes get burned :) 17:00
eveo :)
dogbert17 so emit after done won't do anything it seems 17:01
eveo "Incompatible MROs in P6opaque rebless for types Perl6::Grammar+{BioInfo::Grammar} and Perl6::Grammar"
Well, not getting the make error anymore :)
dogbert17 thx jnthn and ugexe, will fix up the example 17:02
TimToady eveo: perhaps it's "is"-ing some class it shouldn't be anymore? 17:05
eveo Ah, OK $*LANG.^mixin(Some::Grammar) is not the same as %*LANG<MAIN>.^mixin(Some::Grammar) 17:09
All tests pass \o/ 17:10
TimToady you probably want $*LANG.slang_grammar('MAIN').^mixin(Some::Grammar) or so 17:16
eveo Works. Thanks. 17:17
TimToady it currently is still implemented as a hash internally, but with the abstraction layer we're free to change that now 17:18
once all the module catch up :) 17:19
eveo SQLite db with ecosystem toastings for 2017.05 and e538cbc (almost HEAD): temp.perl6.party/2017-06-09.toast.sqlite.db 17:23
eveo starts finishing off a viewer for it
Look at what I got \o/ 17:33
eveo points at host
timotimo nice 17:35
TimToady bisect: 3 !! 4 17:52
bisectable6 TimToady, On both starting points (old=2015.12 new=326faed) the exit code is 1 and the output is identical as well
TimToady, gist.github.com/ce4c901a95671e67e5...65ea452a04
TimToady coulda sworn that used to complain about a missing ??, but maybe that was STD
eveo c: all 3 !! 4 17:55
committable6 eveo, gist.github.com/9b3e459206823af9e5...6b2d5c2f7f
eveo All are either TTIAR or "ConfuseD" 17:56
"Your !! was gobbled by the expression in the middle; please parenthesize" 18:30
aw c'mon! I specifically didn't use parens because it was obvious where they should end -_-
ZofBot: DEATH TO PARENS!
ZofBot eveo, 22 csys = 1316
lizmat is developing a distaste for Ziggo's ISP qualities 18:33
looks like the connection goes down about once an hour :-( 18:34
eveo :( 18:40
mst lucasb: at least you're not using www.verelox.com/ 19:18
lucasb mst: hello 19:19
mst bah
tabfail
lucasb mst: but.. sorry, what?
mst lizmat: ^^
lucasb ah, ok
mst lucasb: my tab complete glommed onto your join
eveo .tell dogbert17 don't know if you want to bother with it, but here's a bug that I can only repro on my 32bit box. Also the apparent dependence on command line args and path suggest this might be a Rakudo bug: github.com/perl6/DBIish/issues/93 19:26
yoleaux eveo: I'll pass your message to dogbert17.
dogbert17 eveo: the problem shows up on my machine as well 19:52
yoleaux 19:26Z <eveo> dogbert17: don't know if you want to bother with it, but here's a bug that I can only repro on my 32bit box. Also the apparent dependence on command line args and path suggest this might be a Rakudo bug: github.com/perl6/DBIish/issues/93
eveo sweet 20:04
A reproduceable bug is a fixable bug :)
dogbert17 eveo: running it under strace uncovers the following:
write(2, "Invocant of method 'Bridge' must"..., 581Invocant of method 'Bridge' must be an object instance of type 'Int', not a type object of type 'Int'. Did you forget a '.new'?
in method _row at /home/dogbert/repos/rakudo/install/share/perl6/site/lib/DBDish/SQLite/StatementHandle.pm6 (DBDish::SQLite::StatementHandle) line 51
in method row at /home/dogbert/repos/rakudo/install/share/perl6/site/lib/DBDish/StatementHandle.pm6 (DBDish::StatementHandle) line 77
in block at /home/dogbert/repos/rakudo/install/share/perl6/site/lib/DBDish/StatementHandle.pm6 (DBDish::StatementHandle) line 94
in block <unit> at -e line 1 20:05
eveo I saw these errors come up before I started doing .elems too
dogbert17 --ll-exception is a good thing to use here 20:08