Index

Show enters and exits. Hide enters and exits.

00:00:03dgtizedhmm ctrl-c seems to be broken again somewhere mid spec run
00:01:45marcandreevan: Just to let you know, 1.8.7 is done (with the exceptions of Process#exec and GC#stress= which raise NotImplemented errors)
00:02:13boyscoutCI: ff156e9 success. 2683 files, 10346 examples, 32917 expectations, 0 failures, 0 errors
00:04:09brixenmarcandre: sweet
00:04:29marcandre:-)
00:05:33evanmarcandre: hurray!
00:05:45evanmarcandre: how are you sure it's done?
00:07:59marcandreWell, I've checked the list of changes twice
00:08:22marcandreThere are two methods that were missing from the list, actually.
00:08:38marcandreThree, if you count the undocumented Hash[]
00:09:02marcandreSo unless there are more surprises...
00:23:18evanmarcandre: hehe
00:23:18evanok
00:59:08evanrspec makes me cry to often
00:59:19evanthe specs should be EASY to figure out
00:59:20evannow hard.
00:59:56brixenrspec' specs or rubyspecs ?
01:00:04evanrspec specs
01:00:08evani'm running extlib's specs
01:00:12evantrying to figure out the crash
01:00:13evanit's going well
01:00:27evanbut i'm at the point where I need to figure out what the ruby code is expecting to do
01:00:35evanwhich is... not as easy as it should be.
01:00:44brixenah I see
01:01:37evanlike, wtf is
01:01:39evanaction { ... }
01:01:44evanis that a normal rspec thing?
01:02:23evanthis one spec seems to define it...
01:02:43evanwhy? no fucking clue.
01:03:02evanthese specs are...
01:03:03evanwow.
01:03:18evanif the intend was to make them completely opaque to the next guy
01:03:22evanmission accomplished.
01:04:18brixenit "is very hard to understand" do ... end
01:04:19evanNext on TNT: When good specs go bad.
01:04:29brixenheh
01:04:42brixensounds like a good jerry springer actually
01:05:28evanseriously
01:05:30evanlook at this: http://github.com/datamapper/extlib/blob/64dc233929d9549c40bf7c559cbd64b21b30e3be/spec/lazy_array_ spec.rb
01:05:58evanthis feels like they've composed an ever harder to understand testing layer ON TOP OF rspec
01:08:59brixenthat is... so wrong
01:09:03brixenmy goodness
01:09:52brixenwhy would you write a method that wraps one it block
01:10:03brixenthere are shared describes
01:10:30brixenbut then, extlib is pretty gross imho
01:10:32evanthis whole thing seems to be so they don't have to use return values
01:10:42evanie
01:10:46evanary = @lazy_array.dup
01:10:57evanary.should_be_kind_of(LazyArray)
01:10:59evanis that so hard?
01:13:55brixenit's really hard to conceive of code like this
01:14:07brixenin a way, it's nice people write it
01:14:15brixenotherwise I'd swear it was impossible
01:14:46evanyeah.
01:18:06evanthis code is..
01:18:11evanblargian.
01:29:22dgtizedI get a "not supported yet" somewhere in the middle of the spec runs with -Xjit.enabled -- I'm guessing this is intended?
01:29:59evanyep
01:30:13evanjust means the JIT hit a method it didn't know how to JIT
01:30:19evani'm just missing one thing
01:30:22evanto get that all done
01:30:28evanset_call_flags
01:30:31evanto support
01:30:36evanary[*a] = 3
01:31:40dgtizedk, just checking all was well -- other then that it works fine
01:32:04evanyay
04:39:55headiusanyone know llvm C++ API well?
07:00:55evandbussink: yay, finally found and fixed that LazyArray problem.
07:12:27boyscoutStub out ObjectSpace._id2ref - 609f6f1 - Evan Phoenix
07:12:27boyscoutBe much more careful about not changing obj_type_ - e2b55c6 - Evan Phoenix
07:18:49ddubnight everyone
07:18:52ddubfor whom it is night
07:19:03evannite
07:23:59boyscoutCI: e2b55c6 success. 2683 files, 10346 examples, 32917 expectations, 0 failures, 0 errors
16:50:27evanmorning.
17:05:07brixenmorning
17:10:34evanso, what should the JIT do when there is a fork()
17:11:05evanrestart the background thread in the new process?
17:11:26brixenseems reasonable
17:12:15evanok
17:05:01rueThere are some differences between platforms on how threads behave after a fork
17:06:18rueIt would probably be best to enforce that, plus do some type of restart for the background thread(s)
17:09:56rueCould either kill them with a warning, or maybe even raise. Technically I suppose it would be possible to replay the execution state but it seems of dubious merit
17:11:28rueI have no doubt around 50-75% of users who have more than one thread running when forking would :P
17:12:10rueThere is the question of system and ` though, I suppose
17:17:41rueSuch a waste for those, too
17:27:40sandalevan: another newbie question that google failed to answer for me.
17:27:49sandalIs Rubinius running on Windows?
17:28:16sandal(I absolutely don't have that need, it's just for my talk)
17:28:21brixensandal: not yet
17:28:25brixenwe plan to
17:28:36sandalbrixen: is there any concrete plan or is it just a goal for the future?
17:28:48brixenit may be possible to compile under cygwin now
17:29:08brixenthe concrete plan is to have a goal to run in the future :)
17:29:18sandalI can try it under msys and report back if you'd like
17:29:25brixensure
17:29:44brixenone issue will be getting rake to run
17:29:45sandalbut windows is certainly not *supported* right now, is that right?
17:29:50brixenright
17:31:13sandalbrixen: about that SomeClass#name= , should I ask on ruby-core as to whether that should be left undefined? If Matz says yes, it'd make a stronger case for Rubinius doing what it does now
17:31:31brixensure
17:31:39sandal(and if he says no, I'll contrib to RubySpec)
17:31:50brixenit seems reasonable to me that if you override a defined method, you get what you deserve
17:32:00sandalyeah, I think so too.
17:32:38sandalI just feel itchy because every other implementation I've tried doesn't fail.
17:33:06brixenright
17:33:21brixenfor the same reason MRI doesn't fail: they aren't written in ruby
17:33:27sandal:)
17:33:37sandalIt's a pretty interesting issue
17:40:12sandalbrixen: if it is undefined behavior, would it be possible to make it a little more friendly on the rubinius side?
17:40:24sandalso that attr_accessor :name would blow up with an error?
17:40:40sandalOr is that a slippery slope due to the 800 ways that name= can be defined? :)
17:40:40brixenpossible I suppose
17:40:45brixenright
17:40:53brixenit blows up as it is
17:41:03sandalwell, it blows up when you call it
17:41:10brixenyeah
17:41:18sandalI guess that's already okay
17:41:56sandalI really don't mean to push this issue. It's not that I think there's a problem with rubinius
17:42:08sandalI'm just uncomfortable with weird undefined behaviors in ruby :)
17:42:26sandalbut I guess that's the price that comes with power and flexibility
17:44:13brixenyeah, it is
17:44:25brixenmost languages would just disallow it entirely
17:44:38brixenbut the fact remains, you have to play nice with other code
17:44:49brixenand in rubinius, other code is often ruby
17:51:50sandalbrixen: For RubySpec, how do you guys figure out what behaviors are intentional and what are undefined?
17:51:57sandalJust ask matz whenever it's not crystal clear?
17:52:04brixenyeah
17:53:25sandalman, you guys really have your work cut out for you. :)
17:54:16brixensandal: haha yes, indeed
17:54:20sandalhttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/23593
17:56:06headiuswhy can't name= work?
17:56:51headiusit's just a method added/replaced on class
17:56:57brixenheadius: it's defining Module#name= and there is already a Module#name
17:57:02headiusbrixen: so?
17:57:32headiusso store it in something else
17:58:11headiuswell, I'm not trying to be a dick, it just seems arbitrary
17:58:14headiusthis is ruby
17:58:17headiuspeople do this stuff
17:58:28headiusif it's not Class.name= today it will be something else tomorrow
17:59:25headiuswell, I would presume making monkey-patching of code methods undefined on a per-method basis is not the way to go
17:59:33brixenthe point is asking what is expected if you override methods that exist in Ruby itself
17:59:59headiusyou mean like the oft-debated replacing of Fixnum#+ that everyone adamantly defends?
18:00:07brixenin this case, the way attr_accessor works steps on the existing Module#name
18:00:23headiusit seems like we've been though this all a dozen times
18:00:30headiusbuyer beware, certainly, but it should work
18:01:15headiusI'm not being gruff
18:01:16sandalA problem I see here is that it doesn't necessarily need to appear so evil
18:01:25sandalas in my example, a subclass or anonymous class still breaks
18:01:45headiuswell, that's not my fault, I'll add a smily to ever sentence :)
18:01:51sandalI feel like perhaps name should have a __name__ used internally
18:02:02sandal(In Ruby in general)
18:02:06headiusso perhaps we agree that name isn't itself special ;)
18:02:09brixenthe fact that it works in MRI is happenstance, I would dare say not intended
18:02:19headiuswell, MRI doesn't store name in an ivar
18:02:22headius:)
18:02:25sandalBecause I usually don't think of changing a method on an anonymous subclass should break
18:02:29brixenthe fact that it works in other impl is for the same reason as it works in MRI
18:02:44sandalBut since name has a special meaning, I understand.
18:02:48brixenbecause there is a big separation between the language and it's implementation
18:02:57brixenit's fair to explore the issue
18:03:00sandaljust, we've managed to do better about things like id and send
18:03:02brixennot just say, it should work
18:03:03headiusso if it breaks on other impls that do store it in an ivar that seems to indicate that the other impls are divergent, and would have to cope with things like this, no? :)
18:03:15brixendivergent how?
18:03:32headiusbecause the ivar table contains different things than in MRI
18:03:45headiusso people expecting MRI's ivar table contents would see different behavior
18:03:48headiusas in this case
18:03:58brixenthe ivar table is a symptom in this case
18:04:01brixenit's not the issue
18:05:23headiusperhaps I've misunderstood the intent of sandal's post?
18:05:42brixenthe fact is, MRI and other impl are quite limited in how you can monkey patch them
18:06:00headiusI have a knee-jerk reaction when someone says this behavior should be "undefined" because rbx is implemented in such a way that it breaks some piece of code that works on all other impls
18:06:05brixenso it's a little odd to say, I want to monkey patch however I want and I want it to work
18:06:30headiusit just seems arbitrary in this case
18:06:48brixenbecause in fact, you can't monkey patch a lot
18:06:50headiussandal's post seemed to suggest that
18:07:10headiusbut perhaps just as one among many possible scenarios
18:07:17sandalheadius: I don't know what the right behavior is.
18:07:26sandalHonestly, I think it should work like send and id
18:07:29headiusI'll say it this way: I think it should work like MRI
18:07:32brixenthe question is: what can I expect if I do this
18:07:34sandal(err object_id)
18:07:57brixenif the answer is: you can expect nothing in particular, then the behavior is undefined
18:07:57headiussandal: I don't feel like name is a particularly crucial method
18:07:59sandalit'd be nice if there were a lower level __name__ method or something that everything depended on
18:08:05brixenyou can match MRI, but you don't have to
18:08:05headiussince Class.new classes don't have a name
18:08:33brixensure they do, it's ""
18:09:14sandalheadius: I'm not that invested in it. I wanted to confirm whether or not it was an undefined behavior for the purpose of my talk.
18:10:02sandalBecause I was about to say one thing dangerous about using any alternative implementation is that you need to be aware of what is defined behavior in ruby and what isn't
18:10:07headiusI sympathize, honestly
18:10:19brixenheadius: keep in mind that if you want to pursue your dream of rbx on jvm, you would deal with these issue eventually
18:10:28headiuswe've had to change more things than I can count to be compatible, a lot of them uglying jruby's core
18:10:30brixenheadius: so, you may have a different tune than it should work
18:10:34sandal(which isn't any of your faults, it's the consequence of building a spec based on an implementation)
18:11:25headiusbrixen: for three years we've been blindsided by these sorts of things...trust me, I've had to develop a thick skin
18:11:53brixenheadius: well, to me that suggests a more thorough investigation than 'it should work'
18:12:03brixenbut that's just me
18:12:15headiusis this something they're defining on Module or Class?
18:12:30headiusif it's defining it on Class it's just hiding the Module version
18:12:32sandalevan: not on Class.
18:12:43sandalon an instance of Class
18:12:55sandal(anonymous)
18:13:06headiusif it's actually replacing the existing Module.name and .name=, I don't see that it should break anything but it's obviously questionable
18:13:07brixenit's a class, no different than Array
18:13:17headiuser, well not replacing .name=, since that doesn't exist
18:13:26sandalevan: correct
18:13:40headiusit seems like at worst what would be expected is that it would break all access to existing Module#name
18:14:02sandalsomething like: obj = Class.new(Test::Unit::TestCase); obj.extend(ClassMethods)
18:14:03headiusI guess I'm only a little surprised that doesn't break anything, but it's certainly weird
18:14:30headiusI think several of us have complained about the fact that assigning a nameless class to a constant sets its name
18:14:42headiusthat's a side effect of not having real access to the class's name value
18:16:20headiusand maybe this will sound gruff, but this is exactly the sort of challenge you guys are going to keep facing...having a ruby core means people can do things like this that totally hose your kernel
18:16:36headiusa ruby core is obviously a blessing and a curse
18:17:32headiusbut I've said my piece...I just didn't want this to be the start of defining certain core monkeypatching as "undefined" because it breaks something in rbx
18:17:53headiuscertainly
18:17:58headiusand we've pushed back together on several things
18:18:17headiusI could still be convinced, but on this case I don't see where there's real harm in letting this work like MRI
18:18:26sandalwow, since when does rspec thank me for downloading it?
18:18:29sandalthat's special
18:20:26headiusso here's a different question
18:20:26headiusif we decide it should be allowed, should we start spec'ing these cases?
18:20:26headiusI guess I'm wondering in general about how far rubyspec should go
18:20:26brixenyeah, it should
18:20:26headiusit seems like this should go in
18:20:26brixenif it's a defined behavior of mri, it should be in rubyspec
18:20:46headiusI was going to be snide and suggest we add a rubyspec that blows up when you have hash args in the method definition
18:20:59brixenevan: alias_method :name, :my_name :P
18:21:01headiussince it technically should be a syntaxerror on any impl other than macruby
18:21:21headiusbut I don't know how far we go specifying error cases, and adding just this one would obviously be mean
18:21:42brixenheadius: that's what deviates_on is for
18:22:28headiusyou could just make it all hideous with __ everywhere
18:22:38brixenthe use in this case of #name is lame anyway, it's not a name it's a description
18:22:42headiushah
18:22:59headiusno, I meant that def a(foo:b, bar:c) should be a syntaxerror
18:24:31sandalBut if someone says my_class.__name = "Foo", they deserve to be punched in the face
18:24:44headiusright
18:24:52headiusyou'd have to be going out of your way to break it
18:25:29rueheadius: Did you see the merbist article? :/
18:25:41headiusrue: inspirational, truly
18:25:42sandalBTW, folks asked me the other day about MacRuby 0.5 and Prawn's examples / tests.
18:25:52sandalIt just totally doesn't work at all
18:25:56sandalMany missing stdlibs :-/
18:26:10headiuswell, that's not surprising...it's a very partial impl so far
18:26:21sandalThen how the fuck is it the fastest Ruby ever?
18:26:33headiusthat's an excellent question
18:27:11sandalsighs... I've been getting really mad writing this talk. Not because of anything you implementers have done
18:27:21sandalbut because of what I've read from random people
18:27:43sandalSeems like everyone likes to consult the magic 8-ball and act like it is fact
18:28:35headiusat any rate...I don't really care all that much about Module#name because whatever's decided won't affect jruby
18:29:29headiussandal: I think in macruby's case there's a small group of really vocal advocates hyping it absolutely to death
18:29:47headiusnot really anyone that does day-to-day dev either, which is sad
18:30:00sandalIt's a shame, because as a result of that hype, I've been going on a wild goose chase looking for something positive to say about it
18:30:07sandalthere are good things I've found
18:30:14headiuswell, be sure you don't say something bad ;)
18:30:15sandalbut buried under a mountain of unfounded hype
18:30:21headiusI still have the scars
18:30:36sandalhah, that's how I feel about this whole talk. I didn't know what I was signing up for :)
18:30:47scooprwhat's your talk?
18:30:56sandalBut to both JRuby and Rubinius credit, I have mostly all good things to say
18:31:17sandaland MacRuby I'll be nice to as well, just I'm totally not into the "Let's get excited about everything all the time" attitude
18:31:47sandalscoopr: http://www.goruco.com/speakers.html
18:31:53headiussometimes I look back at the past three years and wonder whether I should have been using Groovy
18:32:01ruesandal: There are a bunch of easy solutions to this particular problem, obviously, on both sides
18:32:03scooprnice
18:32:15rueNot many easy /reusable/ solutions, though
18:32:20lopexgroovy!
18:32:24headiuslopex: :)
18:32:38sandalrue: that particular problem isn't that important.
18:32:49lopexheadius: lets perform global personal rolback
18:32:55lopexer, rollback
18:33:26sandalBut seriously, a big problem is trying to define what the fuck Ruby is anymore
18:33:41sandalI'm not of the opinion it needs to be one, centralized thing.
18:33:41rue"Anymore"? :)
18:33:45lopexdisease
18:34:06sandalWell, I felt like when I first started Ruby in 2004, at least in the practical sense, Ruby was Ruby
18:34:12sandalwhatever the latest stable release was
18:34:19lopexhaha
18:34:42sandalbut even within core ruby, there are now 3 distinct languages.
18:34:51brixensandal: the fact that ruby doesn't know what ruby is does make it a tidbit harder for the rest of us
18:34:58sandalI'm edging towards my definition of Ruby....
18:34:59lopexand macruby introduced another one
18:35:13sandalIt's basically anything that passes an idealized version of RubySpec that is 'complete'
18:35:52sandalI don't care :)
18:36:24sandalThe thing is, we need an operational understanding of what Ruby means, otherwise, you implementer folks will be chasing your tails forever
18:36:42brixenwell, and so will users in fact
18:36:46headiusI won't do this forever :)
18:36:51brixenyou write your code expecting it will run
18:36:55sandalright, I'm trying to suggest that these issues matter to users
18:37:05sandalIt goes all the way down the chain
18:37:36sandalYou know how much it pisses me off that just because someone wants to use Object#tap I get complaints about 1.8.7 incompatibilities in my libs I maintain?
18:38:04ruesandal: Here is my reading: Module#name= is intentionally missing, ergo Module#name should always be the "real" name
18:38:47sandalrue: you're still on that, eh? :)
18:39:04rueWell, working on a pattern for solvin
18:39:07rueSolving*
18:39:54rueSo redefining #name could cause problems
18:40:21headiussandal: we have two categories in our bug tracker for 1.8.7 and 1.9
18:40:37lopexand stable
18:40:39lopex:)
18:40:45sandalheadius: That's not really what I'm getting at.
18:41:37headiuswell, I mean we have two categories...because there's enough reports we just have to shunt them somewhere
18:41:49headiusit's a nuisance until we get 1.8.7 support in
18:42:09sandalI guess what I'm saying is that ruby-core creates problems that aren't easily seen by users
18:42:14headiusand then people may moan about any 1.8.6 breakage (though I haven't heard any concrete reports of breakage in a long time)
18:42:26sandalbut are blindingly clear to maintainers and implementers
18:43:02sandalSo to be honest, I don't particularly care about ruby-core for Ruby < 1.9.1 anymore
18:43:32sandalI think JRuby is likely a better Ruby 1.8.6 than MRI, or will be over time :)
18:44:03sandalAnd probably true of Rubinius as well, over time
18:44:17sandalevan: yeah, I think that's pretty obvious
18:44:26sandalBut this isn't obvious to users.
18:44:42sandalyeah. syntax incompatibilities, yikes
18:44:59lopexwe've gone through that
18:45:07lopex(discussion)
18:45:26sandalMy final message though is ultimately that people are going to be forced to migrate to Ruby 1.9 if they want growth
18:45:41sandalor there will be a huge divide
18:46:01sandalThe problem is, 1.8.7's existence has caused some maintainers to say "I'm dropping support for 1.8.6"
18:46:10sandalBut others... "I'm not supporting 1.8.7"
18:46:31sandalcombine that, and library wise you get a clear divergence moving forward on 1.8
18:47:01dgtizeda long time ago in a time just after fortran there was one lisp, then they multiplied, then there was the common lisp standard, and then there was scheme
18:48:06sandalI guess what I'm saying is you're looking at two languages now. and in between those two languages, you have a disfigured zombie language
18:48:15sandal(1.8.7+)
18:48:32dgtizedI'm pretty sure it's the same story for smalltalk, and it's definitely the case for C and C++ to this day in terms of compiler specific language changes
18:48:54sandalOkay, so be it. But when do we stop pretending we can unify them?
18:49:28dgtizedmy point is simply that we can try our best, but historically languages diverge -- so we can try to go towards a set of standards, and let things flop around different ways along the fringe
18:49:33brixenwell, it's not that hard to unify them
18:50:06sandalbrixen: that's right, it's basically easy. But it requires serious discipline
18:50:08brixenyou just need a definition and a way to check it
18:50:13headiusI don't really understand who is the target market for 1.8.8
18:50:22headiuswhy wouldn't those people just move to 1.9
18:50:24dgtizedbrixen: not _technically_ hard, or _socially_ hard?
18:50:33sandalheadius: FUD about m17n
18:51:20sandalwhich is partially justified because it forces even those who believe all programs should be written in and speak only AMERICAN to understand the m17n system
18:51:26sandalsince it interferes with binary processing
18:51:56headiusyeah, m17n isn't perfect, but it worked out better than I expected
18:52:03headiusat least from an API/usability standpoint
18:52:05sandalOh, I'm actually happy with it.
18:52:18headiusit's devlishly complicate behind the scenes though
18:52:20sandalIt's just that it will undoubtedly break code whether or not you actually need charset support
18:52:36sandalthis is why zombie ruby exists
18:52:45sandalfor those who want 1.9 without the m17n
18:53:11sandaland since YARV isn't nearly as fast as people thought it would be a few years ago
18:53:27sandalthe case for moving is less compelling
18:53:30sandalevan: Ruby 1.8.7+
18:54:10sandalRight. the m17n system will never be ported to MRI
18:54:11sandalAFAIK
18:54:12brixenenumerators and hashes
18:54:16brixenyay
18:55:05brixenand various other bits, but don't you worry your prettly little head about those :)
18:55:41brixen:D
18:55:47brixenwe have work to do! :)
18:56:17brixenException#to_str is being removed in ruby2
18:56:33sandalevan: People don't want to migrate to Ruby 1.9 because they don't want to change their app to work with the m17n system
18:56:44brixenwell, you could want the Exception to act like a string
18:56:46sandalso these feature backports let them touch Ruby 1.9 without having to do that
18:56:54brixenbut now that we have it, why remove it?
18:57:19sandalevan: Either do I.
18:57:56sandalHonestly, I think that these releases exist to appease whiny masses of non-hackers
18:58:43sandalI'm just theorizing here
18:58:58sandalI'm trying to come up with a reason for 1.8.7 to ever exist
18:59:21sandalAnd sadly, that's the best I've come up witth
18:59:40sandallots of features?
18:59:50sandalwhoops, here are hundreds of features
19:00:08sandalthat sounds more like a giant oil spill to me
19:01:00sandalOkay, but there is still a fundamental problem there.
19:01:23sandalIt seems amazing to me that every six months or whatever a bump of the tiny version number means "Oh, basically, a new API"
19:01:53rueWell, it is only a problem if you assume the changes are backward-compatible
19:02:00sandalIf that's the case, and the trend continues on 1.9.x, we need to be prepared to treat Ruby less like a programming language and more like some random open source project
19:02:11sandalrue: it's a problem for library maintainers.
19:02:20ruePrevious to 1.8.8, the idea seems to have been that all changes could conceivably be monkeypatched to earlier versions
19:02:36sandalIf I use any new shiny feature in Prawn, I force all my users to update their Ruby
19:02:50rue(Or provide a patch)
19:03:02sandalor I support various parallel versions, creating a huge maintenance headache for me
19:03:27sandalRight now we do basically provide patches for the few 1.9 features we use that aren't present in 1.8
19:04:52sandalIf this is the model we're going to work with, so be it
19:05:00sandalbut I should be able to do gem update ruby
19:05:15sandaland gem "ruby", "=1.8.6"
19:05:27sandal(Not necessarily RubyGems, but you get what I mean, hopefully)
19:05:44sandalThe bottom line is that since our infrastructure doesn't support that, it's nasty.
19:06:02sandalPackage managers on distros don't keep up, etc
19:07:31brixenI would say there are 2 main issues: ruby svn head means "I haven't gotten around to merging this in yet", there is no real dev branch
19:07:48brixenand 2, there is no way to rigorously check that a change does not affect the API
19:08:20brixenso there is no good way to release "bug fixes" that only fix bugs but do not change any APIs
19:08:47headiusin yarv's defense, they were faster a few years ago
19:08:55brixenif there were a real dev branch, you could plan releases, even roadmap them, with very explicit API changes
19:08:55headiusruby compatibility is a harsh mistress
19:10:00sandalheadius: understandable. I think it's a natural progression.
19:10:24sandalheadius: It's that the same hype mill convinced people that YARV was made out of cheetah blood
19:10:33headiusand I suppose another defense of ruby-core is that there's practically nobody paid to work on any of those branches
19:10:48sandalbrixen: Does ruby-core integrate RubySpec?
19:10:53headiusI think there's only a few people paid to work on ruby at all
19:11:02brixensandal: there's a makefile rule for running the specs
19:11:17brixensandal: which says nothing about whether they are actually run
19:11:22sandalheadius: Yeah, to be honest, I feel much better supported in the alternative distros simply because there are people around invested in it
19:11:58sandalIn an ideal world, users would understand that if they want a consistent experience, they could look at a comparative feature battery of the rubyspec on a website
19:12:10sandaland see which implementations pass what, at any given release
19:12:25sandalinfrastructure wise, this is something that could be built, I imagine
19:13:21sandalBasically, I envision a matrix with the major Ruby implementations on it, and red/green for every class and method
19:13:29sandalyellow for missing specs
19:13:36brixenwhat would be pretty ginormous
19:13:41ruerubyspecresults?
19:15:30sandalit'd need to be three dimensional though
19:15:46sandalby version number
19:15:54sandal(1.8.6, 1.8.7, 1.9.1, etc)
19:16:23sandalIf I had that list as a library implementer, I could find out what functions have an agreed upon definition
19:16:38sandalSure, I'd run into false-positives sometimes
19:16:49sandalbut I could contribute to the RubySpec to fix that
19:18:07brixenit would be simpler to just show failures
19:18:51sandalbrixen: sure, actually, it'd be nice to just type in Class#method and get back a report
19:19:33brixenyeah, data driven
19:19:47headius81 files, 890 examples, 2484 expectations, 1 failure, 2 errors
19:20:03sandalIt'd be nice to be able to pull up the actual specs, too
19:20:07headiusmacruby's frozen specs (plus their own specs)
19:20:23sandal(or a link to them)
19:21:00sandalI just feel like we could use this test-obsessed culture to provide a central definition of Ruby, even if its heterogeneous across version / implementation
19:22:25brixensandal: mspec can emit results in yaml format, so we can easily build that
19:22:40sandalMaybe it's time to abandon old ways of looking at language definitions
19:22:48brixenwe could also explore using test-anything-protocol rather than yaml
19:23:17sandalMaybe we can say "Ruby changes fast and isn't necessarily unified, but here is exactly where it differs"
19:23:38sandalI think that could be pretty revolutionary, honestly.
19:23:47brixensandal: I believe it is better to apply pressure to make it consistent
19:23:58brixenagain, all you need is a precise definition and a way to test that
19:24:06brixenit's not so hard to be consistent
19:24:15sandalbrixen: I agree
19:24:22sandalbut the pressure is implicitly implied here
19:24:23brixenit doesn't benefit anyone to have confusion
19:24:26sandalerr
19:24:28sandalapplied
19:24:37brixenso, make it explicit ;)
19:24:44brixenshame is a great motivator
19:24:47sandalNah, I mean it comes from this
19:24:54sandalI look up Class#method
19:25:01sandaland I see it green across everyone but Rubinius
19:25:11sandalI'm absolutely sure that I'll come in here and say
19:25:16sandal"Guys is this an accident?"
19:25:20brixenyeah
19:25:30brixenbut you could remove the looking up part
19:25:34brixenand just show what fails
19:25:52sandalI think that's a possible future goal
19:25:59brixenthat is effective and at a glance
19:26:04sandalbut right now your idea of a consensus is too pie in the sky
19:26:13sandalIt doesn't exist.
19:26:34sandalI think it's necessary to show the inconsistencies first
19:26:43brixenthere's a lot of consensus among the alt impls
19:26:55sandalTrue.
19:27:08sandalBut I guess what I'm saying is it'd be beneficial to see the data
19:27:31brixenI agree, just saying showing only the failures is manageable information
19:27:43brixenyou can assume the rest pass or are false positives
19:28:08sandalI see where you're going with this. I think that's primarily an interface concern
19:28:13brixenyou can't know the false positive until you have a bug report and realize there is no spec for this
19:28:22brixeninformation desing
19:28:26brixendesign
19:28:36brixenanyway, this laggy irc is pissing me off :)
19:29:18sandalSure, though if tests for a method don't exist, you definitely want to show that
19:30:17headiusprobably also important to remember that rubyspec doesn't necessarily show what *won't* work on a given impl
19:30:20headiussince it's not complete
19:30:35headiusI'm sure we pass all the openssl specs, for example :)
19:30:54sandalheadius: True. That's why I think no tests should be a negative result
19:30:59sandal(Or small tests)
19:31:09sandalAt least, you should easily be able to inspect what the tests are
19:31:12headiusyeah, hard to quantify it I suppose
19:31:28headiusif openssl passes with a half-dozen assertions, it's probably not complete
19:32:16sandalJust allowing inspection of the specs easily solves most of this. You could have reports of methods which are not covered at all, methods which seem to have very light coverage, etc
19:32:40sandalI guess the value of all of this would be that users and library maintainers could get a sense of just how well defined a given function is
19:33:05sandalThe purpose is not for a seal of approval, but to define a level of trust
19:34:10sandalas a maintainer, if I could easily pull up the specs for openssl (without having to dig for them), if someone reported a JRuby related openssl issue for one of my libs, I could say... "Go write some specs, and make sure they work on JRuby"
19:34:31sandalSure, definitely not a silver bullet because at the end of the day, someone needs to do real work
19:34:59headiusyeah, makes sense...the trust aspect is definitely one that's missing right now
19:35:05sandalBut this sort of resource might lower the barrier to entry, and be a good gateway drug for getting people involved in actually writing specs
19:36:07sandalheadius: for example, when people complained about JRuby issues with TTF embedding in Prawn
19:36:22sandalMy response was "go away, JRuby not supported. Let me know if you find out what's wrong"
19:36:33headiusheheh
19:36:46sandalWhere if this resource existed, I might have looked through the methods I was using and said "Looks like a problem in foo()"
19:37:52headiustbh application-breaking compat issues are really rare for us now, so usually it's just something no library has ever tested
19:37:57headiusno library/testsuite
19:38:08headiusbut that underscores the difficulty of establishing trust
19:38:13headiuswe don't know what we don't know
19:38:18sandalanyway, I should probably stop monopolizing this channel. ;)
19:38:50sandalI just really want to be able to answer that question of "What's Ruby?"
19:39:02sandalAnd I think that just being able to clearly see the scenery would help
19:40:41sandalheadius: but honestly, I think that you should RubySpec out things like the macruby hash syntax :)
19:43:34headiushah
19:43:36headiusI cannot
19:43:39headiusI'm already on the blacklist
19:48:55rueTsk
19:48:59rueIt is the iBlack list
19:49:39sandalevan, headius, brixen, et. al. is this idea interesting enough where you'd participate if it existed?
19:49:51sandalI may try to seek funding for the project and go ahead and build it
19:50:23headiussandal: I will contribute a portion of my copious spare time :)
19:50:33headiusbut yes, I'm definitely interested
19:52:33sandalCool, I'm going to bug my work about it then (and/or RubyCentral and the community in general)
19:53:23sandalI am totally out of my depth here, but I really believe in the idea. So long as I can get technical support, I'll try to clear the time for it
19:53:47sandalevan: I assume this is something EngineYard could donate hosting for, right?
19:54:06sandalgiven more details on what I actually hoped to do.
19:54:43sandalDuring development I could just use my own VPS but obviously I want to turn this thing back over to the community and have it hosted somewhere I don't need to babysit
20:19:11brixensandal: EY is already hosting rubyspec.org, I don't see why it couldn't be integrated
20:19:19sandalbrixen: awesome
20:19:44sandalI just talked to my work, and they basically said I can take some of my paid time to work on this, and that they'd donate some dev hours to it too
20:19:59brixennice
20:20:22brixenyou should try getting in touch with ryan lowe, the guy who started rubyspecresults.org
20:21:01brixenhe's in this channel sometimes, or I can email him
20:21:08sandalbrixen: interesting, please email him and CC me
20:21:15sandalgregory.t.brown at gmail.com
20:21:18brixenk
20:21:48sandalrubyspecresults is basically the end result output?
20:22:52brixenit's very alpha
20:23:08brixenthe idea is to accept submissions from bots and present the data
20:23:15brixenit could have search etc
20:23:23brixensandal: do you go by Greg or Gregory?
20:23:44sandalit's interesting. I really want to have a lot deeper functionality than that, though
20:24:17sandalbrixen: I always go by Greg informally, but don't like when people write Greg Brown because of data integrity issues :)
20:24:25sandalSo Greg if one name, Gregory Brown if both
20:24:52brixenheh, ok
20:29:07brixenhrm, it shouldn't
20:30:12headiusevan: what exactly would be the purpose of a ruby_exe that runs something multiple times? :)
20:38:32brixenugh
20:44:06sandalhah, I just got permission from my girlfriend to do this RubySpec web project :)
20:44:15sandal(probably more important than permission from work)
21:19:04rueevan: Trying to let the threads live through fork()?
21:27:21rueOn error?
21:36:28brixenthe dir creation method could rm the mock dir tree before it creates it
21:36:38brixenor we can have every spec create and remove that tree
21:37:16brixenhm, actually, it does attempt to remove it first
21:37:32brixenevan: what is the specific failure?
21:39:00brixenthat must be a specific spec
21:40:52brixenlooks like just the Dir.rmdir/.unlink specs
21:41:34brixenthese are just crappy specs
21:41:44brixenthey don't even use before/after actions
21:41:58brixenor put stuff in tmp() dir
21:59:19boyscoutFix race condition in Process#kill specs - dfc6a94 - Evan Phoenix
21:59:19boyscoutHealthy living through better thread management - 0c8eb66 - Evan Phoenix
21:59:57brixensweet
22:00:19boyscoutCI: Build 0c8eb66 failed. http://ci.rubini.us/rubinius/builds/0c8eb66455257d3e3eded68c99d0040901abbb0d
22:05:17boyscoutFix conditional includes - 410683c - Evan Phoenix
22:14:39boyscoutCI: 410683c success. 2683 files, 10346 examples, 32917 expectations, 0 failures, 0 errors
22:15:36boyscoutAdd a SpinLock to Roots - 1df02d8 - Evan Phoenix
22:16:12rueMm, Darwin's fork() retains threads, right?
22:19:34slavadarwin's fork() does not keep threads afaik
22:19:38slavathe new process only has one thread
22:19:39rueMm, should test it...the man page does not mention it in its "differences" listing
22:19:45slavathis is because exec() does not work in a process with mor than one thread
22:19:53slavaso if fork() cloned all threads, you'd never be able to exec() :-)
22:21:45rueI meant the preamble in man 2 fork
22:22:15rueBut I just misread the vm_fork() changes, thought it was unpausing it in the child (which would be pointless)
22:23:00rueYep, I see it now. Have to add some intensity to the green of my #defines
22:24:17rueComic Sans
22:25:11rueYep
22:25:27rueGoogle Wave really does look stupid
22:25:31boyscoutCI: 1df02d8 success. 2683 files, 10346 examples, 32917 expectations, 0 failures, 0 errors
22:27:07rueHopefully we can keep the #defines to a minimum...I do not remember which lib it was that I was reading through where each function had 2-3 different conditionals for 3-4 different implementations
22:28:16slavamy new vm has a few more #defines than the last one, because I've been adding #define FACTOR_DEBUG ... assertions here ... #endif
22:28:39rueEek, dwarf exception handling :/
22:33:07headiusevan: solaris has "forkall"
22:33:10headiusI've never used it
22:42:21boyscoutFix up Dir.rmdir/.unlink specs. - b6c8978 - Brian Ford
22:42:31brixenevan: those should be a little nicer
22:42:40brixentell me if you still have issues
22:43:05brixenat some point, it's pretty hard to automatically clean up from segfault-type exits
22:45:01brixenyeah, these try to do that now
22:45:21brixenyep
22:48:41sandalbrixen: matz says that Class#name= should be defined to work as is
22:48:51sandalbrixen: want a spec for that?
22:49:01sandalAs is in MRI
22:49:10sandalsee ruby-core
22:49:18sandalNo... letting you set it
22:49:36rueSent a clarification question...did not seem he had given it full thought
22:49:45sandalrue: I think that's probably right
22:49:51sandalbut evan he says "I expect Rubinius to work as others, so I choose 1)."
22:50:52sandalwhoa, weird. *but*
22:50:58rueThe lib uses #attr_accessor
22:51:04sandalIn the case that I showed, the accessor works
22:51:05rueSo it overrides #name, too
22:52:07sandaloh, because of the issue you mentioned
22:52:13sandalthat the names are not stored in ivars
22:52:28rueevan: Ah, yes, I see what you mean. I asked that question in a different manner
22:52:32sandalthis clears up the point a lot for me now
22:52:44sandalI wasn't getting it fully before.
22:52:57sandalHopefully he'll provide some clarification on that
22:54:31sandalthe use case was attr_accessor, not writer, but then there is a mismatch, for sure
22:57:08dgtizeddoes anything actually use @name in the module?
22:57:25dgtizedor could you just define a method that returns the static name?
22:57:44rueHow does it find out what the static name is?
22:59:03dgtizedset_name_if_necessary?
23:11:41ruePretty sure that still needs a name provided