josh-k_ has quit [Remote host closed the connection]
josh-k has joined #rubinius
<heftig> yorickpeterse: I think the "Concrete example" on the Wikipedia page isn't that hard to understand
josh-k has quit [Ping timeout: 272 seconds]
sferik has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
meh` has quit [Ping timeout: 258 seconds]
dimday has joined #rubinius
jnh has quit [Remote host closed the connection]
jnh has joined #rubinius
jnh has quit [Ping timeout: 264 seconds]
jnh has joined #rubinius
GitHub76 has joined #rubinius
<GitHub76> [rubinius] brixen pushed 5 new commits to master: http://git.io/I3vt2A
<GitHub76> rubinius/master 64004c8 Brian Shirai: Added more goto_if_xxx instructions.
<GitHub76> rubinius/master eff0ee7 Brian Shirai: Updated InstructionParser for new branch instructions.
<GitHub76> rubinius/master b67cae4 Brian Shirai: Fixed incorrectly defined bootstrap Kernel#extend.
GitHub76 has left #rubinius [#rubinius]
travis-ci has joined #rubinius
<travis-ci> rubinius/rubinius/master (8ed5de1 - Brian Shirai): http://travis-ci.org/rubinius/rubinius/builds/42590539: The build passed.
travis-ci has left #rubinius [#rubinius]
|jemc| has joined #rubinius
<|jemc|> ah, new instructions; that sounds fun :)
<|jemc|> I just came back to working with rubinius bytecode again today - that's good timing
|jemc| has quit [Client Quit]
|jemc| has joined #rubinius
<|jemc|> ugh, airport wifi can't even load the the rubinius github
<|jemc|> ah, I see the new ones now
<|jemc|> heh, they're not glamorous or exciting but I bet they help out a lot :)
diegoviola has quit [Remote host closed the connection]
|jemc| has quit [Ping timeout: 250 seconds]
digitalextremist has joined #rubinius
digitalextremist has quit [Client Quit]
dzhulk has joined #rubinius
noop has joined #rubinius
dzhulk has quit [Quit: Leaving.]
Bish has quit [Read error: Connection reset by peer]
DanielVartanov has joined #rubinius
DanielVartanov has quit [Remote host closed the connection]
benlovell has joined #rubinius
dzhulk has joined #rubinius
dzhulk1 has joined #rubinius
dzhulk has quit [Read error: Connection reset by peer]
JohnBat26 has joined #rubinius
jnh has quit [Ping timeout: 245 seconds]
jnh_ has joined #rubinius
jnh_ has quit [Ping timeout: 252 seconds]
dimday has quit [Quit: Leaving.]
jnh has joined #rubinius
flavio has joined #rubinius
jnh has quit [Ping timeout: 252 seconds]
goyox86 has joined #rubinius
jnh has joined #rubinius
fsb` has joined #rubinius
towski_ has quit [Remote host closed the connection]
s3m has joined #rubinius
elia has joined #rubinius
32NAAK8W8 has joined #rubinius
32NAAK8W8 has quit [Remote host closed the connection]
havenwood has quit [Remote host closed the connection]
meh` has joined #rubinius
jnh has quit [Remote host closed the connection]
jnh has joined #rubinius
sferik has joined #rubinius
postmodern has quit [Quit: Leaving]
sferik has quit [Ping timeout: 250 seconds]
jnh has quit [Remote host closed the connection]
jnh has joined #rubinius
jnh has quit [Remote host closed the connection]
jnh has joined #rubinius
<goyox86> morning
sferik has joined #rubinius
benlovell has quit [Ping timeout: 265 seconds]
<kagaro> brixen has an progress been made on the jit not able to compile error?
s3m has quit [Remote host closed the connection]
atambo has quit [Quit: yarr]
atambo has joined #rubinius
sferik has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
atambo has quit [Excess Flood]
atambo has joined #rubinius
s3m has joined #rubinius
s3m has quit [Client Quit]
sferik has joined #rubinius
benlovell has joined #rubinius
josh-k has joined #rubinius
<yorickpeterse> kagaro: Yes, I believe all aborts have been removed in Rbx master
josh-k has quit [Ping timeout: 265 seconds]
<mpapis> yorickpeterse, got an interesting one https://github.com/rubinius/rubinius/issues/3226
<yorickpeterse> mpapis: can you use benchmark-ips for that benchmark? This benchmark might not be triggering the JIT
<yorickpeterse> basically just require 'benchmark/ips' and replace 'Benchmark.bmbm' with 'Benchmark.ips'
<mpapis> yorickpeterse, testing
<mpapis> yorickpeterse, new addition? that benchmark/ips
<kagaro> coolthanks
<yorickpeterse> mpapis: it's a Gem evan wrote at some point, takes care of warming up and such
<yorickpeterse> so typically you'll get better results when JITs are involved and the likes
<mpapis> runnning now
<mpapis> yorickpeterse, similar, adding results
<yorickpeterse> What's the particular use case for this potential optimization, something you noticed as being slow?
<yorickpeterse> ah, ty
<mpapis> yorickpeterse, I was just discussing in a PR for nanoc using "each <<" over "+=" might be slower, then we went into benchmarking
<mpapis> and then I noticed that rubinius concat is slower for array compared to other rubies
<yorickpeterse> For Arrays the latter should, in theory, be slower
<yorickpeterse> Since it requires an extra allocation and re-assignment
<yorickpeterse> Though the resizing of an array _might_ be more expensive
<yorickpeterse> or the code is just meh
<mpapis> yes I now understand, but it coudl be optimized
<mpapis> the question I asked in jruby is if it should be optimized
<yorickpeterse> If it's worth it, sure
<mpapis> well, natural instinct is that adding to array once should be faster then many times, that's why I was thinking += would be faster
<mpapis> then each <<
<mpapis> in the end I go for concat, but this should be optimized
<yorickpeterse> both concat and << should be faster +=
<mpapis> why to copy array if you have to reassign it back to the same variable
<yorickpeterse> * than +=
<mpapis> and even += mentions concat in MRI docs
<chrisseaton> mpapis: += to actually just extend the same array would require very sophisticated escape analysis and dynamic deoptimization to handle things like ObjectSpace - it's a good idea for an optimisation, but not very simple to implement I think
josh-k has joined #rubinius
josh-k has quit [Ping timeout: 272 seconds]
<yorickpeterse> "NoMethodError: undefined method `empty?' on an instance of ActiveModel::Errors" what the fuck
<yorickpeterse> brixen: what's this new feature we have where methods randomly vanish? :P
<mpapis> chrisseaton, I would think that all rubies jut map "x+=y" to "x=x+y" would be matter of hijacking the mapping and replacing it with "x.concat(y)"
<mpapis> especially that the += docs reference concat
<chrisseaton> mpapis: but only if it's an array - so does that mean you have to check the type on every single + operation?
<mpapis> chrisseaton, if it's faster then I would not mind
<mpapis> also string
<mpapis> actually anything that has concat should use it for += not just arrays
<chrisseaton> mpapis: I think you would find that the guard would be more expensive than the optimisation - a common problem in optimisations
<chrisseaton> mpapis: it could also break lots of Ruby code
<chrisseaton> mpapis: ideally these optimisations would be invisible to the user - we just need more poweful escape analysis and deoptimization to do it
<chrisseaton> mpapis: I looked into an optimisation where I stored a reference in each array to the location where it was originally allocated, recorded all resizes, and tried to make the array the correct size on the next allocation at that location - that was simpler than what we're talking about here and was already extremely complicated to implement
<mpapis> chrisseaton, += is suppose to work as concat so it should be as fast as it
<chrisseaton> mpapis: but that's not the semantics! the semantics are to allocate a new array - so expecting it to be as fast as concat is a programmer's mistake. If we can make it faster, great, but it's not unreasonable for it to be slower.
<yorickpeterse> mpapis: += also allocates a new Array, so it can't be safely replaced with Array#concat
<chrisseaton> mpapis: exactly - and you can tell the difference by things like ObjectSpace, so you can't just replace it
<chrisseaton> mpapis: if you're serious enough to change Ruby's semantics, there are many other things you could do to improve performance a lot more than this
<mpapis> well then it would have to come from MRI to be approved?
<chrisseaton> mpapis: yeah - but I doubt they'd go for it as it could very subtlely break existing code
<yorickpeterse> You can't change += to be the same as Array#concat
<yorickpeterse> it could potentially break every piece of Ruby code written in the past 15 years
<mpapis> then it would be as dup.concat, let me benchmark this
<chrisseaton> mpapis: you're also going to introduce a semantic edge-case that you'll have to specifically teach all new Ruby programmers - "in just this one case + and = don't do what you'd expect from how they work everywhere else, they do something else instead"
<chrisseaton> although I would say - I actually think Python does exactly what you're proposing
<mpapis> chrisseaton, any other language will have += faster then each<<
<mpapis> this is expected behavior
<yorickpeterse> That's bullshit
<yorickpeterse> Also this is Ruby, not "every other language"
<yorickpeterse> Ruby specifies that x += y is the same as x = x + y
<yorickpeterse> which in case of Array leads to an extra allocation
<yorickpeterse> which _could_ be faster than adding an element to an existing array
<yorickpeterse> but that depends on when the array is resized
<yorickpeterse> and the allocation overhead
<yorickpeterse> that in turn is implementation specific
<mpapis> and dup.concat is slower from << in all mri, jruby, rbx
<mpapis> lunch time
<yorickpeterse> euh yeah of course it is
<yorickpeterse> you're duplicating an array
diegoviola has joined #rubinius
<headius> yorickpeterse: dup itself should be pretty cheap
goyox86 has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
<headius> if the array has copy-on-write semantics as in JRuby and MRI (I don't think Rubinius does)
<mpapis> headius, dup.concat was slower everywhere
<mpapis> even on jruby
<headius> dup+concat would force a full copy anyway
<headius> I was just referring to dup alone
<mpapis> ah
<headius> and yes, dup + concat would be as slow as +=
<headius> or slower
<headius> += is slow because it does a full copy of elements from the original and the added array
<mpapis> it's slower, I guess the best course of action would be improving docs to properly differentiate between += and concat
<mpapis> not just mention each another
<chrisseaton> mpapis: where in the docs are you looking? I can't see a mention of += in the concat docs
<chrisseaton> mpapis: I can see 'See also Array#+.'
goyox86 has joined #rubinius
sferik has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
sferik has joined #rubinius
<yorickpeterse> headius: chrisseaton: can JRuby somehow read JVM options from a file, similar to .jrubyrc?
<chrisseaton> yorickpeterse: I don't believe so
<yorickpeterse> hm
<chrisseaton> yorickpeterse: always having to have all JVM options set before you start can be a problem - I've recently been trying to work around it in Truffle by making some JIT options runtime configurable
<yorickpeterse> in this case it's a JVM option, not sure what JRuby can do about that
<chrisseaton> yorickpeterse: there is of course JRUBY_OPTS and JAVA_OPTIONS
<yorickpeterse> In my case installing some Gem apparently needs more than the default 500MB
<yorickpeterse> yeah that's one option
<yorickpeterse> trying to see where I'm going to smack that atm
<chrisseaton> 500MB seems very low these days doesn't it
<yorickpeterse> For the JVM, yes
sferik has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
sferik has joined #rubinius
sferik has quit [Client Quit]
<headius> JAVA_OPTS=-Xmx2g
sferik has joined #rubinius
<headius> 500MB is *our* default...I think JVM's default cap is still even smaller
<yorickpeterse> hm
<yorickpeterse> Ah well, I found a decent place to hook it into in this deployment process
<headius> I'm willing to bump that up, though...we haven't reevaluated it in many years
<headius> can you give me more info on what needed that much memory?
<yorickpeterse> mind you I'm installing a Gem of 100-something MB here :P
<headius> ahhh
<headius> so it was just a big gem?
<yorickpeterse> Yeah
<headius> ok
<headius> woah
<headius> they might have bumped it way up in 8
noop has quit [Ping timeout: 256 seconds]
<mpapis> both reference the second but with no explanation
<chrisseaton> mpapis: what explanation do you think is needed though - they're two methods which do different things, but are similar so they link to each other - what would you say?
<mpapis> chrisseaton, there is no documentation of += - would be good to state not obvious things
<chrisseaton> mpapis: but the documentation makes it clear what Array#+ does - it creates a copy, so I think that's really clear that += would create a copy. What you proposed with making += use concat would have to be documented as it breaks that pattern - as it currently is I can't see why any documentation is needed.
benlovell has quit [Ping timeout: 240 seconds]
lbianc has joined #rubinius
tenderlove has joined #rubinius
<chrisseaton> mpapis: I do sort of see what you are saying, but I would ask you 'why did you think += would behave like concat? what in the docs lead you to that conclusion'
<mpapis> chrisseaton, my experience from other languages and plain logic, did not put much attention into the "description" of the + and there was no docs for +=
<chrisseaton> mpapis: I guess the problem is that Ruby doesn't really document semantics anywhere - you're right I'm not sure where += is documented, except in the books maybe
<mpapis> as I have mri bugtracker open already I will open a ticket
<goyox86> Hey guys how do I build RBX with debugging symbols?
<brixen> ./configure --debug-build
<goyox86> brixen thx
<brixen> n/p
<goyox86> Hey brixen I'm playing with metrics I'm sending the metrcis to influxdb from C++
<brixen> goyox86: sounds awesome!
<goyox86> And looking at them with http://grafana.org/
<brixen> very cool
<brixen> would you be interested in writing up how you did that for the blog?
<goyox86> yup
<brixen> sweet
<brixen> did you write a custom emitter or are you using the statsd emitter?
<goyox86> I wrote an emitter :)
<brixen> interesting
<brixen> was there an issue with the statsd one?
<goyox86> nope I just was trying to setup statsd + graphite and I just ended up chasing my tail :p
<brixen> yeah, graphite is a big pain
<goyox86> I went to influxdb site an really liked the db
<brixen> apparently, there's a docker container for it
<brixen> does influxdb not accept statsd?
<brixen> or is there a statsd adapter?
<goyox86> I think it still does not support statsd
<brixen> I'm not opposed to including other emitters, but I don't want extra maintenance if it's unnecessary
<brixen> ok
<goyox86> I understand I was just playing either way I've build the emitter uisng the influxdb-c libraries that are "*not_that_great tm :)" And are built on top of licbcurl
<goyox86> libcurl* thin that I don't like
diegovio1 has joined #rubinius
diegovio1 is now known as diegovio1a
<goyox86> Hey brixen take a look at the changes here when you have time https://github.com/goyox86/rubinius/compare/goyox86:master...influxdb-metrics
<brixen> goyox86: ok, will do
<brixen> thanks
sferik has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<headius> is it possible to get metrics actively, rather than having them pushed to an external location?
<yorickpeterse> headius: you can query them from Ruby
<yorickpeterse> headius: Rubinius::Metrics.data returns the current metrics
<headius> ahh great, thanks
<headius> I suppose we should expose our metrics in something similar...hmm
arrubin has joined #rubinius
havenwood has joined #rubinius
benlovell has joined #rubinius
dzhulk1 has quit [Quit: Leaving.]
benlovell has quit [Ping timeout: 272 seconds]
sferik has joined #rubinius
carlosgaldino has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
carlosgaldino has joined #rubinius
diegovio1a has quit [Quit: WeeChat 1.0.1]
GitHub193 has joined #rubinius
<GitHub193> [rubinius] brixen pushed 5 new commits to master: http://git.io/XmbYog
<GitHub193> rubinius/master db0f87e Brian Shirai: Reuse Hash for Rubinius::Metrics values.
<GitHub193> rubinius/master bf0bd39 Brian Shirai: Updated Changelog.
<GitHub193> rubinius/master a20a574 Brian Shirai: Updated News.
GitHub193 has left #rubinius [#rubinius]
JohnBat26 has quit [Quit: KVIrc 4.3.1 Aria http://www.kvirc.net/]
flavio has quit [Quit: WeeChat 1.0]
<goyox86> Hey brixen lets say I want to write a code that uses Rubinius::Metrics.data and spans a thread and periodically send data to influxdb. Is there an event from the vm when RBX is ready? at Ruby level?
<brixen> goyox86: there's already a thread that sends the data to a location at a regular interval
<brixen> so, that's not a great approach
pwh has quit []
<brixen> however, you can run a thread that sends the data in Rubinius::Metrics.data at a regular interval
<brixen> it's updated transparently, and you shouldn't expect to synchronize with the metrics thread
<brixen> so, no, there's no event and I won't be adding one
<goyox86> brixen That is what i'm talking about I have something like this https://gist.github.com/goyox86/4290e0c95abd86d76858. The thing is that I don't know how the workflow would be for building a tool (a gem) that is build on top of that
<goyox86> I think I'm missing something xD
<goyox86> OMG my writing is terrible I menat building a tool on top of that
<goyox86> meant* Llisus.
<jc00ke> goyox86: don't worry, I'm having the same problem this morning!
<brixen> goyox86: gotta run for now
<brixen> goyox86: but the point is, you don't build on top of that
<goyox86> brixennp
<goyox86> np*
<brixen> you build on top of influxdb or statsd etc
<brixen> if there's no good adapter to influxdb, then we can include an emitter
<goyox86> brixen Roger that
<brixen> you can make an emitter like your gist, but look at Rubinius::Config[:'system.metrics.interval']
<brixen> sleep for that interval between writing your payload
<brixen> that approach is *possible* but sub-optimal
<brixen> bbl...
<goyox86> brixen see ya
noop has joined #rubinius
travis-ci has joined #rubinius
<travis-ci> rubinius/rubinius/master (d51518c - Brian Shirai): http://travis-ci.org/rubinius/rubinius/builds/42652014: The build passed.
travis-ci has left #rubinius [#rubinius]
fsb` has quit [Remote host closed the connection]
benlovell has joined #rubinius
elia has quit [Quit: Computer has gone to sleep.]
Ori_P has joined #rubinius
goyox86 has quit [Ping timeout: 256 seconds]
benlovell has quit [Ping timeout: 240 seconds]
Ori_P has quit [Quit: Computer has gone to sleep.]
pietr0 has joined #rubinius
<yorickpeterse> weeee 2.4
dzhulk has joined #rubinius
|jemc| has joined #rubinius
postmodern has joined #rubinius
goyox86 has joined #rubinius
|jemc| has quit [Ping timeout: 272 seconds]
benlovell has joined #rubinius
benlovell has quit [Ping timeout: 264 seconds]
yipstar has joined #rubinius
<yorickpeterse> hm, this LL(1) parsing stuff is _slowly_ starting to make sense
goyox86 has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
dzhulk has quit [Quit: Leaving.]
pwh has joined #rubinius
pwh has quit [Client Quit]
<yorickpeterse> pffff this shit is hard to grok
pwh has joined #rubinius
pwh_ has joined #rubinius
pwh has quit [Read error: Connection reset by peer]
<brixen> yorickpeterse: have you looked at Engineering a Compiler by Cooper?
<brixen> it's way better than the dragon book, I think
<yorickpeterse> brixen: Nope, I did order http://computationbook.com/ though
<yorickpeterse> I'm slowly getting there, currently trying to grok why this example Python code does what it does
<brixen> cool
<yorickpeterse> https://gist.github.com/YorickPeterse/8be03367ea4102e23871#file-ll-py-L64 in particular this, I'm trying to see why this doesn't just use `table[svalue]`
<yorickpeterse> (this is from Wikipedia, the only sane non academic super-complex to read example I could find)
<yorickpeterse> * non super-complex
<yorickpeterse> errr dat engrish
<yorickpeterse> This is one of the areas where I wish I did actually pursued some kind of degree, perhaps it would've helped understanding all the darn formulas
<yorickpeterse> or maybe I should've paid more attention to maths during high school, instead of re-programming my calculator and playing games on it
<jc00ke> @yorickpeterse I haven't looked, but maybe one of these is decent? https://github.com/vhf/free-programming-books/blob/master/free-programming-books.md#compiler-design
<yorickpeterse> hmm
_whitelogger_ has joined #rubinius
slaught_ has joined #rubinius
heftig_ has joined #rubinius
benlovell has joined #rubinius
noop has quit [Ping timeout: 258 seconds]
<yorickpeterse> well shoot, I think I have an LL(1) parser
juergenb has joined #rubinius
<yorickpeterse> even though I only grok 80% of it
juergenb has quit [Client Quit]
arrubin_ has joined #rubinius
benlovell has quit [Ping timeout: 272 seconds]
brixen changed the topic of #rubinius to: 2.4.0 - http://releases.rubini.us/rubinius-2.4.0.tar.bz2 : logs - http://irclog.whitequark.org/rubinius
<brixen> looks like dnsimple is still getting ddos'd so dunno if people will actually be able to install 2.4
<yorickpeterse> Now I just need to figure out why this Python code uses an extra table for figuring out what rules to use
arrubin_ is now known as arubin
<brixen> dang, forgot to dedicate 2.4.0 to ez in the News file :(
<brixen> I'll put it in the github release
<jc00ke> @brixen I didn't know him but looked up to him and his passion. Considering going to his funeral, though I heard it was for friends and family only.
juergenb has joined #rubinius
arrubin has quit [*.net *.split]
slaught has quit [*.net *.split]
ssedov has quit [*.net *.split]
_whitelogger has quit [*.net *.split]
chrisseaton has quit [*.net *.split]
heftig has quit [*.net *.split]
evan has quit [*.net *.split]
slaught_ is now known as slaught
juergenb has quit [Client Quit]
chrisseaton_ is now known as chrisseaton
havenwood has quit [Remote host closed the connection]
<cremes> any good link explaining what happened to ezra? it was shocking to hear of his passing but i haven’t found any details. he was a young guy!
_whitelogger has joined #rubinius
_whitelogger has joined #rubinius
<yorickpeterse> (in ActiveRecord at least)
<brixen> thus, I need a repro :)
<yorickpeterse> haven't gotten one yet :<
arubin is now known as arrubin
pwh_ has quit []
GitHub147 has joined #rubinius
<GitHub147> [rubinius] brixen tagged v2.4.0 at 7a231cb: http://git.io/k6MtUQ
GitHub147 has left #rubinius [#rubinius]
<yorickpeterse> Right, now to get conditionals to work in this parser
<yorickpeterse> and repetition
<yorickpeterse> and then callbacks
<yorickpeterse> yay there goes my week
<yorickpeterse> Fucking Racc
Ori_P has joined #rubinius
benlovell has joined #rubinius
<yorickpeterse> wohooo
<yorickpeterse> I think I figured it out, sort of
<yorickpeterse> :D
<yorickpeterse> now it makes sense why that Python code used this "odd" way of figuring out what rule to use: conditionals
<yorickpeterse> e.g. for stuff like X | Y
benlovell has quit [Ping timeout: 264 seconds]
havenwood has joined #rubinius
johnmuhl has quit [Ping timeout: 258 seconds]
sferik has quit [Read error: Connection reset by peer]
sferik has joined #rubinius
johnmuhl has joined #rubinius
sbryant has quit [Ping timeout: 258 seconds]
sbryant has joined #rubinius
<johnmuhl> Does ruby-install not work with rubinius anymore? https://gist.github.com/johnmuhl/df58e40c1da12fd99275
<headius> johnmuhl: a number of sites are down due to dnsimple DDOS
<johnmuhl> Installing manually worked fine this morning so I don't think its a system issue
<johnmuhl> oh
<headius> brixen said something earlier about installs potentially not working
<johnmuhl> hmm but just now I did git clone…bundle install…rake install and that worked. Perhaps ruby-install uses some other source for the source
elia has joined #rubinius
johnmuhl has quit [Ping timeout: 258 seconds]
johnmuhl has joined #rubinius
<cpuguy83> johnmuhl: rubini.us is having issues for sure.
<cpuguy83> Happening to be building here.
dzhulk has quit [Quit: Leaving.]
<cpuguy83> johnmuhl: and yeah, it’s using releases.rubini.us
<cpuguy83> And I know rubygems was effected earlier today.
elia has quit [Quit: Computer has gone to sleep.]
elia has joined #rubinius
Ori_P has quit [Quit: Computer has gone to sleep.]
elia has quit [Quit: Computer has gone to sleep.]
havenn has joined #rubinius
havenwood has quit [Remote host closed the connection]
pwh has joined #rubinius