01:47 ilbot3 joined 01:51 geekosaur joined 03:43 geekosaur joined
dalek ast: 478881d | usev6++ | S06-advanced/wrap.t:
Unfudge passing test for rakudo-j
06:27 astj joined 06:29 [TuxCM] joined 06:37 RabidGravy joined
[TuxCM] This is Rakudo version 2016.04-15-gb3d8169 built on MoarVM version 2016.04 08:18
test 21.991
test-t 12.387
csv-parser 23.721
08:39 lizmat joined
dalek ast: 4b44fe5 | usev6++ | S06-advanced/wrap.t:
Add ticket number for skipped test (JVM)
lizmat jnthn: agree github.com/rakudo/rakudo/pull/754 should be closed and RT'd ? 09:03
rt.perl.org/Ticket/Display.html?id=127968 # problem in sleepsort marcusramberg found yesterday 09:15
09:23 vendethiel joined
timotimo another thing to think about is that with ropes we can in theory handle strings that big; adding individual parts together wouldn't result in the whole thing being allocated; just a little record of what got concatenated 09:23
however, if you've added two strings that add up to 2**32, you've got to have two 2**31 big strings :) 09:24
and we do force ropes to become one flattened string when we regex-match against them
09:40 lizmat joined
lizmat timotimo: wouldn't that by itself cause a slowdown in the use of regexes? 09:42
other question: while looking at RT #127968 09:43
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=127968
lizmat is there a reason why Channel.list is not implemented as an Iterator ???
jnthn: ^^^
timotimo i'm not sure what you mean by that?
"that by itself"? 09:44
lizmat well, Channel.list would return a Seq with an Iterator class in which the pull-one would do an nqp::poll ?
rather than first creating a Supply and then taking a list off of that ?
timotimo sorry, i was refering to the previous topic still 09:45
lizmat timotimo: ah, I meant, creating the concatenated string might be already quite expensive
timotimo oh 09:46
well, at 2**32 characters, yeah
you'll be memcpying 2**32 * 4 bytes together
lizmat if it consisted of many ropes
timotimo that can't be fast :)
lizmat I assume nqp::readallfh already creates a single roped string, right ? 09:47
timotimo it should, yeah 09:48
lizmat ?>/|";.,/[plkm,./ 09:51
(that was some chai tea on my keyboard) 09:52
timotimo uh oh! 09:54
lizmat yeah, probably ok 09:55
if I go up in a puff of smoke, you know what happened :-)
timotimo probably makes the keys a bit sticky :| 09:57
lizmat it was sugarless chai (sweetener only), so not too sticky 10:05
and it was only the lower right corner of my keyboard that got hit
timotimo phew 10:26
dalek kudo/nom: 48cc6b5 | lizmat++ | src/core/Channel.pm:
Preliminary fix for RT #127968

