dalek arVM: e53dbbf | (Francois Perrad)++ | src/strings/decode_stream.c:
remove useless initialization
02:47
arVM: c3260bd | (Francois Perrad)++ | src/strings/normalize.c:
const static variables
arVM: e2e4d38 | (Francois Perrad)++ | src/strings/ops.c:
remove unreachable code
arVM: 94dc853 | (Francois Perrad)++ | src/strings/ (17 files):
const parameter of functions
nwc10 good *, #moarvm 06:17
japhb good *, nwc10 06:18
brrt \o 07:36
nwc10 o/ 07:40
brrt is not happy at all about panda breakage :-( 08:04
Ven timotimo: news! after I updated my rakudo (yday's) I now get this error message: 11:46
"Invalid GC status observed; aborting
" while trying to run my Runaway project, using GTK::Simple. fwiw, all tests from GTK::Simple passed 11:47
jnthn eek, loads of const clutter... 12:58
[Coke] const is infectious. 13:03
jnthn Yes, that's why I tend to feel it's a mixed bag. 13:04
Modern compilers are pretty good at alias analysis.
I'd really rather it'd have been discussed whether to go on a const'ing spree rather than just doing it. But at least the patches doing it are easy to grep out if I decided we're worse off with it. 13:08
*decide 13:09
nwc10 jnthn: When looking at trying to make fakecutables, I was of the opinion that proper const *would* be useful 13:17
as the fakecutable bytecode really wants to end up in a read-only section
which means it needs to be const
also, I *think* (but have not looked at the generated assember) that const on function pointer parameters does give the compiler information about what can be assumed not to change 13:18
however, a lot would be needed / it wasn't clear how to spit things in just the right place to avoid a lot of churn/complexity 13:19
however, my gut feeling was that there was a way to make a split
but it was worth postponing until figuring how to do it properly
jnthn I guess my concern is partly that once you have it, you have to always think about it when adding stuff too (so as not to get a bunch of new warnings), and I'd rather the brain cycles went on things like upholding the VM's GC invariants than keeping the C compiler happy. 13:30
Ven jnthn: new paper idea: get a student to research how to make both the same : 13:51
jnthn ;) 14:03
aiacob Has anyone else ran into this: gist.github.com/alinbsp/5900b2d10aa9c2f0a5d8 ? 14:12
[Coke] aiacob: OOC, what's your build directory? 14:14
jnthn aiacob: No, but it looks as if somehow the dyncall git submodule wasn't fetched
I'm not quite sure how that can happen, since Configure shouldn't work out if it's missing that 14:15
[Coke] (are you building from git?)
aiacob It's fetched.
jnthn (And if you have a release tarball it should be included)
aiacob Yes from git.
jnthn OK, that was my best guess for now "/bin/sh: 1: ./configure: not found" could happen.
*how
[Coke] are you building in a directory with a space in it? 14:16
aiacob Nope.
[Coke] (or on some distro we don't normally build on?)
aiacob Ubuntu, 32bit
[Coke] huh. 14:17
jnthn Does ls 3rdparty/dyncall/configure show up the configure script?
aiacob I'll try to digg deeper and let you know if I find what's happening. 14:18
jnth: yes it's there. 14:19
aiacob weird 14:19
jnthn Very 14:21
dalek arVM: 0a66439 | jnthn++ | src/core/args.c:
Remove non-6y int/num coercion.

Thankfully, we don't seem to have accidentally relied on them in NQP.
14:41
arVM: c2ce079 | jnthn++ | src/core/args.c:
Don't introspect, just do, in arg unbox.

Especially as we now have allomorphs in Perl 6, which can unbox in multiple ways.
arVM: d15a446 | jnthn++ | src/core/args.c:
51dcbe4 | jnthn++ | src/strings/ops.c:
aiacob Ok, I've got it building. It turned out that configure had a dos line ending on the first line. No idea how it got there. 14:53
lizmat jnthn: while you're busy here, how would you consider creating negated classes, such as CCLASS_NONALPHANUMERIC 15:24
timotimo but don't we have a "findnotcclass" already?
jnthn lizmat: Why? We already...what timo said :)
lizmat well, if you look at .words, and you want to separate on non-alphanumeric, rather than whitespace 15:25
jnthn Really?
lizmat you would need to make a switch to use either findcclass or findnotcclass
jnthn 'it's the cat's mother's pet monkey" # how many words? 15:26
lizmat m: "it's the cat's mother's pet monkey".words.elems.say
camelia rakudo-moar 564a25: OUTPUT«6␤»
jnthn Right, and ' is non-alphanumeric 15:27
timotimo we already generate either the one or the other from the regex engine
lizmat that's because it looks for whitespace
m: "foo; bar;".words.say
camelia rakudo-moar 564a25: OUTPUT«(foo; bar;)␤»
jnthn I thought it was meant to by design? :)
lizmat if you would want "foo" "bar" in that case 15:28
jnthn Mebbe I remember wrong :)
lizmat ?
jnthn I thought .words was meant to use whitespace to find boundaries?
lizmat yes, it does
but that's maybe not always what you want
TimToady it is; she's talking about .comb(/\W+/) 15:29
jnthn Ah
TimToady scared me too :
lizmat right :)
TimToady :)
lizmat sorry to scare you guys
timotimo 3scary5you?
jnthn I thought \W compiled into something pretty much as efficient as \w though
timotimo i expected that, too
and there's still the thing moritz wanted to prototype with me a long time ago for the cclass stuff 15:30
multi-level bitfields and such
jnthn Like it checks the unicode char prop and then branches with if/unless to the backtracker depending on whether it's \w or \W
iirc, anyways
TimToady there are certainly places that can be optimized in there, but maybe that's not our top priority this week 15:31
jnthn :)
Yes, I've got a big pile of RTs that are more semantic than performance in nature to worry about :) 15:32
timotimo bugs me a whole lot 15:33
i want to fix all the performance, but i can't
lizmat 6 '"words".IO.slurp.words.join.chars.say' # 0.523 wallclock
timotimo not even close
lizmat 6 '"words".IO.slurp.comb(/\w+/).join.chars.say' # 8.169 wallclock
timotimo lizmat is very performance these days
jnthn That's either really good or really bad depending on how many words are in "words".IO ;)
Oh, it's a comparison :) 15:34
lizmat 235886
jnthn m: say 8.169 / 235886
camelia rakudo-moar 564a25: OUTPUT«0.000034631␤»
timotimo so .words is already a crapton more efficient than .comb(/\w+/), is what that says, right?
jnthn Pretty much
timotimo but joining two hundred thousand words into a string, that's impressive to work in that short of a time
jnthn Question is whether it's the regex or whether it's comb, though
timotimo at least for my perl6 standards :) 15:35
jnthn Or both :)
timotimo i imagine we have a whole bunch of overhead when calling into and out of the regex
remember it creates a match object every time
jnthn Well, regexes are just "normal code"
I dunno if it needs to create the Match in that case
timotimo whereas comb probably just calls findcclass (or some such) and keeps around a single native niteger
it doesn't need to, but it probably will
jnthn I mean, all we need to know is where the Cursor was
So we've some optimization potential there.
lizmat anyways, my point is that by having a non-alphanumeric charclass,, the same code could be used in words, just change the charclass constant in the findcclass/findnotcclass calls 15:36
timotimo aye, i've wished for making regexes cheaper if we just want to find out "match yes/no"
"the same code"?
you mean we should make comb smart enough that we no longer need special code to implement .words? 15:38
lizmat look at src/core/Str.pm , lines 909 and 914
if I would want to support alphanumeric splitting 15:39
hoelzro o/ #moarvm
lizmat I would have to make switch there between using findcclass/findnotccleas
if there would be a non-alphanumeric class, only the constant used there, would need to be changed
timotimo oh 15:40
is there a good reason that's a while { }?
looks like it's just copy-pasted from push-exactly?
lizmat hmmm... good point :) 15:41
timotimo i don't think it generates much worse code than if, though
lizmat timotimo++ 15:42