00:00 TimToady left 00:20 TimToady joined 00:53 Kaiepi joined 02:48 lizmat left
Geth roast/car-grant-constants: 6637791976 | (Zoffix Znet)++ | S04-declarations/constant-6.d.t
[CaR Grant] Spec Positional and Associative constants
03:09
03:10 Kaiepi left
Geth rakudo/car-grant-constants: 4854c05c02 | (Zoffix Znet)++ | t/spectest.data
[CaR Grant] Add S04-declarations/constant-6.d.t to list of tests
03:10
03:11 Kaiepi joined 03:18 lizmat joined 03:23 lizmat left
Geth nqp: 6e925d82a0 | 陈梓立++ (committed using GitHub Web editor) | src/QRegex/P6Regex/Optimizer.nqp
Flatten nested condition

For improving readability
03:55
Tison nqp: sub f($x) { return if $x }
camelia Unable to parse expression in blockoid; couldn't find final '}' at line 2, near "return if "
at gen/moar/stage2/NQPHLL.nqp:701 (/home/camelia/rakudo-m-inst-1/share/nqp/lib/NQPHLL.moarvm:panic)
from gen/moar/stage2/NQPHLL.nqp:708 (/home/camelia/rakudo-…
Tison nqp: sub f($x) { return 42 if $x }
camelia ( no output )
Tison ^^ we do not support `return <nothing> if` in NQP, is it ok to impl it? surely we have alternations 03:57
04:05 skids joined
Tison nqp: sub f($x) { return -4 } say(f(42)) 04:20
camelia Confused at line 2, near "sub f($x) "
at gen/moar/stage2/NQPHLL.nqp:701 (/home/camelia/rakudo-m-inst-1/share/nqp/lib/NQPHLL.moarvm:panic)
from gen/moar/stage2/NQP.nqp:921 (/home/camelia/rakudo-m-inst-1/share/nqp/lib/nqp.moarvm:comp_unit)
from gen/mo…
Tison nqp: sub f($x) { return -4 }; say(f(42));
camelia -4
Tison nqp: sub f($x) { return -4 }; say(f(42));
camelia
Tison we assume between `return` and `<EXPR>` there is exactly ONE \s in fact 04:21
Geth nqp: 049f5a6841 | 陈梓立++ (committed using GitHub Web editor) | src/NQP/Grammar.nqp
Update Grammar.nqp

1. Remove unless `\s` to make grammar more clear (sure we use `rule`,
   it's done by how `rule` works)
2. Enable `return -42` works as `return -42`, that is, we don't assume
   there is exact ONE \s between `return` and `<EXPR>`, the same on `make`
04:30
04:35 AlexDaniel left 04:53 Tison left 05:01 Tison joined 05:20 skids left 05:36 AlexDaniel joined
Tison If anyone can help to look at this problem 05:54
gist.github.com/W4anD0eR96/6d3c75f...96b54dc71c
I get lost how QAST nested 05:55
I think the problem is I cannot simply use `:node($/)`, but don't know how to deal with it 05:56
05:57 Kaiepi left, Kaypie joined 06:22 [Tux] left 06:37 Merfont joined 06:39 Kaypie left 06:53 [Tux] joined 06:54 Tison left 07:07 robertle joined 07:17 Tison joined 07:24 lizmat joined, Tison left
AlexDaniel weekly: 29000 commits in rakudo repository (hopefully) 07:28
notable6 AlexDaniel, Noted!
07:29 Tison joined 08:01 Merfont left 08:02 PufferBot joined 08:03 Kaiepi joined
lizmat . 08:11
08:39 brrt joined
Tison hello lizmat 08:40
could you plz take a look at this QAST::Op relative stuff
gist.github.com/W4anD0eR96/6d3c75f...96b54dc71c 08:41
I think the problem is I cannot simply use `:node($/)`, but don't know how to deal with it
08:44 AlexDaniel left
brrt good * 09:02
[Tux] Rakudo version 2018.05-54-g148d7c56a - MoarVM version 2018.05-80-gc58dadb1a
csv-ip5xs0.840 - 0.848
csv-ip5xs-208.221 - 8.751
csv-parser24.134 - 24.866
csv-test-xs-200.449 - 0.474
test8.570 - 9.032
test-t2.250 - 2.280
test-t --race0.951 - 0.992
test-t-2039.959 - 43.816
test-t-20 --race14.232 - 16.187
09:09
2018-05-08 09:54:19 test-t 2.268
2018-06-06 09:41:06 test-t 2.251
2018-06-06 09:37:28 test-t 2.251
2018-06-08 11:06:31 test-t 2.250
2018-05-07 18:35:13 test-t 2.227
:) :)
brrt is that good? 09:13
oh, i guess it is 09:14
although i'm not sure
lizmat Tison: I think moritz timotimo Zoffix are more experienced in QAST matters than me 09:23
[Tux] 2.25 is almost the fastest run ever 09:37
brrt :-) 09:43
Geth rakudo: 95aa77c944 | (Elizabeth Mattijsen)++ | t/01-sanity/56-use-isms.t
Add tests for 'use isms <Perl5>'
09:48
Tison ok 09:56
10:18 brrt left 10:47 Zoffix joined
Zoffix Tison: I don't get. What's the problem with that QAST? 10:47
yoleaux 7 Jun 2018 15:33Z <raiph> Zoffix: Thanks for ^^^ post. "There are some limitations to it (e.g. methods on classes)" Isn't that a pretty big hole in the cheese? Might Rakudo theoretically one day (say, 5 years from now given corporate funding) be able to load `:ver` / `:auth` / `:api` versioned cores, compiling a compunit with its matching core to sharply reduce the siz
Zoffix Tison: :node($/) just adds a reference to where in the code that stuff is. Mostly for error reporting. 10:49
m: 0.32423423432432423
camelia WARNINGS for <tmp>:
Useless use of constant rational 0.32423423432432423 in sink context (line 1)
Zoffix ^ like here
10:50 AlexDaniel joined
Zoffix Tison: it's not where how - QAST::Op(callmethod new) is added. It's added to that tree elsewhere, and I'm assuming it still expects the top level node to be an ACCEPTS call, so it just pushes to it, hence the nesting issue 10:51
Tison: also, why `isnull` call?
10:52 travis-ci joined
travis-ci Rakudo build failed. Elizabeth Mattijsen 'Add tests for 'use isms <Perl5>'' 10:52
travis-ci.org/rakudo/rakudo/builds/389646090 github.com/rakudo/rakudo/compare/1...aa77c94459
10:52 travis-ci left
buggable [travis build above] ☠ All failures are due to: failed make test (4 failures). Across all jobs, only t/05-messages/02-errors.t test file failed. 10:52
Zoffix That only detect nulls, like nqp::null 10:54
Tison is calling `isfalse` ok?
Zoffix I think it should be nqp::p6bool(nqp::isfalse()), otherwise you'd be getting `1` instead of `True` 10:56
QAST::Op.new: :op<p6bool>, QAST::Op.new: :op<isfalse>, ...
Tison I got error message "Arg count 3 doesn't equal required operand count 2 for op 'isfalse'", so I dump the ast, thinking that `- QAST::Op(callmethod new) ` should get one more nest level
10:57 brrt joined
Tison I am working on NQP, so `isfalse` is enough, also there is no `p6bool` 10:58
Zoffix Tison: oh, is this for NQP? Then it don't need p6bool
Tison Right. The nesting issue, I think `QAST::Op.new( :op<isfalse>, QAST::Op.new( :op<callmethod>, ...)` should apply nqp::isfalse on the result of callmethod, but actually it reports "Arg count 3 doesn't equal required operand count 2 for op 'isfalse' 11:00
Zoffix Tison: that's because the child node (callmethod new) is the child of isfalse instead of being the child of callmethod ACCEPTS
Tison: :node($/) does NOT add the children. That's just the annotation. They children are pushed elsewhere, presumable in EXPR method 11:01
Tison well..
then how to get the correct nesting, say (callmethod new) becomes the child of (callmethod ACCEPTS) 11:06
Zoffix Tison: dunno, find where the children are added and see if you can tell it to add them differently to this node 11:07
For finding where, I just add debug prints, conditioned on an env var: perl6.party/post/Perl-6-Core-Hacki...adebugging
Tison ok
Zoffix For telling it to add them differently, depending on what it is, you could add an annotation and then at the place where kids are added, check if it exists (.has_ann I think it is, or just get its value, .ann: "the-name"): gist.github.com/zoffixznet/c2ac523...277e3bdb13 11:09
That's if there's no easy way to figure out the right place to add kids without the annotation. 11:10
It might not be method EXPR, but just stuff where EXPR things are looked at directly, like $<EXPR> though I don't see anything kid-pushing in src/NQP/Actions.nqp.... Maybe it's not with EXPR :/ 11:11
11:11 Zoffix left
Geth rakudo/spesh-plugins: 51ff83c7ca | (Jonathan Worthington)++ | 3 files
Use a MoarVM spesh plugin for private method calls

