00:02
patrickz left
00:55
Altai-man_ joined
00:57
sena_kun left
02:55
sena_kun joined
02:57
Altai-man_ left
04:55
Altai-man_ joined
04:57
sena_kun left
06:56
sena_kun joined
06:57
Altai-man_ left
07:44
leont joined
|
|||||||||||||||||||||||||||||||||||||||
[Tux] |
|
08:45 | |||||||||||||||||||||||||||||||||||||
nine | So, turns out use lib breaks in-process precompilation due to begin_time_lexical_fixup of role bodies (CompUnit::Repoisitory in this case) | 08:51 | |||||||||||||||||||||||||||||||||||||
Somehow the !LEXICAL_FIXUP block leaks into the precompilation comp unit despite getting created before we even start precompiling | 08:52 | ||||||||||||||||||||||||||||||||||||||
08:55
Altai-man_ joined
08:57
sena_kun left
|
|||||||||||||||||||||||||||||||||||||||
lizmat | Files=1306, Tests=111383, 243 wallclock secs (30.74 usr 9.12 sys + 3258.88 cusr 317.27 csys = 3616.01 CPU) | 10:25 | |||||||||||||||||||||||||||||||||||||
this feels like a fluke ^^ | 10:26 | ||||||||||||||||||||||||||||||||||||||
sena_kun++ Altai-man++ # yet another Rakudo compiler release! | 10:28 | ||||||||||||||||||||||||||||||||||||||
Altai-man_ | lizmat++ for all the annoying fixes demanded and great efforts toward making rakudo better. :) | 10:42 | |||||||||||||||||||||||||||||||||||||
10:56
sena_kun joined
10:57
Altai-man_ left
11:35
synthmeat left
11:51
Xliff joined
12:55
Altai-man_ joined
12:57
sena_kun left
|
|||||||||||||||||||||||||||||||||||||||
nine | OMG I got it! | 14:33 | |||||||||||||||||||||||||||||||||||||
It's not about roles... it's not about classes or subs either and not even about signatures. | |||||||||||||||||||||||||||||||||||||||
It's the signature's $!count attribute that gets intiailized with an int....from MoarVM's int cache | 14:34 | ||||||||||||||||||||||||||||||||||||||
So any integer constant from 0 to 15 used during compilation will be the same object across multiple compiler instances. And this leads to us adding a dependency on the outer compiler. | 14:41 | ||||||||||||||||||||||||||||||||||||||
14:55
sena_kun joined
14:57
Altai-man_ left,
patrickb joined
|
|||||||||||||||||||||||||||||||||||||||
timotimo | lmao, oh no | 15:11 | |||||||||||||||||||||||||||||||||||||
that's hilarious | |||||||||||||||||||||||||||||||||||||||
nine | Unfortunately there doesn't seem to be a way to disable the int cache | 15:15 | |||||||||||||||||||||||||||||||||||||
patrickb | sena_kun: I'm currently working on doing the precomp build for 2020.06. | 15:17 | |||||||||||||||||||||||||||||||||||||
As feared github.com/MoarVM/MoarVM/pull/1317 broke the build on CentOS 6. So I'll see how I can patch around that. I'll do some tests with different compile flags. Maybe I can find a way to enable c99 constructs. | 15:19 | ||||||||||||||||||||||||||||||||||||||
timotimo | nine: what do you think happens if we "scdisclaim" the int objects when we create the int cache? | ||||||||||||||||||||||||||||||||||||||
sena_kun | patrickb, but the PR isn't merged yet? You mean, its absence is wrong? | ||||||||||||||||||||||||||||||||||||||
patrickb | Yes. | 15:20 | |||||||||||||||||||||||||||||||||||||
I'll try to find a way with only touching compile flags. | |||||||||||||||||||||||||||||||||||||||
I'm not actually sure how clean it is to touch the code when doing an official build. | |||||||||||||||||||||||||||||||||||||||
sena_kun | CentOS 6 is 2011, ouch. | 15:21 | |||||||||||||||||||||||||||||||||||||
patrickb | sena_kun: Thanks for doing the release work by the way! | ||||||||||||||||||||||||||||||||||||||
nine | timotimo: AFAICT scdisclaim works on a whole SC, which could work for the outer most compiler, i.e. a script that's not precompiled, but probably not anymore when we do multiple precompilations in a process. | 15:22 | |||||||||||||||||||||||||||||||||||||
timotimo | ah, dang | ||||||||||||||||||||||||||||||||||||||
sena_kun | patrickb, in the worst case, I don't think applying a patch for the binary one can hurt. | ||||||||||||||||||||||||||||||||||||||
timotimo | should we do something during the serialization phase? have a check based on whether a compilee has been entered? have a +1 / -1 thing that turns a global flag on or off when it's > 0 and prevents int cache lookups? | 15:23 | |||||||||||||||||||||||||||||||||||||
a command that just empties out the int cache? | |||||||||||||||||||||||||||||||||||||||
patrickb | sena_kun: I know. But it's by far the easiest way to create a build that will run on older glibc versions. CentOS is the sweet spot of new enough to work at least a bit and old enough to not leave widely used OS's unsupported. | ||||||||||||||||||||||||||||||||||||||
*CentOS6 is the sweet spot | 15:24 | ||||||||||||||||||||||||||||||||||||||
sena_kun | Not judging anyone, just wondering. | ||||||||||||||||||||||||||||||||||||||
timotimo | i think i still have some debian sarge installer CDs somewhere | ||||||||||||||||||||||||||||||||||||||
patrickb | gist.github.com/wagenet/35adca1a03...6c40aa45b1 <- This gives a nice overview of the different distributions and their glibc versions. | 15:28 | |||||||||||||||||||||||||||||||||||||
nine | On that list the only distro using an older glibc version than CentOS 7 is CentOS 6. But the list is also pretty short | 15:30 | |||||||||||||||||||||||||||||||||||||
patrickb | CentOS 6 is EOL end of 2020. | ||||||||||||||||||||||||||||||||||||||
But not supporting RHEL 7 will give lots of people pain. | 15:31 | ||||||||||||||||||||||||||||||||||||||
nine | People interested in that just need to find out the correct compiler options | 15:33 | |||||||||||||||||||||||||||||||||||||
With a disabled Int cache and nqp::scwbdisable/nqp::scwbenable around $registry.head.need($spec); in load_module, I'm now down to 4 files failing in make test | 15:34 | ||||||||||||||||||||||||||||||||||||||
Apparently the nqp::scwbdisable goes a tiny bit too far | 15:36 | ||||||||||||||||||||||||||||||||||||||
15:59
JJMerelo joined
|
|||||||||||||||||||||||||||||||||||||||
nine | Or maybe it isn't actually the nqp::scwbdisable. The symptom is an empty my @cpp-name-mangler = ...; in NativeCall.rakumod. | 16:15 | |||||||||||||||||||||||||||||||||||||
Indeed, must be something else | 16:19 | ||||||||||||||||||||||||||||||||||||||
16:55
Altai-man_ joined
16:57
sena_kun left
|
|||||||||||||||||||||||||||||||||||||||
lizmat | nine: perhaps have each compunit have its own int cache ? | 17:29 | |||||||||||||||||||||||||||||||||||||
nine | That....could be a decent workaround that doesn't require the program to know much about MoarVM's cache :) Would just cost as much as following a couple pointers: tc->cur_frame->body.sf->body.cu->body.int_cache | 17:45 | |||||||||||||||||||||||||||||||||||||
18:09
vrurg left
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo: 0144905fb0 | (Elizabeth Mattijsen)++ | src/core.c/Grammar.pm6 Give Grammar its own .new One should only call .new on a grammar if it has attributes of its own that need initializing. This is now (also) performed by Match.new. But that is *also* used to create the cursor that will be used in matching. By giving Grammar its own new, we're separating Grammar initialization from cursor initialization. Don't expect too much of a performance gain yet, but this will make refactoring Match a lot easier, and allow that refactor to be much more efficient. |
18:24 | |||||||||||||||||||||||||||||||||||||
patrickb | sena_kun: Precomp builds are done and uploaded. | 18:33 | |||||||||||||||||||||||||||||||||||||
tellable6 | patrickb, I'll pass your message to sena_kun | ||||||||||||||||||||||||||||||||||||||
18:37
JJMerelo left
18:39
vrurg joined
18:55
sena_kun joined
18:57
Altai-man_ left
20:55
Altai-man_ joined
20:57
sena_kun left
22:55
sena_kun joined
22:57
Altai-man_ left
23:18
patrickb left
23:55
leont left
|
|||||||||||||||||||||||||||||||||||||||
timotimo | we are failing to JIT compile the read methods on blobs because of endian objects | 23:56 | |||||||||||||||||||||||||||||||||||||
it is not understanding them to be constant | 23:57 |