github.com/moarvm/moarvm | IRC logs at irclog.perlgeek.de/moarvm/today
Set by moderator on 5 October 2013.
TimToady is guessing that overuse of Unicode will ensue upon the ability to edit programs by voice, and then back down again, much as digital typography went through an awkward period when fonts and styles were overused 00:01
s/then/then settle/ 00:02
I guess someone just needs to teach Siri how to edit Perl 6 :) 00:04
jnthn OK, I think all is ready for tomorrow's trip...time to catch a little sleep. 00:06
'night o/
01:24 benabik joined 01:46 _ilbot joined
moderator github.com/moarvm/moarvm | IRC logs at irclog.perlgeek.de/moarvm/today
01:57 woosley joined 03:03 ssutch joined 03:17 colomon joined 06:27 ssutch joined 07:08 lizmat_ joined 07:11 __sri joined 07:48 woolfy left 07:50 woolfy joined, woolfy left 08:06 woolfy joined, woolfy left 08:23 donaldh joined 08:26 FROGGS joined 10:15 wsri joined 11:12 grondilu joined
FROGGS ridiculous, if I add a say(42) before $qastcomp.as_mast(...), the "undeclared '$qastomp'" error goes away 12:28
timotimo m( 12:30
so the generated bytecode has bugs?
JimmyZ well. looks like this error only occuers when the momery is not enough 12:31
FROGGS ha, same goes for the qregex tests 12:32
the tests pass if I say($expect_substr) 12:33
I certainly have enough
maybe the nursery size is too small?
ok 226 - three "a" characters (explicit greed) 12:35
x @ 0
Frame has unresolved labels
at src/stage2/gen/QAST.nqp:4248 (./QAST.moarvm:assemble_and_load:15)
timotimo o_O 12:47
are things being trashed that should have survived?
is there a flag to turn the gc into super-aggressive mode? that runs a full collection every two opcodes or something? 12:51
FROGGS not that I know 12:52
tadzik I think GC only considers running on allocations, no? 12:55
timotimo that makes sense
so ... wtf is going on here?
FROGGS tadzik: it runs when triggered by allocations, yes 13:04
and a full run is every 10 allocs or so? something along these lines
diakopter no 13:05
every 10 gc runs
FROGGS listens
ahh, k
diakopter the gc runs when one of the threads' nuurseries is full
FROGGS diakopter: so, can you imagine what is going on here? 13:06
diakopter not yet 13:07
FROGGS when I run the test unmodified, it fails like: 13:08
install/bin/moar nqp.moarvm t/qregex/01-qregex.t
Use of undeclared variable '$expect_substr' at line 55, near ") >= 0;\\n "
diakopter I probably should backlog
FROGGS if I add a newline before the said line, it passes most of the test
timotimo .. a newline?!
FROGGS yes, tested right now 13:09
timotimo that's really not right
FROGGS that trick didn't work for the QAST.nqp not though
diakopter your cow is over the moon.
FROGGS holy moon
diakopter testing the speech recognition recognition.
ha
speech to IRC I love it.
FROGGS *g*
diakopter what we got that acronym. 13:10
timotimo what could possibly go wrong
FROGGS "bring me a beer b***h"
diakopter now I can I or see while driving even more.
FROGGS diakopter: please stop that while driving
timotimo: no idea
diakopter yah 13:11
FROGGS I doubt that the regex engine is to blame for some reason
diakopter no; it's a gc buglet
but it feels small
timotimo a really weird one at that
FROGGS but that can't be, I don't want to have a GC bug :/
timotimo: there are no sane GC bugs 13:12
timotimo ... that's true
FROGGS timotimo: if you wanna try it, I added a newline after "try {" at line 48 13:13
timotimo rebuilds nqp.moar 13:14
(on host07)
FROGGS timotimo: you might have to apply my patches (gist) 13:16
gist.github.com/FROGGS/db53df3844dc98dd6b58
timotimo: I can push to new branches if you want
this would include my stage0 then 13:17
diakopter okay, I need someone to backlog for me 13:19
timotimo that would be helpful, FROGGS 13:20
FROGGS k, stay tuned
diakopter so, how should I reproduce this? 13:21
is nqp/moarboot merged?
timotimo not yet 13:22
dalek arVM/buglet: 2ddf94e | (Tobias Leich)++ | / (8 files):
buglet
13:23
FROGGS timotimo: both on buglet branch now 13:24
timotimo good
tadzik digglet pokemonmadness.tripod.com/images/diglett.jpg
timotimo what exactly is going on in your dyncall checkout? 13:25
ah, probably just all the makefile/configure output that's not being git ignored?
FROGGS timotimo: I have no idea
diakopter Perl is the #2 most hated programming language (according to this article). Its recommendation for how to avoid it: How to avoid it: Don’t become a programmer. 13:26
www.itworld.com/slideshow/120222/10...ane-373774
timotimo haha
is php the #1? or is that cobol? 13:27
diakopter VB 13:28
Perl ranked near the bottom of "WTF-y" programming languages, though. www.itworld.com/big-data/374664/mos...-languages 13:29
Perl, which was the #2 most hated language and takes a regular beating from developers, was #19 in the WTF measure. Maybe developers who hate it are successfully avoiding it - or they’re so baffled by the zillion ways you can do things that they’re too beaten down to even write ā€œWTF?ā€
- See more at: www.itworld.com/big-data/374664/mos...WfF3F.dpuf 13:30
timotimo hehe
diakopter gee, I really love javascript appending urls to my clipboard
timotimo har har 13:31
42 42 42 42 42 42 42 42 42 42 :)
diakopter how should I reproduce this
gc bug
halp.
timotimo well, first build moarvm and nqp on the "buglet" branch 13:32
diakopter bah
building nqp takes too long
wait 13:33
is buglet a branch of moarboot?
timotimo you can use my nqp in ~timotimo/nqp on host07, it's almost finished
it's a derivative of moarboot, yes
diakopter well since I've never used the moarboot branch...
so are we using the cross-compiler anymore? 13:34
timotimo FROGGS: the say(42) helps all of nqp compile?
FROGGS timotimo: the 42 is there to workaround the QAST.nqp build issues
timotimo no cross compiling, diakopter 13:35
froggs checked in his stage0
FROGGS the 42 is only for QAST.nqp, the newline in the test is for qregex.t
diakopter nqp repo has gotten bigga 13:38
timotimo not ok 214 - two "a" characters - interesting; what may that be?
FROGGS timotimo: not checked yet, but this seems to be an interesting one 13:39
have no time yet though to check that :/ 13:40
timotimo it's a**2 on baabaa
nqp-m: "baabaa" ~~ /a**2/
camelia ( no output )
timotimo nqp-m: say("baabaa" ~~ /a**2/)
camelia nqp-moarvm: OUTPUT«aa␤»
timotimo seems to be some b0rked state
FROGGS nqp-m: "baabaa" ~~ /a**0..2/ 13:43
camelia ( no output )
FROGGS nqp-m: say("baabaa" ~~ /a**0..2/)
camelia nqp-moarvm: OUTPUT«␤»
FROGGS nqp-m: say("baabaa" ~~ /a**1..2/)
camelia nqp-moarvm: OUTPUT«aa␤» 13:44
FROGGS nqp-m: say("baabaa" ~~ /a**1..3/)
camelia nqp-moarvm: OUTPUT«aa␤»
FROGGS nqp-m: say("baabaa" ~~ /a**1/)
timotimo that's ... not quite right ...
camelia nqp-moarvm: OUTPUT«a␤»
FROGGS hmm
weird
nqp-m: say("baabaa" ~~ /a**0..1/)
camelia nqp-moarvm: OUTPUT«Rebuild in progress␤»
FROGGS nqp: say("baabaa" ~~ /a**2/) 13:46
camelia nqp: OUTPUT«aa␤»
diakopter nqp repo finally finished
checkoiut
clone
erm why all the 42 13:53
FROGGS diakopter: read backlog 13:54
diakopter from where? :) 13:55
FROGGS diakopter: these say(42) stmts help QAST.nqp to build and not to blow up
diakopter: it is the same bug as the add-newline-to-pass-qregex one 13:56
diakopter whaa
FROGGS and in both cases it would blow up like '$xyz undeclared' 13:57
diakopter what about the say(42) is causing this 13:58
surely not the fact it's using stdout?
timotimo no, they help at compile time
remember, that $xyz is undeclared is a compile-time error
diakopter how does add-newline-to-pass-qregex fix it? where does it add a newline? 13:59
FROGGS right, either it tricks the grammar from now complaining or something else
diakopter: github.com/perl6/nqp/commit/90050f...d0482fbR49 14:00
s/from now/from not/ 14:01
diakopter todo for someone: make a fakecuteable for nqp.exe 14:07
14:08 not_gerd joined
not_gerd o/ 14:08
diakopter not_gerd: aloha
dalek arVM/ext-stage: 77b029b | (Gerhard R)++ | src/moar.h:
Add macros for extension op definition.

