MasterDuke | in nqp, if i have a bigint type object, how do i get the string 'bigint'? | 01:40 | |
timotimo | $object.HOW.name($object) usually | 01:46 | |
MasterDuke | ooh, timotimo++ | 02:05 | |
babydrop: perl6.wtf hasn't been regenerated since oct 10? | 02:10 | ||
s: help | 02:41 | ||
SourceBaby | MasterDuke, Something's wrong: ERR: ===SORRY!=== Error while compiling -eUndeclared routine: help used at line 6 | ||
MasterDuke | s: help? | 02:42 | |
SourceBaby | MasterDuke, Something's wrong: ERR: ===SORRY!=== Error while compiling -eUnable to parse expression in argument list; couldn't find final ')' at -e:6------> put sourcery( help⏏? )[1]; expecting any of: infix infix stopper | ||
MasterDuke | s: Attribute, 'perl' | 02:47 | |
SourceBaby | MasterDuke, Sauce is at github.com/rakudo/rakudo/blob/345f...Mu.pm#L527 | ||
babydrop | MasterDuke: yeah, because the update script fails when merging moarvm master onto the branch with coverage support | 09:36 | |
Or at least that was the case last I ran it a month or so ago... Seems to have reached stage parse right now. | 09:55 | ||
MasterDuke: oh, it builds the first one just for fun. Still fails the same: gist.github.com/zoffixznet/695ee7f...34ad903068 | 10:01 | ||
MasterDuke: and this is the point of when, I guess: gist.github.com/zoffixznet/6420204...udo-sh-L23 | 10:02 | ||
(that's the script I run to update perl6.wtf) | |||
dalek | kudo/nom: db9ae22 | (Zoffix Znet)++ | src/core/Str.pm: Update name of param in a comment |
10:17 | |
[Tux] | This is Rakudo version 2016.11-166-g345f6a714 built on MoarVM version 2016.11-44-g8e24145d | 10:22 | |
csv-ip5xs 3.332 | |||
test 14.924 | |||
test-t 6.647 | |||
csv-parser 14.060 | |||
dalek | kudo/nom: 8e3cbc6 | (Zoffix Znet)++ | src/core/Str.pm: Fix a number of issues in parse-base() error reporting - Fix missing sign in error message - Fix incorrect char referenced if invalid char is the first char of fractional part of the number - Fix incorrect char referenced in negative numbers, when the invalid char is in fractional portion of the message Fixes RT#130298: rt.perl.org/Ticket/Display.html?id=130298 |
11:37 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130298 | ||
babydrop makes the "Fry" meme with "Not sure whether Awesome Errors cause too much programming bugs or I'm just a crappy programmer" | 11:38 | ||
dalek | ast: 33edc14 | (Zoffix Znet)++ | S32-str/parse-base.t: Extra tests for parse-base() errors - Fix broken tests that checked for signless string for negative numbers - Add extra tests to cover the ticket[^1] and fixes[^2] [1] RT#130298: rt.perl.org/Ticket/Display.html?id=130298 [2] github.com/rakudo/rakudo/commit/8e3cbc67db |
||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130298 | ||
kudo/nom: 3dd2916 | MasterDuke17++ | src/Perl6/Metamodel/BOOTSTRAP.nqp: Add .gist, .perl, and .Str to BOOTSTRAPATTR Fixes RT77070, rt.perl.org/Ticket/Display.html?id=77070 |
12:23 | ||
rakudo/nom: c4a6011 | lizmat++ | src/Perl6/Metamodel/BOOTSTRAP.nqp: | |||
rakudo/nom: Merge pull request #943 from MasterDuke17/RT77070 | |||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=77070 | ||
dalek | rakudo/nom: | 12:24 | |
p: af0e5fd | (Pawel Murias)++ | src/vm/js/nqp-runtime/bootstrap.js: [js] Fix stuff found by 'make js-lint'. |
12:26 | ||
p: 3e71bfe | (Pawel Murias)++ | src/vm/js/nqp-runtime/ (2 files): [js] Use ES6 class syntax when adding internal REPR specific methods.` |
|||
nine | Results of yesterday's ecosystem smoke test: niner.name/perl6/ecosystem/2016-12-08.html | 12:30 | |
yoleaux2 | 8 Dec 2016 17:52Z <pyrimidine> nine: in case you miss this in the backlog: Inline::Perl5 broke with github.com/rakudo/rakudo/commit/b2...25688487ca | ||
nine | .tell pyrimidine Thanks a lot! Will dig from there. | 12:31 | |
yoleaux2 | nine: I'll pass your message to pyrimidine. | ||
babydrop | I was gonna say looks pretty green | 12:34 | |
... until I started scrolling :) | |||
nine | Feels like one could fix half the breakage by fixing JSON::Name | 13:31 | |
babydrop | it passses for me on 2016.11-144-gbc13bb5 :/ | 13:35 | |
(installed with zef) | |||
nine | I just see lots of "Could not find JSON::Name at line". The same for Encode | 13:36 | |
According to emmentaler only 15 more modules fail their tests with the lexical_module_loading branch. And one even starts passing :) | 15:06 | ||
jnthn: ^^^ | |||
babydrop | I recall there was a gist explaining what that branch was about... does anyone have the URL? | 15:21 | |
nine | gist.github.com/niner/70f7b46eefb7...6bea11efeb | 15:24 | |
babydrop | Thanks. | ||
We don't have any sort of "data dumper" type of thing to look into QAST generated by a Perl6/Actions method do we? I wanna see what this QAST ends up lookin' like: github.com/rakudo/rakudo/blob/c4a6....nqp#L7843 | 16:24 | ||
and --target=ast has a ton of stuff, I'm unsure what is what | 16:25 | ||
timotimo | we do have .dump or what's it called | ||
that's what gets used to dump --ast | 16:26 | ||
babydrop looks into that | |||
timotimo | a big part of the dumped stuff is things like "want" | ||
i mean the wantness mechanics in general | |||
babydrop | note($past.dump); did the trick | 16:39 | |
psch | huh, so apparently we call Cursor.INTERPOLATE at least three times for /^(@a)*?$/ | 18:42 | |
buuut, @a = <a b bc cd>, so it seems we want to call it four times, because we have to backtrack once..? | |||
which means i need to get one level higher to set the backtracking, which is good because i have no idea how to figure out if we are allowed to backtrack at the spot where my debug-say is sitting... :S | 18:43 | ||
hm, i did try setting .backtrack on the QAST::Regex that calls INTERPOLATE though... | 18:48 | ||
babydrop | What's QAST::Op.new( :op('p6store'), for ? | 18:55 | |
psch | babydrop: calling nqp::p6store | 18:56 | |
babydrop | ehehe... well, yeah, I figured as much but is nqp::p6store documented somewhere? I don't see it in github.com/perl6/nqp/blob/master/d...s.markdown | ||
psch | babydrop: try rakudo/docs/ops.markdown | 18:57 | |
babydrop | Thanks | ||
psch | babydrop: not all nqp:: ops are defined in nqp | ||
babydrop | well, it's listed... but without description. p6store(Mu $container, Mu $value) I guess that just stores $value in $container | 18:58 | |
psch | pretty much, it has some more logic like "can we do this on VM-level or do we need to call .STORE" basically | ||
it's in rakudo/src/vm/moar/Perl6/Ops.nqp | 18:59 | ||
babydrop | Thanks. | ||
m: dd infix:<,>(42) | 19:06 | ||
camelia | rakudo-moar c4a601: OUTPUT«42» | ||
babydrop | What's the purpose of this idiom? github.com/rakudo/rakudo/blob/nom/...7768-L7772 | 19:07 | |
Why is infix:<,> called? | |||
dalek | kudo/nom: 524368c | lizmat++ | src/core/Rakudo/Internals/VMBackedDecoder.pm: Revert "Simplification of LAST block" This reverts commit 58cdfd80b30444ba4755bb3fa0992f0f449f8a9e. The change was not semantically identical and caused problems in some situations. |
||
psch | babydrop: the comment right above doesn't make sense to you? | 19:09 | |
lucasb | ($/,) = $result | 19:10 | |
explain like I'm 5, please :) | |||
the comment is hard to understand :) | |||
lizmat | m: dd (42,) | 19:11 | |
camelia | rakudo-moar c4a601: OUTPUT«(42,)» | ||
lizmat | in other words: put 42 into a List | ||
afk again& | |||
psch | m: my $x = 1, 2; say $x | ||
camelia | rakudo-moar 524368: OUTPUT«WARNINGS for <tmp>:Useless use of constant integer 2 in sink context (lines 1, 1)1» | ||
psch | m: my ($x,) = 1, 2; say $x | ||
camelia | rakudo-moar 524368: OUTPUT«1» | ||
babydrop | lizmat: do you recall if .match returning a Slip was done for some good reason? | ||
m: dd 'foo'.match: /d/, :g; | |||
camelia | rakudo-moar 524368: OUTPUT«slip()» | ||
babydrop | star: dd 'foo'.match: /d/, :g; | ||
camelia | star-m 2016.10: OUTPUT«()» | ||
psch | babydrop: :g returns something listy because otherwise we'd need a different approach to truthiness | 19:12 | |
lizmat | babydrop: no idea, that predates my involvement :-) | ||
afk& | |||
babydrop | OK | ||
psch | babydrop: there was a lot of discussion between me and TimToady somewhere in spring/summer 2015 or so i think..? | 19:13 | |
babydrop | psch: about what? | ||
psch | babydrop: nested match objects instead of a list of match objects from :g | ||
babydrop | star: (dd 'foo'.match: /d/, :g).^name | 19:14 | |
camelia | star-m 2016.10: OUTPUT«()» | ||
babydrop | star: (dd 'foo'.match: /d/, :g).^name.say | ||
camelia | star-m 2016.10: OUTPUT«()Nil» | ||
babydrop | star: ('foo'.match: /d/, :g).^name.say | ||
camelia | star-m 2016.10: OUTPUT«List» | ||
psch | committable6: 2015.5 ("foo" ~~ m:g/(.)/).^name.say | ||
committable6 | psch, ¦«2015.5»: Cannot find this revision | ||
babydrop | psch: ok, thanks for ($_,) thing. I guess I read that as the op being run first | ||
psch | committable6: 2015.05 ("foo" ~~ m:g/(.)/).^name.say | ||
committable6 | psch, ¦«2015.05»: List | ||
psch | committable6: 2015.01 ("foo" ~~ m:g/(.)/).^name.say | ||
committable6 | psch, ¦«2015.01»: List | ||
psch | well, maybe it's even older | ||
or we had List from the start and didn't change it | 19:15 | ||
i forget | |||
babydrop | psch: but the question is 2016.11 vs 2016.10 | ||
lucasb | bisectable6: old=2016.10 new=HEAD die if 'foo'.match(/d/, :g) ~~ Slip | ||
bisectable6 | lucasb, Bisecting by exit code (old=2016.10 new=524368c). Old exit code: 0 | ||
lucasb, bisect log: gist.github.com/a7b60bcf6fb4ab9fea...468dc531e6 | |||
lucasb, (2016-10-23) github.com/rakudo/rakudo/commit/b7...e8f5c77f41 | |||
psch | well, it's Slip since 2016.10 at least | 19:16 | |
lucasb | since Oct 23 actually | ||
after the 2016.10 release | |||
psch | oh, right, there's one inbetween that didn't die | ||
well, a few, scattered | |||
...oh duh | |||
it's bisect so it's not in chronological order | |||
lucasb | hehe | 19:17 | |
babydrop stops confusing everyone and just changes it back to List in hopes of clean spectest run and fixed bug | |||
psch | babydrop: fwiw, lizmat++ *should* know why it's Slip instead of List now... :) | ||
psch keeps getting sidetracked so badly /o\ | 19:18 | ||
this regex backtracking/interpolation thing is weird though | |||
as in, i don't get how Cursor.INTERPOLATE gets called multiple times in the first place | 19:22 | ||
and the fact that it gets called as many times as we'd try to match something from the array when we don't backtrack just adds to that | |||
i mean, that might be a coincedence | |||
actually, i think conceptionally the problem with INTERPOLATE is that we're actually doing the match inside of it | 19:36 | ||
which means we move .pos which each submatch, but we don't save a previous-matches stack | |||
...at least if i am not misreading this, but it seems to fit the observed behavior | 19:37 | ||
s/which/with/ | 19:38 | ||
dalek | rakudo/nom: 5476d60 | (Zoffix Znet)++ | src/core/Str.pm: | 19:51 | |
rakudo/nom: Make .match(:g) return empty List on match failure | |||
rakudo/nom: | |||
rakudo/nom: As a side-effect of Great .match Refactor[^1], .match(:g) on failure | |||
rakudo/nom: to match was changed from returning an empty List to returning | |||
rakudo/nom: an Empty (which is a slip). As a consequence, the idiom of | |||
rakudo/nom: nqp::p6store( nqp::call(&infix:<,>, $/), $_) (where $/ is the slip), in | |||
rakudo/nom: Perl6/Actions that handle S:g/// resulted in an empty list, rather than | |||
rakudo/nom: the actual original string, which is the cause of the bug in the ticket[^3] | |||
rakudo/nom: | |||
rakudo/nom: During the G.mR, the .comb on failure was also changed to return an Empty, | |||
rakudo/nom: instead of empty Seq. This commit affects that behaviour as well, | |||
babydrop | rakudo/nom: returning an empty List instead. | ||
rakudo/nom: | |||
rakudo/nom: [1] github.com/rakudo/rakudo/commit/b7201a8f223 | |||
rakudo/nom: [2] github.com/rakudo/rakudo/blob/c4a6...7796-L7803 | |||
rakudo/nom: [3] rt.perl.org/Ticket/Display.html?id=130289 | |||
github.com/rakudo/rakudo/commit/5476d60 | |||
dalek | ast: 12b7712 | (Zoffix Znet)++ | S05-substitution/subst.t: Test S:g/// returns original string on failure to match RT#130289: rt.perl.org/Ticket/Display.html?id=130289 Rakudo fix: github.com/rakudo/rakudo/commit/5476d60 |
||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130289 | ||
babydrop | raaawrr... a successful bug hunt | 19:52 | |
babydrop eats a bug sandwich | |||
Yummy | |||
japhb | .oO( "I WILL EAT YOU LIKE A BUG SANDWICH, MAGGOT!" ) |
19:59 | |
yoleaux2 | 6 Dec 2016 13:27Z <jnthn> japhb: The current scheduler is decidedly over-simplistic; it's not far off being "the simplest thing that could possibly work". Scalability is also a little bit limited by `await` not yet being non-blocking, which in turn makes us need a lot more real threads than we should. | ||
6 Dec 2016 13:34Z <jnthn> japhb: Also, we never actually put stuff on the main application thread; it's not part of the pooling mechanism. Any jank you're seeing is probably due to plain old contention with other threads to get scheduled, or possibly GC stop-the-world leading to long pauses (though profiles I've looked at suggested the world-stopping ain't all that costly). | |||
6 Dec 2016 13:35Z <jnthn> japhb: Also be clear, when I say "contention with other threads to get scheduled", these are real kernel threads, so it's the OS scheduler, not something in Rakudo. Rakudo's job is more to pick a smarter number of such threads to do CPU-bound stuff. | |||
japhb | jnthn++ # Clear explanation as usual | ||
babydrop | ZOFVM: Files=1204, Tests=130260, 140 wallclock secs (20.58 usr 3.24 sys + 3177.20 cusr 270.29 csys = 3471.31 CPU) | 20:43 | |
[Coke] | ZOFVM? | 20:44 | |
psch | some EC2 instance i think? | 20:45 | |
[Coke] | ah, oh. | ||
babydrop | irclog.perlgeek.de/perl6-dev/2016-...i_13352721 | ||
And you can search the log to get all the values over time: irclog.perlgeek.de/perl6-dev/searc...mp;q=ZOFVM | |||
Though I find the variance in them to be quite crazy so the data's quality is prolly sucky | 20:46 | ||
tbrowder | gfldex: FYI, "zef upgrade Typesafe::XHTML::Writer" shows that the module in the ecosystem is still version 0.1.0. Same with uninstall and install--no change in version detected by zef. I made my fork current and all is well test-wise. Maybe the ecosystem hasn't caught up yet. | 22:29 | |
ugexe | tbrowder: try `zef update` first | 22:31 | |
tbrowder | aha, will do... | ||
ugexe: that did it, thanks. got to remember to do that--maybe a cron job is better than memory | 22:33 | ||
ugexe | tbrowder: you can also edit the resource/config.json (copy to ~/.zef/config.json) and switch this block (github.com/ugexe/zef/blob/master/r...n#L12-L18) with the block under it (#L19-L32) | 22:38 | |
that will let the 2nd block get searched first, which means the auto-update | 22:39 | ||
tbrowder | okay, that's easier! thanks | ||
ugexe | otherwise "Text::XHTML::Writer" gets searched for as "Text::XHTML::Writer:ver<*>", which the cached storage (the first block) fulfills | 22:40 | |
`zef "Text::XHTML::Writer:ver<0.1.1>" --force` would have worked too | 22:41 | ||
--force probably not needed actually | |||
tbrowder | doesn't --force result in no tests? | 22:42 | |
ugexe | but I will skip the cached storage for `zef upgrade XXX`, that is not expected | 22:43 | |
it would run the tests yeah, but it isn't needed there (only with modules you are installing over with version '*') | 22:44 | ||
tests run but results ignored^ | |||
tbrowder | ok, i've updated my own .zef/config.json as you suggested | 22:45 | |
psch | jnthn: btw, i need a different angle for state vars on nqp-j | 23:04 | |
jnthn: think is | |||
*thing | 23:05 | ||
jnthn | heh, that's my regular typo :P | ||
yoleaux2 | 14:49Z <dogbert17> jnthn: It looks as if github.com/rakudo/rakudo/commit/58...0f449f8a9e breaks t/spec/S17-procasync/no-runaway-file-limit.t. Is it ok with you if we revert that fix? | ||
jnthn | dogbert17_: Think that revert already happened... | ||
psch | jnthn: org.perl6.nqp.runtime.CallFrame copies state vars from the static code info into the coderef | ||
jnthn: or, well, clones them | |||
CallFrame.java:149-157 | 23:06 | ||
semantically this looks identical to the corresponding moar code to me | |||
jnthn | Into the coderef? | ||
psch | yeah, cr.oLexState | ||
jnthn | Or into the callframe? | ||
psch | well, both actually | ||
jnthn | Yeah | ||
Well... | |||
Hm | |||
Oh :( | |||
I suspect that what you're running up against is that Moar and the JVM have slightly different closure models | 23:07 | ||
psch | jnthn: right, the only thing that kinda looks like the right solution to me gives us a fresh clone *after the first access* | ||
jnthn | Meaning that we don't have clones in all of the same places :( | ||
psch | so i have to dig through the whole closure clone semantics..? | 23:08 | |
i had tried cloning the static code info, cause that kinda seemed like the right idea at the time | |||
that died with something-or-other being null, i think something in the tc | |||
jnthn | I think the JVM backend still has that priorInvocation thingy | 23:09 | |
At some point, though, the way we deal with closures on Moar and JVM diverged. | |||
psch | yeah, that's still around i think | ||
jnthn | The idea being to figure it out on Moar, then get it ported to the JVM | 23:10 | |
psch | i'm by far not confident in my understanding there to get that ported | ||
as in, i'm not sure i can understand what we're doing on moar -- mostly because i wouldn't know where to look -- nor where that stuff goes on the jvm | |||
jnthn | Not sure I'm in much of a better place :P | ||
Well, I know what goes on on Moar | |||
But it was long enough ago I forget what I changed and what the differences are :( | 23:11 | ||
I do know Moar has no priorInvocation thingy | |||
psch | hrm :/ | ||
jnthn | I'm pretty sure that declaration_static and immediate_static came to exist at the same time I did this work | ||
And I think it went something along the lines of, JVM treats them the same as declaration and immediate | 23:12 | ||
psch | okay, so git log around the time of the ref of the blame of the declaration of those two functions..? | ||
jnthn | Well, I think they're branches in the compilation of QAST::Var | ||
But yeah | |||
psch | ah, okay | ||
jnthn | My rough memory of it is that | 23:13 | |
The takeclosure op in Moar got thrown out | |||
psch | istr that arnsholt tried removing priorInvocation about a year back or so..? | ||
anyway | |||
jnthn | Or rather | ||
The code-gen of it became a noop | |||
In favor of us doing something smarter with immediate vs immediate_static | |||
As an added incentive, I think we have some thread safety problems on JVM that boil down to insufficient closure cloning that these changes would also fix. | 23:14 | ||
psch | right, so this might be necessary for Proc::Async anyway | ||
jnthn | And various other things, yeah | 23:15 | |
Long story short, if we get that wrong, all kinds of bets are off | |||
psch | yeah, i think we already got it pretty wrong and are wasting a lot of what the jvm could bring in async perf | ||
i mean, the state var bit is just plain wrong, and priorInvocation apparently is a crutch that doesn't work quite right | 23:16 | ||
...although i don't really get what exactly is going on there sooo | |||
alright, so i'll dig around somewhere in the vicinity of the gitrefs that touch the QAST var_decls you mentioned and see if i can figure out what changed in moar | 23:17 | ||
and how that translates to jvm | |||
can i assume sufficient confidence in the semantics that we don't need more experimentation on moar to figure them out better..? :) | 23:18 | ||
jnthn | Well, we will need further tweaks down the line | ||
But they'll build upon what's already there | |||
Not go in a different direction | |||
psch | alright, that's good enough for me | 23:19 | |
jnthn | Essentially, Rakudo's Perl6::Actions inserts a whole load of clone calls today | ||
But it'd be nice if they could be inserted by the QAST::Compiler | |||
psch | hm, but that falls out of shifting from nqp::takeclosure to having the right var_decl types?P | 23:21 | |
-P | |||
jnthn | Yes | 23:23 | |
Or at least, it can do :) | |||
It's just that we have code objects at the Perl 6 level that need taking care of | |||
psch | right, i'll try and dig around along these lines :) | 23:25 | |
not today though heh | |||
jnthn | Yeah, it's late here, I should go rest soon :) | 23:26 | |
psch | yup, same here, thanks for the pointers | ||
jnthn | Welcome. :) | 23:32 | |
MasterDuke | jnthn: re method caching with wheres. i looked through src/Perl6/Metamodel/BOOTSTRAP.nqp a bit, but never even figured out where to start experimenting. do you happen to have the next level pointer at hand? | 23:40 | |
oops, just saw he left for the night | 23:41 | ||
.ask jnthn re method caching with wheres. i looked through src/Perl6/Metamodel/BOOTSTRAP.nqp a bit, but couldn't figure out why/where/how where clauses precluded caching. do you happen to have the next level pointer at hand? | 23:47 | ||
yoleaux2 | MasterDuke: I'll pass your message to jnthn. | ||
AlexDaniel | committable6: 2016.10..2016.11 die if 'foo'.match(/d/, :g) ~~ Slip | ||
committable6 | AlexDaniel, gist.github.com/b6101e7f79a64123f3...399023c0d0 | 23:50 | |
AlexDaniel | psch: ↑ that's the best “chronological” order you can get now :) | 23:52 | |
psch: not that the commit hashes are grouped by the output, but inside every group they are kind of left to right | |||
you don't really have a chronological order in git history anyway due to merges and stuff… | 23:53 | ||
psch: but generally, yea, if you want to run something on a couple of hundreds commits, committable can do it :) | |||
there's some reasonable limit but the range between two releases will usually be OK | 23:54 | ||
note* | 23:56 |