dalek | ast: 29b093e | (Tom Browder)++ | S26-documentation/07-tables.t: add a more complex table test for a future bug fix |
02:42 | |
ast: 80c762e | (Tom Browder)++ | S26-documentation/07-tables.t: update plan val for the added test |
|||
ast: d445736 | (Zoffix Znet)++ | S26-documentation/07-tables.t: Merge pull request #131 from tbrowder/new-table-test add a more complex table test for a future bug fix |
|||
[Tux] | rt.perl.org/Ticket/Display.html?id=128184 is still awfully silent | 06:31 | |
even after Justin's additions | 06:32 | ||
This is Rakudo version 2016.06-50-g5a4963f built on MoarVM version 2016.06 | 06:33 | ||
test 16.348 | |||
test-t 9.885 | |||
csv-parser 22.564 | |||
dalek | kudo/nom: abfe06a | (Tom Browder)++ | src/Perl6/Pod.nqp: actually we're trying to find the shortest leading whitespace |
08:20 | |
kudo/nom: e4daf8a | lizmat++ | src/Perl6/Pod.nqp: Merge pull request #805 from tbrowder/fix-pod-note actually we're trying to find the shortest leading whitespace |
|||
kudo/nom: 8ab6dbe | lizmat++ | src/core/Baggy.pm: Make Baggy.pick(N) about 6x faster - optimized building the list of pairs to work on - optimized picking the right one from the bag |
09:23 | ||
jnthn | Clearly role Baggy needs a trousers method... | 09:33 | |
lizmat | afk for the rest of the day& | 09:50 | |
yoleaux2 | 28 Jun 2016 03:20Z <jdv79> lizmat: where from to? | ||
28 Jun 2016 09:48Z <sortiz> lizmat: I think that github.com/MoarVM/MoarVM/pull/377 can solve your problem | |||
psch | welp, something is different in how things break between install-core-dist.pl and the reductionist Foo.pm case | 10:02 | |
probably the fact that install-core-dist.pl nests two EVALs | |||
which somehow means that we don't generate the missing method during the "first pass" of the inner EVAL, so we don't have it all when we finish it | |||
i'm kind of completely out of clues :| | 10:34 | ||
dalek | p: 3a4c7a9 | jnthn++ | tools/build/MOAR_REVISION: Bump MOAR_REVISION for new multi-cache. |
12:18 | |
kudo/nom: d5c750f | jnthn++ | tools/build/NQP_REVISION: Bump to a MoarVM with improved multi-cache. It is able to cache on dispatches differentiated by nameds also. Note that Rakudo itself needs further updates to make use of this. |
12:41 | ||
kudo/nom: 90d4072 | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.nqp: Take advantage of new MoarVM multi-dispatch cache. With this, mutliple dispatches that are differentiated by named args can now have their outcomes cached, provided they are free of any constraints (`where`, unpacks, etc.) The following: my %h = a => 1; my ($a, $b); for ^20000 { $a = %h<a>:exists; $b = %h<b>:exists; } say $a; say $b Now runs in 5.7% of the CPU cycles it used to, or a speed-up of ~18x. |
12:45 | ||
tadzik | :o | 12:46 | |
moritz | I guess a jnthn++ or two is in order :-) | 13:11 | |
BrokenRobot | whoa :o jnthn++ | 13:13 | |
nine | Epic win :) | 13:22 | |
timotimo | indeed \o/ | 13:39 | |
hoelzro | wow | 14:53 | |
dalek | p/optimize-with-hoopl: 3553c32 | (Pawel Murias)++ | src/vm/js/ (2 files): [js] Start of sending off nodes to haskell. |
15:30 | |
p/optimize-with-hoopl: af6ca94 | (Pawel Murias)++ | src/vm/js/ (3 files): [js] Create a hoopl graph. It has nothing to do with the QAST but at least the code typechecks ;) |
|||
p/optimize-with-hoopl: 894a943 | (Pawel Murias)++ | src/vm/js/dataflow-optimizer/optimize.hs: [js] Improve the basic block graph. |
|||
BrokenRobot | Haskell :o | 15:37 | |
geekosaur did a bit of a double take at that one | 15:43 | ||
"...wait, this isn't #ghc why are they hoopl-ing" | 15:44 | ||
dalek | ast: d8e7220 | (Tom Browder)++ | S26-documentation/07-tables.t: improve comments on last two tests; add row id on the last table; expā¦ (#132) improve comments on and expand tests for leading special characters in cells |
16:13 | |
awwaiid | so much polyglot | ||
dalek | Heuristic branch merge: pushed 16 commits to rakudo/nom by niner | 18:21 | |
nine | That ^^^ was ugexe's PR 729 including my fixes so rakudo keeps building and users don't have to re-install everything and panda keeps working | 18:30 | |
timotimo | neat | 18:32 | |
jnthn | nine++ ugexe++ | ||
dalek | kudo/nom: 4c8dc46 | ugexe++ | src/core/Distribution.pm: Fix Distribution::Path missing bin/ or resources/ |
19:02 | |
kudo/nom: f49a503 | niner++ | src/core/Distribution.pm: Merge pull request #806 from ugexe/patch-7 Fix Distribution::Path missing bin/ or resources/ |
|||
DrForr_ | jnthn: Around? | 19:23 | |
BrokenRobot | What line width does Rakudo source tend to use? This line, for example, doesn't even fit on GitHub viewer: github.com/rakudo/rakudo/commit/f4...3d08f7R265 | 19:39 | |
jnthn | DrForr_: Am about a bit now. | 20:17 | |
DrForr_ | Okay, let me find a gist, one moment. | ||
gist.github.com/drforr/bd929fea53e...c690314f11 | 20:18 | ||
I'm wanting to get the parsed AST before the compiler and optimizer get a chance to work on the code, thus mangling the original data. | 20:19 | ||
jnthn | AST? | ||
DrForr_ | I have to run the actions, otherwise the grammar just fails outright. | ||
jnthn | Or parse tree? | ||
DrForr_ | Parse tree, pardon me. | ||
jnthn | For sure, the actions are involved in building up/installing various declarations. | 20:20 | |
But you can still grab the parse tree. | |||
DrForr_ | Okay, that's all I'm really after, and all I can really trust. | 20:21 | |
jnthn | In fact, it looks like what you are grabbing. Though I find it a bit confusing to stick it in a variable called $ast, 'cus there's nothing abstract about it. ;) | ||
DrForr_ | Well, true, I'll probably rename it '$parsed'. | ||
jnthn | I'm tired and thus easily confused. :-) | ||
About: | 20:22 | ||
my ( $ast ) = @_; # Have to bypass arguments for NQP object | |||
I *think* you might not have to if you wrote it as sub build(Mu $ast) { } | |||
DrForr_ | I tried 'sub foo( $ast ) {..}' ... Ah, I'll give that a try. | ||
jnthn | Yeah, NQP objects will generally pretend to type-check against Mu well enough, but won't fall under Any | 20:23 | |
Arguably we could make some kinda shim thingy to make them pretend to be under Any too to make life easier | |||
DrForr_ | Is the nqp::interface going to remain accessible, or at least will the parse tree still be available elsewhere? | ||
No, I wouldn't worry too much about that. Either way it's a rather vague type as it's not really a P6 type, to my understanding. | 20:24 | ||
jnthn | Well, there's a few different answers. | ||
DrForr_ | Yes, Mu works as a type. | 20:25 | |
jnthn | There's certainly no plan for `use nqp` to go away and access to nqp:: ops will continue to be fine in that sense. | ||
timotimo | ah, yes, you'll often need Mu for nqp stuff | ||
jnthn | We don't officially support the nqp::op API in so far as promise not to break it. But the reality is that it's undergone an order of magnitude less churn than Perl 6 itself over the last years. ;-) | 20:26 | |
DrForr_ | I didn't figure there would be official alternatives. | ||
Er, that it would have official standing. | 20:27 | ||
jnthn | The eventual solution is tied up with what masak++ is working on | ||
Which isn't a useful answer if you want to get stuff done today, but there will eventually be a nice, official, API for what you're trying to do. | |||
That will give you a tree, but one expressed in Perl 6 language units, rather than the more abstracted view that QAST has. | 20:28 | ||
DrForr_ | Right, the macro interface. The catch is I want a lower-level access than that. | 20:29 | |
jnthn | In the meantime, the nqp:: op stuff and working with the compiler internals is as good as it gets. | ||
Lower level in what sense? | |||
I'd say that writing something like a Perl6::Tidy would be in the realm of "stuff you should be able to do with a QTree", if I'm guessing right about what you're working on :) | 20:30 | ||
DrForr_ | In the sense that even if there is a (say) Perl6::Expression class with a $.lhs and $.rhs, I need to know what the whitespace is between the operators. | ||
Okay, when I looked at the source I got back QAST:: objects, not QTree. And you guess correctly, sir. | 20:31 | ||
jnthn | I don't want to speak for masak, but I'd imagine that there's a mapping to the original text too. | ||
QTree is "future planning", not "implemented now", thus why I mentioned it's not useful to you today. :-) | 20:32 | ||
fwiw, though, even QAST has *some* mapping back to the source, through .node | |||
Because we need it to emit line number annotations when compiling :) | |||
DrForr_ | Ah. I think this is why I put that off last time. | ||
jnthn | But I think working with the parse tree will be the best way to do what you're wanting to do today. | ||
DrForr_ | I'd need glyph-level count. | ||
jnthn | As in, NFG? | 20:33 | |
All the compiler internals working with the very same strings that you get in Perl 6, representation wise. | 20:34 | ||
DrForr_ | Whatever term you'd prefer, whatever count the <eject> character gets stuck into. | ||
jnthn | Oh | ||
Yeah, if you find the .pos on a Cursor, or the .to/.from on a Match, they're expressed in those units. | 20:35 | ||
Not in bytes. | |||
So should Just Work. | |||
DrForr_ | Not referring specifically to error situations, I just can't be arsed to look up the Unicode-appropriate term, I think grapheme is correct. | ||
jnthn | Yeah, me too | ||
But there's bascially no surprises about how the compiler works with strings, if you're coming from a Perl 6 perspective. | |||
After all, the compiler is implemented in a Perl 6 subset :) | 20:36 | ||
DrForr_ | I wouldn't expect so. All I really need is the .from, .to and .orig counts, so I can feed (for example) the whitespace at the end of a <statement> into the statement object so it can be recreated later. | 20:37 | |
The other catch is that if I do all of these as individual objects, then even with Roles the data structure will be wildly erratic, making it hard to uniformly walk. | |||
But that's a higher-level concern. | 20:38 | ||
For example, subroutines and grammars have names, but an integer doesn't. | 20:39 | ||
jnthn | Yeah, those kinds of things will need some designing. | 20:42 | |
Expect plenty of time will go into that with the QTrees work :) | 20:43 | ||
DrForr_ | Well, maybe I can at least serve as a bad example :) | ||
PPI"s DOM style might well be a good prototype to follow, but I've already seen how much criticism it receives when people actually try to use it. | 20:45 | ||
Mostly with people having to remember how linked lists work in order to safely shuffle items around. | 20:46 | ||
jnthn | I guess github.com/masak/007/blob/master/lib/_007/Q.pm contains masak's ponderings so far, though for a smaller Perl 6-like language being used for experimentation. | 20:50 | |
May also be worth a look | |||
DrForr_ | Yah, I'll take a look, but it will need to be tomorrow | 20:51 | |
dalek | kudo/nom: 750c4e8 | lizmat++ | src/core/Baggy.pm: Make Baggy.pick/roll/grab about 6x as fast - make the worker sub a private method so it can access its attributes - don't create a full list of pairs, but use a hash iterator and stop when done |
22:40 | |
timotimo | holy crap | 22:49 | |
TimToady | otoh, with a small sample of two datapoints, p6 seems to be running about 20% slower right now than a week ago | 22:51 | |
lizmat | TimToady: any specifics I could look into > | 22:56 | |
? | |||
timotimo hasn't run a full perl6-bench in ages, but jnthn has automated benchmarks up on moarvm.org | 23:01 | ||
www.moarvm.org/measurements/perl6-bench/ - if you're inclined to go digging | |||
lizmat | timotimo: thanks for the reminder, will check tomorrow | 23:05 | |
TimToady | well, the setting parse phase went from 46 to 57 seconds over that time | 23:09 | |
lizmat | hmmm... I'm not seeing that... | 23:11 | |
more like going up from 45 to about 48 again for me | |||
but then again, I'm not using Moar blead | 23:12 | ||
TimToady | I am, I think | ||
maybe computers run slower in oklahoma | 23:13 | ||
travis-ci | Rakudo build errored. Jonathan Worthington 'Take advantage of new MoarVM multi-dispatch cache. | 23:19 | |
travis-ci.org/rakudo/rakudo/builds/141067940 github.com/rakudo/rakudo/compare/d...d407285930 | |||
dalek | kudo/nom: 75b37ee | lizmat++ | src/core/Baggy.pm: Make Baggy.roll(*) about 2x as fast Typically in the situation "for $bag.roll(*) { }' |
23:28 | |
lizmat | and with that I wish #perl6-dev a good night! |