These are ncomplete and just here to get the general idea accross.
arVM/ext-stage: 0f8e14d | (Gerhard R)++ | src/core/ (2 files):
Stage extension op operands instead of letting
MoarVM/ext-stage: 2f6f23e | (Gerhard R)++ | src/core/ (2 files):
MoarVM/ext-stage: Disallow ins and callsite operands for extension ops
arVM/ext: 8f8e17d | (Gerhard R)++ | src/core/ (2 files):
Disallow ins and callsite operands for extension ops
14:09
not_gerd see 0f8e14df57 for how staging operands for extension ops would look
diakopter not_gerd: operands[i].i64 shouldn't that be operands[i]->i64 14:10
[isn't it a table of pointers to registers]?
not_gerd no - the whole point of the stage is that everything gets passed by value
diakopter but it needs to update registers
not_gerd the interpreter does that via UNSTAGE() 14:11
the idea is that the extension op shouldn't poke that far into internals
diakopter meh. we're passing it tc, so it can anyway 14:13
so why not have autogenerated code do it safely
not_gerd because the JIT then has to fake interpreter access patterns
if we pass everything by value, the JIT is free to pull the data from $wherever 14:14
diakopter I s'pose, okay 14:15
can someone kill this horror if nqp::substr($op.name, 0, 8) eq '&__MVM__' { 14:17
by adding an attribute to $op 14:18
timotimo is there a way to speed up substr(str, 0, *) eq '*'?
like an op that does the comparison without creating a new string?
that's an optimization that the optimizer could totally do in nqp 14:19
diakopter there is an op like that
in moarvm
but not in nqp
timotimo is there a simple way to check for the existence of an op from within nqp? i don't think there is
probably needs one of these #?if moarvm or something lines 14:20
diakopter nqp-m: nqp::COWWWWWW
camelia nqp-moarvm: OUTPUT«No registered operation handler for 'COWWWWWW'␤compile_op»
diakopter that's moarvm-only code, so it can go in there as nqp:: just map it in operations
*no one cares lololol
timotimo oh, you mean provide a nqp::substr(...) eq ... implementation on the other platforms? 14:21
would you think there's a win to doing it that way, though? at least on moarvm? 14:22
i must admit i don't really know how strings and encodings are handled interally for parrot and java at the moment. just utf8 everywhere? 14:24
FROGGS utf16 for java 14:25
or so
diakopter timotimo: no
I mean just making it work on moarvm
timotimo if i provide the same op on all backends, will that help?
nqp::startswith_s perhaps? 14:26
diakopter no
FROGGS timotimo: no, I think he wants and $op.is_moar instead of if nqp::substr($op.name, 0, 8) eq '&__MVM__' {
diakopter just map nqp::eqat_s to moarvm op eqat_s
in qast operations
timotimo yes, but i want an op to statically optimize all checks that look like that
i'll quickly grep the nqp and rakudo source to see if that pattern happens often 14:27
diakopter ok.. so implement eqat on jvm and parrot :P
eqat_s w(int64) r(str) r(str) r(int64)
takes two strings and a starting index for ... one of them, can't remember, returns int 14:28
there's actually also a more general one that compares two substrings
haveat_s w(int64) r(str) r(int64) r(int64) r(str) r(int64) 14:29
timotimo have at you!
diakopter but ... don't port that one.. :D
since... I don't think it's used anywhere anyway 14:30
timotimo i would very strongly think that eqat would have an offset into the haystack, rather than into the needle
diakopter right, my point was which one was the haystack and needle :P
timotimo ah, yes
i will just have to look at teh source
diakopter FROGGS: so, I don't understand this buglet branch 14:33
you're saying it's just the indexnat that's causing the problem?
[or why is that part of this branch]
timotimo without indexnat, we can't even begin to try qregex/01-*.t
diakopter but this is a compile-time problem? 14:34
FROGGS diakopter: indexnat is inluded because otherwise qregex would hang
diakopter okay, but I thought you said it was a compile time problem
FROGGS so, I'd say indexnat can go into master after a bit of cleanup
diakopter: yes, the current problem happens at compile time 14:35
indexnat gets us just further to this new problem 14:36
14:37 rjbs joined
diakopter o/ 14:37
rjbs diakopter said that I should join because there's a riot going on
What can I loot?
diakopter you're needed to help quell it
rjbs *has* been playing Prison Architect...
diakopter #moarvm: meet the p5 "Pumpkin G" 14:39
FROGGS the what?
diakopter I dunno what it means either
speaking of cultic special knowledge.. 14:40
rjbs "G" is a suffix for respect, from India
diakopter FROGGSG: so to reproduce this, I just have to remove the say(42); ? 14:41
FROGGS diakopter: yes, to break it remove the say(42) and the newline in qregex.t after "try {" 14:43
14:43 donaldh joined
diakopter *facedesk* 14:43
rjbs: gc bugs are fun. 14:44
rjbs Hey, we're adding this in p5, when do we get it in 6? gist.github.com/rjbs/9cbd2f1841bb8f26faf6
(speaking of {)
tadzik :o
what sorcery is this 14:45
rjbs <warning>Some messages may be lies.</warning>
diakopter ^ except that one
timotimo okay, i have an implementation of eqat_s for java, now one for parrot ...
diakopter (sometimes)
timotimo: take off the _s plz 14:46
timotimo will do
diakopter really it should be removed from the moarvm one, too
ill-conceived by moi
timotimo i'll call the method "string_equal_at" in the java ops to make it the same as in MVM
but i called the arguments "haystack" and "needle" instead of a and b on java 14:47
because at first i thought they were switched
diakopter heh.
FROGGS rjbs: don't show it to larry++ or it will be specced within minutes :o) 14:48
diakopter it's hard to find a piece of hay in a 10 foot stack of needles
FROGGS that is as crazy as heredocs
timotimo :D
rjbs FROGGS: It came up because I'd like to see qw«xyz abc» happen. 14:49
donaldh wow, that's both hard to type and hard to implement :-)
FROGGS rjbs: it should be possible in rakudo with a slightly modified heredocs parser fwiw
timotimo slightly?
FROGGS I think so
timotimo it would have to work backwards
14:50 colomon joined
FROGGS no, I'd say āŽ§ is the opener 14:50
diakopter nah just add something special for the opening one
right
timotimo well, if the upper left corner of such a bracket would not be available anywhere else, like as a custom operator ...
FROGGS then you parse the ident in between
diakopter DOING IT
rjbs: now look what you've done
rjbs You invited me, dude. 14:51
diakopter life imitating ... something....
something tells me I won't solve this gc bug before needing to commute to work
not_gerd while we're at it, why not implement a reversed polish notation variant of perl6 triggered by a unicode right-to-left mark 14:52
not_gerd hides
diakopter rjbs: not_gerd is our new "actual C programmer" since we realized we didn't have one 14:53
so he's been fixing all the things in moarvm that novices like me screwed up
not_gerd on that note, there are still some () function signatures that should read (void) 14:54
these are only the same in C++
;)
diakopter Digital-Immorto-Criminalise Your Face 14:55
for the low low price of $250
... I really hope I don't download this game.
14:56 benabik joined
rjbs diakopter: It's a bunch of fun, if you like that kind of game. Also, kinda buggy, still in alpha. 14:56
diakopter: You may be used to that, though... :)
diakopter I've stopped noticing bugginess. All I see are the green vertical lines 14:57
rjbs stares at the lines: "bug, bug, feature, coredump" 14:58
diakopter pre-feature, you mean 14:59
timotimo what does :base_core mean in the nqp.ops? 15:01
diakopter throws a 10-foot stack of needles at timotimo
timotimo: I have no earthly idea; not_gerd is perhaps the only one who would know
erm.
I thought you said oplist. 15:02
:base_core sounds .pmc ish
timotimo hehe. 15:03
diakopter rjbs: so I've decided to use the exploit I found in p5 .pmc parsing to load moarvm without dynaloader
timotimo yes, i'm building a C implementation for string_equal_at
rjbs diakopter: ? O_o 15:04
diakopter wouldn't you like to know....
timotimo when i use Parrot_string_to_cstr, will that stop after the first nullbyte? 15:06
Parrot_str_to_cstring* 15:07
i should be asking in #rakudo, no?
diakopter timotimo: does it matter? :D
colomon there's a #rakudo/
?
timotimo uh
#perl6, duh
not_gerd history rewrite incoming - yes, I'm evil like that ;) 15:08
dalek arVM/ext-stage: a41bd79 | (Gerhard R)++ | src/core/ (2 files):
Disallow ins and callsite operands for extension ops
15:09
arVM/ext-stage: d2183c7 | (Gerhard R)++ | src/moar.h:
Add macros for extension op definition.

These are incomplete and just here to get the general idea accross.
MoarVM/ext-stage: 4bfe069 | (Gerhard R)++ | src/core/ (2 files):
MoarVM/ext-stage: Stage extension op operands instead of letting
15:10 jnap joined 15:12 odc joined 15:16 cognominal joined
diakopter 15:21 < diakopter> TimToady: are macro-methods spec'd? 15:21
15:40 benabik joined 15:42 jnap joined
not_gerd afk 15:44
15:44 not_gerd left
timotimo it seems like i can get the STR register's ->strstart and compare stuff from there, but that'll break if different encodings are involved 15:50
no, it seems i need to use an iterator for that 15:52
timotimo rewrote the thing with string iterators 15:58
16:12 jnap1 joined 16:18 grondilu joined 16:30 FROGGS joined
TimToady notes that he proposed using multi-line brackets some months ago :) 16:31
timotimo remembers
TimToady irclog.perlgeek.de/perl6/2013-07-30#i_7388901 16:33
rjbs: ^^ beat you to it
FROGGS the good thing about this gist.github.com/rjbs/9cbd2f1841bb8f26faf6 is that you can indent it nicely within your code without adding whitespace to the content 16:34
and there is no stopper at ^^
which is ugly
rjbs TimToady: o/ 16:35
FROGGS so, I'd say +1, because it might look silly the first time but it really is not
TimToady again, this is something that is more reader-centric than writer-centric, but that's a good thing, right? 16:36
FROGGS I like it when my code looks beautiful
even when that means that I spent the same time cleaning it up like I need to write it down initially
TimToady and the characters for it are Just Sitting There looking at us hopefully
FROGGS right 16:37
easier to type characters would be nice but...
TimToady and there really is very little ambiguity
it's so unambigous that we could also allow unclosed froms
FROGGS they would clash with already existing stuff I guess
TimToady *forms
FROGGS how so?
just the opener?
TimToady the unclosed form would close the statement just like a final } 16:38
FROGGS or just the left hand sides?
TimToady just the left side
you know when you hit the end of the first line
would 2x2s be customarily written above the line? 16:39
(rather than below?)
FROGGS so, we would just need an opener, (optionally with the variable preceded), followed by additional lines (again optional variable), that is it
TimToady or just accumulate the text on the left to put in front, and accumulate the text on the right to put in back 16:40
which degenerates to dwim when only one line is used 16:41
mind you, people should be shot if they abuse the privilege of multiple lines front or back, but that doesn't mean we should stop people from doing clever things 16:42
now suppose there is more than one on the same "line"
now suppose they aren't all the same vertical size...
FROGGS more than one opener?
TimToady has a minor masak++ /o brane melt moment 16:43
it's a good thing we're not talking about anything interesting...
FROGGS I would only allow rvalue per line
one*
TimToady oh, wait, that was the other channel
in fact, this whole conversation is on the wrong channel 16:44
FROGGS :o)
TimToady blames rjbs :) 16:45
ingy *always* blames rjbs 16:48
or maybe it's TimToady I blame. I can't keep up with myself anymore… 16:50
TimToady always blames TimToady in addition to everyone else 17:08
FROGGS nqp: say("baa" ~~ /a**0..2/)
camelia nqp: OUTPUT«␤»
FROGGS timotimo: so it is not a bug
because it is fine to match zero a's at index 0 17:09
TimToady use 1..2 to mean the other thing
timotimo ah, ok
TimToady leftmost trumps longest
timotimo of course, that makes sense now
FROGGS leftmost elephant trumps longest? 17:10
nqp: say("baabbbb" ~~ /a**2..4/) 17:11
camelia nqp: OUTPUT«aa␤»
FROGGS nqp-m: say("baabbbb" ~~ /a**2..4/)
camelia nqp-moarvm: OUTPUTĀ«Substring length (-10) cannot be negative␤ at nqp-src/QRegex.nqp:1062 (./QRegexMoar.moarvm:Str:4294967295)␤ from nqp-src/NQPCORE.setting:668 (./NQPCOREMoar.setting.moarvm:frame_name_8:6)␤ from nqp-src/NQPCORE.setting:667 (./NQPCOREMoar.setting.moarvm:pr…»
FROGGS there we go
this comes back as an empty string loally 17:12
locally*
I'll do that this night, unless someone else likes to do it :o)
nqp-m: say("baabbbb" ~~ /a**1..4/) 17:15
camelia nqp-moarvm: OUTPUT«aa␤»
FROGGS why??
is "2" a magic constant or what?
nqp-m: say("baabbbb" ~~ /b**3..4/) 17:16
camelia nqp-moarvm: OUTPUT«bbbb␤»
FROGGS nqp-m: say("baaabbbb" ~~ /a**3..4/)
camelia nqp-moarvm: OUTPUT«aaa␤»
FROGGS I am puzzled
17:36 not_gerd joined
not_gerd ENOFROGGS? 17:37
18:47 camelia joined 18:48 jnap joined 18:49 camelia joined 18:53 camelia joined 18:56 camelia joined 19:09 camelia joined
moritz rakudo-jvm: say 42 19:09
camelia rakudo-jvm: OUTPUT«42␤»
moritz \\o/
timotimo not_gerd: froggs left 4 minutes before you came :( 19:12
but he said he'd fix something!
not_gerd timotimo: I figured 19:15
all I wanted to do was offer my help
after all, I'm the one who re-implemented sustring on moarvm
timotimo substring? 19:18
it would seem like the caller of substring is wrong, rather than substring itself
not_gerd sure 19:19
I wanted to know how to reproduce the problem
and add a reminder that moar expects a non-negative length parameter or -1 to indicate Inf 19:20
timotimo ah 19:25
there was that "buglet" branch, but it may very well already be out of date by now
19:43 cognominal__ joined 19:53 camelia joined
diakopter timotimo: out of date? but there's been no commits 20:08
timotimo there may have been commits and/or changes on froggs local machine 20:09
20:36 lizmat joined
not_gerd bye, #moarvm 20:45
20:45 not_gerd left 20:59 donaldh joined 21:12 FROGGS joined
FROGGS o/ 21:13
diakopter jnthn: ping 21:59
.tell not_gerd I saw this, which led me to notice that TCC is almost done switching its license from lgpl to mit-style...! easy assembler! blogs.perl.org/users/david_mertens/...-perl.html 22:27
yoleaux diakopter: I'll pass your message to not_gerd.
diakopter .tell jnthn I saw this, which led me to notice that TCC is almost done switching its license from lgpl to mit-style...! easy assembler! blogs.perl.org/users/david_mertens/...-perl.html
yoleaux diakopter: I'll pass your message to jnthn.
22:38 woolfy joined 22:39 lizmat joined
jnthn the &__MVM__ thing si a temporary hack. Don't waste time on killing it, it's just to get us bootstrapped. 22:45
I see everyone completely missed the point of it :/
TimToady you should have put a comment on it that read: "You will completely miss the point of this." :) 22:46
22:46 jnap joined
jnthn ;) 22:52
jnthn had a fun night giving talks and drinking stout in Stockholm :) 22:53
Oddly, I get to spend tomorrow eating curry in Stockholm. :)
TimToady doesn't remember whether he had curry in Stockholm... 22:58
jnthn There are some good places.
And some bad ones :)
23:16 grondilu joined 23:25 woolfy left 23:34 colomon joined
diakopter jnthn: sry 23:55
jnthn diakopter: np 23:56
I see we have a GC-looking bug with symbol tables... 23:57
diakopter yeah; as usual I thought I'd hae time to look at it
jnthn :) 23:58
I probably won't until thu evening, or Friday