dalek ast: 27ca133 | (Zoffix Znet)++ | S06-signature/slurpy-params.t:
Refudge todo to skip for doesn't-hang test

As described in #158, under some conditions this test seems to leave hung processes still running, causing them to consume all resources. Fudge it as `skip` instead of `todo`, to prevent this.
  github.com/perl6/roast/issues/158
00:47
ugexe TimToady: that version sorting bug is fixed in zef. the local cache was short circuiting out of its search before considering all candidates 01:10
dalek ast: fc0fe43 | usev6++ | S32-str/comb.t:
Skip failing test on JVM
05:08
jnthn morning, #perl6-dev 09:09
nine Good morning!
jnthn has Perl 6/MoarVM tuits today :) 09:10
brrt good morning jnthn 09:13
psch m: my @a = (1...*).grep(* < 20); say @a[20] # is that right..? 09:15
also, g'morning o/ 09:16
camelia rakudo-moar 8be36b: OUTPUT«(timeout)»
psch i suppose it's somewhere in the halting problem area, isn't it? as in, we cannot know that the lazy & infinite list is turned finite somehow..? 09:18
jnthn Right :) 09:19
It's not the sequence operator; it doesn't know that once it stops matching it'll not maybe match again later
So goes on searching
psch okay, thanks 09:23
good to know it's just a bad test case for what i'm doing :)
lizmat jnthn: sometimes I wonder whether the default implementation of pull-at-least should have a counter built in 09:24
jnthn Why? 09:25
lizmat *push-at-least
jnthn I mean, in this case even it it terminated as soon as it had hit 1 element (which is the point it's allowed to return) then it'd still never hit that goal 09:31
lizmat hmmm... perhaps the grep iterator should check for >1 M pulls without anything, and then issue a warning ? 10:11
dalek p: 0eff02d | peschwa++ | src/vm/jvm/runtime/org/perl6/nqp/jast2bc/JASTCompiler.java:
Emit type name for unknown instructions in JASTCompiler.
lizmat or perhaps a :maxtries parameter set to 1M by default?
dalek kudo/nom: b87a27b | peschwa++ | / (3 files):
Fix List/Array marshalling for jvminterop, add tests.

As commented inside the actual patch there might be a smarter or faster way to do this, by reimplementing the bits that are currently called via Perl 6 functions with the minimal necessary nqp backend calls, but I'd rather have it working first.
More tests probably wouldn't hurt either, Object[] isn't that demanding of a type after all.
10:17
jnthn lizmat: IMO, "let it hang". If the problem is that it's hard to understand where a program is hanging, we should improve our debugging tools, not put in arbitrary limits. 10:20
lizmat ok, fair enough, being able to generate an exception in a thread from another thread would already be great, yes :-) 10:21
gfldex lizmat: this may be a good place to start thinking about a few better concurrency buildins. Namely `timeout(Callable &c, Num $max-seconds)` 10:32
lizmat trivail to make with supply.interval, nice ecosystem module ? 10:34
actually: Promise.at
or betterder: Promise.in
jnthn The problem with that is people will have some expectation that it will terminate the work taking place in &c 10:35
I agree we want some kind of cancellation stuff but code that wants to be cancellable needs to be co-operative in that.
But yes, not waiting forever is easily done with Promise.any(start { c }, Promise.in(5)) 10:38
A timeout built-in would be nice, but we should probably keep that name free until we have our cancellation story worked out. 10:40
brrt jnthn: can we hijack (or rather, generalize) the gc-thread flag for interrupting running threads? 10:43
gfldex jnthn: my threading woes persist but seam to trigger a lot less frequent then about 1 month ago 10:46
jnthn brrt: Yes, that'd be the way to do something like "throw an exception in another thread" 10:50
Or "Capture the stack trace of another thread"
brrt how hard and/or fragile would it be to do this? 10:51
also
or, more importantly
how does that not race with threads that can be blocked 10:52
jnthn That flag can also be popped into a "stolen" state, in which case the thread will wait until it gets unstolen when it returns from blocking 10:53
So it shouldn't be fragile in that sense
brrt okay, i'm not sure i follow 100%
jnthn At the moment, the flag can have 4 values: running, interrupted for GC, blocked, and stolen 10:54
brrt uhuh
so suppose the thread is blocked, and we try to throw an exception to it… what happens then? 10:56
jnthn Well, there's a few ways to handle that 10:57
We could mark it stolen
Then set a "you need to do this on un-block" 10:58
And then mark it unstolen again
And when it unblocks it will check its todo list
In that sense the blocked/stolen transition and vice versa serves as a lock acquire/release
brrt uhuh 10:59
on the other hand, that means you can't actually interrupt a blocked thread
jnthn .tell FROGGS I *think* you worked on process code long ago. I just fixed rt.perl.org/Ticket/Display.html?id=129291 by doing github.com/MoarVM/MoarVM/commit/de...e30170e8d3 which I *think* makes sense, but if you have a moment to glance it and comment it'd be great. Thanks! :-) 11:00
yoleaux2 jnthn: I'll pass your message to FROGGS.
brrt unless you can get help from the blocking agent (i.e. the operating system) 11:02
jnthn brrt: Indeed.
brrt and… can we?
jnthn I don't know. The JVM seems to manage to interupt various things. 11:03
Like lock acquisitions
I'm not sure about I/O
OpenJDK is open source so we can always look at how they do it :P
brrt true
i think the standard way of interrupting I/O on unix is to set a alarm signal before you start IO 11:04
but, that relies on signals obviously
and is not of much use for different threads
jnthn .tell AlexDaniel MoarVM HEAD has a hopeful fix for RT #129291 (didn't bump MOAR/NQP_REVISION files yet); if you get chance, please give it a go. :) 11:09
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=129291
yoleaux2 jnthn: I'll pass your message to AlexDaniel.
jnthn Lunch time for me :)
pmurias nqp::say(nqp::iscclass(nqp::const::CCLASS_ALPHABETIC, "\x16ef", 0)) gives a different result on the jvm and moar backends 11:33
psch r: use nqp; nqp::say(nqp::iscclass(nqp::const::CCLASS_ALPHABETIC, "\x16ef", 0)) 11:37
camelia rakudo-jvm cd19db: OUTPUT«1␤»
..rakudo-moar b87a27: OUTPUT«0␤»
pmurias psch: Number, Letter characters work differently
psch r: use nqp; nqp::say(nqp::iscclass(nqp::const::CCLASS_NUMERIC, "\x16ef", 0)) 11:38
camelia rakudo-moar b87a27, rakudo-jvm cd19db: OUTPUT«0␤»
psch r: use nqp; nqp::say(nqp::iscclass(nqp::const::CCLASS_ALPHANUMERIC, "\x16ef", 0))
camelia rakudo-moar b87a27, rakudo-jvm cd19db: OUTPUT«0␤»
psch so that's what? Ln?
pmurias psch: Nl 11:39
psch ah
well, nqp-j just asks the JVM
ilmari was going to ask if the JVM had an old unicode version, but even perl 5.8.1 (with unicode 4.0) considers it w 11:43
psch i suppose trying on jdk8 is an idea 11:44
pmurias it's not a problem with a JVM bug or old unicode version
it's just that the method we call checks for different unicode categories 11:45
psch j: use java::lang::Character:from<JavaRuntime>; say Character.isAlphabetic(0x16ef) 11:47
camelia rakudo-jvm cd19db: OUTPUT«1␤»
psch uhhm
that is exactly what we should be doing with that nqp::iscclass call up there 11:48
ohh
mixed up the backends
so the JVM is wrongly saying it *is* CCLASS_ALPHABETIC..?
pmurias JVM considers Nl characters alphabetic 11:49
Moar doesn't consider them alphabetic
psch oh, so no definite judgement, just "there's a difference" 11:50
pmurias there might be a definite judgement, I just don't know how to make one myself
psch right, that's what i understood now :) 11:51
j: use java::lang::Character:from<JavaRuntime>; say Character.isAlphabetic(0x0f33) 11:52
camelia rakudo-jvm cd19db: OUTPUT«0␤»
MasterDuke jnthn: your MoarVM fix for RT #129291 seems to work for me. reliable segfaults before, none so far after 11:57
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=129291
jnthn MasterDuke: And correct behavior for your use-case too? 12:07
MasterDuke haven't been able to test that yet 12:09
jnthn ok :) 12:10
MasterDuke btw, RT #129248 seems to have a MoarVM component
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=129248
dalek kudo/nom: 3ed51de | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.nqp:
Don't try and concatenate with closure.

