00:30 ilbot3 joined 02:15 tokuhiro_ joined 02:33 tokuhirom joined 02:40 tokuhirom joined 02:47 ilbot3 joined 03:16 tokuhiro_ joined 05:21 vendethiel joined 07:05 FROGGS joined 08:00 TimToady joined 09:07 KDr2_ joined 09:13 zakharyas joined 09:32 tokuhiro_ joined 09:36 kjs_ joined 09:45 brrt joined
brrt good * #moarvm 09:45
what, a SEGV in moar, that isn't sensistive to either spesh or jit 09:47
:-o
that is remarkable
lizmat brrt: you mean the one I rakudobugged yesterday ? 09:59
timotimo used to be much easier to do before we put more and more MVM_isnull checks into interp.c :) 10:00
brrt i dunno lizmat, maybe that one 10:02
lizmat m: use nqp; class A { has str $!a; method BUILD() { nqp::chars($!a) } }; A.new 10:03
camelia rakudo-moar 2856ed: OUTPUT«(signal SEGV)»
brrt no, that's a different one 10:05
oh, that looks bad 10:06
although that's probably just a NPE?
timotimo isn't that just another point where we ought to check MVM_isnull?
m: use nqp; nqp::chars(nqp::null);
camelia rakudo-moar 2856ed: OUTPUT«Cannot unbox a type object␤ in block <unit> at /tmp/BJPfhs5uuV:1␤␤»
timotimo that potentially gets hllmap'd?
lizmat I think it's a missing initialization for native str on attributes 10:07
timotimo mhm
lizmat m: use nqp; my str $a; say nqp::chars($a) # no problem here
camelia rakudo-moar 2856ed: OUTPUT«0␤»
timotimo mhm
jnthn m: use nqp; nqp::chars(nqp::null_s) 10:09
camelia rakudo-moar 2856ed: OUTPUT«(signal SEGV)»
jnthn ah, that
brrt :-)
timotimo haha, i thought about using null_s, but i expected that *that* wouldn't be problematic, compared to nqp::null
jnthn m: use nqp; nqp::codes(nqp::null_s) 10:39
camelia rakudo-moar 2856ed: OUTPUT«===SORRY!===␤No registered operation handler for 'codes'␤»
dalek arVM: fa03d65 | jnthn++ | src/strings/ops. (2 files):
Fix SEGV on nqp::chars on a null string.
10:41
jnthn lizmat: ^^ should fix the SEGV 10:42
Though prolly not the attr init issue
jnthn assumes there's a ticket tracking it 10:43
lizmat #126492 10:44
synbot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=126492
jnthn Cool
ah, eek 10:46
The test I've busted in nqp is the one for nqp::readlinefh, which doesn't understand the \r\n synthetic... 10:47
10:49 kjs_ joined
jnthn Ah, and that's why the Rakduo build is busted 10:54
Gee, \r\n is quite the can of worms 11:14
So far it's basically brought up 2 other issues that I really need to deal with.
(That were known, and one of them is on the xmas list too)
lizmat I guess the \r\n synthetic is troublesome because it need to be part of nqp::const::CCLASS_WHITESPACE ? 11:27
*needs
perhaps fixable by making it always synthetic -1 ? 11:28
jnthn: ^^^ 11:29
jnthn lizmat: Actually that bit is already fine
lizmat: 'cus graphemes take the properties of the base char 11:30
And \r is whitespace
lizmat ah, ok :-)
jnthn That's one of the few problems we don't have :)
lizmat :-)
.oO( looking for problems in all the wrong places )
jnthn The one I'm dealing with now is mostly 'cus I just put off dealing with RT #122971
synbot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=122971
jnthn That is, separator handling for reading line by line has always been a "quick thing that'll work for hacky reasons" 11:31
lizmat ok, then maybe also consider putting in :chomp at the MvM or nqp level ?
jnthn Yeah, that's in The Plans 11:32
lizmat fwiw, we have a working IO::Handle.split that takes regexes
jnthn Though I was planning to work on I/O things *next* week, not this one :)
lizmat so, if we have a :nl that is a regex, we can refer to that at the rakudo level
jnthn aha 11:33
But for non-regex ones, best to leave it to the guts
lizmat yeah, because IO::Handle.split("\n") currently performs better than .lines, because of the :chomp at rakudo level
jnthn Wow :) 11:35
The thing is
the .chomp doesn't actually work
The moment you pick a separator that isn't \n
So it's gotta go anyway
lizmat $ 6 'my @a = "words".IO.open.split("\n")' 11:36
real0m0.651s
$ 6 'my @a = "words".IO.open.lines'
real0m1.230s
jnthn: indeed :-)
11:48 tokuhiro_ joined 12:10 kjs_ joined
dalek arVM: 65bcb12 | jnthn++ | src/ (11 files):
Start refactoring I/O handling of line separators.

