lizmat Files=1150, Tests=53682, 210 wallclock secs (12.54 usr 3.44 sys + 1286.86 cusr 116.11 csys = 1418.95 CPU) 07:00
[Tux] This is Rakudo version 2016.10-32-g8d357af built on MoarVM version 2016.10-15-g715e39a 07:42
csv-ip5xs 3.324
test 16.051
test-t 7.070
csv-parser 17.153
dalek kudo/lexical_module_load: 75f158f | niner++ | src/Perl6/ (3 files):
Make importing globals from loaded modules lexical

Right now if A depends on C:auth<foo> and B depends on C:auth<bar> you cannot use A and B in the same program. Fix this by having not only exported symbols be lexical but also the globals contained in a module.
So only A will even have a C that's bound to C:auth<foo>. This means that you have to "use" modules in every scope that accesses those names, which is a good thing to do anyway.
Definitely 6.d material though as it will break existing code. 2ceb08d | niner++ | t/04-nativecall/04-pointers.t: Fix a NativeCall test missing the Pointer type in the EVAL
08:15
lizmat nine: one could argue this is a bug fix, no? 08:16
nine One surely could as the current code does not do what we actually intended it to do. It's also undeniably a backwards incompatible change. 08:18
nine lizmat: needs fixes like this ^^^
lizmat isn't EVAL to use the surrounding lexical scope? 08:24
nine m: use MONKEY-SEE-NO-EVAL; my $a = 3; EVAL 'say $a' 08:25
camelia rakudo-moar 8d357a: OUTPUT«3␤»
nine seems to
Also NativeCall actually exports Pointer. I do not recall actually changing anything WRT exporting. 08:27
And.... perl6 -e 'use NativeCall; EVAL "Pointer.new"' seems to work just fine even in my branch 08:33
Yet the test throws a "Could not find symbol '&Pointer'" in that line
Aaah... .perl results in NativeCall::Types::Pointer.new(74978544) 08:34
lizmat ah, hehe... so the test is really faulty ?
dalek kudo/lexical_module_load: 8730aff | niner++ | t/04-nativecall/04-pointers.t:
Fix test failing due to not finding NativeCall::Types::Pointer
08:35
nine Yes and that's the real fix ^^
lizmat :-) 08:38
nine lizmat: thanks for pointing that out :)
lizmat hmmm... this actually points to another conceptual issue
compared to Perl 5
Perhaps "use NativeCall::Types" should also export whatever NativeCall::Types::Pointers imports ? 08:39
Perhaps "use NativeCall::Types" should also export whatever "use NativeCall::Types::Pointer" imports ?
nine An ordinary Inline::Perl5 user will probably not need NativeCall types like Pointer in her namespace. 08:41
lizmat true, that is this specific case 08:42
but for module builders in general, coming from Perl 5,
module A { sub a() is export { } }; module B { use A; }; # does "a" live here? 08:44
nine > perl -E 'package Foo { use Moose; }; has "a" => (is => "ro");' 08:45
String found where operator expected at -e line 1, near "has "a""
Not even in Perl 5 :)
dalek kudo/nom: e0619f4 | lizmat++ | src/core/Rakudo/Internals.pm:
Rakudo::Internals.IterateMonotonicFromIterators

This is the iterator to be used for Str.match(:nth(1,4,6)). But will most likely be usable for many other situations as well as an optimization for e.g. @ar[3,5,7] if we could determine at compile time that index values are monotonically increasing.
09:09
lizmat nine: ah, ok *phew* :-) 09:10
dalek kudo/lexical_module_load: 86b0675 | niner++ | src/Perl6/Actions.nqp:
Fix perl6 --doc

Fixup for "Make importing globals from loaded modules lexical"
09:18
nine Now there's only one test file with failures. 09:27
And this fun one in Inline::Perl5: Object of type A in QAST::Var value, but not in SC 09:28
lizmat preliminary benchmark on Str.match(/./,:nth(3,5,7)) being 14x faster :-) 09:29
nine woah!
dalek ast/lexical_module_load: 8a4cc7e | niner++ | / (4 files):
Fixup tests for lexical module loading

