josh-k_ has quit [Remote host closed the connection]
meh` has quit [Ping timeout: 240 seconds]
pietr0 has quit [Quit: pietr0]
jnh has quit [Quit: Leaving...]
havenwood has joined #rubinius
slaught has joined #rubinius
|jemc-bo1 has joined #rubinius
slaught has quit [Quit: slaught]
lbianc_ has joined #rubinius
blowmage` has joined #rubinius
jfredett-w1 has joined #rubinius
lbianc has quit [Ping timeout: 264 seconds]
|jemc-bot| has quit [Ping timeout: 264 seconds]
jfredett-w has quit [Ping timeout: 264 seconds]
blowmage has quit [Ping timeout: 264 seconds]
lbianc_ is now known as lbianc
|jemc| has joined #rubinius
havenwood has quit [Remote host closed the connection]
JohnBat26 has joined #rubinius
|jemc| has quit [Quit: WeeChat 1.0.1]
dzhulk has joined #rubinius
havenwood has joined #rubinius
josh-k has joined #rubinius
josh-k has quit [Ping timeout: 258 seconds]
dzhulk has quit [Quit: Leaving.]
diegoviola has quit [Quit: WeeChat 1.0.1]
craigp has joined #rubinius
noop has joined #rubinius
dzhulk has joined #rubinius
chee has left #rubinius ["WeeChat 0.4.3"]
dimday has quit [Quit: Leaving.]
mamantoha has joined #rubinius
craigp has quit [Remote host closed the connection]
josh-k has joined #rubinius
flavio has joined #rubinius
flavio has joined #rubinius
slaught has joined #rubinius
elia has joined #rubinius
slaught has quit [Quit: slaught]
<yorickpeterse>
morning
havenwood has quit [Remote host closed the connection]
mamantoha has quit [Remote host closed the connection]
josh-k_ has joined #rubinius
elia has quit [Read error: Connection reset by peer]
_elia has joined #rubinius
josh-k has quit [Ping timeout: 244 seconds]
josh-k has joined #rubinius
josh-k_ has quit [Ping timeout: 265 seconds]
johnmuhl has joined #rubinius
<cremes>
yorickpeterse: morning. It’s the Thanksgiving holiday here in the US so the channel might be extra quiet today.
<yorickpeterse>
I'm aware of the turkey festival
<yorickpeterse>
I'll be celebrating it with US friends this Caturday :P
<yorickpeterse>
also look at that, Oga is featured in Ruby Weekly
<yorickpeterse>
_finally_
<yorickpeterse>
that took 2 releases for Cooper's publishing empire to take notice of it
<cremes>
heh, empire
<cremes>
it would be interesting to use oga as an example of some of the new up&coming rubinius features…. immutable strings, type hints…
<cremes>
we gotta jit that shit :)
<yorickpeterse>
well, for Oga to be faster we have to mainly reduce string allocation overhead
<yorickpeterse>
at least for the lexer, since that's basically all it does in Ruby
<yxhuvud>
no hash or other object creation?
<chrisseaton>
yorickpeterse: do you know if anyone's ever tried a kind of lazy string allocation - so to concat two strings just create an object that refers to them and unless they change defer the actual concat, and if they're output you can just output the two strings one after the other
<yorickpeterse>
I thought about this, but it's very difficult to due in the current setup
<yorickpeterse>
and it wouldn't really make things faster as you'd still have to allocate quite a few objects
<yxhuvud>
chriseaton:didn't java substring work somewhat lazily before, when they allocated the substrings inside the parent strings?
<chrisseaton>
yorickpeterse: yeah but they'd be tiny, and within methods you could allocate them on the stack
<chrisseaton>
yxhuvud: yeah, but they changed it as they found it didn't actually help
<yxhuvud>
yes, except for the poor souls that got big performance regressions :)
<yxhuvud>
but I suppose that happens with any big change to common objects like that
<yxhuvud>
also, what you are describing, isn't that somewhat like an automatically created stringbuilder?
<chrisseaton>
yxhuvud: no, the idea is that you don't allocate a string large enough to contain A + B, you allocate an object that references A and B
<chrisseaton>
yxhuvud: if you need a real string later you can actually do the allocation form a tree of these, but if you're writing to a socket or something you just stream A + B, and you never need the larger string
<yxhuvud>
so a lazy stringbuilder.
<chrisseaton>
yxhuvud: yeah, transparent to the user
<yxhuvud>
yes, and it wouldn't have to be exposed, exactly because it is lazy.
<chrisseaton>
yxhuvud: you would probably find situations where it becomes unproductive - where a real string would be better than a massive tree of cons cells - so it would need to profile and be adapative
<yorickpeterse>
If Ruby had some sort of ByteString this would be easier to handle
<yorickpeterse>
They'd basically be a tuple of fixnums (assuming tuple overhead is minimal)
<yorickpeterse>
which could then be converted to an actual String upon request
<chrisseaton>
tuples are intrinsic in Rubinius, right?
<yxhuvud>
chrisseaton: yes, I imagine that it would be pretty pessimal for long lived objects.
<yorickpeterse>
chrisseaton: yes
mbj has joined #rubinius
<cremes>
this lazy builder sounds like scatter/gather
<chrisseaton>
cremes: as in the parallel pattern?
<cremes>
i’m thinking more like how a network driver handles packet fragments
<cremes>
scatter/gather is useful to avoid unnecessary allocation & copying
<chrisseaton>
yeah, and as some research with vectors is showing, sometimes a tree of non-contiguous memory can be more efficient than one big array (NUMA etc)
<cremes>
interesting
<chrisseaton>
you could also do things like have parts of a string that a procedurally generated - so you say you have n whitespace characters here, but really you just store the n and the whitespace
<chrisseaton>
and you could in-memory compress parts of the string etc
<cremes>
cheap run-length encoding
mbj has left #rubinius [#rubinius]
<cremes>
good ideas. would be useful to implement and benchmark ‘em.
<cremes>
welp, time to head on over to the in-laws for Thanksgiving breakfast. It’s an all-day event for my new extended family. :)
<cremes>
i’ll check in here later to see what other genius discussions have occurred in my absence. :P
havenwood has joined #rubinius
dzhulk has quit [Quit: Leaving.]
dzhulk has joined #rubinius
flavio has quit [Quit: WeeChat 1.0]
s3m has joined #rubinius
dzhulk has quit [Quit: Leaving.]
s3m has quit [Quit: Quitte]
flavio has joined #rubinius
fsb` has joined #rubinius
noop has quit [Ping timeout: 272 seconds]
dzhulk has joined #rubinius
fsb` has quit [Quit: fsb`]
slaught has joined #rubinius
slaught has quit [Client Quit]
slaught has joined #rubinius
meh` has joined #rubinius
dzhulk1 has joined #rubinius
dzhulk has quit [Ping timeout: 258 seconds]
goyox86 has joined #rubinius
<goyox86>
Oga "A new HTML XML parser" in this weeks "Ruby Weekly" :) nice yorickpeterse
diegoviola has joined #rubinius
flavio has quit [Quit: WeeChat 1.0]
_elia has quit [Quit: Computer has gone to sleep.]
goyox86 has quit [Ping timeout: 265 seconds]
_whitelogger has joined #rubinius
dzhulk1 has quit [Quit: Leaving.]
|Blaze| has quit [Read error: Connection reset by peer]
|Blaze| has joined #rubinius
GitHub123 has joined #rubinius
<GitHub123>
[rubinius] brixen pushed 2 new commits to master: http://git.io/6wdKbA
<GitHub123>
rubinius/master 448bf43 Brian Shirai: Added specs for subclassing eg Errno::EMFILE....
<GitHub123>
rubinius/master 7e099e3 Brian Shirai: Fixed subclassing Errno classes.