Exceptions thrown by the binder come in two forms: strings (thrown as adhoc exceptions) or closures that will be invoked to throw a typed exception. Don't try and concatenate "in subsignature of parameter X" style messages on to that closure.
12:32
ast: 0dddcd3 | jnthn++ | S32-exceptions/misc.t:
Test to cover RT #129306.
12:33
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=129306
MasterDuke jnthn: i tested with some code that is almost identical to the original code that spawned 129291 and it's working fine 12:45
jnthn \o/ 12:46
OK, then I guess I'll tag it testneeded
MasterDuke how are tests like that done? i could get it to reliably segfault, but the code (sometimes) took a while to run 12:49
jnthn We could add it as a stress test and just do a bunch of iterations.
If the test SEGVs that is considered a fail 12:50
MasterDuke ahh, stresstest, i haven't looked at those
jnthn You just mark it #stress in spectset.data iirc
MasterDuke oh, easy enough 12:52
ZoffixW :/ Inline::Perl5 tests failing on new install for me 12:59
gist.github.com/zoffixznet/3a9f295...11c8e50d4d
timotimo status 11, is that a segfault? 13:01
arnsholt Think so 13:03
ZoffixW It may be jnthn++'s today's changes 13:05
'cause I built it using this, by merging latest MoarVM stuff in: gist.github.com/zoffixznet/a3a7910...e6221d27d5
jnthn Are the tests using Proc/run/shell?
The only commit in MoarVM since the last release was a fix for that 13:06
ZoffixW doesn't seem to be. This is the one that fails consistently: github.com/niner/Inline-Perl5/blob...r/t/from.t
ZoffixW nukes everything and tries from the start
jnthn m: class C { has int $!n = 0; method x (int $!n) {}; method y() { say $!n } }; my $o = C.new; $o.x: 42; $o.y 13:07
camelia rakudo-moar 3ed51d: OUTPUT«Cannot modify an immutable int␤ in method x at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
jnthn That now says 42 locally
(This is the good news. :))
arnsholt That last comment sort of implies there are bad news too? =)
jnthn I suspect I can come up with some similar cases that will fail 13:08
timotimo awesome \o/ 13:09
jnthn Yeah...same in a role blows up
[TuxCM] This is Rakudo version 2016.09-21-g3ed51de built on MoarVM version 2016.09 13:10
csv-ip5xs 9.280
test 15.854
test-t 6.839
csv-parser 16.763
jnthn And in a sub-sig 13:11
Works with named parameters though
So it's an improvement, but not a full solution
ZoffixW Well, builds fine on my google VM, so if anything it's something with my server. 13:18
jnthn Could be a SEGV you get lucky enough to avoid on the VM
If you've change to run the test under perl6-gdb-m or perl6-valgrind-m I can glance the output 13:19
ZoffixW Nah, don't want to take up your time :) 13:21
(plus, I don't even know how to run that test at all) 13:22
dalek kudo/nom: 77a2ff1 | jnthn++ | src/Perl6/Actions.nqp:
Fix basic native attributive parameter binding.

This handles the case where the native attribute appears as either a named or positional parameter inside of a signature of a method in a class, where the signature is simple enough to be lowered (so, does not contain a sub-signature). Complex signatures and methods in roles will need additional, likely more involved, fixes.
13:26
travis-ci Rakudo build errored. Jonathan Worthington 'Don't try and concatenate with closure. 13:27
travis-ci.org/rakudo/rakudo/builds/161611092 github.com/rakudo/rakudo/compare/b...d51de3973d
dalek ast: ab9a035 | jnthn++ | S12-methods/attribute-params.t:
Some basic native attributive param binding tests.
jnthn buggable: No comments? :) 13:28
timotimo timeout
wonder why buggable didn't jump on it
psch oh, we're ignoring jvm again
i guess it timed out too often..? 13:29
ZoffixW psch, no, due to failing `make test`
We fixed the harness, so now all the failures get caught by travis
psch oh, yeah, nativecall is borked, missed that ZoffixW++
ZoffixW As for buggable.. "Method 'new' not found for invocant of class 'IO::Socket::SSL' in method get-connection at"... I think I forgot to install some modules during perl6 update :) 13:30
timotimo whoops :)
jnthn lizmat: I've probably fixed RT #129278 enough for the common cases that occur in CORE.setting 13:31
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=129278
[Coke] stackoverflow.com/questions/3960345...with-chars
jnthn "Returns a list of codepoint numbers, one for the base character of each grapheme in the string." 13:32
That's wrong, no?
ZoffixW travis-ci.org/rakudo/rakudo/builds/161611092
jnthn ords returns the codepoints of combiners forming a synthetic too
buggable [travis build above] ✓ All failures are due to timeout (1), missing build log (0), or GitHub connectivity (0)
psch docs.perl6.org/routine/ords
doc bug i guess?
'cause the line in the SO question is a direct quote 13:33
jnthn Doc bug
Yeah, it even linkd to its source
*linked
I don't have an SO account 13:34
But I can patch the documentation :)
[Coke] I can comment on SO once the docs are fixed. 13:35
lizmat ack& 13:36
afk&
jnthn Working on it :) 13:38
[Coke] jnthn++ danke 13:47
jnthn Done, hopefully that helps
I suspect the docs were describing how a previous (and buggy) implementation of .ords worked 13:48
So may have been accurate at the time they were written. 13:49
ZoffixW c: &pairs, \(@ = ^10) 14:03
Undercover ZoffixW, The code is NOT hit during stresstest See perl6.WTF/src_core_Any.pm.coverage.html#L464 for details
ZoffixW timotimo, ^ seems there are still false negatives even with optimization off. Because the above *is* hit in github.com/perl6/roast/blob/master...airs.t#L94
gfldex i just found myself wanting a subroutine form for .perl 14:04
m: say perl <a b c>;
camelia rakudo-moar 77a2ff: OUTPUT«===SORRY!=== Error while compiling <tmp>␤Undeclared routine:␤ perl used at line 1␤␤»
ZoffixW m: sub perl { $^v.perl }; say perl <a b c>;
camelia rakudo-moar 77a2ff: OUTPUT«$("a", "b", "c")␤»
ZoffixW Done :) 14:05
gfldex also, is there a reason why Mu got .take but not .take-rw ? 14:07
ZoffixW m: say perl <a b c>: 14:18
camelia rakudo-moar 77a2ff: OUTPUT«("a", "b", "c")␤»
jnthn Curious...after pulling in the Unicode 9 database, 4 tests start failing in grapheme-break.t 14:19
(Yes, the NFG algo needs updates that may compensate for this)
m: say uniprop("\c[ZERO WIDTH JOINER]", "Grapheme_Extend") 14:26
camelia rakudo-moar 77a2ff: OUTPUT«1␤»
jnthn $ ./perl6-m -e 'say uniprop("\c[ZERO WIDTH JOINER]", "Grapheme_Extend")' 14:27
0
That'd be why :)
arnsholt I guess that having the zero-width joiner not extend graphemes makes sense =) 14:29
jnthn Well, they've maintained compact by dropping the grapheme_extend property on it but by making a rule that was previously just Extend be Extend|ZWJ 14:31
Seems they did it so they can talk about the two separately when it comes to emoji
arnsholt Aha 14:32
jnthn Oh my.
Previously you could determine "should be break" by looking at just the previous codepoint and the current one 14:33
In 9 they've added an emoji rule
"Do not break within emoji flag sequences. That is, do not break between regional indicator (RI) symbols if there is an odd number of RI characters before the break point."
timotimo there now exists a file that tells us "is emoji" basically 14:46
but it's informative, not normative
jnthn Also 15:03
$ ./perl6-m -e 'say ‘🦋’.uniname'
BUTTERFLY
\o/
Darn, though got a new failure now :S 15:12
m: say uniprop(" ", "space") 15:14
camelia rakudo-moar 77a2ff: OUTPUT«SP␤»
ilmari hum, no butterfly in symbola yet :( 15:15
timotimo i don't see it either :\ 15:16
jnthn ./perl6-m -e 'say uniprop(" ", "space")'
1
Hmmm
ilmari ooh, the latest one on users.teilar.gr/~g1951d/ has it 15:17
dropped Symbola_hint.ttf in ~/.fonts, and voila
just not in debian yet
gfldex lolibloggedalittle: gfldex.wordpress.com/2016/09/21/ar...your-keys/ 15:36
ilmari for a moment I was wondering why loli blogging was relevant here 15:37
gfldex sorry, wrong channel
jnthn m: say uniprop(" ", "Space") 15:53
camelia rakudo-moar 77a2ff: OUTPUT«SP␤»
timotimo m: say uniprop(" ", "Satan") 15:55
camelia rakudo-moar 77a2ff: OUTPUT«0␤»
MetaZoffix m: sub ave {my int $n = 100_000; my num $sum = 0e0; repeat { $sum += rand; } until ++$ == $n; $sum/$n}; await ^2 .map: { start ave }; say now - INIT now 16:01
Hangs for some reason.
camelia rakudo-moar 77a2ff: OUTPUT«(timeout)» 16:02
MetaZoffix m: my @cores = ^1 .map: { start {my int $n = 1_000_000; my num $sum = 0e0; repeat { $sum += rand; } until ++$ == $n; $sum/$n}}; @cores = await @cores; say @cores.sum / @cores; 16:03
camelia rakudo-moar 77a2ff: OUTPUT«0.500256106089017␤»
MetaZoffix m: my @cores = ^2 .map: { start {my int $n = 1_000_000; my num $sum = 0e0; repeat { $sum += rand; } until ++$ == $n; $sum/$n}}; @cores = await @cores; say @cores.sum / @cores;
camelia rakudo-moar 77a2ff: OUTPUT«0.500343516183882␤»
MetaZoffix m: my @cores = ^4 .map: { start {my int $n = 1_000_000; my num $sum = 0e0; repeat { $sum += rand; } until ++$ == $n; $sum/$n}}; @cores = await @cores; say @cores.sum / @cores;
camelia rakudo-moar 77a2ff: OUTPUT«0.500091965871348␤»
MetaZoffix hm, interesting. On my 2016.08.1-143-gc9b18c6 those appear to run as single-core
committable6: c9b18c6 my @cores = ^4 .map: { start {my int $n = 1_000_000; my num $sum = 0e0; repeat { $sum += rand; } until ++$ == $n; $sum/$n}}; @cores = await @cores; say @cores.sum / @cores; 16:04
committable6 MetaZoffix, ¦«c9b18c6»: 0.499774061391611
MetaZoffix committable6: c9b18c6 my @cores = ^1 .map: { start {my int $n = 1_000_000; my num $sum = 0e0; repeat { $sum += rand; } until ++$ == $n; $sum/$n}}; @cores = await @cores; say @cores.sum / @cores;
committable6 MetaZoffix, ¦«c9b18c6»: 0.499908298599251
MetaZoffix Oh, I'm printing wrong thing >_<
timotimo yeah, that's the calculated value
MetaZoffix m: my @cores = ^1 .map: { start {my int $n = 1_000_000; my num $sum = 0e0; repeat { $sum += rand; } until ++$ == $n; $sum/$n}}; @cores = await @cores; say now - INIT now
camelia rakudo-moar 77a2ff: OUTPUT«1.9262441␤»
MetaZoffix m: my @cores = ^4 .map: { start {my int $n = 1_000_000; my num $sum = 0e0; repeat { $sum += rand; } until ++$ == $n; $sum/$n}}; @cores = await @cores; say now - INIT now
camelia rakudo-moar 77a2ff: OUTPUT«3.3750978␤»
MetaZoffix m: my @cores = ^2 .map: { start {my int $n = 1_000_000; my num $sum = 0e0; repeat { $sum += rand; } until ++$ == $n; $sum/$n}}; @cores = await @cores; say now - INIT now
camelia rakudo-moar 77a2ff: OUTPUT«2.76104950␤» 16:05
timotimo you do know that you're using a state variable in there, right?
and that's shared for all the cores?
MetaZoffix Oh, I didn't know that they're shared
timotimo that's what state vars do
they hang on to the sub or block they live in
i bet one of the cores hits the number exactly and all others count up until infinity
MetaZoffix Probably
timotimo that'd explain the hang 16:06
also, it'd scale ... rather well :)
MetaZoffix m: sub ave {my int $n = 100_000; my num $sum = 0e0; repeat { $sum += rand; } until $n-- == 0; $sum/$n}; await ^2 .map: { start ave }; say now - INIT now
camelia rakudo-moar 77a2ff: OUTPUT«0.1089755␤»
MetaZoffix timotimo++
timotimo yay
psch jnthn: did you see irclog.perlgeek.de/perl6-dev/2016-0...i_13248341 btw? 16:41
jnthn: seems that's at least somewhat in the vicinity of your latest moar commits
jnthn m: say uniname "\x16ef" 16:47
camelia rakudo-moar 77a2ff: OUTPUT«RUNIC TVIMADUR SYMBOL␤»
jnthn m: say uniprop "\x16ef" 16:51
camelia rakudo-moar 77a2ff: OUTPUT«Nl␤»
jnthn m: say uniprop 0x16ef 16:52
camelia rakudo-moar 77a2ff: OUTPUT«Nl␤»
timotimo New line? :P 16:54
jnthn Nl is Number, letter
We consider stuff alaphabetic in Moar if they're in L* 16:55
Nl is described as "Numerals composed of letters or letterlike symbols (e.g., Roman numerals)" 16:56
Not sure that makes them alphabetic. TimToady may have a useful opinion. :)
AlexDaniel timotimo: this one was funny as well: irclog.perlgeek.de/perl6/2016-08-07#i_12979613 17:03
yoleaux2 19 Sep 2016 10:36Z <Zoffix> AlexDaniel: no Test.pm? For committable6, 2016.04 m: "ac" ~~ /(.)(.)?(.)/; use Test; is-deeply $/.perl.EVAL, $/ gist.github.com/de1adfd58e8b2fb292...5d85b356fd
11:09Z <jnthn> AlexDaniel: MoarVM HEAD has a hopeful fix for RT #129291 (didn't bump MOAR/NQP_REVISION files yet); if you get chance, please give it a go. :)
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=129291
AlexDaniel oh wow
timotimo AlexDaniel: no means no? 17:04
AlexDaniel jnthn: these are some great news. *Of course* this is going to be tested, as it affects whateverables badly :)
timotimo: no. It's “number, other”. :PP
but yeah 17:05
committable6: releases use Test
committable6 AlexDaniel, gist.github.com/111fbd7cb02b4ce410...f02a290c37
AlexDaniel committable6: 2016.04 use Test; say ‘hello world’ 17:06
committable6 AlexDaniel, ¦«2016.04»: hello world
AlexDaniel committable6: 2016.04 use TestFoo; say ‘hello world’
committable6 AlexDaniel, gist.github.com/3f5bf962241669547c...273f452748
AlexDaniel committable6, 2016.04 m: "ac" ~~ /(.)(.)?(.)/; use Test; is-deeply $/.perl.EVAL, $/ 17:07
committable6 AlexDaniel, gist.github.com/b75ba7f354b1629286...e67362f578
jnthn AlexDaniel: OK, going for dinner now, but I may bump MOAR/NQP revisions later so we get it available in Rakudo HEAD and can test it out. 17:08
Was going to bump it after getting basic Unicode 9 support in place, but ran into a weird issue :/
jnthn bbl
AlexDaniel jnthn: ah, it's not bumped yet. Did not understand that.
(dammit, should've read the message fully. Was so excited to see it)
.tell Zoffix See this: irclog.perlgeek.de/perl6-dev/2016-0...i_13250357 – it is possible that when you tried it, the archive did not get extracted fully, this happens pretty often with perl6 whateverables (there is also a chance that recent moarvm fix affects this in a good way, see same log). Right now you can try running the same thing twice. Hopefully this issue will go away one day. 17:14
yoleaux2 AlexDaniel: I'll pass your message to Zoffix.
dalek ast: 50e7fb2 | (Zoffix Znet)++ | S32-array/splice.t:
[coverage] test .splice(Whatever, Whatever, <list>)
18:49
ast: 72c8e95 | (Zoffix Znet)++ | S32-array/splice.t:
[coverage] cover all uncovered .splice candidates
19:23
lizmat good *, #perl6-dev 19:42
suppose someone wants to build a "spurt" in module space that takes a :gzip named parameter 19:43
which would automatically gzip the file and add the .gz extension to the file name
afaics, that's not really possible now because "spurt" is an only sub, not a multi 19:44
timotimo you can still override it and call back into SETTING::spurt if you like 19:50
lizmat well, I guess my question is: is there a reason why spurt() doesn't start out as a multi ? 19:51
timotimo i think it could become a multi. at least in 6.d that ought to be very possible 19:53
lizmat why in 6.d ? 19:54
timotimo well, going from an only to a multi seems like a big change 19:57
okay, it's not really a breaking change; the other direction would be
lizmat indeed, my point :-) 19:59
ZoffixMobile Would that break the ability to override the default spurt and break any code that currently does so?
timotimo no
oh wait
ZoffixMobile ah no, 'cause you can define your own + for example and those are multies 20:00
lizmat ZoffixMobile: you can always override if you provide your own proto
ZoffixMobile ah
timotimo m: sub spurt() { } 20:02
camelia ( no output )
timotimo m: multi sub spurt() { } 20:03
camelia ( no output )
timotimo currently if you define your own "multi sub", you currently wouldn't have the stuff from the core setting in it
lizmat indeed 20:06
so I made spurt a multi, and made my own with a :$gzip! (aka required named param) 20:07
but it still selects the setting one :-(
moritz does the setting one have a *% or so? 20:08
lizmat moritz: the setting has a |c
timotimo ooooh
that's very slurpery
mst and if you \ it you get a slurpery slope 20:09
moritz lizmat: eeks. Then you need to compete on the types of the positionals
pmurias how fast are multis compared to only subs? 20:11
lizmat if the lookup is cached, just as fast
aka no where constraints in the signature
m: multi a($a,:$enc,|c) { "A" }; multi a($a,:$gzip!,|c) { "B" }; say a("foo",:gzip) # expected B 20:13
camelia rakudo-moar 77a2ff: OUTPUT«A␤»
lizmat m: multi a($a,|c) { "A" }; multi a($a,:$gzip!,|c) { "B" }; say a("foo",:gzip) # expected B
camelia rakudo-moar 77a2ff: OUTPUT«B␤»
lizmat I guess this is a bug, as the required named is narrower than the optional named 20:14
moritz very unsure about the role of named tied-breaking 20:17
does the spurt in the setting actually needs |c?
if not, changing it to a narrower signature might be the best way to allow enhancements through multi dispatch 20:18
lizmat moritz: I just found out (I think) that it just needs the |c, as the default for :enc is taken care or by IO::Path.spurt correctly 20:20
so it would solve it for this case
dalek kudo/nom: 3789a07 | lizmat++ | src/core/io_operators.pm:
Make spurt a multi

Also make the signature narrower, because IO::Path takes care of defaulting the :enc parameter correctly.
This should allow the ecosystem to make a spurt() with a :gzip or
  :bzip2 named parameter. (hint hint :-)
20:31
lizmat spectest clean, fwiw :-) 20:32
timotimo OK ... not covered by tests == some freedom for us devs 20:33
lizmat re the spurt discussion: #129329 21:10
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=129329
lizmat good night, #perl6!
timotimo maybe it only works if you turn |c into *% ? 21:11
ZoffixMobile .tell mst exactly 1 year ago you told me in magnet #perl to poke you in a year about binary package installer for CPAN :) 21:19
yoleaux2 ZoffixMobile: I'll pass your message to mst.
ZoffixMobile So I'm... poking you, as I promised
gfldex .tell lizmat if enums would implement the role Enumeration (as the spec asked) the where-clause would not be needed 22:01
yoleaux2 gfldex: I'll pass your message to lizmat.
Zoffix c: Array, 'flat', \() 22:30
yoleaux2 17:14Z <AlexDaniel> Zoffix: See this: irclog.perlgeek.de/perl6-dev/2016-0...i_13250357 – it is possible that when you tried it, the archive did not get extracted fully, this happens pretty often with perl6 whateverables (there is also a chance that recent moarvm fix affects this in a good way, see same log). Right now you can try running the same thing twice. Hopefully this issue will go away one day.
Undercover Zoffix, The code is NOT hit during stresstest See perl6.WTF/src_core_Array.pm.coverage.html#L490 for details
Zoffix m: Array.flat()
camelia ( no output )
Zoffix m: dd Array.flat()
camelia rakudo-moar 3789a0: OUTPUT«Cannot look up attributes in a type object␤ in block <unit> at <tmp> line 1␤␤»
Zoffix (attributes?)
s: &dd
SourceBaby Zoffix, Sauce is at github.com/rakudo/rakudo/blob/3789...ny.pm#L533
timotimo well, how else is Array.flat supposed to do its job? :P 22:32
Zoffix m: Array.is-lazy()
camelia rakudo-moar 3789a0: OUTPUT«Cannot look up attributes in a type object␤ in block <unit> at <tmp> line 1␤␤»
timotimo oh
Zoffix timotimo, it's identity
timotimo i see now
m: say Array.flat() 22:33
camelia rakudo-moar 3789a0: OUTPUT«(Array)␤»
timotimo it's dd that did it, i see.
Zoffix Threw me off for a second,.
dalek ast: 0a49fcb | (Zoffix Znet)++ | S02-types/array.t:
[coverage] Array:U.flat is identity
22:44
ast: d6fff7c | (Zoffix Znet)++ | S32-array/splice.t:
[cover] Cover .splice(Whatever, Whatever)
23:49
ast: dbb376e | (Zoffix Znet)++ | S32-array/create.t:
[coverage] circumfix:<[ ]>() creates an Array
23:53