We now need to explicitly use modules if we want to use their symbols and can no longer rely on them being loaded by one of our dependencies.
09:45
nine With that the spec tests are now clean :)
lizmat nine: I would argue that the test in S10-packages/basic.t is faulty 09:46
I guess one would need to add a class method to both Bar/Baz that would return the Foo, and then check that they're the same
nine I think you're right. 09:47
travis-ci Rakudo build passed. Elizabeth Mattijsen 'Rakudo::Internals.IterateMonotonicFromIterators 10:00
travis-ci.org/rakudo/rakudo/builds/169706444 github.com/rakudo/rakudo/compare/8...619f48cc23
lizmat m: Seq.new(Nil.iterator).list # seems wrong to me, expected really () 10:28
camelia ( no output )
lizmat m: dd Seq.new(Nil.iterator).list # seems wrong to me, expected really ()
camelia rakudo-moar e0619f: OUTPUT«(Nil,)␤»
lizmat hmmm... I guess roast disagrees with me :-( 10:38
moritz Nil isn't a fancy empty list anymore 10:42
lizmat moritz: ah, good point :-) 10:49
m: "abc".match(/x/,:nth(*)) # unexpected ? 10:52
camelia rakudo-moar e0619f: OUTPUT«Attempt to retrieve before :1st match -- :nth(0)␤ in block <unit> at <tmp> line 1␤␤»
lizmat sorta expected Nil there 10:54
m: "abc".match(/./,:nth(*)) # returns the last if we do have a match
camelia ( no output )
lizmat m: say "abc".match(/./,:nth(*)) # returns the last if we do have a match 10:55
camelia rakudo-moar e0619f: OUTPUT«「c」␤»
dalek kudo/lexical_module_load: 11f1838 | niner++ | src/Perl6/ (2 files):
Fix "Object of type A in QAST::Var value, but not in SC"

