samcv \o/ it works 00:20
Zoffix \o/ 00:21
00:21 geekosaur joined
samcv it's not like perfectly clean. toward the end i find the bad elements which is basically the PropertyValueAliases line 00:21
gc ; C ; Other # Cc | Cf | Cn | Co | Cs
but it has the right number assigned to it. and i then split it into the parts and add those to the array. then at the end i reverse the array so that i make sure the right elements are first 00:22
a little hackish but it works
so i'll take it!
now that that works, i think spectest should be mostly good. since i had all the other ones i think working, and property values now being totally distinct per property 00:23
not totally finished got to get Letter working but L works and C works 00:32
and Letter is correct in one of the data structures just need to get it into the other one.. 00:57
01:31 geekosaur joined 01:52 ilbot3 joined
samcv mad scientist cackle 01:53
now to remove all the extra code which didn't work and leave only the code that actually works 01:54
02:56 MasterDuke joined 04:28 Ven`` joined
Geth MoarVM: samcv++ created pull request #670:
Update Unicode database for Unicode 10
05:21
MoarVM: bea907b4b0 | (Samantha McVey)++ | 4 files
Update Unicode database for Unicode 10

Also make changes to the Unicode database so property values are unique for each property.
05:51
MoarVM: 79654248b0 | (Samantha McVey)++ (committed using GitHub Web editor) | 4 files
Merge pull request #670 from samcv/property-value-2

Update Unicode database for Unicode 10
06:16 brrt joined
brrt good * #moarvm 06:21
yoleaux 30 Aug 2017 20:32Z <nine> brrt: why does the JIT clear RV in the epilogue? It could be used for returning a value to the caller otherwise
brrt .tell nine the even-moar-jit and jit-legacy-cleanup branch don't clear it, the idea was to signal the caller if it should unwind the stack 06:23
yoleaux brrt: I'll pass your message to nine. 06:24
brrt .tell nine we now explicitly unwind the stack in the implmeentation of the return ops, so that's no longer necesary
yoleaux brrt: I'll pass your message to nine.
samcv good * 06:27
brrt ohai samcv 06:28
hows your fight with uc2dc.pl ending
samcv i won 06:39
a fight is the best description
brrt good 06:40
samcv Added Korean codepoint names too
brrt are you ready to tell glorious tales about it as well?
samcv and property values are now distinct
haha
07:24 lizmat joined 07:40 brrt joined 07:54 leont joined
nine So many movs... 07:57
yoleaux 06:23Z <brrt> nine: the even-moar-jit and jit-legacy-cleanup branch don't clear it, the idea was to signal the caller if it should unwind the stack
06:24Z <brrt> nine: we now explicitly unwind the stack in the implmeentation of the return ops, so that's no longer necesary
brrt aye, i know 08:00
yesterday i learned
when *not* to rebase 08:01
nine brrt: did you get rid of dynasm in even-moar-jit or can it be used to actually dynamically create code?
brrt i fixed dynasm to be able to select the full range of registers 08:02
this was one wondrous adventure
at the end, i thought, maybe it would've been simpler to have some other assembly abstraction
on the other hand, that would never have allowed me to 'fit in' the legacy JIT as easy as it is now 08:03
08:03 zakharyas joined
nine So it can be used without going through the dasc compiler? 08:03
brrt i recently had a bug with that, too, where dynasm would think that a label could fit into 1 byte, and then the range increased due to a REX byte that had to be added, and the label would overflow and become negative 08:04
no, it still goes through dynasm
dynasm is and remains the assembly backend for both JITs
but dynasm is a really, really thin layer of abstraction 08:05
so i'm not too worried about that
nine So how do you create code with it where the register to use is not static? 08:06
brrt you select it by number
using: Rq(1), Rq(2), Rq(11) etc
that was what i fixed :-)
nine ah, and there you can say Rq(num_gpr) 08:07
lizmat samcv++ # Unicode 10 support 08:10
BTW, is there a way to introspect which version of Unicode is supported?
samcv thanks lizmat :)
no
lizmat :-(
samcv lizmat, also property values are now unique
lizmat cool! 08:11
samcv yeah
lizmat but being able to introspect version would be something nice to have :-)
in the future :-)
samcv uhm is there an already existing thing that returns data
i should latch it onto?
lizmat samcv: what is that thing?
samcv like nqp::getmoarinfo 08:12
brrt aye!
samcv ^ i made that up
brrt i think there is something yes
lizmat is that thing documented ?
lizmat was told all of the interesting nqp:: ops are actually undocumented :-) 08:13
brrt hmm
hehe
.oO( the documentation, thats just interp.c, right? )
samcv hehe
nine pretty much yes :)
samcv that's what i look at when i don't know what an op does
and find the moarvm function that it coorasponds to
i've been documenting all my ops! 08:14
practically
08:19 dogbert2 joined
samcv ok now i documented the variations of index(ic)?(im)? and eqat(ic)?(im)? 08:22
nine samcv++ 08:23
samcv and i updated unicmp to the latest yesterday or day before to how i changed the bitmask
i added a script that will print out all the undocumented nqp ops 08:54
lizmat :-)
samcv or at least all the ones not found with .contains in the ops.markdown 08:55
only shows ones added to QASTOpretionsMAST
and you can supply a command line switch to show nqp and moar names for the ops side by side or just the moar names
lizmat, is there a way to do a cube root or some other non square root? 08:56
lizmat m: dd 27**1/3 # samcv 08:57
camelia 9.0?
lizmat hmmm
samcv i couldn't find anything on docs.perl6.org
lizmat m: dd 27**(1/3) # samcv 08:58
camelia 3e0?
samcv wellllllll
lizmat :-)
samcv technically that works
lizmat yup
samcv would be nice if we could keyword root
and say to do that
lizmat perhaps. or it could be module spaced :-)
afk for a bit&
08:59 leont joined 09:16 Ven`` joined
nine OMG IT LIVES! 09:35
What have I done?
Deconting, unboxing, running and boxing, everything's there. And it no longer makes assumptions about allocated locals in the current frame, except that the arguments must be in the first locals in order. Which is quite sane and doesn't depend on further processing. 09:37
timotimo how do you signal what registers have the values you want? 09:40
nine I added a new argument and a new return value mode to the JIT which essentially implement GET_REG
timotimo i don't get it :) 09:44
nine You can now tell the JIT that the C function you want to call should take an argument from WORK[cur_op + whatever] which is the equivalent of all those GET_REG(curop, whatever) in interp.c 09:46
Same for return values. So when in interp.c you'd write GET_REG(cur_op, 0) = ...; you tell the JIT: box_rv_node->u.call.rv_mode = MVM_JIT_RV_DYNIDX; box_rv_node->u.call.rv_idx = 0; 09:48
Does that help? 10:01
Geth MoarVM/jit_nativecall: 59c737ab76 | (Stefan Seifert)++ | 3 files
Dynamically determine register for return value and type

