02:03
cognominal joined
02:09
cognominal joined
02:19
BinGOs joined
06:45
lue joined
07:25
FROGGS joined
07:57
wsri_ joined
07:59
wsri_ joined
08:46
odc joined
09:05
ssutch joined
09:39
V_S_C joined
|
|||
V_S_C | @Froggs: Last 2 lines output while attempting to rakudo moar-support nmake install | 09:43 | |
perl -MExtUtils::Command -e cp perl6-m C:\rakudo/bin | |||
perl -MExtUtils::Command -e chmod 755 C:\rakudo/bin/perl6-m | |||
Cannot chmod 755 C:\rakudo/bin/perl6-m:No such file or directory at C:/Perl64/li | |||
b/ExtUtils/Command.pm line 274. | 09:44 | ||
NMAKE : fatal error U1077: 'C:\Perl64\bin\perl.EXE' : return code '0x2' | |||
Stop. | |||
jnthn | Hm, that's lost its .bat... | ||
V_S_C | @jnthn k, thnx. I'll finish up the install then share some alterations I made. | 09:47 | |
FROGGS | ohh, diakopter++ reported that too | ||
I thought it got fixed | 09:48 | ||
jnthn | One other task needed before the Jan Rakudo release: get a MoarVM release process in place. | ||
FROGGS | true | 09:49 | |
V_S_C | There's setup.pm in build directory | 09:53 | |
Line # 338 | |||
Replace WIN32 AO_ASSUME_WINDOWS98 by WIN64 | 09:54 | ||
Then in the 3rdparty\dyncall directory | 09:57 | ||
FROGGS | V_S_C: can you send a pull request? | 09:58 | |
V_S_C | Configure.bat file | ||
line # 29 | 09:59 | ||
Appended 64 | |||
that's it! :) | |||
FROGGS | :o) | 10:00 | |
V_S_C | 2Froggs, I'm a git novice | ||
FROGGS | hmmm | ||
V_S_C | that's it & now I've ogt rakudo perl6 running on moarvm, many thanks to jnthn | 10:01 | |
FROGGS | 1) go to the repository you want to change | ||
2) click on fork | |||
V_S_C | thats alrite | 10:02 | |
FROGGS | 3) clone that fork locally | ||
4) make your changes | |||
5) do: git commit -m "changed XYZ because of ZYX" file1 file2 | |||
6) git push | |||
the go to your fork on github, and press the "compare and pull request" button | 10:03 | ||
that is it, and then you will show up as an contributor :o) | |||
10:05
V_S_C_ joined
|
|||
V_S_C_ | sorry, got dced from irc.. | 10:06 | |
I guess pull request got me the source | |||
FROGGS | see irclog.perlgeek.de/moarvm/today | 10:07 | |
V_S_C_ | the changes I reported are crude hacks.. | ||
saw it already | |||
FROGGS | k | ||
a pull request is like sending a patch to us, so we can test and merge it right away | |||
nwc10 | Slow thing is slow... | 10:08 | |
This finished: | |||
20881 nicholas 30 10 274m 251m 8408 R 97.9 0.3 1028:52 moar | |||
and now we're into the setting | |||
Stage start : 0.005 | |||
V_S_C_ | yes but I simply disrupted the win32 build to make win64 one | ||
nwc10 | I'll update you all tomorrow :-) | ||
jnthn | nwc10: This is torture? | ||
FROGGS .oO( or the day after that :o) ) | 10:09 | ||
V_S_C_ | patch mustn't disrupt, so I just reported | ||
nwc10 | jnthn: yes. For me as well | ||
it did strike me that if it takes a week to do this, one can run more than one, staggered starts | |||
to verify that nothing regressed | 10:10 | ||
but we shall see | |||
jnthn | nwc10: Does this mean the rest of the Rakudo build survived the torture test? | ||
nwc10 | that far, yes | ||
jnthn | wow :) | ||
nwc10 | I'm not sure if your blog estimate of "12" is actually a bit high | 10:11 | |
the code is really bloody robust already. | |||
jnthn | Yeah, I was trying to remember how many...didn't have energy to go and count :) | 10:12 | |
OK, gotta to do some stuff...back late afternoon & | |||
diakopter | FROGGS: you fixed the create directory; this is another thing | 11:18 | |
FROGGS: maybe you didn't push it? | |||
FROGGS | diakopter: I have nothing to push here... | 11:22 | |
tadzik | fun fact: nqp's --prefix expects bin/moar to exist, but moar's make install doesn't install to bin | 11:24 | |
creating bin/moar as a symlink to moar seems to work | |||
diakopter | tadzik: it does install there for me | ||
tadzik | huh, weird | 11:25 | |
diakopter | gist.github.com/diakopter/a3d891db93a1bef7c6d7 | 11:26 | |
tadzik | oh, it's in install | ||
duh, silly me | |||
[Coke] did a moar run over night. moar progress since official run yesterday. keep it up! | 13:09 | ||
(less than 1500 tests left to tie parrot) | 13:10 | ||
nwc10 | gosh | 13:11 | |
[Coke] | 185 tests left to hit 95% of jvm. | ||
(1323 for 99%) | |||
14:09
_ilbot joined
|
|||
FROGGS | [Coke]: only 184 (or 1322) tests left :o) | 14:52 | |
[Coke] | FROGGS++ | 15:19 | |
diakopter | [Coke]++ FROGGS++ timotimo++ nwc10++ JimmyZ++ jnthn++ | 15:20 | |
FROGGS | and not_gerd++ | ||
and you++, err diakopter++ | 15:21 | ||
diakopter | I wish someone could contact not_gerd; no one's heard from him in months | ||
FROGGS | yeah :/ | ||
I hope he is well | |||
jnthn back | 15:30 | ||
FROGGS | o/ | 15:31 | |
jnthn | That was a better day than expected. :) | ||
diakopter | I'm quite sure you/we left someone out of that ++ parade | ||
jnthn: you got a new mouth or whole head or what | |||
jnthn | <dentist> Beer is good for teeth! | ||
diakopter | heh | ||
FROGGS | why do I imagine jnthn ripping off his shirt on an deserted street at a rainy night when he says "back"? | 15:32 | |
jnthn | No, today wasn't anything major. Just maint. :) | 15:33 | |
And potentially depressing afternoon task actually was quite optimistic and productive in the end. :) | |||
diakopter | \o/ | ||
jnthn | 184 to go for 95%? Woo! | ||
I can probably find those this evening. | 15:34 | ||
FROGGS | jnthn: $*VM.perl might give us a few :o) | 15:35 | |
jnthn | 2 or 3 :P | 15:37 | |
FROGGS | I guess more | ||
jnthn | Oh, maybe | ||
That works but just crazy slow, right? | |||
FROGGS | because that thing hangs, and I can imagine that its cause causes more hangs | ||
ohh, it does? | |||
I am trying to debug this right now: perl6-m -e 'my @a = <a b c o>; say @a.perl; say "foobar" ~~ /[|@a]+/' | 15:38 | ||
jnthn | Yeah...it's slow everywhere | ||
And due to the slow-path'd binder, horrifically slow on Moar | |||
FROGGS | it hangs because it loops over @a endlessly | ||
nqp-m: say(nqp::islt_i(2,3)) | 15:39 | ||
camelia | nqp-moarvm: OUTPUTĀ«1ā¤Ā» | ||
FROGGS | nqp-m: say(nqp::islt_i(3,3)) | ||
camelia | nqp-moarvm: OUTPUTĀ«0ā¤Ā» | ||
[Coke] | yah, my "infiloops" are least partially "oh, that's just reaaaaaly slow." | 15:40 | |
I am trying to be slightly more forgiving on future runs. | 15:41 | ||
15:42
jnap joined
|
|||
jnthn | FROGGS: Where is it looping? | 15:42 | |
FROGGS: Is it the regex engine doing the thing again and again? | |||
FROGGS: Of is it inside INTERPOLATE? | |||
FROGGS | it seems to call INTERPOLATE over and over again | ||
but, $topic at around line 140 is an empty string, when it should be "a", "b", ... | 15:43 | ||
jnthn | 140 in...whcih file? :) | 15:44 | |
FROGGS | and $count at line 100 is zero | ||
jnthn | ah, Cursor | ||
FROGGS | wait | ||
right | |||
so, I'd say it loops all over INTERPOLATE because that does not fail, but match an empty string instead | 15:46 | ||
either the else branch before "# Now run the NFA" is wrongish, or the bit afterwards | 15:47 | ||
it is nice that stage parse does not take 465s anymore ;o) | |||
timotimo | \o/ | 15:48 | |
jnthn | FROGGS: Yeah, adding a { say 'here' } after the @a repeats it again and again | 15:50 | |
FROGGS | but if the nfa ops would be broken we would already know it, no? | 15:51 | |
timotimo | not if the only thing wrong in it is interpolated, flattened arrays :) | ||
jnthn | FROGGS: Hm, yeah, it's weird... | 15:52 | |
FROGGS | timotimo: that happens in Cursor.pm, it just creates an nfa of literals from the array to interpolate | 15:54 | |
timotimo | hm, OK | ||
FROGGS | and "foobar" ~~ /[|@a]+/ hangs, while "foobar" ~~ /[|@a]+/ does not | 15:55 | |
err | |||
and "foobar" ~~ /[|@a]+/ hangs, while "foobar" ~~ /[||@a]+/ does not | |||
timotimo | ah, that's interesting | 15:56 | |
let me look at the nfa generation, i've done that sort of thing before once | |||
FROGGS | ohh | ||
I think I see it | |||
timotimo | oh, cool :) | 15:57 | |
FROGGS | in the first run, $tgt is "foobar", but in the second run it is "3" | ||
timotimo | so it interprets the + after the group as a prefix:<+> and turns the array into a number? :P | 15:58 | |
FROGGS | so something like running that freshly created nfa writes to our string | ||
no | |||
foobar is the string we watch to match against | |||
timotimo | this is !INTERPOLATE in QRegex/Cursor.nqp? | ||
i don't think i'm in the right place | 15:59 | ||
FROGGS | rakudo/src/core/Cursor.pm | ||
timotimo | ah | ||
oh! | |||
FROGGS | nqp does not have array interpolation | ||
is it possible that we are missing something to root here? MoarVM/src/6model/reprs/NFA.c:474:MVMObject * MVM_nfa_run_proto | 16:01 | ||
ahh, no | 16:02 | ||
timotimo | the changelog for january's rakudo star release will look pretty bleak :P | 16:03 | |
we should write a sentence about how we've been advancing the moarvm port with great success into the announcement | |||
so that people don't claim perl6 is dead | |||
diakopter | [Coke]: there's a bunch more | ||
dalek? | |||
does dalek not report for roast anymore? | 16:04 | ||
timotimo | it should | 16:05 | |
FROGGS | dalek did not report my commit either | 16:07 | |
that was a bit more than an hour ago | |||
jnthn | timotimo: Well, we'll be able to put "Added support for MoarVM" in the changelog :P | 16:09 | |
diakopter | github.com/perl6/roast/commit/e6ea...9bb9fd21db | 16:10 | |
FROGGS | diakopter++ | 16:11 | |
timotimo | OK, that's for the rakudo compiler release. what about rakudo star? :P | 16:12 | |
diakopter | FROGGS: your last commit doesn't work on msvc | 16:13 | |
and i don't know how to fix it | |||
FROGGS | >.< | ||
diakopter | src\io\fileops.c(429) : error C2059: syntax error : 'bad suffix on number' | ||
FROGGS | damn | ||
diakopter | src\io\fileops.c(429) : error C2146: syntax error : missing ')' before identifier 'b110' | ||
FROGGS | ohh | ||
I'll fix | |||
16:14
ssutch joined
|
|||
diakopter | anyone want to improve the fudge script to add test numbers? it's maddening to try to find which ones failed by the test description sometimes | 16:15 | |
16:15
jnap joined
|
|||
timotimo | i would like that, too | 16:15 | |
FROGGS | pushed | ||
timotimo | maybe line numbers would be good | ||
diakopter | timotimo: ah yes, even better | ||
FROGGS: thanks | 16:16 | ||
timotimo | diakopter: let's emit a vim-quickfix-compatible output at the end, too :P | 16:17 | |
diakopter | what's vim | ||
FROGGS | *g* | ||
timotimo | :D | 16:19 | |
emacs ought to have something compatible, too | 16:20 | ||
diakopter | what's emacs | 16:22 | |
arnsholt | timotimo: Yeah, it's called evil-mode ;) | ||
FROGGS | jnthn: I added a die() near the "# Now run the NFA" but INTERPOLATE is still called twice... | 16:23 | |
is it possible that it gets called once by an NFA to check if that route might be valid, and then again afterwards? | 16:24 | ||
now the $tgt is 6 in the second run btw, instead of "foobar" | |||
jnthn | FROGGS: Odd, I don't get the "empty string" problem with $topic... | 16:27 | |
FROGGS | hmm | 16:28 | |
can you print $tgt right at the top? | |||
jnthn | FROGGS: Moment... | 16:31 | |
FROGGS: It seems that it doesn't scan its way through the string | 16:35 | ||
FROGGS: So it always calls with $!pos in the cursor being 0 | |||
FROGGS: Oh, wtf... | 16:44 | ||
FROGGS: It does get an empty string in the next iteration | |||
FROGGS | I got a "3" and now a "6", but yeah | 16:45 | |
jnthn | This'll be inteeresting to get to the bottom of :) | 16:50 | |
FROGGS | yeah | ||
I think I'd need to buy alcohol for that :o) | |||
waaait | 16:52 | ||
now I removed most of my debug print statements and now I get "foobar" every invocation? | |||
bug: I don't like you | |||
at least I can limit the output :o) | 16:54 | ||
perl6-m -e 'my @a = <a b c o>; say "foobar".match(/:my $i; [@a <?{ $i++ < 10 }>]+/)' | |||
brb | |||
16:55
FROGGS[mobile] joined
|
|||
jnthn | r: my $foo := nqp::list(); for $foo -> $topic { say $topic.^name } | 16:58 | |
camelia | ( no output ) | ||
jnthn | aha! | ||
On Moar that gives Parcel. | |||
And that is the problem. | |||
When fates don't match and $order is empty, we do a loop with a single Parcel instance, which stringifies to the empty string. | 16:59 | ||
So, the bug golfs to the above. Phew. :) | |||
r: for nqp::list() -> $topic { say $topic.^name } # or this | |||
camelia | ( no output ) | ||
jnthn | Also says Parcel on Moar. | 17:00 | |
r: &infix:<,>(nqp::list()).map({ say 'oops' }).eager | 17:02 | ||
camelia | ( no output ) | ||
jnthn | r: say &infix:<,>(nqp::list()).perl | ||
camelia | rakudo-parrot f614e5, rakudo-jvm f614e5: OUTPUTĀ«((),)ā¤Ā» | ||
jnthn | On Moar, that gives "Cannot find method 'perl': no method cache and no .^find_method" | 17:03 | |
benabik | So we're not iterating over parcels correctly? | ||
jnthn | ohhh | 17:05 | |
p6argvmarray | |||
On Parrot and JVM, that calls hllize on each thing | |||
On Moar it does not | |||
timotimo | gefahr erkannt -> gefahr gebannt | 17:09 | |
17:15
FROGGS joined,
ssutch joined
|
|||
[Coke] | moar up to 26806 in today's run. | 17:16 | |
FROGGS | percent?? | ||
wow! | |||
[Coke] | r: say 26806/28454 #jvm doesn't move | 17:17 | |
camelia | rakudo-parrot f614e5, rakudo-jvm f614e5: OUTPUTĀ«0.942082ā¤Ā» | ||
[Coke] | r: say 28454*.95-26806 | ||
camelia | rakudo-parrot f614e5, rakudo-jvm f614e5: OUTPUTĀ«225.3ā¤Ā» | ||
FROGGS waits eagerly for jnthn++'s commit | |||
[Coke] | that's worse than the overnight run. huh. | 17:18 | |
perhaps I screwed up some maths. | |||
jnthn | 94.2% :) | ||
diakopter | [Coke]: well, as jnthn pointed out to me, I did de-skip some in roast earlier today that will distort the vs-parrot number somewhat | 17:19 | |
I LIKE TRAMS | 17:20 | ||
17:39
benabik joined
|
|||
jnthn | FROGGS: Yeah, got a patch | 17:42 | |
FROGGS: Which test was this from? | 17:43 | ||
ooh, these two no longer hang: | 17:46 | ||
S05-interpolation/regex-in-variable.rakudo.moar | |||
S05-metasyntax/litvar.t | |||
timotimo | yay :) | 17:47 | |
jnthn | Pushed a patch | 17:48 | |
nom & | 17:56 | ||
FROGGS | litvar, yes | 17:57 | |
jnthn++ | |||
:o) | |||
timotimo | long live litvars! | 18:23 | |
(but not longer than necessary) | |||
FROGGS | I have almost done spectesting and had to kill not a single test file :o) | 18:38 | |
timotimo | \o/ | ||
19:06
benabik joined
|
|||
jnthn | yay :) | 19:10 | |
r: say tan(-Inf) | 19:15 | ||
camelia | rakudo-parrot f614e5, rakudo-jvm f614e5: OUTPUTĀ«NaNā¤Ā» | ||
jnthn | Can somebody please try | 19:17 | |
say Inf | |||
say -Inf | |||
say NaN | |||
On Moar? | |||
On non-Windows. | |||
[Coke] | REPL is segfaulting on host06, btw. | 19:19 | |
benabik | I don't have a r-m built, is nqp-m good enough? I get '', '-0', '' there | ||
FROGGS | jnthn: works well | ||
[Coke] | the version with the daily run says Inf, -Inf, and NaN, respectively. | ||
jnthn | benabik: No, needs r-m, but [Coke]'s answers are helpful :) | 19:20 | |
On Windows I get 0, -0, 0 :/ | |||
FROGGS | well then, grab for an #ifdef :o) | 19:21 | |
moritz | I get the same results as [Coke]++ | ||
[Coke] | getting REPL working should also happen before mergeback to nom. | 19:23 | |
jnthn | How about | ||
say(+'Inf') | |||
in nqp-m? | 19:24 | ||
moritz | 0 | ||
jnthn | Hmm... | ||
jnthn is trying to figure out why his Inf/-Inf/NaN are 0... | 19:25 | ||
...and apparently they are not off Windows. | |||
FROGGS | nqp-m -e 'say(+"Inf")' | ||
Inf | |||
moritz | oh sorry, I didn't see the quotes :( | 19:26 | |
yes, that gives me Inf too | |||
jnthn | Aha! | 19:27 | |
FROGGS | I guess this TODO is still valid too: github.com/MoarVM/MoarVM/commit/091a2369e | 19:28 | |
jnthn | yeah | 19:31 | |
FROGGS | k, so I'll leave that browser tab open | ||
timotimo / diakopter: what is the approach to add a unicode property name to moar? like InAlphabeticPresentationForms | 19:32 | ||
jnthn | yay, that fixes a bunch of numerics tests for me :) | 19:35 | |
FROGGS | cool | 19:36 | |
diakopter | FROGGS: need to add an override to the ucd2c.pl script, which will make your eyes explode | ||
FROGGS | k | ||
diakopter | (sorry about that)( | ||
) | 19:37 | ||
FROGGS | :o) | ||
that is.... interesting | 19:40 | ||
[Coke] | why is there a .pl and a .p6? | ||
jnthn | It's in our Unicode database as Alphabetic_Presentation_Forms | 19:41 | |
FROGGS | indeed | ||
jnthn | So really it's a canonicalization issue | 19:42 | |
I had all kinds of fun with this will doing the JVM port: github.com/perl6/nqp/blob/master/s...java#L3440 | 19:44 | ||
FROGGS | hmmm, using Alphabetic_Presentation_Forms in a match does not work either | 19:45 | |
diakopter | typo? | ||
(or quite possibly I skipped/overlooked that property/projection) | |||
jnthn | Well, it shows up in unicode_db.c | 19:46 | |
diakopter | oh | ||
FROGGS | right, and I copy+pasted that into my regex | ||
jnthn | It's in the static const MVMUnicodeNamedValue unicode_property_value_keypairs[2115] = { | ||
FROGGS | and MVM_unicode_name_to_property_code(tc, "Alphabetic_Presentation_Forms") gives zero | 19:47 | |
and I guess it should not | |||
jnthn | Well, MVM_unicode_name_to_property_value_code knows how to find it though, it seems... | 19:49 | |
FROGGS | not for me | 19:50 | |
jnthn | Oh, hmm | ||
I thought it may as the alphabetic presentation forms entry is not in unicode_property_keypairs, but rather in unicode_property_value_keypairs | 19:51 | ||
FROGGS | it looks like it is shoveled into unicode_property_values_hashes | 19:53 | |
under property_code 6 | 19:54 | ||
jnthn | op('const_s', $pname, sval($node[0])), | ||
op('unipropcode', $pcode, $pname), | |||
op('unipvalcode', $pvcode, $pcode, $pname), | |||
op('hasuniprop', $i0, %*REG<tgt>, %*REG<pos>, $pcode, $pvcode), | |||
diakopter | jnthn: oh yeah. | 19:55 | |
I never did the fallback thing which I was going to do | |||
which was to look in the values as well when the key is not specified | |||
so needs another hash of all the terms | |||
(keys and values) | 19:56 | ||
wait, ISTR working on that | |||
hrm | |||
FROGGS | diakopter++ | ||
diakopter | FROGGS: ur, wut? :P | 19:57 | |
FROGGS | I dunno | ||
jnthn | ++diskopter # I hope he works on it ;-) | 19:58 | |
uh, diakopter | |||
FROGGS | diakopter: if you are not, can you outline instructions for me? | ||
jnthn | keys right next to each other... :P | ||
FROGGS | jnthn: that is why it is called key*board* | 19:59 | |
:P | |||
it is full of 'em | |||
jnthn | timotimo: I think something may be up with sort... | 20:00 | |
timotimo | oh no! :( | 20:01 | |
it'll be my fault :( | |||
i probably didn't decont enough | |||
diakopter | timotimo-- # preemptive decrement ;) | ||
jnthn | timotimo: t\spec\integration\99problems-21-to-30.rakudo.moar fails one test, | ||
timotimo | only one? that's not that bad :) | ||
should i look into it later? | |||
i've got all kinds of things on all of my hands | 20:02 | ||
jnthn | timotimo: No hurry, just that you understand the sorting code best at this point ;) | ||
timotimo | oh it's not that complicated :P | ||
nwc10 | jnthn: for Darwin, I did this: paste.scsys.co.uk/290427 | 20:12 | |
it's less than awesome, because as you can just about see from the context of the diff, it repeats the name "libmoar.dylib" | 20:13 | ||
and worse, it has to hardcode 'more', which dll => 'lib%s.dylib', had tried hard to avoid | |||
jnthn | And removes ldrpath? | 20:14 | |
Hm | |||
nwc10 | rpath just doesn't seem to work | ||
jnthn | But it's better than "can't build on OSX"... | ||
nwc10 | it's a straight copy of what Perl 5 does for OS X | ||
for MoarVM it is definately only certified to the "works on my machine" level | |||
but Perl 5 has a bit more testing than that | 20:15 | ||
well, we hope | |||
OS X is dylib, not ld.so | |||
That commit message is less than awesome too, because it doesn't acknowledge the less-than-awesomeness | 20:17 | ||
jnthn | nwc10: Added a note to the commit message | 20:19 | |
Applied, thanks. | |||
lee__ | i'll try it on my mac, i was having issues with dylib not being found | ||
jnthn | lee__: Thanks! | 20:20 | |
[Coke] | is there a sample .moarvm file included in the distro? | 20:22 | |
or a way to create one? | 20:23 | ||
nwc10 | 1..1 | ||
ok 1 # Hello world | |||
[Coke] | or do I need to use nqp for that? | 20:24 | |
... I can build moarvm on os x and install it, but I have no idea if iit's doing anything. | |||
diakopter | o_O | 20:25 | |
nwc10 built NQP with it | |||
jnthn | [Coke]: Trying to then use it to build an NQP is the only sane way to know | ||
diakopter has other ways | |||
nwc10 | it would be nice if it shipped with a minimal MoarVM file, maybe to print out the 2 lines I suggested | ||
jnthn | My idea is to have a bunch of .moarvm files shipped with it to give us a standalone "make test" target | 20:26 | |
[Coke] | jnthn: should I build it first, then nqp, or is it ok to let nqp build it? | ||
jnthn | And those are generated by some NQP script or two | ||
[Coke]: Should be fine to let NQP do it, but force master | |||
Gonna work on enforcing type checks on assignment. | 20:31 | ||
[Coke] | nqp's make is rebuilding stuff every time I type "make" | 20:32 | |
baaaad nqp' | |||
I can grab nqp, use it build nqp-m, install it, then cd to tmp and run it from the install dir on os x. | 20:33 | ||
diakopter | [Coke]: what's it rebuilding | 20:34 | |
lee__ | nwc10: jnthn: nqp seems to build but rakudo blows up with this gist.github.com/leedo/539b4b7245156d228ebb | ||
which i was seeing before when i used --static | 20:35 | ||
benabik | Huh. nqp-m segfaults when trying to get to a REPL. | ||
lee__ | this time i clobbered my entire rakudo dir to be sure | ||
benabik | strlen(NULL) inside strdup() inside uv_fs_lstat() inside MVM_file_eof() | 20:36 | |
FROGGS | >.< | 20:37 | |
benabik: seems to be my fault... | |||
it tries to stat your STDIN I guess | 20:38 | ||
benabik | That's a problem. | ||
jnthn | oops | ||
nwc10 | lee__: "oh, great" | ||
I'm not sure. I built with gcc | |||
benabik | Does libuv not provide a feof()? | 20:39 | |
FROGGS | benabik: I am fixing this in a bit | 20:40 | |
no idea about feof | |||
[Coke] | diakopter: I already closed that window, sorry. | 20:41 | |
(nqpm-segf repl) so does rakudo, btw. | |||
jnthn | Rakudo and NQP repl share impl code, so not surprising :) | 20:44 | |
timotimo | [Coke]: was that lisp code? | 20:47 | |
jnthn | Looks like a valid sexpr to me... :P | ||
nwc10 | jnthn: another one I found, but not sure about the right fix: paste.scsys.co.uk/290438 | ||
and paste.scsys.co.uk/290439 but all the use of static it that file made me uncomfortable. Seems to be *both* a race condition within an instance, and not safe in the future if anyone instanstiates a second instance | 20:49 | ||
and I think that TimToady is right - needs a better name. "world" was the least terrible thing I could think of, but it's not that good | 20:50 | ||
jnthn | And overloads with something else in NQP/Rakudo | 20:51 | |
Agree with paste.scsys.co.uk/290438 | 20:52 | ||
I think ti's the right way. | |||
nwc10 | OK | ||
I think that the only other root I need to report back is paste.scsys.co.uk/290440 | |||
again, not sure if it shouldn't be gen2 direct as it's the top level compilation unit | 20:53 | ||
jnthn | paste.scsys.co.uk/290439 - makes sense to do gen2 direct in this one | 20:54 | |
nwc10 | good point. The only one of the 3 that I didn't suggest that for :-) | 20:56 | |
but if you look futher after the code changed in paste.scsys.co.uk/290438 | |||
MVM_gc_root_add_permanent(tc, (MVMCollectable **)&entry->name); | 20:57 | ||
so doesn't that mean that name should be gen2? | |||
jnthn | Well, there's no "should be" about it really | 21:01 | |
nwc10: As it, you don't break an invariant if you don't make it that way. | |||
nwc10 | I think you're more awake than me. Could you restate that with fewer negatives :-) | ||
jnthn | nwc10: But it's gonna live forever...mostly just depends if it's worth cluttering the code with the "force gen 2" | ||
nwc10: If you MVM_gc_root_add_permanent a nursery object, things will work. | 21:02 | ||
nwc10 | is it more clutter than a temp root? | ||
jnthn | Well, more importantly is that temp roots do something sane wrt exceptions | ||
And MVM_dll_find_symbol can throw | 21:03 | ||
nwc10 | OK, that's 2 things that I didn't know. | ||
jnthn | If you throw an exception from C code, it knows that it should clear the temp roots stack before long-jumping back to the interp. | ||
If MVM_string_ascii_decode_nt throws, we've issues :) | 21:04 | ||
OK, first two you reported dealt with...first by applying patch as is, second by gen2 alloc. | 21:06 | ||
Now for the third... | |||
21:06
FROGGS[mobile] joined
|
|||
nwc10 | and I mailed the forth to the list in follup to my previous message | 21:07 | |
21:09
FROGGS[mobile] joined
|
|||
nwc10 | followup. naughty fingers | 21:09 | |
21:10
dagurval joined
|
|||
jnthn | Took paste.scsys.co.uk/290440 as is | 21:11 | |
nwc10 | OK. | 21:12 | |
thanks for the explainations of why my suggestions weren't ideal | |||
jnthn studies the mutex move patch carefully | 21:15 | ||
nwc10 | yes, please do | ||
jnthn | Well, I'm just a tiny bit worried about races involving the code we moved outside the mutex | 21:16 | |
nwc10 | yes, you're more likely to know about those | ||
jnthn | I'm pretty sure that scb->sc = sc; wants to be done while we're holding the mutex. | 21:20 | |
Oh...maybe not | |||
The mutex is actually protecting the weak hash... | |||
By name at least. | |||
diakopter | oh, that code region was written carefully | 21:21 | |
jnthn | oh, yeah | ||
It is wrong with the mutex released earlyer. | |||
If you release it, then somebody else grabs it, then you race on the scb->sc = sc; lines | |||
nwc10 | OK, bother. Because if you hold it, you can deadlock the GC | 21:22 | |
jnthn | MVM_repr_init(tc, (MVMObject *)sc); allocates, yes? | ||
Well, if we force it to do it in gen2...it never triggers a GC run... | |||
Bit icky but better than a race condition (with the patch) or GC deadlock (without it)... | 21:23 | ||
nwc10 | jnthn: yes, backtrace in the e-mail as generated by hellgrind shows that it allocates | 21:24 | |
agree, icky but at least correct | 21:25 | ||
could you comment tha tbit about scb->sc = sc; needing the mutex protection. I missed that completely | |||
please add "please" and "?" to that sentance in the right places | |||
jnthn | nwc10: Replied to list | 21:34 | |
nwc10: Hope the comment is good enough :) | 21:36 | ||
nwc10 | I think that it is | ||
thanks | |||
jnthn | Thanks for finding it, and the proposed patch. | ||
nwc10 | Slow thing is still slow: | 21:41 | |
7977 nicholas 30 10 230m 206m 14m R 99.3 0.2 733:44.79 moar | |||
(stage parse, not yet finished) | |||
jnthn | You can at least use memory used so far as a % complete indicator :) | ||
nwc10 | true. But I don't know what it peaks at | 21:42 | |
over 12 hours | |||
I hope that it's less than 24 | |||
diakopter | nwc10: you don't actually need to run the entire gc each run.. you just need to run the marking phase | 21:43 | |
(as long as you run the whole gc every so often) | 21:44 | ||
nwc10 | I'm confused - why so? I was doing a GC run and purposefully moving things in the nursery, to try to make unrooted pointers go stale | 21:45 | |
jnthn | diakopter: ...marking phase? | ||
diakopter | er, I know it's interleaved, ish | ||
jnthn | Nursery objects aren't marked so much as copied. | ||
diakopter | nwc10: right, but if you move them on every allocation they'll get into the 2nd gen far sooner than naturally, so their pointers may be righter than they otherwise would be | 21:46 | |
21:48
ssutch joined
|
|||
nwc10 | yes, but I also hacked the code locally so that they stayed in the nursery for a lot longer | 21:48 | |
compile time configurable, but running with 256 moves within the nursery before they get to gen2 | 21:49 | ||
sorry, wasn't clear about that. | 21:50 | ||
jnthn | Hm, what happened to dalek? | 22:06 | |
FROGGS | he's mad since the github crash yesterday | 22:07 | |
jnthn | Ah well, shaved a yak to help me look at the containers thingy... | 22:09 | |
diakopter | nwc10: ohhhhh | ||
FROGGS | diakopter: is that correct that <:InArabic> should search for "Arabic" in UNIDATA/Blocks.txt and that we're not looking there at all atm? | 22:21 | |
at least that is how I read our implementation on parrot | 22:22 | ||
if (strncmp(cstr, "In", 2) == 0) { | 22:23 | ||
strwhich = u_getPropertyValueEnum(UCHAR_BLOCK, cstr+2); | |||
btw, did the REPL even work before? | 22:36 | ||
jnthn | Well, I think it entered at least... | 22:37 | |
diakopter | FROGGS: dunno | 22:44 | |
FROGGS | k | 22:45 | |
diakopter | FROGGS: probably try adding in the same thing from parrot's? except need to check for Capital letter in the 3rd position | ||
and check the length first | |||
FROGGS | yes, will do that | ||
parrot delegates the shortened name to libuv, and I will grep in hashes or so | 22:46 | ||
diakopter | grep in hashes? | ||
FROGGS | I mean, i have to map files like Blocks.txt first | 22:47 | |
diakopter | why | 22:48 | |
FROGGS | to search for blocks? | ||
if (strncmp(cstr, "Bidi", 4) == 0) { | |||
strwhich = u_getPropertyValueEnum(UCHAR_BIDI_CLASS, cstr+4); | |||
this would depend on a BidiClass.txt or something like that | 22:49 | ||
diakopter | I don't understand | 22:59 | |
I thought my script was automating all of that | |||
FROGGS | I don't see that we are using Blocks.txt when we hit something with "In...", that is all | 23:02 | |
so, a "InArabic" will never be found | |||
diakopter | right, I was saying the infrastructure is already there to look it up the same way parrot is looking it up | 23:12 | |
jnthn | FROGGS: Were you saying the other day something is really messed up with smartmatch? | ||
FROGGS | jnthn: yes, lemme grab a snippet | 23:13 | |
jnthn | yeah, I'm seeing examples of such fail in various places... | ||
FROGGS | try: | ||
perl6-m -e 'say -> $a, $b { $a, $b }.(1~~2, 0)' | |||
jnthn | Might ta en ƶl and try to hunt it... | ||
FROGGS | perl6-m -e 'say -> $a, $b { $a, $b }.(1~~2, 1)' | ||
ƶl? | 23:14 | ||
jnthn | oh, hah...that's oil in German, ain't it... :) | ||
beer in Swedish :) | |||
FROGGS | ahh, beer++ then :o) | ||
diakopter: parrot is not looking it up, it just queries libuv | 23:15 | ||
err, libicu | |||
diakopter | that's what I mean by looking it up | ||
FROGGS | k | ||
diakopter | querying libicu | ||
the same sort of interface is there in moar's unicode | |||
FROGGS | I don't think so | 23:16 | |
diakopter | why not | ||
FROGGS | how do I look up something by block or bidi class names? | 23:17 | |
diakopter | you look up the property key code | ||
then the value key code | |||
jnthn | FROGGS: eeks, yeah, that's messed | ||
FROGGS | diakopter: how do I look up the property key code for a block? | 23:18 | |
diakopter | I don't remember, the codegen codegen is codegenned | ||
FROGGS | right, and I think we don't even care about blocks right now | ||
or maybe... | 23:19 | ||
damn, this is so confusing | |||
diakopter | if this line is in ucd2c.pl, then I know it's emitting bidirectional markers | ||
Bidi_Class => $bidi_classes->{enum}->{$bidiclass}, | |||
FROGGS | jnthn: btw, I think the REPL is messed up because MVM_file_get_stdstream still keeps a pointer to an obj's body... | 23:22 | |
that messes up the file descriptor for me under -O3, and then ftell() fails | |||
diakopter | FROGGS: and if this line is in ucd2c.pl, I know it's emitting the block info enumerated_property('Blocks', 'Block', { No_Block => 0 }, 1, 1); | ||
jnthn | 00065 prepargs Callsite_2 | 23:27 | |
00066 arg_o 0, loc_10_obj | |||
00067 arg_o 1, loc_10_obj | |||
00068 invoke_o loc_10_obj, loc_8_obj | |||
...oops :) | |||
diakopter | looking at dumps? | ||
FROGGS | aha! | ||
:o) | |||
diakopter | FROGGS: you derived the api? :) | 23:28 | |
FROGGS: I should've told you to look at how the P6Regex compiler emits the property lookup | |||
if my head were on straight today | 23:29 | ||
FROGGS | it looks like an omelette | ||
diakopter | my head? | ||
FROGGS | hehe | ||
no | |||
the dump | |||
I've seen what the P6Regex compiler does, so no worries | |||
jnthn | FROGGS: yay, think I nailed it with my first fix attempt :) | 23:47 | |
FROGGS | cool! | 23:48 | |
will see the patch :o) | |||
want to* | |||
jnthn | yeah, seems to help a good bit | 23:49 | |
set.t is clean now | 23:50 | ||
Doing a spectest run on it and the other assignment typecheck fix I ahve. | 23:51 | ||
[Coke] | once jnthn++ is done for the night, I'll do an intraday run and generate the list of test aborts. | ||
jnthn | Unfortunately, I seem to have busted error reporting... | 23:55 | |
FROGGS | :o( | 23:56 |