Perl 6 language and compiler development | Logs at colabti.org/irclogger/irclogger_log/perl6-dev | For toolchain/installation stuff see #perl6-toolchain | For MoarVM see #moarvm Set by Zoffix on 27 July 2018. |
|||||||||||||||||||||||||||||||||||||||
AlexDaniel | interesting | 02:09 | |||||||||||||||||||||||||||||||||||||
github.com/rakudo/rakudo/commit/e943f3eb | |||||||||||||||||||||||||||||||||||||||
GH-2916 is linked properly | |||||||||||||||||||||||||||||||||||||||
help.github.com/en/articles/autoli...s-and-urls | 02:10 | ||||||||||||||||||||||||||||||||||||||
lizmat: that's the format that should be used then | |||||||||||||||||||||||||||||||||||||||
or we can ask them to add GH#123 too | |||||||||||||||||||||||||||||||||||||||
synopsebot | GH#123 [closed]: github.com/rakudo/rakudo/pull/123 For infix:<ne>, use nqp::isne_s instead of !eq | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | Geth: ver github.com/rakudo/rakudo/commit/3b4a4719 | 02:17 | |||||||||||||||||||||||||||||||||||||
Geth | AlexDaniel, version bump brought in these changes: github.com/perl6/nqp/compare/2019....g8c8d0a820 | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | Geth: ver github.com/rakudo/rakudo/commit/80a5a41a | 02:21 | |||||||||||||||||||||||||||||||||||||
Geth | AlexDaniel, version bump brought in these changes: github.com/perl6/nqp/compare/2019....g23d91629d | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | Geth: ver github.com/rakudo/rakudo/commit/b8669fe6 | ||||||||||||||||||||||||||||||||||||||
Geth | AlexDaniel, version bump brought in these changes: github.com/perl6/nqp/compare/2019....gf2b319db9 | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | Geth: ver github.com/rakudo/rakudo/commit/cbb9034a | 02:22 | |||||||||||||||||||||||||||||||||||||
Geth | AlexDaniel, version bump brought in these changes: github.com/perl6/nqp/compare/2019....9-g9d14819 | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | Geth: ver github.com/rakudo/rakudo/commit/8a37b931 | 02:25 | |||||||||||||||||||||||||||||||||||||
Geth | AlexDaniel, version bump brought in these changes: github.com/perl6/nqp/compare/2019....g8c90f6266 | ||||||||||||||||||||||||||||||||||||||
rakudo: vrurg++ created pull request #3040: Implement support for defining new symbols in CORE.e.setting |
03:15 | ||||||||||||||||||||||||||||||||||||||
roast: vrurg++ created pull request #557: Support for fixed pseudo-packages |
03:16 | ||||||||||||||||||||||||||||||||||||||
04:53
nebuchadnezzar joined
05:31
robertle left
06:40
[TuxCM] left
07:06
patrickb joined
08:05
[TuxCM] joined
09:51
MasterDuke left
|
|||||||||||||||||||||||||||||||||||||||
vrurg | jnthn: would you review R#3040, please? It would allow me to move on with github.com/perl6/problem-solving/issues/47 :) | 14:43 | |||||||||||||||||||||||||||||||||||||
synopsebot | R#3040 [open]: github.com/rakudo/rakudo/pull/3040 Implement support for defining new symbols in CORE.e.setting | ||||||||||||||||||||||||||||||||||||||
14:43
lucasb joined
14:44
pamplemousse joined
|
|||||||||||||||||||||||||||||||||||||||
jdv79 | is any of the pea stuff merged yet? | 14:45 | |||||||||||||||||||||||||||||||||||||
jnthn | jdv79: Yes, the initial basic round of it was merged a while ago. The next round of it give some nice wins, but is still a bit explosive. :) | 14:49 | |||||||||||||||||||||||||||||||||||||
vrurg: OK, will try and do that later today | 14:50 | ||||||||||||||||||||||||||||||||||||||
vrurg | jnthn: Thanks! | ||||||||||||||||||||||||||||||||||||||
jnthn | (The next round does: transitive analysis, partial escapes, and can avoid the GC-based allocations associated with Int) | 14:51 | |||||||||||||||||||||||||||||||||||||
14:52
TimToady joined
|
|||||||||||||||||||||||||||||||||||||||
jnthn | The big known problem is that the partial escape materializations break the SSA form. After that, it's just all of the other problems. :) | 14:52 | |||||||||||||||||||||||||||||||||||||
jdv79 | nice. was just wondering cause i thought something from that was merged but tux's numbers and my personal stuff didn't seem to change much yet. | 14:54 | |||||||||||||||||||||||||||||||||||||
15:01
dogbert11 left
|
|||||||||||||||||||||||||||||||||||||||
vrurg | jnthn++ | 15:06 | |||||||||||||||||||||||||||||||||||||
15:23
patrickb left
15:24
MasterDuke joined
15:41
Kaypie left
15:42
Kaypie joined
|
|||||||||||||||||||||||||||||||||||||||
jdv79 | anything on the radar for perf after pea? | 15:52 | |||||||||||||||||||||||||||||||||||||
15:52
epony left
|
|||||||||||||||||||||||||||||||||||||||
jnthn | Well, various things in parallel with it too. Currently some invocation speedups. | 15:53 | |||||||||||||||||||||||||||||||||||||
(pea is *really* tricky, so I'm doing a few relatively easier things alongside it) | |||||||||||||||||||||||||||||||||||||||
jdv79 | neat. iirc invocation is one of the perf issue with p5. | 15:57 | |||||||||||||||||||||||||||||||||||||
*issues | |||||||||||||||||||||||||||||||||||||||
jnthn | For Perl 6 it's not that great at present either, the big difference being that we have multi-level inlining | ||||||||||||||||||||||||||||||||||||||
So in a lot of cases you invocations disappear | 15:58 | ||||||||||||||||||||||||||||||||||||||
Inlining rates in micro-benchmarks tend to be around 99%; for a more realistic situation, they can still exceed 80%. | |||||||||||||||||||||||||||||||||||||||
(Depends on the micro-benchmark, but I mean the "tight loop doing primitive thing" ones.) | 15:59 | ||||||||||||||||||||||||||||||||||||||
16:01
epony joined
16:11
[TuxCM] left
|
|||||||||||||||||||||||||||||||||||||||
|Tux| |
|
16:20 | |||||||||||||||||||||||||||||||||||||
16:38
Kaypie is now known as Kaiepi
|
|||||||||||||||||||||||||||||||||||||||
jnthn | vrurg: I took a look and let some comments; seems good overall | 16:55 | |||||||||||||||||||||||||||||||||||||
vrurg | jnthn: thank you! | 17:04 | |||||||||||||||||||||||||||||||||||||
jnthn: I would make SETTING a precise scope. See no point of having SETTINS because it would be an alias to CORE. | 17:22 | ||||||||||||||||||||||||||||||||||||||
As to MY: making it precise invalidates a test in S02-names/pseudo.t where an outer dynamic symbol is visible inside a sub. | 17:23 | ||||||||||||||||||||||||||||||||||||||
lizmat | fwiw, I think MY: should be precise, and maybe add a LEXICAL:: pseudo for the current meaning | 17:25 | |||||||||||||||||||||||||||||||||||||
17:26
klapperl joined
|
|||||||||||||||||||||||||||||||||||||||
vrurg | I like LEXICAL. | 17:26 | |||||||||||||||||||||||||||||||||||||
what about: sub foo { my $foo; { say MY::<$foo> } }? | |||||||||||||||||||||||||||||||||||||||
If MY is precise this must fail. | 17:27 | ||||||||||||||||||||||||||||||||||||||
lizmat | it would be Any or Nil, I guess | 17:28 | |||||||||||||||||||||||||||||||||||||
or a Failure... | |||||||||||||||||||||||||||||||||||||||
vrurg | lizmat: Failure is what I chose – following ::() semantics. Seems very reasonable to me. | ||||||||||||||||||||||||||||||||||||||
lizmat | yup, works for me :-) | 17:29 | |||||||||||||||||||||||||||||||||||||
vrurg | I would even change module Foo { }; Foo::<DoesntExists> to return Failure too (it currently returns Any) | ||||||||||||||||||||||||||||||||||||||
lizmat | for 6.e semantics, yeah :-) | ||||||||||||||||||||||||||||||||||||||
vrurg | Aha. Oki, have some work for today then. | 17:30 | |||||||||||||||||||||||||||||||||||||
vrurg hopes to have this merged by tonight. | |||||||||||||||||||||||||||||||||||||||
lizmat | vrurg++ | 17:31 | |||||||||||||||||||||||||||||||||||||
Geth | rakudo: af10886354 | (Elizabeth Mattijsen)++ | src/core/Match.pm6 Don't use HLL ! for negation since the rest is already in nqp:: ops. Shaves off just a little bit on !MATCH-PASS in a tight loop. |
17:33 | |||||||||||||||||||||||||||||||||||||
vrurg | m: use nqp; class Foo { method foo is raw { nqp::list(1,2) } }; say Foo.new.foo.^name; | 17:47 | |||||||||||||||||||||||||||||||||||||
camelia | List | ||||||||||||||||||||||||||||||||||||||
vrurg | ^ I wonder if this is intended behaviour? | ||||||||||||||||||||||||||||||||||||||
m: use nqp; sub foo is raw { nqp::list(1,2) }; say foo.^name | 17:48 | ||||||||||||||||||||||||||||||||||||||
camelia | BOOTArray | ||||||||||||||||||||||||||||||||||||||
lizmat | vrurg: nqp::list and nqp::hash auto-HLLize | 17:49 | |||||||||||||||||||||||||||||||||||||
that's why we have IterationBuffer for nqp::list, and IterationSet for nqp::hash | 17:50 | ||||||||||||||||||||||||||||||||||||||
vrurg | Even with `is raw`? | ||||||||||||||||||||||||||||||||||||||
lizmat | with methods, I think yes | ||||||||||||||||||||||||||||||||||||||
but jnthn would know for sure | 17:51 | ||||||||||||||||||||||||||||||||||||||
vrurg | But not with subs. Obscure, but accepted. | ||||||||||||||||||||||||||||||||||||||
I hoped to have a little bit of speed up in my code by avoiding Array in a return and using nqp::list | |||||||||||||||||||||||||||||||||||||||
lizmat | well, it should be a List, now? immutable and all ? | 17:54 | |||||||||||||||||||||||||||||||||||||
not an Array ? | |||||||||||||||||||||||||||||||||||||||
vrurg | lizmat: it should be BOOTArray, like with sub foo. | 17:58 | |||||||||||||||||||||||||||||||||||||
17:58
MasterDuke left
|
|||||||||||||||||||||||||||||||||||||||
lizmat | ok, so no HLL Array :-) that's ok | 17:59 | |||||||||||||||||||||||||||||||||||||
vrurg | My point is that when nqp::list is returned from a raw routine it gets HLLized for methods but not for subs. | ||||||||||||||||||||||||||||||||||||||
m: use nqp; sub foo is raw { nqp::list(1,2) }; say foo.^name | 18:00 | ||||||||||||||||||||||||||||||||||||||
camelia | BOOTArray | ||||||||||||||||||||||||||||||||||||||
vrurg | ^ | ||||||||||||||||||||||||||||||||||||||
m: use nqp; class Foo { method foo is raw { nqp::list(1,2) } }; say Foo.new.foo.^name; | |||||||||||||||||||||||||||||||||||||||
camelia | List | ||||||||||||||||||||||||||||||||||||||
vrurg | I was pretty confused when got an error from nqp::atpos... ;) | ||||||||||||||||||||||||||||||||||||||
lizmat | yeah, I see it... I'm surprised the "is raw" actually works on the sub | ||||||||||||||||||||||||||||||||||||||
I wonder what jnthn has to say about the "is raw" not working on methods | 18:01 | ||||||||||||||||||||||||||||||||||||||
vrurg | I like the way it is now. Handy way if avoiding extra cost when already dealing with low-level types. | ||||||||||||||||||||||||||||||||||||||
s/if// | 18:02 | ||||||||||||||||||||||||||||||||||||||
lizmat: BTW, do you use macOS? | 18:10 | ||||||||||||||||||||||||||||||||||||||
lizmat | yes | ||||||||||||||||||||||||||||||||||||||
vrurg | does utf8 test in roast fail for you too? | ||||||||||||||||||||||||||||||||||||||
lizmat | yes | ||||||||||||||||||||||||||||||||||||||
has been doing that for months | |||||||||||||||||||||||||||||||||||||||
looked at it once for a few hours... but could not make heads or tails of that | 18:11 | ||||||||||||||||||||||||||||||||||||||
vrurg | Considering I'm in rakudo for 1yr it fails for me like forever. ;) | ||||||||||||||||||||||||||||||||||||||
lizmat | yeah, could well be a year | ||||||||||||||||||||||||||||||||||||||
time flies when you're having -Ofun | |||||||||||||||||||||||||||||||||||||||
vrurg | :D | ||||||||||||||||||||||||||||||||||||||
ok, I'm off for installing SSD into an old mac mini... | 18:12 | ||||||||||||||||||||||||||||||||||||||
18:26
pamplemousse left
18:34
MasterDuke joined
18:43
lucasb left
19:34
MasterDuke left
19:35
MasterDuke joined
19:54
pamplemousse2 joined
20:04
pamplemousse2 left
|
|||||||||||||||||||||||||||||||||||||||
samcv | AlexDaniel, release has been done | 21:00 | |||||||||||||||||||||||||||||||||||||
21:37
squashable6 left
21:38
squashable6 joined
|
|||||||||||||||||||||||||||||||||||||||
AlexDaniel | oh wow rly | 21:56 | |||||||||||||||||||||||||||||||||||||
nice! | 21:57 | ||||||||||||||||||||||||||||||||||||||
japhb | AlexDaniel: Are you doing the nqp and rakudo releases, or will it be kawaii? | 21:59 | |||||||||||||||||||||||||||||||||||||
AlexDaniel | japhb: mostly me, I think, as kawaii is currently figuring out some real life stuff | 22:00 | |||||||||||||||||||||||||||||||||||||
unless there are any objections :) | |||||||||||||||||||||||||||||||||||||||
japhb | Of course not! | ||||||||||||||||||||||||||||||||||||||
Just wondering who to ++ :-) | 22:01 | ||||||||||||||||||||||||||||||||||||||
samcv++; ++AlexDaniel; | |||||||||||||||||||||||||||||||||||||||
AlexDaniel | both then, kawaii also did some work for this release | 22:03 | |||||||||||||||||||||||||||||||||||||
japhb | kawaii++ then for work already done. :-) | 22:04 | |||||||||||||||||||||||||||||||||||||
vrurg | Does anybody knows why EVAL adds two extra contexts on top of its unit? Is it avoidable? | 22:18 | |||||||||||||||||||||||||||||||||||||
jnthn | vrurg: I'd guess one of them - though maybe only needed during compile - is to make all the symbols visible in the context of the EVAL visible | 22:56 | |||||||||||||||||||||||||||||||||||||
vrurg | Ok, then from SETTING:: with PRECISE_SCOPE point of view EVAL is different from normal code. | 22:57 | |||||||||||||||||||||||||||||||||||||
jnthn | That said, I'm not sure if that needs to be the case by runtime | 22:58 | |||||||||||||||||||||||||||||||||||||
vrurg | Actually, PseudoStash can take care of it if knows it's been currently under EVAL. | 22:59 | |||||||||||||||||||||||||||||||||||||
Another thing: MY with PRECISE_SCOPE breaks require in EVAL too. That's currently a mystery to me. | 23:00 | ||||||||||||||||||||||||||||||||||||||
jnthn | Eww | ||||||||||||||||||||||||||||||||||||||
vrurg | Could be a combination of MY and SETTING changed together. I stumbled upon this just a few mintes ago and still trying to work out what's going on. | 23:02 | |||||||||||||||||||||||||||||||||||||
SETTING with PRECISE_SCOPE breaks some other cases of require. Phew... | 23:05 | ||||||||||||||||||||||||||||||||||||||
jnthn | Yeah, I suspect SETTING is going to have to at least flatten the various CORE versions | 23:06 | |||||||||||||||||||||||||||||||||||||
vrurg | I this is what STATIC_CHAIN was doing. | 23:07 | |||||||||||||||||||||||||||||||||||||
But then SETTING is almost no different from CORE. If differrent at all. | |||||||||||||||||||||||||||||||||||||||
jnthn | CORE is always the CORE.setting. SETTING would factor in any custom ones the language user might write | 23:09 | |||||||||||||||||||||||||||||||||||||
vrurg | So, CORE is 6.c CORE only? No CORE.d, CORE.e included? | 23:11 | |||||||||||||||||||||||||||||||||||||
Kaiepi | just need to update CStr, P6int, P6num, and P6str's REPRs on the JVM and JS backend and nativecall wide string support is ready to pullreq! | 23:12 | |||||||||||||||||||||||||||||||||||||
jnthn | No, I think CORE should include your 6.d/6.e | 23:14 | |||||||||||||||||||||||||||||||||||||
But if you do perl6 --setting=RESTRICTED, for example, then SETTING would point to that, while CORE would always point to the CORE.setting | 23:15 | ||||||||||||||||||||||||||||||||||||||
Of course, such a RESTRICTED would have to chose a version of CORE to use as its setting. | 23:16 | ||||||||||||||||||||||||||||||||||||||
(Always point to the CORE.*.setting, I should say) | |||||||||||||||||||||||||||||||||||||||
If you don't pass a --setting= argument, then SETTING and CORE would be identical. | 23:17 | ||||||||||||||||||||||||||||||||||||||
vrurg | Ok, this is what I was missing. | ||||||||||||||||||||||||||||||||||||||
Then SETTING:: is a STATIC_CHAIN thing. | |||||||||||||||||||||||||||||||||||||||
jnthn | Yes, settings are effectively the outer lexical environment of a program | ||||||||||||||||||||||||||||||||||||||
Rather than having a default set of imports, Perl 6 does this as having a default lexical environment | 23:18 | ||||||||||||||||||||||||||||||||||||||
vrurg | m: use nqp; sub foo is raw { nqp::list(1,2) }; say foo.^name | ||||||||||||||||||||||||||||||||||||||
camelia | BOOTArray | ||||||||||||||||||||||||||||||||||||||
vrurg | m: use nqp; class Foo { method foo is raw { nqp::list(1,2) } }; say Foo.new.foo.^name; | ||||||||||||||||||||||||||||||||||||||
camelia | List | ||||||||||||||||||||||||||||||||||||||
vrurg | jnthn: That's ^ another question I had. Why method HLLise with is raw? | 23:19 | |||||||||||||||||||||||||||||||||||||
jnthn | Because we assume that anything that's a sub is part of our language, so needn't be hllized, while methods could be from some other language, so we hllize them | 23:20 | |||||||||||||||||||||||||||||||||||||
vrurg | I though I could spare a couple of CPU cycles on using nqp::list instead of an Array in PseudoStash, but ... | ||||||||||||||||||||||||||||||||||||||
jnthn | The hllize happens on the *caller* side, so the `is raw` isn't relevant | ||||||||||||||||||||||||||||||||||||||
You can save them; use a Perl 6 type with the VMArray REPR. IterationBuffer is convenient for that. | |||||||||||||||||||||||||||||||||||||||
m: say IterationBuffer.REPR | 23:21 | ||||||||||||||||||||||||||||||||||||||
camelia | VMArray | ||||||||||||||||||||||||||||||||||||||
vrurg | Ok, will try that. Thanks! | ||||||||||||||||||||||||||||||||||||||
jnthn | nqp::list compiles into an nqp::create and then a sequence of nqp::push, iirc | 23:22 | |||||||||||||||||||||||||||||||||||||
(I think it's push rather than indexes) | |||||||||||||||||||||||||||||||||||||||
vrurg | I gues it would still be faster than [1,2] -> return -> @a[0]? | 23:23 | |||||||||||||||||||||||||||||||||||||
jnthn | Yes | 23:25 | |||||||||||||||||||||||||||||||||||||
For now ;) | |||||||||||||||||||||||||||||||||||||||
vrurg is looking for 👍🏻 button :) | 23:27 | ||||||||||||||||||||||||||||||||||||||
23:29
vrurg left,
vrurg joined
|
|||||||||||||||||||||||||||||||||||||||
vrurg | Heh, my IRC client died from a uncode char... | 23:30 | |||||||||||||||||||||||||||||||||||||
jnthn | hah, mine rendered it wrong too...I wondered why, then realized that my linode got rebooted, and it seems I'm using irssi instead of weechat after... :) | 23:34 | |||||||||||||||||||||||||||||||||||||
I *think* I got the latter rendering things better, at least :) | |||||||||||||||||||||||||||||||||||||||
vrurg | Mine dies while having the symbol in the input field. :( | 23:43 | |||||||||||||||||||||||||||||||||||||
23:53
MasterDuke left
|