Runtime generated type objects were missing from the SC. Add them when generating the code to register them by name.
11:06
nine Aaaand that fixes the Inline::Perl5 issue :)
lizmat m: dd "abc".match(/./,:nth(2,3,4)); say $/ # arrgh, thought that :nth() was lazy 11:09
camelia rakudo-moar e0619f: OUTPUT«()␤()␤»
lizmat m: dd "abc".match(/./,:nth(1,2,3)); say $/
camelia rakudo-moar e0619f: OUTPUT«(Match.new(ast => Any, list => (), hash => Map.new(()), orig => "abc", to => 1, from => 0), Match.new(ast => Any, list => (), hash => Map.new(()), orig => "abc", to => 2, from => 1), Match.new(ast => Any, list => (), hash => Map.new(()), orig => "abc", to …»
lizmat m: say "abc".match(/./,:nth(1,2,3)); say $/
camelia rakudo-moar e0619f: OUTPUT«(「a」 「b」 「c」)␤(「a」 「b」 「c」)␤»
lizmat m: say "abc".match(/./,:nth(1,3,2)); say $/
camelia rakudo-moar e0619f: OUTPUT«(「a」 「c」)␤(「a」 「c」)␤»
lizmat now *that* strikes me as wrong again: either this should be () or just a c b 11:10
nine Now panda's still failing with a weird issue. I have to move to use Panda::* statements into the class Panda { } block for rakudo to find the types. As if we don't look into the outer lexical scope. 11:11
lizmat nine: weird
jnthn: re nth(1,3,2), you did not want to have that cache
turns out, it already is ???
so why don't we just make it work ??? 11:12
*sigh*
lizmat understands more and more why nobody wanted to touch Str.match 11:21
.tell jnthn "abc".match(/./,:nth(2,3,4)) fails because there is no 4th match, implying this is cached after all. So, since we *have* caching here, I propose we just make "abc".match(/./,:nth(1,3,2)) work 11:24
yoleaux2 lizmat: I'll pass your message to jnthn.
lizmat goes afk for some fresh air 11:25
psch o/ 11:38
seems my isp finally got their whatever-exactly-it-was troubles under control \o/
DrForr Likely related to the ongoing DDoS. 11:39
psch no idea. it started wednesday last week or so?
and affected pretty much everything, lots of packet loss, not resolving dns servers... 11:40
DrForr Well, if by that you mean 3 days or so ago, the answer is definitely yes. 11:41
psch no, i mean about 10 days ago 11:42
DrForr English is so f*cking vague at times.
Likely not, then.
dalek kudo/nom: da7877e | lizmat++ | src/core/Rakudo/Internals.pm:
Rakudo::Internals.IterateFromIterators

Create iterator from two iterators: one with source values, and one with index values. Cache the source elements that are requested by the index values. Indexes do not need to be in any order. If there is no value for a given index (because it's not in the cache and the source values iterator is exhausted), return Nil. Optionally call an out-of-bounds block, e.g. to allow warnings or setting flags.
Remove SeqUsingIndexIterator, which was the inspiration.
This iterator will be used for Str.match(/./, :nth(2,6,4))
15:28
ar: bbece36 | (Steve Mynott)++ | README:
Refer to missing tests issue. Pointed out by Ira Byerly++
15:53
nine Aaah...the Panda problem is due to nested namespaces. Could golf it to: use A::B; class A { method foo(A::B $a) {} } 16:01
dalek kudo/nom: c942593 | lizmat++ | src/core/Rakudo/Internals.pm:
Don't return Failures, just throw
16:19
timotimo Zoffix: will perl6.fail get a way to select bugs that have multiple tags? 16:22
dalek ar: 0c23acc | (Steve Mynott)++ | README:
some more help with windows build options
16:29
ar: 1a138ac | (Steve Mynott)++ | README:
tweak README
stmuk_ I like the way Apple automatically upgraded their clang without asking me just as I'm about to use it :/ 16:41
timotimo %)
that's worse than windows where it says "hey, you want to use the computer now? too bad, i'll spend half an hour doing updates" 16:42
"fuck the presentation you wanted to give. and fuck you just in general."
mst hm? windows 10 schedules reboots for overnight and doesn't even start unless the machine's been idle for a while 16:43
timotimo mst: my dad told me this. he was going to give a presentation, opened his laptop, it did updates instead of letting him use the machine 16:44
so maybe it's related to suspend/resume?
i told that story in some chat and someone else said "that's exactly what happened to me, too!" 16:45
so either windows is like "fuck these exact two people in particular" 16:46
mst it depends which version of windows and how you've configured it
timotimo or it happens to a bunch of random people for some reason
it was the windows 10 that lenovo pre-installed when dad bought the laptop
mst hrm. thinkpad or a consumer grade? 16:47
timotimo thinkpad 16:48
mst I'm on a helix 2 which came with 8.1 which I immediately upgraded and it's not done that 16:50
but it is entirely possible that he kept it suspended past some magic time and on resume it went "fuck fuck fuck UPDATE NOW"
mine usually stays open and plugged in overnight specifically so the auto-update can do its shit while I'm asleep 16:51
timotimo quite potentially had it suspended for more than a whole day
mst I think there's a point beyond which windows goes "I am probably vulnerable now and should prioritise patching myself before I come near a network" 16:52
but mine hasn't tried for quite a while
in fact, I *think* the last thing that tried was the win8 install on my thinkpad tablet 2 16:53
which got a very rapid 'shutdown /a'
because fuck you
timotimo it's nice that you're able to shutdown /a, but it sucks that you have to go use a commandline tool to do that when it should offer you a cancel button in the UI
stmuk_ my xcode 8/clang 8 now errors with dyld: lazy symbol binding failed: Symbol not found: _clock_gettime 17:16
geekosaur 10.11? 17:23
you need to dig out the xcode 7 command line tools from developer.apple.com and reinstall them over xcode 8's command line tools
stmuk_ yes 17:25
some suggest upgrading to sierra it seems
mst timotimo: the last time I recall it *did* offer a cancel button, but if you're me and don't pay attention there's a 30 second-ish window when it auto-triggers where the CLI still works and I needed the extra time
timotimo right, fair enough
geekosaur basically apple screwed up. the xcode 8 for 10.11 uses the 10.12 headers/libs, which use clock_gettime that is a syscall that doesn't exist on 10.11 17:26
also anything that checks for clock_gettime (e.g. autoconf) will find it even though it's actually not there
mst but, I mean, yes it sucks, but I guess it's a trade-off between 'fuck you' and 'goatse'
timotimo excuse me. i have to tell you that it's actually GNU/goatse 17:27
etc etc
stmuk_ geekosaur: thanks thats a better one line summary than anything I found via google
TimToady .tell lizmat "abc".match(/./,:nth(2,3,4)) should just stop after 3, on the assumption that it's an infinite monotonic list, so you could do :nth(2,4...*) to get every other one 19:40
yoleaux2 TimToady: I'll pass your message to lizmat.
lizmat .
yoleaux2 19:40Z <TimToady> lizmat: "abc".match(/./,:nth(2,3,4)) should just stop after 3, on the assumption that it's an infinite monotonic list, so you could do :nth(2,4...*) to get every other one
lizmat TimToady: ok, that's nice, but how do you explain this:
TimToady .tell lizmat if we're caching because :nth(*-1) is supported, I'd like to thow out *-1
yoleaux2 TimToady: I'll pass your message to lizmat.
lizmat .
yoleaux2 19:40Z <TimToady> lizmat: if we're caching because :nth(*-1) is supported, I'd like to thow out *-1
TimToady I guess you're here now :) 19:41
*throw
lizmat TimToady: we're caching because we need to determine whether we have a overall "match"
TimToady throw out those semantics
there is no overall match
lizmat not for :x and not for :nth?
or just for :nth ?
TimToady it's just however many of them actually match, returned as a list
:x has to match that many, so that's different 19:42
lizmat ok, so that semantic we remove from :nth then
this *will* cause spectest breakage
TimToady well, we'll have to play that by ear 19:43
lizmat ok
TimToady: ok to warn on non-monotonic index values ? 19:44
TimToady if we're gonna return a list of matches, it's the number of matches that determines how 'matched' it is, as in list elems
lizmat ok
TimToady ok to die, as far as I'm concerned
lizmat ok, die it is 19:45
TimToady we might just end up saying you can't use :x with :nth, dunno
lizmat well, that will work: the :x will be just a downstream iterator on the :nth iterator 19:46
and it will stop when the upper value of the range is reached
TimToady okay
lizmat and return () if the min value hasn't been reache 19:47
d
got that worked out already actually :-)
TimToady so it's really just counting elems in the sequence as they go by
guess that works
then :nth can give a form like 2,4...* while :x can give the actual desired count 19:48
lizmat yup
TimToady sounds goody to me
lizmat cool :-)
TimToady good : goody :: truth : truthy
lizmat TimToady: say "1234567890".match(/./, :nth(1,2,4,3,4,5), :x(2)); # (「1」 「2」) 19:53
Zoffix timotimo, only through buggable or by manually typing the URL 19:54
buggable, tag perf,io
buggable Zoffix, There is 1 ticket tagged with PERF, IO; See perl6.fail/t/PERF,IO for details
lizmat TimToady: say "1234567890".madch(/./, :nth(1,2,4,3,4,5), :x(4)); # dies with "Attempt to fetch value #3 after #4"
s/madch/match/ 19:55
Zoffix TimToady, was there a reason to only allow negative integers here and not other numerics?: github.com/rakudo/rakudo/commit/ea...98f5fdfe20
m: sub (-42.2) {} 19:56
camelia rakudo-moar c94259: OUTPUT«===SORRY!=== Error while compiling <tmp>␤A parameter may only have one prefix type constraint␤at <tmp>:1␤------> sub (-42.2⏏) {}␤»
Zoffix m: sub (42.2) {}
camelia ( no output )
Zoffix I guess if 42.2 works, then negative one should too.....
Zoffix is giving rt.perl.org/Ticket/Display.html?id...et-history a go and is getting deep into the rabit hole 19:57
TimToady Have the appropriate amount of fun. :) 19:58
japhb .ask nine Is there a way that works in Rakudo *now* that makes it non-super-painful to write convenience modules that pull in lots of other modules (with attendent types and other exports), that will still work with the changes in your lexical_module_load branch? 21:10
yoleaux2 japhb: I'll pass your message to nine.
japhb .tell nine Use case: I want to separate my large pile of code into lots of small-to-medium modules for ... well, modularization. But I'd still like to start a consuming program with a single "use Foo;" and get everything imported in for me, because essentially I'm defining a new language with all the parts of speech in different modules, and I just want to "use English;" and not "use English::Pronoun; use English::Adverb; ..." 21:13
yoleaux2 japhb: I'll pass your message to nine.
RabidGravy japhb, easiest way is to create a sub EXPORT in the mainline of the main module that re-exports them all 21:33
japhb .tell RabidGravy The "all" to export determined how? In order to not violate DRY, I'd rather not have it that every time I add an exported feature to something deep in my use hierarchy I have to add it all above, so every change becomes log(n) more duplicated. I guess the only thing is to write EXPORT so that it just iterates over the export stashes of the used modules. But then I've got an annoying boilerplate EXPORT sub, so I factor that out into a module 21:51
yoleaux2 japhb: I'll pass your message to RabidGravy.
japhb .tell RabidGravy I want this use case to be *easy* in order to promote modularity, not something where everyone has to learn the special hack. 21:52
yoleaux2 japhb: I'll pass your message to RabidGravy.
RabidGravy then write something to make it easy 21:59
yoleaux2 21:51Z <japhb> RabidGravy: The "all" to export determined how? In order to not violate DRY, I'd rather not have it that every time I add an exported feature to something deep in my use hierarchy I have to add it all above, so every change becomes log(n) more duplicated. I guess the only thing is to write EXPORT so that it just iterates over the export stashes of the used modules. But then I've got an annoying boilerplate EXPORT sub, so I factor that
out into a module
21:52Z <japhb> RabidGravy: I want this use case to be *easy* in order to promote modularity, not something where everyone has to learn the special hack.
lizmat hmmm..... looks like we lost dalek again? 22:05
lizmat committed github.com/rakudo/rakudo/commit/a3...841cd9ecdd # Generalize List.tail into IterateLastNFromIterator 22:19
lizmat committed github.com/rakudo/rakudo/commit/12...19ac6f1aed # Introduce R::I.LastFromIterator 22:20
lizmat is tired and goes to bed 22:21
travis-ci Rakudo build errored. Elizabeth Mattijsen 'Introduce R::I.LastFromIterator 22:48
travis-ci.org/rakudo/rakudo/builds/169815007 github.com/rakudo/rakudo/compare/c...7b3be424e3
buggable [travis build above] ✓ All failures are due to timeout (1), missing build log (0), or GitHub connectivity (0). All failures are on JVM only.
dogbert17 .seen Zoffix 23:13
yoleaux2 I saw Zoffix 19:57Z in #perl6-dev: * Zoffix is giving rt.perl.org/Ticket/Display.html?id...et-history a go and is getting deep into the rabit hole
Zoffix ? 23:14
dogbert17 hi Zoffix, have a favor to ask
is RT #128873 still a problem?
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128873
Zoffix I think timotimo fixed at least some of it 23:15
dogbert17 and I think I fixed the rest in my first MoarVM PR
timotimo i changed something about that 23:21
dogbert17 timotimo: indeed you did :-) tried Zoffix example and it runs in ~1 sec now 23:22