I'm not sure why a Channel would need to create a Supply first to be able to create a .list. So I re-imagined Channel.list to be a Seq with a simple Iterator that is polling the Channel. This causes one Channel spectest to fail, but I feel the test is wrong as it apparently assumes there is a Supply underlying Channel.list. Comments / Patches welcome!
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=127968
bartolin lizmat: RT #127968 was already reported as RT #127960 (which has a backtrace but no details otherwise). I could merge both tickets (and keep your subject) or I could reject the earlier report as a dup. do you have a preference?
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=127968
Link: rt.perl.org/rt3//Public/Bug/Displa...?id=127960
timotimo have you looked closely at what the Supply method on Channel does, exactly?
lizmat timotimo: yes, and it is useful in and of itself 10:38
but I'm not sure we need it to create a .list
so you could argue I implemented a work-around yes :-)
bartolin: argh, why didn't I see that in my mail ? 10:39
please merge the two tickets: the stack trace may be useful for someone like jnthn 10:40
bartolin will do
lizmat bartolin++ 10:41
jnthn lizmat: Agree github.com/rakudo/rakudo/pull/754 is the wrong fix, yeah. 11:11
lizmat PR closed 11:12
timotimo there is no such PR as a bad PR :)
clearly, the user must have accidentally run into this problem? 11:13
jnthn yeah
Maybe we should just make our string length 64-bit :P
"Overflow *that*!"
tadzik . o O ( I had trouble reproducing this, my SSD was not big enough to put swap there, but... ) 11:29
lizmat I'm confused now: shouldn't .list not return something listy and isn't a Seq a listy thing ? 11:36
jnthn Seq isn't really list-y enough 11:38
Doesn't bind to @ for one. 11:39
ooh, lunch time :) bbl 11:40
11:45 lizmat joined, astj joined
dalek rakudo/nom: 5a14162 | lizmat++ | src/core/Channel.pm: 11:55
rakudo/nom: Fix test breakage caused by 48cc6b5f469e915333
rakudo/nom: Implements:
rakudo/nom: - Channel.receive-nil-on-close
rakudo/nom: - Channel.iterator
rakudo/nom: - Channel.Seq
rakudo/nom: Re-Implements:
rakudo/nom: - Channel.list
rakudo/nom: Also: RT #127968 was a dup of RT #127960
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=127968
lizmat I'm not sure whether receive-nil-on-close shouldn't actually be the default behaviour of Channel.receive
[TuxCM] This is Rakudo version 2016.04-17-g5a14162 built on MoarVM version 2016.04 12:08
test 21.864
test-t 12.765
csv-parser 23.775
12:10 lizmat_ joined
nine_ MadcapJake: subcommands are something that can and should be explored in module space before support is added to core 12:38
MadcapJake nine_: that's true, I make take a stab at my proposed interface above. 13:24
14:01 hankache joined
lizmat m: class A { multi method a() {}; multi method a(42) {} }; say A.^find_method("a").package # feels like a bug to me 15:04
camelia rakudo-moar 5a1416: OUTPUT«(Dummy)␤»
lizmat jnthn: ^^^ expected to see (A) here, really
m: class A { method a() {} }; say A.^find_method("a").package # works 15:05
camelia rakudo-moar 5a1416: OUTPUT«(A)␤»
jnthn m: class A { multi method a() {}; multi method a(42) {} }; say A.^lookup('a').candidates[0]>>.package 15:06
camelia rakudo-moar 5a1416: OUTPUT«((A))␤»
jnthn m: class A { multi method a() {}; multi method a(42) {} }; say A.^lookup('a').candidates>>.package
camelia rakudo-moar 5a1416: OUTPUT«((A) (A))␤»
jnthn The cands themselves are fine
It's just the default proto is just cloned from a dummy one
We should tweak its package after cloning it. Probably a 1-line fix. :) 15:07
m: class A { proto method a(|) { * } multi method a() {}; multi method a(42) {} }; say A.^lookup('a').package
camelia rakudo-moar 5a1416: OUTPUT«===SORRY!=== Error while compiling /tmp/CwIQQ9RCxL␤Strange text after block (missing semicolon or comma?)␤at /tmp/CwIQQ9RCxL:1␤------> class A { proto method a(|) { * }⏏ multi method a() {}; multi method a(42)␤ expecting any of:…»
jnthn m: class A { proto method a(|) { * }; multi method a() {}; multi method a(42) {} }; say A.^lookup('a').package
camelia rakudo-moar 5a1416: OUTPUT«(A)␤»
jnthn Yeah, fine on an explicit proto too
Just the generated one 15:08
tadzik gist.github.com/tadzik/f2634cfac10...f376499e3c rakudobug? 15:20
I'd expect to get USAGE in both cases
masak tadzik: me too, I think 15:43
tadzik argh, that exception is X::AdHoc :| 15:44
gist.github.com/tadzik/3e32043c3c2...b57c642ac1 15:45
prolly since it's from the binder 15:46
proposed patch: gist.github.com/tadzik/2001b1f3ec4...3655b58ab2 16:03
it can theoretically trigger from user error, is someone literally does "die 'Constraint type bla bla'" from their MAIN, but I'd argue that it does more good than harm
spectests pass, so I'm tempted to go ahead with it and ask for forgviness/mercy later 16:19
nine_ Could the .backtrace[0].subname fail somehow? 16:21
tadzik you mean: yield a false positive?
nine_ More like do we always have a backtrace and does the first element always have a .subname?
tadzik ah 16:22
Backtrace::Frame always has a .subname
and I don't think we can have a backtrace with 0 frames in any case 16:23
moritz? 16:26
moritz uhm 16:28
there are filtered views on backtraces
they can certainly be empty
if you look at all the magic in AT-POS, it is certainly possible for it to not find anything 16:29
tadzik indeed 16:31
dalek rakudo/nom: adb2c8f | niner++ | src/ (4 files): 16:33
rakudo/nom: Fix EVAL during precompilation
rakudo/nom: EVALed code is considered an independent compilation unit that gets compiled
rakudo/nom: using a new World which contains an independent serialization context. It also
rakudo/nom: gets its own QAST compiler.
rakudo/nom: When a BEGIN time EVAL is run during precompilation of a module, the
rakudo/nom: independent SC would not be written into any file but would still be referenced
rakudo/nom: from the outer compilation unit. We therefor use the outer world's
rakudo/nom: CompilationContext which contains the SC. We also need to share a couple of
rakudo/nom: other attributes that keep track of the compilation's state.
moritz nine_++ # months of work cummulating into a single commit 16:34
oh, two commits actually; dalek swallowed one
nine_ Well the second one was a quite quick refactor, not even comparable to the work that went into the first :) 16:36
And it may well be that I have to re-visit this topic again as it's only an 80 % fix. It's enough to unblock the repository work though.
16:43 hankache joined
lizmat nine++ 16:43
timotimo that's the magical commit! \o/ 16:49
vendethiel nine_: looks amazing :D 17:24
masak nine++! 17:28
does this mean something for slangs and/or other languages? 17:29
jnthn nine_++ # persistence 17:35
timotimo persistence is something i'm sorely lacking :S 17:36
17:50 lizmat joined
vendethiel timotimo: yeah, hard stuff 17:51
17:51 lizmat joined
nine_ masak: sorry, I've got much too little experience with slangs to answer that. 18:07
masak dang :) 18:10
so do I!
dalek ast: e732b37 | lizmat++ | integration/precompiled.t:
RT #124324 is fixed, nine++
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=124324
lizmat PSA: re github.com/rakudo/rakudo/pull/578 18:41
I've asked leont to adapt the PR in such a way that we can do a make spectest using prove6 by setting an environment variable
thus allowing easy switching between "production" spectesting, and "dogfood testing" spectesting 18:42
jnthn +1
lizmat as soon as that is the case, I plan to merge that PR
so that we can have more eyes on it more easily
jnthn *nod*
jnthn wonders if working thorugh the treasure trove that is gist.github.com/jnthn/2996cce212da...60e71fe5a5 next week might help with some of what it runs in to... 18:44
lizmat oooh shiny!
jnthn It takes about 16 hours to do such a spectest run :) 18:45
lizmat fwiw, I recognize a lot of those test files as flappers 18:50
jnthn Yes, me too ;) 18:51
lizmat food! drink! girls! 18:54
.oO( Father Jack is everywhere )
jnthn enjoy :) 18:57
walk & 18:58
19:02 hankache joined
dalek rakudo/relocateable-precomp: 899befd | niner++ | src/core/CompUnit/Repository/Installation.pm: 21:53
rakudo/relocateable-precomp: Turn short-name lookup files into directories
rakudo/relocateable-precomp: This may become part of CompUnit::Repository::Installation format v1.
rakudo/relocateable-precomp: Having to change any already existing files on installation of a module makes
21:54 dalek joined 21:56 cognominal joined
tadzik oh yiss 21:57
22:46 lizmat joined 22:55 astj joined
lizmat so, is there a reason why we only have Version:D cmp Version:D, and not Version:D gt Version:D and friends? (ge eq ne lt le) ? 23:11
dalek kudo/nom: 688ddee | lizmat++ | src/core/Version.pm:
Add Version lt|le|eq|ne|ge|gt Version

It would seem we need a richer set of operators for Version comparisons. This causes some (un-spectested) changes:
   say v2.8 eq v2.8.0; # False before, now True
   say v2.8 eqv v2.8.0; # False before, still False
23:57 tomboy64 joined