00:45
tadzik joined
|
|||
ShimmerFairy | japhb++ for suggesting a benchmark. I did one and got to fix the slight speed decrease that resulted in my branch :) (the time ~only~ went up .2s for the nqp benchmark, but I brought it down to basically nothing anyway) | 01:33 | |
timotimo | cool, i'd like to see that dif | 01:34 | |
diff | |||
ShimmerFairy | timotimo: did you see the PR itself? Or do you want that gist I mentioned? :) | ||
timotimo | i saw the PR, i think | 01:35 | |
what gist did you mention? | |||
ShimmerFairy | I put a new comment on the PR, with a table of timing averages (the gist was just an offer for the whole file I kept track of times in, for more detail) | 01:36 | |
timotimo | ah, ok | ||
ShimmerFairy | I wish I knew more about statistics; I can guess the new +0.005s difference is statistically insignificant, but I'm not sure if P6's +0.073s is statistically insignificant too :) | 01:39 | |
timotimo | there are pretty long lines in that diff :S | 01:41 | |
ShimmerFairy | timotimo: yeah, that's why I split the conditional into a gcNd variable in the first place :) The indentation is what emacs' c++-mode does by default, I'm not sure what MVM prefers here | ||
timotimo | (and the // comments are discouraged in the moarvm codebase; though i think we have some of those in other places in the codebase and it at least doesn't break jnthn's build) | 01:45 | |
ShimmerFairy | timotimo: I tried -std=c90 on the MVM code and it broke on the first .o file, // comments being among the issues (if not _the_ issue) | ||
timotimo | right | ||
MSVC </3 | |||
ShimmerFairy | So I figured // wasn't actually an issue. (Though I'll convert them to multi-line comments for style reasons, if desired) | ||
timotimo: I did read that MSVC 2013 supports mixed declarations (and a couple other C99 things), so maybe there's hope? :) | |||
timotimo | wow, how long until that comes out? | 01:46 | |
ShimmerFairy | Not sure, I thought the '2013' meant it was already out O_o | 01:47 | |
timotimo | who knows :) | ||
ShimmerFairy | timotimo: here's a source :) msdn.microsoft.com/en-us/library/h...20%29.aspx | 01:53 | |
Might be worth pointing out to jnthn, the only issue I can foresee is the requirement for a relatively recent MSVC. (I quickly found a download page for MSVC 2013) | 01:55 | ||
timotimo | mhh. fortunately, hoelzro also recently made the unicode db parsable by newer MSVC | 01:56 | |
ShimmerFairy | oh, I wasn't aware there was forward-compatible(?) issues concerning MSVC. | 01:57 | |
that reminds me: if I at some point need to change something in ucd2c.pl, there's no guarantee I won't end up wasting my time on a P6 version of the script I can more easily understand :P | 02:01 | ||
(though I wouldn't hold off the actual change if I can put it in the P5 version, of course āŗ) | |||
timotimo | the newer MSVC failed to parse the unicode_db.c (or what it's called) file because it was too complex | 02:03 | |
also, hoelzro put in a binary search for block membership or something along those lines | |||
ShimmerFairy | Ah, wonder what it tripped up on specifically (there's a git log for that, I'm sure). | 02:04 | |
timotimo | too deeply nested struct perhaps? | 02:05 | |
it's way late over here, i'll soon go looking for some sleeps | |||
ShimmerFairy | > A large number of if/else chains breaks the VS 2015 compiler. | ||
timotimo: have a good rest :) I'm curious if strings/unicode.c is outdated, since it seems similar to unicode_db.c, but I can ask others about it later. | 02:07 | ||
TEttinger | ShimmerFairy: yeah I hit that error with VS 2015 | 02:15 | |
2013 worked fine | |||
ShimmerFairy | Interesting, I wonder how they broke if/else chains (I imagine they broke large chains while improving something else, and didn't have a test case for something you'd normally not write) | 02:16 | |
TEttinger | 2015 uses a new compiler I think, different codebase (Roslyn allows the compiler to be used more at runtime, which is very handy for an IDE) | 02:17 | |
but I don't know if that also applies to C/C++ | |||
ShimmerFairy | Looking at the diff to see the if/else chain, my mind says "write a lambda to abstract this and then loop through all the possible sets of arguments you'd pass to the lambda", but that's a very C++11 way of thinking :P | 02:18 | |
TEttinger | 2015 has decent C++11 support actually I think | ||
not great | |||
ShimmerFairy | the unicode_blocks[] array that was added is pretty much the array I'd set up for the arguments I'd send to a lambda :) | 02:19 | |
TEttinger: I tend to like using the latest and greatest features. I'd be making use of C++14 if portage would unmask gcc 4.9 or higher :) | 02:21 | ||
TEttinger | you're in the channel for a brand new VM for an as-yet-not-finally-released version of an incredibly feature-heavy language, I would imagine you're not the only onme who likes latest and greatest :) | 02:22 | |
ShimmerFairy | I'd be interested in seeing how C would do lambdas, if it ever felt the need to. | ||
TEttinger: it's a good thing MVM isn't my project though; I would've started using C11/C14 and said "get a better compiler" to those without :P (well, I wouldn't be a jerk about it, but undoubtedly if I learned C for my own uses I'd go for the newest versions) | 02:24 | ||
03:47
lizmat joined
|
|||
hoelzro | TEttinger: did you end up getting MoarVM to complete on VS2015? | 04:42 | |
TEttinger | since 2013 worked I didn't try 2015 again | 04:43 | |
it was a compiler stack overflow error in that same unicode file | |||
hoelzro | we managed to fix that | 04:45 | |
but after I got MoarVM, I wasn't able to build NQP, and I was wondering if others had seen that | 04:46 | ||
ShimmerFairy | hoelzro: do you know if unicode.c is outdated, perchance? Hasn't been touched since 2012 according to git log, and at a glance it's supposed to do the same thing as unicode_db.c | 04:47 | |
hoelzro | ShimmerFairy: IIRC, unicode.c is updated as part of the Moar build process | 04:48 | |
I think that it's the result of concatenating unicode_db.c and some other file, I forget which | |||
ShimmerFairy | Huh. Weird that it has a git history then | 04:50 | |
hoelzro | yeah, I felt the same =/ | 04:52 | |
I think it may have been committed by mistake? | |||
07:06
brrt joined
07:16
rurban_ joined
|
|||
brrt | \o | 07:22 | |
timotimo: ehm.... why not emit a repr id check? | 07:23 | ||
oh by the way, i was *wrong* about the tiler i an important way | 07:25 | ||
it does require a separate selection step, implemented in preorder traversal | |||
which requires a separate table | 07:26 | ||
luckily, not very conceptually difficult | |||
hmm, weird | 09:29 | ||
09:45
FROGGS_ joined
|
|||
dalek | arVM/even-moar-jit: 5af12ba | brrt++ | src/jit/ (6 files): Comments and cleanup |
09:50 | |
arVM/even-moar-jit: 80c4400 | brrt++ | / (2 files): Split optimum rule table from tiler state table Optimum rules for child nodes depend on rule nr for parent and cannot be derived from rulesets alone, because different rules in rulesets may refer to different terminals (and as such need to pick different child rules to implement). Thus, the child rules need to be 'pushed down' into the tree. This commit fixes only tiler table generation, not yet tile rule propagation. |
10:07 | ||
brrt lunch & | |||
10:32
dalek joined
|
|||
timotimo | brrt, i could probably emit a repr id check, but then i'd have to put a function call in the middle of a conditional :| | 11:14 | |
the function call to die, that i | 11:16 | ||
is* | |||
alternatively invent a deopt point | |||
ShimmerFairy | I vaguely recall spesh or something having the ability to back out of optimizing, or something. | 11:17 | |
dalek | arVM/optimize: d3c7dfa | (Jimmy Zhuo)++ | / (5 files): add MVM_unicode_cname_to_property_value_code and use it, which avoids some string encoding and decoding at startup |
11:36 | |
JimmyZ | jnthn: ^^ any object to merge it into master? | ||
ShimmerFairy | JimmyZ: the _cname_ function looks interesting to me; I have a pull request whose code can probably lighten up if I used a c-string instead of generating an MVM-specific string type :) | 11:41 | |
jnthn | JimmyZ: Looks OK to me at a first glance | ||
JimmyZ | ShimmerFairy: I saw your pull request and I found the addtional encoding/decoding :P | 11:43 | |
timotimo | ShimmerFairy: yeah, i could add a "guard for correct repr id" op and that'd allow us to deopt properly | 11:44 | |
dalek | arVM: d3c7dfa | (Jimmy Zhuo)++ | / (5 files): add MVM_unicode_cname_to_property_value_code and use it, which avoids some string encoding and decoding at startup |
11:45 | |
timotimo | jnthn: do you think it'd make sense to add repr id to the logging, guarding and deopting mechanism? | ||
jnthn | timotimo: Only if it's going to save us a lot | 11:46 | |
timotimo | unlikely | ||
jnthn | Or unless it can be done with very few changes | ||
timotimo | i'd introduce a fact and a guard op | ||
ShimmerFairy | JimmyZ: cool :) I don't know if I should merge master into my branch so I can use cname and thus set things up for a second merge, or if it'd be better to let that be corrected after the pull request has been merged. | 11:47 | |
timotimo | it might help us devirtualize reprops if the type keeps changing, but the repr is constant | 11:48 | |
jnthn | timotimo: We have to be real careful there though | ||
timotimo: Because many repr ops (like those into arrays) depend on REPR_data (e.g. for array elem size) | |||
timotimo: Which is part of the type | |||
timotimo | ah | ||
fair enough | |||
JimmyZ | if nobody object it ,I could merge it | 11:52 | |
ShimmerFairy: ^^ :) | 11:53 | ||
or I just merge it, nd if someone don't like it, and then revert it. | 11:54 | ||
ShimmerFairy | Once it gets merged, I can work on finalizing the changes I made to nqp and rakudo as well :) | ||
JimmyZ | ShimmerFairy: the comment of bigintops.c about Unicode 6.0.0, should a bit move down? | 11:57 | |
ShimmerFairy | oh huh, I guess I did move the comment down in one of the files, to be inside the conditional it matters in | 11:59 | |
Yes, it would make more sense inside the conditional where it matters, but it would also make for a really large conditional for just one line of code :) | 12:00 | ||
(I don't mind if my comments are cut down though, I have a habit of being quite descriptive in my comments.) | 12:01 | ||
jnthn | ShimmerFairy: Can you point at the bit of Perl 6 design that these changes are intended to handle (I'm sure it's there, just want to have something to compare code against) | ||
ShimmerFairy | sure, I have a test file for the stuff I'm trying to implement | 12:02 | |
jnthn: github.com/perl6/roast/blob/master.../numbers.t and design.perl6.org/S15.html#Numbers | 12:03 | ||
the MoarVM changes are because I pretty quickly found that radix_I led down to the VM, and I figured changes there would be easier than changing how nqp and Perl6 interacted with nqp::radix[_I] | 12:04 | ||
jnthn | ShimmerFairy: Yes, agree it's the right place to fix it | 12:05 | |
Oh, after fastpath the speed drop is negligible | 12:06 | ||
And yeah, if it can be further reduced that's great | 12:07 | ||
ShimmerFairy | jnthn: I did commit the speed improvement to the uninum branch, if you didn't spot it. | ||
jnthn | ShimmerFairy: I did | 12:08 | |
JimmyZ | so I can merge it. and I didn't see anything slowdown | ||
jnthn | github.com/ShimmerFairy/MoarVM/com...6f2eedR366 would look nicer if you didn't indent things to match the opening arg | ||
(Which we don't do anywhere else in MoarVM because the result is, well, this. :)) | |||
Just one extra level of indent beyond what the loop body would have is enough | 12:09 | ||
Or even better | |||
Stick the thing in the condition in a static function | |||
With a nice name | |||
ShimmerFairy | jnthn: yes, I would agree (that's what c-mode does by default for whatever reason). Since I wasn't sure how to indent myself, I figured keeping it as my tab key did, to be safe. | ||
I actually usually would prefer an indentation close to the opening paren, but in this case I'm definitely not much of a fan for it :) | 12:10 | ||
jnthn | (C compilers are really quite good these days at making inlining decisions.) | ||
(And if you don't trust it there's MVM_STATIC_INLINE to force it to happen) | |||
Anyway, those small details aside the patch looks good to me. | 12:11 | ||
(And I don't mind the PR getting merged and then a later clean-up PR coming if that's easier) | |||
ShimmerFairy | I think a static function would be nice. In this case, it seems like a nice analogy to the "inner sub" idea in P6 (or my personal usage of lambdas in C++11, incidentally based on P6's inner subs āŗ) | 12:12 | |
dalek | arVM: ce890e6 | paultcochrane++ | src/6model/reprs/MVMArray.c: Fully initialise `spec` before setting and returning it The structure `spec` was only partially set by the code in get_elem_storage_spec() and thus parts of it could be used uninitialised. 39abc80 | ShimmerFairy++ | src/math/bigintops.c: Add Unicode support to MVM_bigint_radix This means taking any Nd character and any alphabet with letters that have a true Hex_Digit property. Nd characters are guaranteed to be in c852917 | (Jimmy Zhuo)++ | src/ (3 files): some small cleanup |
||
12:13
dalek joined
|
|||
ShimmerFairy | jnthn: I'm just now getting used to being comfortable with merges (since usually I would just wait to commit and/or rebase things instead), so I'm not sure if a master->uninum merge and then a uninum<-master merge in order for me to do the switch to _cname_ is considered ugly or not. | 12:13 | |
er, the branch names weren't supposed to flip around in the <- one :) | 12:14 | ||
jnthn | ShimmerFairy: I think if I hit "merge pull request" we'll just get the 3 commits and a merge commit, which is fine | 12:16 | |
jnthn | There we go | ||
12:17
dalek joined
|
|||
ShimmerFairy | jnthn: yeah, my understanding of "branches are just pointers" led me to infer that I won't be causing big amounts of extra data to go around for the sake of branches :) | 12:17 | |
jnthn | ShimmerFairy: Yeah, git has a really nice branching model :) | 12:18 | |
jnthn did a lot of git teaching for a couple of years, so got to know it quite well :) | |||
ShimmerFairy | .oO("Oh no, what if I end up sending a branch to the server?!" "You just sent a pointer. Congratulations.") |
||
arVM: 63c89a0 | (Jimmy Zhuo)++ | src/ (2 files): Merge branch 'master' of github.com/MoarVM/MoarVM |
|||
ShimmerFairy | It feels weird at first when you learn that those branches you see and visualize are actually just markers on a collection of commits that are otherwise only organized by their parents, but it does work out quite nicely I find. | ||
12:23
travis-ci joined
|
|||
travis-ci | MoarVM build failed. Jimmy Zhuo 'Merge pull request #213 from paultcochrane/pr/smoke-me/init-uninit-vars | 12:23 | |
travis-ci.org/MoarVM/MoarVM/builds/75723762 github.com/MoarVM/MoarVM/compare/d...4bfef078f9 | |||
12:23
travis-ci left
|
|||
jnthn | JimmyZ: Umm... ^^ looks unhappy | 12:25 | |
timotimo | yeah, undeclared names inside unicode.c | 12:31 | |
12:33
travis-ci joined
|
|||
travis-ci | MoarVM build failed. Jonathan Worthington 'Merge pull request #233 from ShimmerFairy/uninum | 12:33 | |
travis-ci.org/MoarVM/MoarVM/builds/75724004 github.com/MoarVM/MoarVM/compare/e...1cafd9f737 | |||
12:33
travis-ci left
|
|||
JimmyZ | travis-ci is slow .... | 12:33 | |
timotimo | :| | 12:34 | |
ShimmerFairy | oh, it's a result of the ptc merge, not my commit, it seems (since my PR tested just fine before merging) | 12:36 | |
dalek | arVM: 4ae29a6 | (Bob Kuo)++ | / (10 files): Fix a few items found by warnings * Make some casts explicit * Fixup printf formats dd5f168 | (Francois Perrad)++ | src/gc/collect.c: remove hard tab |
12:37 | |
12:38
dalek joined
|
|||
ShimmerFairy | is it just me, or does dalek have a low tolerance for flooding in here? | 12:38 | |
12:46
travis-ci joined
|
|||
travis-ci | MoarVM build passed. Jimmy Zhuo 'Merge branch 'master' of github.com/MoarVM/MoarVM' | 12:46 | |
travis-ci.org/MoarVM/MoarVM/builds/75724188 github.com/MoarVM/MoarVM/compare/c...c89a002114 | |||
12:46
travis-ci left
|
|||
arVM: 7691658 | (Francois Perrad)++ | src/ (4 files): fix indentation change MVM_unicode_name_to_property_value_code to MVM_unicode_cname_to_property_value_code |
|||
12:50
dalek joined
12:58
travis-ci joined
|
|||
travis-ci | MoarVM build passed. Jimmy Zhuo 'Merge branch 'fix_warnings' of github.com/bubaflub/MoarVM into bubaflub-fix_warnings | 12:58 | |
travis-ci.org/MoarVM/MoarVM/builds/75725110 github.com/MoarVM/MoarVM/compare/6...0e22d8419e | |||
12:58
travis-ci left
|
|||
JimmyZ | m: m: my \SCALE = 3; my \FANOUT = 2; sub divide-and-conquer($n, $depth) { say "$depth: $n" if 0; $depth <= 0 ?? $n !! [+] await do for ^FANOUT { start { divide-and-conquer($n / FANOUT, $depth - 1) } } }; say divide-and-conquer(1.0, SCALE); | 13:04 | |
camelia | rakudo-moar ab73b0: OUTPUTĀ«Memory allocation failed; could not allocate 656 bytesā¤Ā» | ||
timotimo | JimmyZ: you want div instead of /, no? | 13:13 | |
JimmyZ | m: m: my \SCALE = 3; my \FANOUT = 2; sub divide-and-conquer($n, $depth) { say "$depth: $n" if 0; $depth <= 0 ?? $n !! [+] await do for ^FANOUT { start { divide-and-conquer($n div FANOUT, $depth - 1) } } }; say divide-and-conquer(1.0, SCALE); | 13:14 | |
camelia | rakudo-moar ab73b0: OUTPUTĀ«Cannot call infix:<div>(Rat, Int); none of these signatures match:ā¤ (Int:D \a, Int:D \b)ā¤ (int $a, int $b --> int)ā¤ in sub divide-and-conquer at /tmp/XPknKSEM4k:1ā¤ in block <unit> at /tmp/XPknKSEM4k:1ā¤ā¤Ā» | ||
timotimo | oh, hold on | ||
i thought you were using / for the abort condition | |||
13:53
Peter_R joined
14:14
dalek joined
14:41
dalek joined
15:07
brrt joined
15:10
TEttinger joined
15:14
zakharyas joined
|
|||
brrt | let it be noted that 'shrink the tiler tables' is on the todo list | 15:29 | |
but not very high | 15:31 | ||
:-) not like 'make the damn thing work, already' | |||
timotimo | i can imagine you're a bit annoyed by more and more requirements apparently stepping out into the light | 15:52 | |
arnsholt | brrt: My brain threw up more words after our discussion the other day. Formally, I think the problem you're working on is a kind of tree-to-string transducer | 16:01 | |
brrt | oh, really? the tiler in general, you mean? | 16:02 | |
arnsholt | Yeah, I think so. The input is a tree (our actually a DAG, IIRC?) and the output is a string | ||
brrt | well, it's more like 'hey, you didn't think of that, now did you?' for me, timotimo | ||
yes | |||
i think that's a good way to put it | |||
arnsholt | Which is basically a transducer problem. Have you encountered them before? | 16:03 | |
brrt | i have not | ||
for what it's worth, my theorethical difficulties are mostly over, and i was planning to blag about it :-) | |||
arnsholt | Good to hear! The theory is usually the hardest bit, IME =) | 16:04 | |
Anyways, transducers are a bit niche, but the string-to-string case is a classical technique in my field (computational linguistics) | |||
brrt | yeah, without theory you can just get stuck, unfortunately | 16:05 | |
arnsholt | For regular languages, you process them with a variant of FSAs (called finite state transducers) where each arc (or each node, the formulations are equivalent) also *outputs* a symbol when traversed | 16:06 | |
brrt | is that like syntax directed translation? | ||
arnsholt | It's the formalisation of regex search-replace | ||
Yeah, I think you can see translation as related | |||
So where an FSA defines a language (which is a set), the FST defines a relation (a subset of the cross product of the input and output languages) | 16:07 | ||
arVM/even-moar-jit: 74576ee | brrt++ | / (4 files): Add preorder tile downpropagation step |
16:24 | ||
brrt dinner & | |||
18:14
zakharyas joined
20:26
camelia joined
22:06
TEttinger joined
22:52
Peter_R joined
|