This replaces assumptions about which locals the high level code uses for storing the return type and for expecting the return value by accessing the register numbers stored in the byte code for nativecallinvokejit instructions. You can now tell the JIT that the C function you want to call should take an argument from WORK[cur_op + whatever] which is the equivalent of all those GET_REG(cur_op, whatever) in interp.c. Same for return values. When in interp.c you'd write GET_REG(cur_op, 0) = ...; you tell the JIT: node->u.call.rv_mode = MVM_JIT_RV_DYNIDX; box_rv_node->u.call.rv_idx = 0;
10:13
MoarVM: duke-m++ created pull request #671:
MVM_IS_32BIT_INT(i) with explicit casts
10:18
brrt wait, what 10:26
you use get_cur_op to do what? :-o 10:27
nine To find the place where I should put the return value of the invokenativecalljit op 10:32
And to find the place where I get the return type from for boxing (that's the first operand of the invokenativecalljit op)
Previously I used hard coded indices into the WORK array which....was fragile at best 10:33
brrt why, couldn't you read the index where you'd compile it? 10:49
nine Because at that point I don't know it yet 10:50
brrt hmm. okay, that's fair, i guess 10:53
timotimo the jit is a lot to take in over just a couple of days 10:54
nine Well compared to spesh it's relatively straight forward :) Though I had to learn quite a bit about gdb to be able to debug this stuff 11:04
brrt :-) 11:15
ilmari[m] nwc10: lunch! 12:02
(my IRC screen host seems to have fallen off the net, so I can't do it on #london.pm) 12:03
12:14 AlexDani` joined 12:17 zura joined 12:53 huggable joined
Zoffix ??? New blog post: "On Troll Hugging, Hole Digging, and Improving Open Source Communities": rakudo.party/post/On-Troll-Hugging...ommunities 12:56
nwc10 aha, there you are 13:03
this window wasn't visible
was going to ask "Is it raining?"
ilmari[m] brief showers 13:06
from $ork slack: * tomh considers a variant of Godwin's Law where all IM channels eventually end up discussing @ilmari's lunch 13:07
Zoffix :D
ilmari[m] (I mentioned that I was going for lunch while waiting for jenkins+puppet) 13:08
13:30 lizmat joined 13:58 zakharyas joined
brrt so, what i learned yesterday 14:19
there are cases where rebases are like, not the right thing to do
this being: a): when there is significate divergence between the original base and the new base 14:20
b): when the commit history of the rebased branch has been merged in the past to adjust to the new base 14:22
nine It usually also depends on how small or large your commits are.
brrt c): when the commit history of the rebased branch isn't by itself 'clean' or 'delimited' but adds-and-deletes things repeatedly 14:23
(more speciifcally, if there isn't a clean 'progression' in the branch history)
mostly c and b bite 14:24
timotimo C bites most :P
brrt basically, for a rebase to work, the history-to-rebase has to be small and self-contained 14:25
if that doesn't hold, you're not actually gaining anything by the rebase
and linearly progressing!
nine I don't really believe in the "small" part as I've done major rebases in the past. But yes, moving back and forth makes things really hard. 14:27
brrt yeah, maybe i should stress 'contained' more than 'small'
the 'split it in two branches' bit, that's probably still a decent enough idea, since the changes to the legacy JIT are much more self-contained and linear-progressive than the history of even-moar-jit 14:28
nine It helps to clean (rebase) frequently when developing a branch
brrt aye! that would've helped a lot
next time i start a two-year branch, i'll renember to do just that :-P
nine There! Easy ;)
timotimo i tend to work like that nowadays
not that i have many long-running branches any more 14:29
brrt
.oO( we can also replay a rebase of even-moar-jit on every commit on master between july 2015 and today)
timotimo well, you could call them long-running, but i'd call them "short running, then long-resting"
brrt actually, i *could* do that 14:30
iteratively rebase in 'lockstep'
i.e. add commits until 2015-07-01 from master, then 2015-07-01 from even-moar-jit, then 2015-07-02 from master, then rebase earlier branch on top of that, including commits from 2017-05-03ā€¦ etc 14:31
eh, 07-02
i mean, it's justā€¦ a graph, and we can modify it any way we like
nine At that point I wonder if it's worth it 14:32
brrt i know it ain't.
but
it is possible
:-)
and it would've given us the same result as if i had regularly-rebased it in the past
timotimo hah 14:33
14:55 brrt joined 15:20 ilmari joined 15:22 sivoais joined 15:26 brrt joined
Geth MoarVM/even-moar-jit: 2100f25f33 | (Bart Wiegmans)++ | build/Makefile.in
Add old-style suffix rule for dynasm compilation

This will work when we rename the dynasm file to whatever else, which is a nice little cleanup
15:27
MoarVM/even-moar-jit: 892f1fff91 | (Bart Wiegmans)++ | 8 files
Add old-style inference rules for expr and tile lists

Especially for expr lists this is interesting because we want to support per-REPR templates, and that has just become a bit easier to build.
brrt see, much more productive than rebasing 15:28
oh boy, i'm looking at my todo list again :-o 15:35
it's scary
16:05 Ven`` joined 16:35 vendethiel- joined
timotimo did you already put the optimizer in? :) 17:14
nine Oh, my unboxing doesn't actually unbox yet. Because the compiler adds a box_i for me. How...unhelpful :/ 17:33
How can I avoid that?
17:40 dogbert2 joined
nine Ah, I guess a :returns on the QAST::Var. Now where do I get the appropriate native type from? 17:42
timotimo you need one of the "primspec" ops 17:44
nine: but :returns in the right address
nine Does the :returns on a :decl<param> Var do what I mean? 17:48
timotimo i think so, but i'd have to study other code 17:50
you probably need to repeat the :returns everywhere you use the var 17:51
so it knows you want it in that type, rather than boxed
nine Oh, but nqp::objprimspec doesn't give me a type, but only a number corresponding to a type 17:53
For :returns I need NQP's int type object I think
In other words...a bootint! 17:57
17:59 lizmat_ joined
timotimo oh, it does? 18:01
i'd look how tthe optimizer handles this :)
nine Which Perl6 apparently HLLizes immediately...
timotimo oh, huh. yeah, all other parts using that aren't in the perl6 hll 18:02
nine No, it doesn't. nqp::getattr($block.list[*-1], QAST::Node, '$!returns').^name still gives me a BOOTInt, yet the hllization is still there 18:03
I'm half a mind to just rip the box_i op out of the MAST tree there... 18:14
timotimo oh my 18:18
that sounds bad :)
nine Well I'm running out of ideas 18:20
timotimo shouldn't anything that gives you the right objprimspec back be right for native stuff? 18:24
i.e. a perl6-level native int type object?
nine This is about the value. The code should unbox the value into a local, so the JITed code can access it directly: github.com/rakudo/rakudo/blob/jit_...l.pm6#L375 18:28
But the MAST compiler adds the box_i call: gist.github.com/niner/45702763ec43...3cf28b45a8 18:30
timotimo isconcrete only works on object values, doesn't it? 18:35
perhaps that's why it boxes?
18:37 robertle joined
nine But it seems to box the results of the unbox? 18:47
timotimo :o 18:49
sorry, doing about 5 things at the same time
not used to reading this format at all 18:54
i don't actually see the code you really have there, but i'd expect the trouble comes mostly from the if + isconcrete 19:01
so maybe have an extra branch for primspec being > 0 but not rw 19:02
nine That's simple to test: gist.github.com/niner/f6f590739a94...b899d6704c 19:04
Now it's just the decont + bind at it still hllzies
19:08 Ven joined 19:51 zakharyas joined 20:11 leont joined
jnthn is safely home from SPW + vacation :) 20:18
yoleaux 29 Aug 2017 12:17Z <raschipi> jnthn: Does Cro support Http/2 over non-tls connections?
30 Aug 2017 20:12Z <brrt> jnthn: i notice a bunch of jgb_sc_wb calls to things where the operand might be an integer rather than an object
04:08Z <AlexDaniel> jnthn: FWIW rt.perl.org/Ticket/Display.html?id...xn-1486128
nine jnthn: hope you enjoyed the trip :) 20:19
lizmat jnthn o/ 20:20
jnthn .tell raschipi Yes, but you must then configure it as HTTP/2 only (pass :http<2> to Cro::HTTP::Server). Having an endpoint doing HTTP/1.1 or HTTP/2.0 is the thing that requires TLS (because it uses ALPN to do the decision making).
yoleaux jnthn: I'll pass your message to raschipi.
jnthn nine: Yeah; we were especially glad that we decided to break the journey in St Anton, but then once we were there were sad we'd only got 2 nights. Guess we'll be heading back at some point... :-) 20:23
Hopefully when they're done working on the Linz - Rybnik railway line so there's no need to endure a bus, that then manages to break down... :P
nine jnthn: well trains can just stop at half of the way, too as I've learned on my way to Switzerland ;) 20:24
jnthn hah, yeah, we got a delay in Switzerland on the Montreux - St Anton leg also that made us arrive 2 hours later than planned... 20:25
Apparently running a railway is hard work.
Anyways, I'll probably be relaxing the next days from the travel, and then will try to get back into things again. :) 20:26
nine Sounds like a good plan :)
Next couple of days will be rainy, so I should be able to get some more coding done 20:27
moritz and yes, railway is hard. It's a distributed system with many stakeholders with conflicting interests
japhb jnthn: I have questions, but I BELIEVE IN REST, so ... when do you think you are going to be in the head space for non-critical questions again? I'll hold off until then. 20:46
jnthn japhb: Sunday/Monday-ish :)
japhb Excellent, thank you. Enjoy your rest! :-) 20:48
samcv good * 20:59
japhb Good *, samcv 21:00
.oO( * where Afternoon )
samcv i'm thinking i should not allocate 16Kb onto the stack 21:18
but i wanted to know what you guys think
i mean it should be fine on linux, but i don't know about other OS's like bsd's 21:19
japhb Zoffix++ # Hugging post 21:21
Zoffix \o/ 21:23
japhb I seriously ? when you \o/ a ++ 21:25
Zoffix :) 21:28
AlexDaniel u: ? 21:33
unicodable6 AlexDaniel, U+2764 HEAVY BLACK HEART [So] (?)
AlexDaniel oh, heavy
japhb For a native English speaker, that character name has a lot of emotional content that has nothing to do with its semantic meaning. :-/ 21:43
21:46 stmuk_ joined
samcv maybe it weights a lot? 21:49
:P
idk do they mean heavy as in thick? maybe bold? 21:50
u: black heart
unicodable6 samcv, U+2665 BLACK HEART SUIT [So] (?)
samcv, U+2764 HEAVY BLACK HEART [So] (?)
samcv, 4 characters in total (???????): gist.github.com/fafd241a1759f5d396...176721a998
samcv they look the same for my font at least 21:51
japhb I think HEAVY is meant to be bold, yeah. Though clearly fonts don't necessarily show that. 21:52
22:18 leont joined 22:25 Ven`` joined