Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2014-01-09

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

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

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary