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 constraintat <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 |