Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2017-03-23

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

All times shown according to UTC.

Time Nick Message
03:39 KDr2_c joined #moarvm
03:58 Zoffix joined #moarvm
06:48 brrt joined #moarvm
06:56 brrt good *, #moarvm
06:56 brrt and samvc, who is usually here at this point
06:58 domidumont joined #moarvm
06:59 samcv hey brrt
07:00 brrt hey :-)
07:00 brrt up to anything today?
07:00 samcv uhm was going to try and come up with some concatenation tests/benchmarks
07:01 brrt seems like a good plan
07:03 brrt isn't our string concatenation logic pretty optimized already?
07:03 samcv yeah. uhm. let's see mvm string compare doesn't take graphemes into account i think. so if concatenation fucks something up it should not compare right
07:03 brrt hmmm
07:03 samcv well i optimized it some. but it needs more. and more testing. and not to renormalize the WHOLE of the string just because the last char of a and first char of b need renormalization
07:04 brrt hmmm….
07:04 brrt what exactly does renormalization do?
07:04 samcv that last question will be more complicated to do. but want to get some testing and think reallllyyy hard about ways concatenation could go wrong and tests to write
07:04 mst joined #moarvm
07:04 samcv like puts cp's into graphees. so "\r\n" becomes a single grapheme. which is a single 32bit int
07:05 samcv same with anything that is a grapheme
07:06 samcv will probably end up writing a simple test and breaking the MVM code on purpose just to make sure i know i can make the test fail
07:06 brrt :-)
07:06 brrt that's a good plan
07:06 samcv otherwise whatever work i do is useless if i don't know which part of the code can cause the test to fail or not. or looking in the wrong place
07:07 samcv cause currently i have some tests, but i am a skeptical person. and it is hard to believe in a test until it has been broken sometimes :P
07:08 brrt yeah
07:08 brrt good tests are essential
07:08 brrt and sometimes kind of hard with a system like moarvm
07:08 samcv oh yeah and i was optimizing MVM_string_equal a bit
07:08 samcv possibly
07:09 samcv trying to reduce it checking args multiple times and such passing through multiple functions needlessly
07:09 samcv since that seems to be a high cpu usageish one
07:09 samcv on certain jobs
07:09 brrt uhuh
07:09 brrt i was somewhat hoping we could simplify that to a jittable level at some point
07:09 samcv how can we JIT it?
07:10 samcv anything that needs to be done in the C functions themselves?
07:10 brrt well, we can call the function (as we do now), but ideally, you could lower the power to a memory compare
07:16 brrt or at least the bulk of it
07:17 samcv yeah
08:01 brrt joined #moarvm
08:25 timotimo the whateverable people have a nice present for us
08:25 samcv brrt, gonna start out with some korean
08:25 timotimo https://gist.github.com/Whateverable/94f2cbf21ddf9cea69e6efa04f10871c
08:25 samcv those are made up of usually 3 cp's per grapheme
08:26 samcv chop it at all possible places and concat it, then check if they're still the same synthetics/cp's
08:26 brrt (are they? I had no idea)
08:26 samcv yep
08:26 timotimo we currently don't re-assign synthetic codepoints when they are no longer used
08:26 samcv korean is cool (hangul script). unlike basically all scripts it was actually designed and engineered by academics. funded by some korean king who wanted to improve literacy in korea
08:27 timotimo and the trie structure ought to make sure the same grapheme always ends up with the same synthetic
08:27 samcv since before that they only had borrowed chinese characters and only the elites knew how to read
08:27 brrt imho latin script is awesome. it's just that nobody wants to conform to it
08:27 brrt and it may have a few to few letters
08:27 samcv heh brrt
08:27 timotimo of course something related to storing unnormalization-conserving stuff could throw a wrench in that machine
08:27 samcv well korean each character is a syllable
08:28 samcv and you add the shapes and overlay them
08:28 samcv and there you have that syllable, made up of whatever subshapes
08:28 samcv and they are shaped by how they sound
08:29 samcv brrt, http://keytokorean.com/wp-content/uploads/2014/02/02.08.Hangulposter-AboutLetters.jpg
08:30 samcv was designed to be as easy to learn as possible
08:30 samcv and it's kind of pretty neat
08:30 timotimo it did wonders for the country at the time
08:31 samcv kings after him tried to supress it cause they didn't want the poor peoeple to rise up or something, but then came back into use in the 1900's
08:31 timotimo >:(
08:31 samcv before that it was hangul/chinese chars were both used
08:31 samcv depending on context
08:31 samcv haters gonna hate
08:32 samcv similar sounding parts are shaped. if you say themh out loud, along the line, you'll start to sort of get it
08:32 samcv and see how they're shaped based on sound
08:33 samcv plus they look super futuristic and stuff
08:33 brrt it is pretty cool, i admit that
08:38 zakharyas joined #moarvm
08:43 samcv yay got a should not be reachable error :)
08:44 samcv but only with \r\n line endings on this korean text
08:44 samcv https://gist.github.com/0df9fcc0c119f5ada443aefbee6f24d7 btw
08:46 samcv wow nice! it detected my .t file as perl 6 :) \o/ (due to my work on github's linguist which detects languages and such)
08:46 samcv was a month or two ago, but forgot about it
08:59 timotimo Usage: perf c2c {record|report}
08:59 timotimo <3 <3 <3 <3 <3
08:59 samcv well i found a bug introduced by my speed boost
08:59 samcv with korean and \r\n line endings
08:59 timotimo very good!
08:59 samcv improving test coverage is supreme!
09:00 samcv actually fails with should not be reachable. because idk why. gonna set break point
09:00 timotimo :D
09:01 samcv want to write it in nqp but seems inconvenient. idk you tell me timotimo
09:01 timotimo "it"?
09:01 samcv see the gist and how i can do .chrs in nqp directly. and shift
09:01 samcv https://gist.github.com/0df9fcc0c119f5ada443aefbee6f24d7
09:01 samcv half is in nqp already
09:02 timotimo s: Str. "chrs", \()
09:02 SourceBaby timotimo, Something's wrong: ␤ERR: ===SORRY!=== Error while compiling -e␤Unsupported use of . to concatenate strings; in Perl 6 please use ~␤at -e:6␤------>     put sourcery( Str.<HERE> "chrs", \() )[1];␤
09:02 timotimo s: Str, "chrs", \()
09:02 SourceBaby timotimo, Something's wrong: ␤ERR: Could not find candidate that can do \()␤  in sub sourcery at /home/zoffix/services/lib/CoreHackers-Sourcery/lib/CoreHackers/Sourcery.pm6 (CoreHackers::Sourcery) line 29␤  in block <unit> at -e line 6␤␤
09:02 timotimo s: Str, "chrs", \(Str:)
09:02 SourceBaby timotimo, Something's wrong: ␤ERR: ===SORRY!=== Error while compiling -e␤Unexpected closing bracket␤at -e:6␤------>     put sourcery( Str, "chrs", \(Str:<HERE>) )[1];␤
09:02 timotimo i'm not smart enough to remember this bot
09:02 samcv ^
09:02 samcv everybody but Zoffix :P
09:03 samcv SourceBaby, Str, "chrs"
09:03 samcv SourceBaby, Str, ".chrs"
09:03 timotimo nqp::strtocodes(nqp::unbox_s(self), nqp::const::NORMALIZE_NFC, nqp::create(NFC))
09:10 samcv sub chrs has so many ternary's
09:10 samcv 3 in a chain. i wonder what the highest number in rakudo is
09:11 timotimo we could probably find out by instrumenting DrForr's Perl6::Parser
09:16 samcv i'm so confused reading this
09:17 timotimo it's not so bad
09:18 timotimo if it's an int, put its chr into the result string, if not, try to numify
09:18 samcv no i get that part but trying to read the trinary
09:18 timotimo at least it's indented %)
09:18 samcv cause it has !! and then !! right after
09:18 samcv yeah
09:18 timotimo be glad it's not php code :P
09:19 samcv i don't get the ?? and ?? on 3022 and 3023
09:19 samcv why does the parser parse it as indented
09:19 samcv or does it go until the next !!
09:19 samcv and uh. idk
09:20 timotimo because precedence parser? :)
09:21 samcv ok
09:21 samcv that makes it much easier to read
09:21 samcv was making my head hurt scanning it linearly
09:21 samcv and thinking why it would parse how it parses
09:21 timotimo :D
09:26 samcv ok gonna fix rakudo's code
09:27 samcv timotimo, `while condition { }` is no slower than `code here while condition` right?
09:27 timotimo it could be slower
09:27 samcv or does the closure bring in more slow
09:27 timotimo braces have semantics :)
09:27 samcv but it makes it so bad to read
09:27 timotimo if we're lucky then the optimizer makes both the same
09:27 samcv i could test it
09:27 timotimo definitely don't put a "my" inside these braces if you want it to be inlined
09:27 timotimo aye
09:27 samcv ok what --target should i compare
09:27 samcv yeah ofk
09:27 samcv *ofc
09:28 timotimo the --target=optimize of foo while cond vs while cond { foo }
09:33 samcv timotimo, well won't optimize show differences if optimization changes are made
09:33 samcv even if the same bytecode is made?
09:33 samcv it shows the optimization process somewhat right?
09:34 timotimo no, only the output
09:34 samcv o
09:34 samcv k
09:34 timotimo the perl6 optimizer stage is a QAST to QAST thingie
09:42 samcv yeah they are different
09:43 timotimo they always are :D
09:44 samcv i'll just use nqp::while i guess
09:45 samcv basically the same and saves a few bytes
09:45 samcv 3 bytes in the output=optimize lol
09:45 timotimo fair enough :)
09:46 samcv the other ones had 869 vs 800 lines extra lines
09:46 samcv do you think we could use more optimizer work?
09:46 samcv i mean as far as making perl 6 faster. compared to other things
09:47 dogbert17_ samcv: have you seen this https://perl6.party/post/Perl-6-S---Substitution-Operator
09:47 timotimo we could
09:48 samcv yeah  ithink dogbert17_
09:48 dogbert17_ I saw your comment here https://irclog.perlgeek.de/perl6/2017-03-23#i_14309800
09:53 samcv yeah dogbert17_ but i want methods tho :(
09:53 samcv also why does .match make more code than ~~ m/blah/
09:53 samcv err compiled
09:53 timotimo because m/blah/ isn't supposed to be used with ~~
09:53 samcv docs say ~~ m/blah/ sets left hand side as $_ then calls .match on it
09:54 timotimo er, i guess you can do that
09:54 samcv but it must not being doing that
09:54 samcv if it produces such different code
09:54 timotimo can you paste both outputs you're looking at?
09:54 timotimo and maybe also the inputs?
09:55 samcv this was a week or two ago. will do when i finish whatever i am doing now
09:55 samcv oh timotimo i know why the ?? !! were confusing. the placing of parenthesis was horrible
09:56 samcv didn't show the inner ?? !! was in parenthesis easily at all since there were so many other parens in that area
09:56 timotimo oh, ok
09:57 timotimo i'm going to lose my mind here
09:57 samcv kk
10:13 brrt joined #moarvm
10:19 timotimo i was about to write a blacklist for "structs that start with MVM, but aren't valid MVMObjects"
10:19 timotimo but it looks like i want a whitelist instead %)
10:21 samcv timotimo, how do i fix this Type check failed in binding to 'listy'; expected Any but got BOOTIntArray (?)
10:21 samcv my variable is \listy `sub chrs (\listy) { }`
10:21 jnthn Mu
10:21 samcv how can i fix this
10:21 timotimo yeah, Mu \listy
10:21 samcv kk
10:21 timotimo every time you get types from nqp, you'll want to use Mu, because nqp stuff isn't part of perl6's type hierarchy
10:21 samcv i thought \listy already disabled that stuff but thx
10:21 timotimo except Mu is "deep" enough that it works out
10:22 Zoffix m: ''.chrs
10:22 yoleaux2 09:06Z <lizmat> Zoffix: looking at your approach, but perhaps reverting https://github.com/rakudo/rakudo/commit/362f674 and adding redo support there would be a better (and ultimately faster) approach
10:22 camelia rakudo-moar 43e090: ( no output )
10:22 Zoffix huh
10:22 Zoffix s: Str, "chrs", \()
10:22 SourceBaby Zoffix, Something's wrong: ␤ERR: Could not find candidate that can do \()␤  in sub sourcery at /home/zoffix/services/lib/CoreHackers-Sourcery/lib/CoreHackers/Sourcery.pm6 (CoreHackers::Sourcery) line 29␤  in block <unit> at -e line 6␤␤
10:22 Zoffix s: Str, "chrs"
10:22 SourceBaby Zoffix, Sauce is at https://github.com/rakudo/rakudo/blob/43e0902/src/core/Cool.pm#L122
10:22 Zoffix Ah
10:23 Zoffix For a second I thought it was an alternate version of .chars
10:23 Zoffix s: "", "chrs", \()
10:23 Zoffix s: "", "chrs", \()
10:23 SourceBaby Zoffix, Sauce is at https://github.com/rakudo/rakudo/blob/43e0902/src/core/Cool.pm#L122
10:23 Zoffix ^ the Str fails, because the candidate is Cool:D and Str isn't a :D
10:23 timotimo ah, i had to give it a Str:D on the first one
10:23 timotimo yeah
10:23 timotimo now i get it :)
10:23 samcv i think imma give up on nqpizing this
10:24 samcv being a waste of my time atm
10:24 samcv just gonna keep it perl 6
10:25 samcv gonna just convert the stuff i had always as nqp to perl 6
10:25 brrt but nqp is so cool :-o
10:25 timotimo it can be :)
10:25 timotimo it can also drive you up the wall :)
10:26 samcv lol brrt
10:26 Geth ¦ MoarVM/master: 6 commits pushed by (Daniel Green)++, (Jonathan Worthington)++
10:26 Geth ¦ MoarVM/master: 53601c823f | Shorten the nursery when creating large bigints
10:26 Geth ¦ MoarVM/master: b01fa313c7 | Uncomment the added code
10:26 Geth ¦ MoarVM/master: dd71aa5f38 | Adjust proportionally to the size of the bigint
10:26 Geth ¦ MoarVM/master: ce4495b7bd | Use more accurate check of whether we can adjust
10:26 Geth ¦ MoarVM/master: ea45f6077d | Adjustment nursery everywhere that needs it
10:26 Geth ¦ MoarVM/master: 63430ac0d7 | Merge pull request #551 from MasterDuke17/decrease_nursery_alloc_limit_when_creating_large_bigints
10:26 Geth ¦ MoarVM/master: review: https://github.com/MoarVM/MoarVM/compare/1e2a7b90cd...63430ac0d7
10:31 samcv hmm breaking at MVM_panic doesn't catch "should eventually be unreachable"
10:33 samcv well it's happening in the unicode database. did not expect that. but i really had no clue why it did what it did
10:33 timotimo can you set a breakpoint on the line in the unicode db instead?
10:33 samcv well i did that's how i know where it went
10:33 samcv got a backtrace
10:34 samcv if (codepoint < 0) {
10:34 samcv MVM_exception_throw_adhoc(tc, "should eventually be unreachable");
10:34 samcv uh oh
10:34 samcv hehe in MVM_codepoint_to_row_index
10:34 samcv that.. is really weird
10:34 samcv should be caught earlier and it must be checking synthetics or something
10:35 samcv yeah it dies in MVM_unicode_get_property_int. super weird
10:35 samcv i guess i can see how this could happen but it should not have happened because of protections.
10:39 timotimo okay, just use "up" until you see a function that should check for < 0 and doesn't?
10:39 samcv well need to figure out where it should go. i mean maybe should just change the error message
10:39 samcv cause if this happens it means something in moar should not have requested it
10:40 samcv but gives no clue as wtf the problem is
10:40 timotimo of course
10:40 timotimo you've got that from concat.t?
10:41 samcv i guess this line did not properly guard
10:41 samcv if ((last_a != crlf && last_a < 0) || (first_b != crlf && first_b < 0))
10:41 samcv yeah timotimo
10:41 samcv tis happening from MVM_nfg_is_concat_stable when it checks the property of cp's at the very end of the function
10:44 timotimo i ... can't breakpoint that line?!
10:45 samcv uh which one
10:45 ZofBot joined #moarvm
10:45 timotimo the one that panics
10:46 timotimo in fact, gdb doesn't think unicode_db.c exists
10:46 samcv yeah it desn't
10:46 samcv you can't break it
10:47 samcv look in unicode.c file. `make` concats a counple files togather
10:47 timotimo oh
10:47 timotimo d'oh :)
10:47 samcv also i need to sleep
10:47 samcv very soon
10:48 timotimo OK, so we could if (last_a < 0) last_a = MVM_nfg_get_base_char(tc, last_a); if (last_b < 0) ... ...
10:48 samcv oh i ddin't break it. it was MasterDuke
10:49 samcv hehe
10:49 samcv if i remove the crlf checks then it is fine
10:50 timotimo oh, so maybe crlf is exactly what it checks there
10:51 samcv yeah.
10:51 samcv it only has the bug with crlf lines
10:51 jnthn Hmm, https://rt.perl.org/Ticket/Display.html?id=130951 shows up mis-sharing of an SC, but I don't see how on earth that can happen...
10:51 samcv well timotimo it's just the if condition
10:51 samcv i didn't remove the MVM_nfg_crlf_grapheme(tc) part
10:51 samcv so it still stores the value, just isn't part of the if condition
10:52 samcv oh wait. nvmt i get what you mean
10:52 samcv yeah it's checking the property of the crlf and it's not having any fun
10:52 timotimo yup yup
10:56 samcv ok fixed. yay
10:56 timotimo cool
10:56 samcv gonna spectest then should be good
10:56 samcv then will add the new tests to roast
10:57 samcv though the roast tests may come tomorrow or something. brb when spectest completes
11:09 samcv ok spectest is a-ok
11:16 timotimo okay. enough gdb-python-madness for today
11:18 timotimo or maybe i found a way out of this rabbit-hole
11:18 timotimo (well, through it, actually)
11:19 samcv :)
11:20 Geth ¦ MoarVM: a00278e611 | (Samantha McVey)++ | src/strings/nfg.c
11:20 Geth ¦ MoarVM: Fix exception concat’ing some strings with \r\n line endings
11:20 Geth ¦ MoarVM:
11:20 Geth ¦ MoarVM: The bug was introduced in f2731339, and is resolved by this commit.
11:20 Geth ¦ MoarVM: Bug would cause “should eventually be unreachable” message upon MVM
11:20 Geth ¦ MoarVM: throwing an adhoc exception from inside unicode_db.c
11:20 Geth ¦ MoarVM:
11:21 Geth ¦ MoarVM: This was caused by checking property values for codepoints under 0
11:21 Geth ¦ MoarVM: <…commit message has 5 more lines…>
11:21 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/a00278e611
11:21 dogbert17_ jnthn: are you doing Perl6 work today?
11:21 jnthn dogbert17_: Yeah
11:22 dogbert17_ perhaps I can help a tiny bit if you're hunting SEGV's :)
11:23 * dogbert17_ but first a quick lunch ...
11:23 jnthn Well, think I'll look at hyper/race some too
11:23 jnthn But wanted to look into the EVAL SEGV
11:24 dogbert17_ I can do some gdb/valgrind stuff when I get back, might save you some time perhaps
11:43 timotimo it's spectacularly difficult to just get an ipython session that has the gdb module loaded to work
12:18 dogbert17_ back, I when I run the 130951 example it bugs out spectacularly e.g. 'MoarVM panic: Internal error: invalid thread ID -1343260952 in GC work pass'
12:19 timotimo you mean #130951
12:19 synopsebot6 Link:  https://rt.perl.org/rt3/Public/Bug/Display.html?id=130951
12:19 timotimo synopsebot6: ^5
12:20 jnthn dogbert17_: Did you grab the latest Rakudo fix I pushed for that? :)
12:21 dogbert17_ hmm, no, does that mean this is a problem of the past?
12:22 dogbert17_ will give it a once over anyway :)
12:25 jnthn Yeah, I hope it is :)
12:37 dogbert17_ jnthn: I can't get it to crash either :)
18:33 domidumont joined #moarvm
19:08 FROGGS joined #moarvm
20:01 dogbert17 jnthn: any idea why the last test in this file still flaps? https://github.com/perl6/roast/blob/master/S17-supply/supplier-preserving.t
20:16 jnthn dogbert17: No, that's pretty strange
20:16 jnthn I haven't seen it do so, though haven't ran the test in a loop to provoke it either
20:18 dogbert17 I only have to run it a few times before it fails with: # Failed test 'Close called as expected' # at t/spec/S17-supply/supplier-preserving.t line 32  # expected: 'xxxxxxxxxx' # got: 'xxxxxxxxx'
20:18 jnthn Odd
20:18 jnthn I wonder where the race is
20:19 dogbert17 you removed one a few weeks ago
20:19 dogbert17 when the Channel was introduced
20:19 jnthn Right
20:20 jnthn Thus my confusion; I don't see a race in there
20:20 dogbert17 ohh, I see a a bug ... hold on
20:20 jnthn So it must be some other kind of bug
20:20 jnthn Unless somehow the .close isn't completed before the react hands back control.
20:20 dogbert17 https://gist.github.com/dogbert17/96bd5e34a7d3f5e1550c14e5f6179b81
20:21 jnthn What on earth? o.O
20:21 dogbert17 hmm, forgot --debug, will fix
20:21 timotimo well, we havent put a cubesat up into space that has p6 on it :)
20:22 jnthn Not sure if that'd be a race cause, but that looks very busted
20:22 timotimo so definitely on earth
20:22 dogbert17 Bigint something, wasn't there a PR about that?
20:23 timotimo pr about properly barking when a bigint gets unboxed into an unsigned int register
20:24 dogbert17 ok reload the gist
20:27 dogbert17 https://github.com/MoarVM/MoarVM/pull/551 ?
20:32 * dogbert17 is still running on a 32 bit vm
20:45 dogbert17 the invalid reads appear regardless of which p6 program I run
21:55 MasterDuke dogbert17: even `-e ''`?
21:58 MasterDuke the first line the error in your gist mentions is bigintops.c:13, which is just `int adjustment = MIN(used, 32768) & ~0x7;`
22:05 MasterDuke i can't reproduce the error, but i'm on a 64-bit machine
22:08 dogbert17 MasterDuke: the problems appear on the minimal program as well
22:08 dogbert17 do you see anything in your code which might be bust on 32 bit?
22:09 MasterDuke nothing obvious to me (but that's not saying much)
22:09 MasterDuke timotimo: do you have any ideas?
22:10 MasterDuke dogbert17: see anything yourself?
22:13 dogbert17 recompiling with no-optimize atm, when I set a breakpoint at bigintops.c:13 it stopped at a totally different line, or so it looked anyway
22:14 timotimo i have a maybe-idea
22:15 dogbert17 with optimization off it points to MVM_bigint_radix (bigintops.c:1072)
22:15 timotimo since i'm the one who wrote smallbigint :)
22:15 dogbert17 timotimo to the rescue
22:15 timotimo yeah, EZPZ
22:16 timotimo adjust_nursery is called on the bigint without checking that perhaps it's actually a smallint
22:16 timotimo would it be okay if i changed adjust_nursery to take an mp_int instead of the int size?
22:16 timotimo then it could do the check itself
22:17 MasterDuke you'd know better than i
22:18 timotimo ok, sure
22:18 dogbert17 I can test :)
22:19 timotimo laptop is currently used for something else so cant code
22:20 dogbert17 do it like Zoffix, code on your phone :)
22:22 MasterDuke i tried to make sure i only did it when it was actually big, e.g., in `if MVM_BIGINT_IS_BIG` branches, but i see that `store_bigint_result` for example sometimes uses ->u.smallint
22:24 timotimo s
22:24 timotimo er
22:25 dogbert17 store_bigint_result is always present in the stack traces I get
22:25 timotimo sorry, what?
22:25 timotimo BIGINT_IS_BIG is something else
22:25 timotimo oh
22:26 timotimo no, i meant MVM_bigint_is_big
22:26 timotimo #define MVM_BIGINT_IS_BIG(body) ((body)->u.smallint.flag != 0xFFFFFFFF)
22:26 timotimo that's the interesting one
22:29 timotimo anyway, it's not enough to take an mp_int, it has to take a P6BigintBody
22:29 timotimo P6bigintBody*
22:32 timotimo MasterDuke: got an idea if it makes sense to also adjust_nursery based on the bbase in bigint_radix?
22:32 timotimo i'll build my patch and see if it's good
22:32 benchable6 joined #moarvm
22:32 committable6 joined #moarvm
22:32 evalable6 joined #moarvm
22:32 bisectable6 joined #moarvm
22:32 unicodable6 joined #moarvm
22:32 statisfiable6 joined #moarvm
22:35 timotimo oh, interesting
22:35 timotimo an invalid read inside of pow
22:36 committable6 joined #moarvm
22:36 bisectable6 joined #moarvm
22:36 benchable6 joined #moarvm
22:36 unicodable6 joined #moarvm
22:36 evalable6 joined #moarvm
22:36 statisfiable6 joined #moarvm
22:36 timotimo right, use before init
22:36 AlexDaniel joined #moarvm
22:36 AlexDaniel *knock knock*
22:37 AlexDaniel hello :)
22:37 timotimo greetings
22:37 timotimo how are you today?
22:37 bloatable6 joined #moarvm
22:37 AlexDaniel great! Welcome our new bot!
22:37 timotimo yay! hello bloatable6!
22:37 AlexDaniel timotimo++ for the idea
22:37 MasterDuke timotimo: wouldn't the bbase pretty much always be rather small?
22:37 AlexDaniel bloatable6: HEAD
22:37 timotimo MasterDuke: i have no idea :)
22:37 bloatable6 AlexDaniel, https://gist.github.com/3b6b9ee10b9d28fd38058055c5bd2974
22:37 AlexDaniel bloatable6: 2017.01,HEAD
22:37 bloatable6 AlexDaniel, https://gist.github.com/74b5556d3b03ba960c1d4594ac28e575
22:37 AlexDaniel bloatable6: releases
22:37 timotimo what does base store?
22:38 bloatable6 AlexDaniel, https://gist.github.com/11ee3f696261c7f9a2e4f499b549528c
22:38 timotimo ooooh you did end up making the "releases" thing!
22:38 AlexDaniel so it is basically running this https://github.com/google/bloaty on libmoar.so files
22:38 AlexDaniel timotimo: didn't really do it, got it for free because… whateverable!
22:38 AlexDaniel note that it accepts moarvm shas, not rakudo shas
22:39 timotimo <3
22:39 timotimo rakudo also has an .o file that we could inspect, but i see absolutely no use for that :)
22:39 timotimo (it's the containers.o and the ops.o that have their source in src/vm/moar/ops or something)
22:40 AlexDaniel oh yeah, and bloatable is not well-tested yet :) I just did it this night
22:40 AlexDaniel so bug reports are welcome!
22:41 timotimo <3
22:41 Geth ¦ MoarVM: c4de954b70 | (Timo Paulssen)++ | src/math/bigintops.c
22:41 Geth ¦ MoarVM: teach adjust_nursery about smallbigints
22:41 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/c4de954b70
22:41 timotimo dogbert17: feel free to test things ^
22:42 dogbert17 so your fix is on master?
22:42 timotimo yup
22:43 dogbert17 gbert@dogbert-VirtualBox ~/repos/rakudo/nqp/MoarVM $ git checkout master
22:43 dogbert17 error: The following untracked working tree files would be overwritten by checkout:
22:43 dogbert17 3rdparty/libtommath/LICENSE
22:43 dogbert17 why is it complaining about libtommath?
22:44 * dogbert17 removes those files
22:45 dogbert17 smallbigint, is there suck a type?
22:45 timotimo kill the full 3rdparty/libtommath folder
22:45 timotimo yup, it's when we store a 32bit integer inside the lower bits of the mp_int pointer
22:46 timotimo quite a worthwhile optimization
22:46 dogbert17 and .... your fix works, timotimo++
22:47 dogbert17 hopefully it works on 64 bit as well
22:50 timotimo ought to
22:50 timotimo give me some code that makes it asplode?
22:51 dogbert17 sure, ./perl6-valgrind-m -e ''
22:51 dogbert17 super complex program
22:51 timotimo heh.
22:51 MasterDuke good for me. dogbert17++, timotimo++
22:51 dogbert17 it actually failed before your fix
22:51 timotimo that gives no output at all
22:52 timotimo i mean
22:52 timotimo it directly goes from "hello i'm memcheck" to "heap summary"
22:52 AlexDaniel bloatable6: wiki
22:52 bloatable6 AlexDaniel, https://github.com/perl6/whateverable/wiki/Bloatable
22:53 AlexDaniel timotimo: perhaps you might want to edit this page :)
22:53 dogbert17 yes, because you have fixed the bug
22:53 timotimo AlexDaniel: what about it should i edit?
22:53 timotimo it seems correct to me?
22:54 AlexDaniel timotimo: I don't know! I thought you'd know!
22:54 timotimo ah, it doesn't say anything about how you can supply -d stuff
22:54 AlexDaniel hmmm but you can't? :)
22:54 timotimo oh
22:54 timotimo i wanted to see the source code, but it seems like it isn't pushed yet?
22:55 AlexDaniel timotimo: not yet, but here it is: https://gist.github.com/AlexDaniel/76a4aa8205f854dfaf461f5eb7e2a987
22:56 AlexDaniel timotimo: so you want -d option to be configurable?
22:56 timotimo i think i'm about to go to bed or something
22:56 timotimo eyup
22:57 timotimo bloaty tells you what it'll accept from --list-sources (oslt) and it'll allow multiple comma-separated ones
22:57 AlexDaniel timotimo: what would be the syntax? bloatable: d=armembers HEAD~100,HEAD
22:57 timotimo maybe that, maybe -d armembers
22:57 timotimo though d= would be more in line with other whateverables
22:57 timotimo so that's favorable
22:57 AlexDaniel I can do both, don't think it's a problem
22:58 timotimo and perhaps pass on the output from --list-sources if you supply something bloaty doesn't understand
22:58 AlexDaniel right, right
22:58 AlexDaniel anything else? :)
22:58 timotimo other than that i have no further suggestions
22:58 timotimo ...for now :P
22:58 AlexDaniel ah-ha, okay :)
22:59 timotimo thanks again
22:59 timotimo whateverable is a really cool system
23:00 AlexDaniel yup, I love it. Now that I have a bunch of moarvm builds, maybe it will be possible to bisect moarvm too somehow, hmm :)
23:00 timotimo there's just a little problem :P
23:01 timotimo remember these .o files i mentioned above?
23:01 AlexDaniel yees?
23:02 timotimo https://github.com/MoarVM/MoarVM/issues/293
23:02 timotimo took me a lot of scrolling to find this
23:03 AlexDaniel timotimo: well, that doesn't sound very encouraging :)
23:04 timotimo it can give mysterious errors when mixing different versions of moar-at-rakudo-build-time and moar-at-rakudo-run-time
23:04 timotimo like "random opcode needs an argument of type something"

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