Introduce a new data structure that can hold multiple multi-grapheme separators. Update the decoders themselves to know about it. No semantic changes so far; this is just an enabling refactor.
12:16
arVM: 81fb7c1 | jnthn++ | src/ (7 files):
Refactor handles for new separator data structure.

Again, no intended semantics changes in this patch. However, we do now preserve the full set of graphemes in multi-grapheme separators, to later enable full handling of this case (for now, only the handling of multiple separators is going to be used, as part of the \r\n grapheme change).
12:29
arVM: d87a5a0 | jnthn++ | src/moar.c:
Set up NFG subsystem before I/O handles.

So we'll be able to compute the \r\n synthetic when setting up the default separators on the standard handles.
12:41
12:59 tokuhiro_ joined 13:12 tokuhirom_h joined
dalek arVM: a5f1971 | jnthn++ | src/io/syncfile.c:
Set default separator on syncfile handle.
13:40
arVM: 47bb37e | jnthn++ | src/strings/decode_stream.c:
Include \r\n synthetic in default separators.
[Coke] wonders if this is going to screw up rj at all. 13:42
jnthn [Coke]: I'm doing my best to not do so
13:43 kjs_ joined
jnthn (e.g. write code in NQP/Rakudo that is open to either case) 13:43
[Coke] jnthn++ I figured you were, just wasn't sure if we would soon hit the "jvm must now implement NFG etc." stage. :) 13:45
psch tangentially related, in how far is NFG involved with unicode properties? e.g. Lr as a composite property isn't on jvm 1.7 at least, not sure about 1.8 13:46
jnthn psch: The synthetics inherit their properties from the base grapheme, so far. 13:47
psch jnthn: so we could be fine with building e.g. Lr from Ll, Lu and Lt manually? 13:48
that's S05-mass/properties-general.t, for reference 13:49
jnthn psch: Well, one option is to steal MoarVM's Unicode database script, hack it to spit out Java instead, and ship our own Unicode database.
psch i suppose something like that had happened in the past. at least i hope no one wrote the 114 lines of static initialization in Ops.java manually... 13:52
jnthn I don't think I'd have had the patience ;)
Phew, I've got a Rakudo built using the \r\n -> 1 grapheme 13:53
psch anyway, yeah, i think not having to rely on oracle doing what we'd like to be right wrt unicode is probably saner 13:54
nwc10 you mentioned re-bootstrap - is that likely within the next day or two?
[Coke] m: say ?"\r\n".chars == 1 13:55
camelia rakudo-moar ba7027: OUTPUT«True␤»
[Coke] m: say "\r\n".chars == 1
camelia rakudo-moar ba7027: OUTPUT«False␤»
[Coke] <archer>Precedence!</archer>
jnthn m: say "\r\n".chars
camelia rakudo-moar ba7027: OUTPUT«2␤»
jnthn That's 1 locally :)
nwc10 are we also going to have NFT (Normalisation Form Twitter), which means that absoluately any Perl 6 program can fit into a single Tweet? :-) 13:56
jnthn nwc10: Not sure; I need to look at $other-thing for a bit this evening and then it'll be weekend and I should probably rest more than hack. And I can see that there's some amount of Rakudo tweaks needed. 13:57
nwc10 140 completely arbirary synthetics
jnthn And other encoding. :)
Heh, NFT :D
Yeah but getting it to Twitter would be tricky :)
'cus you'd have to encode it, and NFG vanishes at encoding time 13:58
nwc10 that's a bother.
jnthn Anyway, rebootstrap probably not until Monday
'cus I need to teach Rakudo's I/O that no, \n is not a sufficient separator default 13:59
And that may well be an API change 14:00
Not to mention we need an API to tell the VM about multiple separators
nwc10 I see what you meant about the little rabbit hole opening up onto a view of a field of yaks, awaiting your razor 14:01
lots of stuff that can't be put off any more
jnthn Aye 14:02
Well, there's an xmas RT about sorting out the line seps stuff too
So this was already on the horizon.
nwc10 good job we never promised which Christma - oh wait :-) 14:03
jnthn :-)
Yes, a bit bothersome there are 66 xmas RTs and that's more than one per day to reach xmas 14:04
otoh there are some that'll probably boil down to "no, we're not doing this before 6.c" or "the current behavior is fine"
14:05 tokuhirom_h joined
jnthn Anyway, time for $other-task 14:17
14:42 synbot6 joined 15:03 colomon joined 15:21 tokuhirom joined 16:45 synbot6 joined 17:01 vendethiel joined 17:22 tokuhirom joined 19:00 kjs_ joined 19:36 tokuhirom_h joined 20:18 tokuhirom joined 21:35 leont joined 22:25 tokuhirom joined 23:03 kjs_ joined