For those that we can resolve trivially already because the call is in a class, we simply do so. However, private method calls in roles have so far been greatly slower, due to a lack of caching and since the specializer had no idea how to optimize them even if it could.
... (18 more lines)
11:14
11:24 PufferBot left 11:25 Kaiepi left 11:26 lizmat left
Tison ok 11:33
we need a meta-op/build-in-function or special judge of !~~, the problem is we claim !~~ as infix, thus it can only take ONE QAST::Node 11:35
by meta-op, I means a new token deal with negate logic like how we do it in rakudo, but it makes things quite different 11:37
I intend not to make weird special judge to make !~~ "just run"
and add a new function like NOT_ACCEPTS seems unreasonable 11:38
11:40 AlexDaniel left
Tison to conclude, if we decide to add metaop support on NQP, then let's design and do it, for now I will make a PR add a new function NOT_ACCEPTS to meet it, and listen to contributors 11:46
Geth nqp/NOT_ACCEPTS: e9bb509501 | 陈梓立++ | 4 files
[Impl] !~~by adding NOT_ACCEPTS method
11:51
nqp/NOT_ACCEPTS: c351d4349b | Tison++ | 4 files
[Impl] !~~by adding NOT_ACCEPTS method
11:52
nqp: W4anD0eR96++ created pull request #462:
[Impl] !~~by adding NOT_ACCEPTS method
11:59
12:53 AlexDaniel joined
AlexDaniel releasable6: next 13:11
releasable6 AlexDaniel, Next release in ≈8 days and ≈5 hours. 4 blockers. 0 out of 55 commits logged
AlexDaniel, Details: gist.github.com/9c20995f08767acbb6...595f1ed880
13:25 AlexDani` joined 13:27 AlexDaniel left 13:34 cognominal joined
Geth rakudo/spesh-plugins: f6f43d58e3 | (Jonathan Worthington)++ | 2 files
Use a spesh plugin for $foo.Qual::Ified::meth()

This lets us optimize away the method resolution after the first time, which since it has to search in the role structure was quite costly. The "is the invocant a Qual::Ified" check also gets subsumed by the guard.
... (21 more lines)
14:00
14:01 skids joined
Geth rakudo/spesh-plugins: c6a61f563b | (Jonathan Worthington)++ | 2 files
Use a spesh plugin to optimize .?

I explored a couple of different cases. In the first, the program was written with .?, but in its actual usage the types that showed up were mostly monomorphic:
   class C {
... (26 more lines)
14:50
15:09 brrt left 15:47 Kaiepi joined
Geth nqp/pluggable-spesh: f40aa05993 | (Jonathan Worthington)++ | t/moar/52-pluggable-spesh.t
Add test for recursive spesh plugin setup
15:51
nqp: fde7549c20 | (Jonathan Worthington)++ | tools/build/MOAR_REVISION
Bump MOAR_REVISION

Mainly to get a version of MoarVM with spesh plugin support.
15:53
¦ nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...7-g7ea08c9
nqp/pluggable-spesh: 7dd83be2b2 | (Jonathan Worthington)++ | t/moar/52-pluggable-spesh.t
Add test for recursive spesh plugin setup
15:59
jnthn grr 16:00
Geth nqp/pluggable-spesh: f8766f3395 | (Jonathan Worthington)++ | t/moar/52-pluggable-spesh.t
Add test for recursive spesh plugin setup
nqp/master: 14 commits pushed by (Jonathan Worthington)++
review: github.com/perl6/nqp/compare/fde75...8cf42526ee
16:01
16:03 lizmat joined
jnthn Hmmm...I'm seeing a couple of sprintf related test failures 16:08
I saw them before I did any of today's work, mind, and just figured my master was behind. But seems not. 16:09
Geth rakudo/master: 5 commits pushed by (Jonathan Worthington)++ 16:11
¦ rakudo/master: version bump brought these changes: github.com/perl6/nqp/compare/2018....7-g5f8cf42
16:12 cognominal left 16:13 robertle left 16:16 Kaiepi left
jnthn We've a week to see what the ecosystem makes of those 16:16
Next week I'll start re-working Scalar and assignment in a branch 16:17
That will not merge until after the upcoming release
16:56 brrt joined 17:08 travis-ci joined
travis-ci Rakudo build failed. Jonathan Worthington 'Merge branch 'spesh-plugins'' 17:08
travis-ci.org/rakudo/rakudo/builds/389799035 github.com/rakudo/rakudo/compare/9...d14062abb2
17:08 travis-ci left
buggable [travis build above] ☠ All failures are due to: failed make test (6 failures). Across all jobs, only t/05-messages/02-errors.t test file failed. 17:08
gfldex jnthn: I'm getting the same failed tests then travis 17:28
17:48 robertle joined 17:49 robertle left 18:04 brrt left
tbrowder_ hi, #perl6-dev 18:06
are there any jetbrains intellij open source licenses available here for commiters? 18:07
jnthn gfldex: Yup, same as I got. Travis also agrees with me that they were there before my commits today: travis-ci.org/rakudo/rakudo/builds/389646090 18:09
Ah, and the ones that fail there reveal that it was bleed of NQP that came with breakage 18:10
And at least one commit in NQP HEAD is wrong 18:12
github.com/perl6/nqp/commit/049f5a...6fa3b6cd2b assumes that <.ws> will always match \s 18:13
But it won't, it's happy enough if there's just <!ww>
18:17 Kaiepi joined
samcv jnthn: i'm going to put everything in interp.c in the right order 18:19
there's many that are out of order
and adding a tool to check that they are in the right order
also i'd think that if we put the DEPRECATED ones in the order that their numbers are it would be able to optimize/compile faster 18:20
atm they're all at the bottom
18:20 lizmat left
samcv either that or i'd put them all under `default:` 18:21
MasterDuke samcv: if you reorder interp.c could you also do core_templates.expr at the same time? it was recently reordered to match interp.c 18:23
samcv ok
MasterDuke: how critical is it, or is it just nice to have? 18:29
MasterDuke samcv: nice to have, but since i just did the manual work of getting it in order... 18:30
samcv ok :) just wondered though 18:31
dogbert17 m: sprintf("%d-%s", 42) # something for AlexDaniel perhaps 18:34
camelia This representation (P6int) cannot unbox to a native num (for type BOOTInt)
in block <unit> at <tmp> line 1
timotimo samcv: could you also do graph.h? it contains multiple switches, so an automated tool for that purpose would need to deal with more than one at once 18:58
hm, actually, graph.c also contains chunks where multiple ops are used for the same code block
not sure how that would be best for the compiler
samcv ok so interestingly clang compiles faster on O1 if i put all deprecated stuff at the end 19:04
AlexDani` dogbert17: me? 19:06
19:06 AlexDani` is now known as AlexDaniel
samcv how do i learn how to make expr jit templates 19:12
jnthn samcv: I'd generally not been worrying about it as I didn't yet see any evidence of a C compiler that wasn't smart enough to do the jump table anyway and that also didn't support computed goto 19:13
samcv: For the those that do supported computed goto I guess it doesn't matter all that much :)
samcv: The win might simply be because the deprecated ones aren't called, and shuffling them out of the way makes for a better icache hit rate 19:14
samcv well having the deprecated all last does make compiling faster at least :P
well compile time
jnthn Oh, I thought you meant the compiled output was faster... :-)
shopping & 19:17
MasterDuke samcv: github.com/MoarVM/MoarVM/blob/mast...erview.org 19:22
19:48 Kaiepi left, Kaiepi joined 19:49 dct joined
dogbert17 AlexDaniel: yes, you are our bot expert :) 20:07
bisect: sprintf("%d-%s", 42) 20:08
bisectable6 dogbert17, Bisecting by output (old=2015.12 new=c5d1406) because on both starting points the exit code is 1
dogbert17, bisect log: gist.github.com/a27809b697f4a555c1...fec66b8842
dogbert17, (2017-09-28) github.com/rakudo/rakudo/commit/68...600d9b24e6
AlexDaniel no-no 20:09
bisect: old=2018.05 sprintf("%d-%s", 42)
bisectable6 AlexDaniel, Bisecting by output (old=2018.05 new=c5d1406) because on both starting points the exit code is 1
AlexDaniel, bisect log: gist.github.com/e9dd42cf94dcd71667...e38a0893da
AlexDaniel, (2018-06-08) github.com/rakudo/rakudo/commit/19...4acf41d2a2
dogbert17 you see, we need you :)
AlexDaniel c: 192083f65^,192083f65 sprintf("%d-%s", 42)
committable6 AlexDaniel, gist.github.com/4f2e7066ff7bf34e54...0038057781
AlexDaniel that's the one
c: 2015.12,192083f65^,192083f65,HEAD 20:10
committable6 AlexDaniel, I cannot recognize this command. See wiki for some examples: github.com/perl6/whateverable/wiki/Committable
AlexDaniel c: 2015.12,192083f65^,192083f65,HEAD sprintf("%d-%s", 42)
committable6 AlexDaniel, gist.github.com/18e1ce4640a2b11e8e...82f2b2ace5
AlexDaniel Geth: ver github.com/rakudo/rakudo/commit/19...4acf41d2a2
Geth AlexDaniel, version bump brought in these changes: github.com/perl6/nqp/compare/2018....7-g5f8cf42
dogbert17 so, an nqp fix although almost certainly not one of jnthn's fixes
AlexDaniel e: run <perl6 --ll-exception -e>, ‘sprintf("%d-%s", 42)’ 20:12
evalable6 (exit code 1) This representation (P6int) cannot unbox to a native num (for type BOOTInt)
AlexDaniel, Full output: gist.github.com/9ee24a43be78e42679...a5df641969
AlexDaniel would be cool if these were links…
timotimo agreed :) 20:16
dogbert17 there are a few commits to choose from, hmm 20:19
21:12 skids left, AlexDaniel left 21:13 AlexDaniel joined
Geth nqp: jstuder-gh++ created pull request #464:
Fix issue with building nqp-js on Windows
21:58
21:58 lizmat joined
Geth nqp: jstuder-gh++ created pull request #465:
Modify signals available to getsignals on WIN32
22:18
MasterDuke anyone else getting a fail in t/spec/S16-filehandles/io.t? 22:48
`not ok 113 - .printf()`, so i assume it's the same reason as the sprintf fails 22:49
22:50 Kaiepi left
jnthn MasterDuke: Yes, see a little earlier here for a bit of analysis as to what likely regressed it 22:55
22:56 skids joined
MasterDuke jnthn: k. btw, would you expect your recent spesh plugin merged to have sped up stage parse of the setting? 22:57
23:21 AlexDaniel left 23:22 AlexDaniel joined
timotimo do we have a spesh plugin for resolving action class methods? 23:28
jnthn MasterDuke: No 23:39
timotimo: No, but those are normal/boring dispatches, I think :)
Or at least, can be if we make the regex methods contain the calls
timotimo ah, you changed them to the other method resolution op at some point in the last weeks iirc
but that probably landed half an age ago when it comes to parsing performance 23:41
jnthn However... 23:44
If we can get an NFA to tell us what it scanned
And if we know that a subrule call was fully declarative
timotimo that'd be nice
what would that be, a percent or two?
jnthn Then that implies it was transitively declarative 23:45
You could use a spesh plugin to determine and cache the absence of any action methods for all the dependent rules
timotimo ooh
there are a couple of those in rakudo's grammar
jnthn Meaning it'd be possible to elide the subgraph
Yeah
I've no guesses on how much it'd help :)
timotimo hm, ws isn't declarative, though, so not that one
MasterDuke what do you mean declarative? 23:46
timotimo doesn't cause the declarative prefix of the calling rule to be "interrupted"
jnthn MasterDuke: I'm using "fully declarative" to describe a rule whose entire match is in the subset of the regex language that compiles into an NFA - or put another way, the LTM declarative prefix is actually the entire rule 23:47
MasterDuke is that the same as no backtracking? 23:48
timotimo no, that's different
jnthn Things like embeded code blocks are also non-declarative, for example 23:56
23:57 cognominal joined
jnthn Also, sequential alternations (||) are 23:57