Index

Show enters and exits. Hide enters and exits.

06:57:25boyscoutAdjust checking for GCC version to build on Fedora 8. - a707475 - Brian Ford
07:01:27postmoderndamn people still run fedora 8 :P
07:01:49brixenpostmodern: yeah, right
07:01:55brixenlike, fedora 13 is out :)
07:02:13postmodernthats what im running on my netbook
07:03:41postmodernironically they now ship with openssl 1.0.0
07:03:54postmodernwhich breaks ruby 1.8.x and 1.9.1 in half
07:04:02postmodernif you try compiling them against the system openssl
07:04:10brixenugh
07:04:15postmodern1.9.2, jruby and i think rubinius compile just fine
07:04:17brixendo the ruby packages work?
07:04:24postmodernoh yeah
07:04:31postmodernfedora13 still provides ruby 1.8.6
07:04:37brixenlovely
07:04:41postmodernwhich i hate having to install, just to compile rubinius
07:04:48brixenI know :P
07:04:54brixenyou're near the top of my list
07:04:55postmodernrage furry
07:05:06brixenin fact, probably tomorrow I'll get 1.9.x building
07:05:10postmodernoh uh
07:05:35brixenwait, it is tomorrow
07:05:38brixenlater today :)
07:05:50postmodernnice!
07:06:33boyscoutAdded stub weakref.rb. Closes #368. - a49a7b8 - Brian Ford
07:18:59boyscoutCI: rubinius: a707475 successful: 3455 files, 13599 examples, 41163 expectations, 0 failures, 0 errors
07:27:05brixenhmm, I wonder if we should put a canary symbol in C exts when we compile and only load them if that symbol exists
07:27:18brixento avoid this problem of ppl loading MRI C ext is rbx
07:27:26brixens/is/in/
07:29:29boyscoutC-API specs for rb_to_int. - ad5af4b - Brian Ford
07:29:29boyscoutAdded rb_to_int. Closes #367. - 234f095 - Brian Ford
07:39:01boyscoutCI: rubinius: 234f095 successful: 3455 files, 13599 examples, 41163 expectations, 0 failures, 0 errors
16:01:55brixenmorning
16:02:14evanmorning.
16:03:05brixenso, add __getobj__ alias to WeakRef?
16:03:12brixen#370
16:05:13evansure
16:05:34evani wonder if anyone will report that WeakRef isn't a Delegate
16:05:40evani really don't want it to be.
16:05:50brixentell em too bad :)
16:06:26brixengoing to this talk this morning http://www.galois.com/blog/2010/06/11/tech-talk-introducing-well-founded-recursion/
16:07:12brixenevan: re #346, lib/io/nonblock.rb looks fine to add, lib/io/wait is a C ext
16:07:23evanyeah, i was looking at them.
16:07:25brixendo we want to rewrite wait.c or try to make it work?
16:07:33evanwelp.
16:07:49evanno one has requested it
16:07:53evanso lets just do nonblock.rb for now.
16:07:57brixenok
16:08:01evani don't know why they're in the same directory
16:08:04evanthey're totally unrelated.
16:08:14brixenheh
16:08:25brixenthey are IO-y or something
16:09:29brixenBrianRice-work: galois this morning?
16:09:43BrianRice-workbrixen, hm
16:10:24brixenBrianRice-work: I got conceptual mathematics, looks great
16:10:28BrianRice-workbrixen, I'll pass on this one. I'm probably too familiar with the principles
16:10:47brixenheh, yeah, not exactly an advanced topic
16:10:52BrianRice-workoh, that book should be a breeze for the most part
16:10:53brixenit's only 5 min away for me
16:11:02BrianRice-workhalf hour from here :/
16:11:28brixenCM is a lot more text-bookie than category theory for computer scientists
16:12:24brixenbut the extra hand-holding is appreciated at this point
16:12:37BrianRice-workok
16:12:53BrianRice-workit's kind of a prototype of a book it wants to be, math-from-scratch
16:17:28evanbrixen: i, hopefully, have this signal stuff sorted out.
16:17:40evanthere are so many moving parts.
16:18:14evanand the fact that you can't use a pthread_mutex / pthread_cond in a signal handler is the suck.
16:20:21brixenyeah, sounds crazy fun
17:24:46boyscoutCI: rubinius: 277cca2 successful: 3455 files, 13599 examples, 41163 expectations, 0 failures, 0 errors
18:23:58kronos_vanoHi everyone
18:26:30brixenhi kronos_vano
18:26:48kronos_vanobrixen, I find new case when Bignum#>> is wrong)
18:28:31brixenexcellent :)
18:36:19kronos_vanohm... it's known issue.
18:36:25kronos_vanobrixen, http://gist.github.com/439486 why ?
18:36:30kronos_vanoit's from rubyspec
18:36:38kronos_vanoIt's easy to fix that
18:38:43evanno
18:38:48evandon't change that.
18:39:09kronos_vanonp, but i want to know the reason
18:39:26evanMRI has a crazy boundary case there
18:39:35evanit will fail if the argument doesn't fit in a long
18:39:46evanso a very tiny subset of Bignums are accepted
18:40:01evanwe decided to have a easy, strict boundary
18:40:15evanthat was decided after fighting with that code a lot.
18:40:30kronos_vanook.
18:40:42kronos_vanobrixen, never mind
18:42:37brixenkronos_vano: hm, that commit should have an explanation
18:42:43brixenbut anyway, we can document that
18:43:12brixenkronos_vano: but rule of thumb, if I committed it to rubyspec, always double-check with me :)
18:43:23kronos_vano:)
18:43:54evan100% of deviates_on guards have a good story associated with them.
18:44:07evanbecause thats not a failure
18:44:11evanthats a deliberate decision.
18:45:00brixenI just checked the commit, I didn't explain in the commit msg
18:45:11brixenusually I do, and I'll try to in the future
18:45:28evanwe forgive you brixen.
18:45:38evanwe should powwow about pack
18:45:45evani think it's quickly becoming "the thing"
18:46:43kronos_vanoevan, you mean Array#pack?
18:46:53evanyeah
18:46:56evanand String#unpack.
18:47:21kronos_vanoI refactor one in ruby, but it is still slow
18:47:35evanbrixen and I have a solution.
18:47:39kronos_vanoragel?
18:47:39evanwe just need to implement it.
18:47:45brixenyeah
18:48:06brixenI can start on that today actually
18:48:15brixenI want to get 1.9 building
18:48:29kronos_vanobrixen, if you implement one of them I can implement another one.
18:48:32kronos_vano;)
18:48:54brixenevan: this cool? http://gist.github.com/439509
18:49:25brixenkronos_vano: I need to get the infrastructure in place, then we can implement them one at a time easily
18:49:32brixendoing the most important ones first
18:49:41evanwhy not call the prim method __setobj__ ?
18:49:52evanand alias it to object=
18:50:02brixenevan: sure, I was going with __object__
18:50:04kronos_vanobrixen, ok
18:50:05brixenI can change it
18:50:24evanthe inferfacing being what it is, just do the simplest thing.
18:50:25brixenI mean, I was going with the convention with __object__ vs __getobj__
18:50:44brixendo you want to change __object__ to __getobj__ ?
18:50:57evanno
18:51:00evanbecause we use __object__
18:51:09evanas I recall.
18:51:14brixenbut we could invoke_primitive there
18:51:18evannah.
18:51:21brixeninstead of wrapping it
18:51:22brixenok
18:51:24evanno no.
18:53:21brixenevan: http://gist.github.com/439509
18:53:46brixenalso, :weakref_set_object should not be a safe primitive, or should it?
18:54:05brixenI really need to document primitives
18:54:52evanthat looks fine
18:54:57brixenk
18:55:03evanthe safe prim stuff is not well used or documented.
18:55:10brixenyeah
18:55:11evani'm not positive it has much benefit
18:55:16evanso i haven't used it much.
18:55:22brixenok
18:55:30evanit just simplifies the glue code is all
18:55:35brixenI had to go figure out what + did
18:55:38evanbut it just eliminates one condition
18:55:41brixenI had forgotten
18:55:42brixenyep
18:55:58evanit's hard to see that one condition effecting much
18:56:02evanexcept in a tight loop
18:56:04evaneven then, it's hard.
18:56:05brixenright
18:56:11evanesp now that we've got the JIT
18:56:26evanwell, we had the JIT then
18:56:42evanmost of the pure prims (Fixnum#+, etc) are JIT custom logic now
18:56:44evanwhich is better.
18:57:13brixenyeah
18:59:01brixenI have yet to be able to reserve an iphone
18:59:18brixensomeone needs to introduce apple and at&t to the cloud :)
18:59:28evanoh oh
18:59:33brixenI even went to an apple store on the way to this coffee shop
18:59:35evanuse the iphone Apple Store app
18:59:36evanit works
18:59:43evanthe website doesn't.
18:59:44brixenI tried
18:59:48evanabby and I reserved ours
18:59:49evanoh ?
18:59:51brixenit took my info and just sits ther
18:59:56evanoh noes!
19:00:26brixenno confirmation or anything
19:00:38evan:(
19:00:39brixennow when I click on the iphone 4 button, nothing happens
19:00:42brixenheh
19:00:43brixenlame
19:01:31brixenthe punks at the store are hilarious
19:02:36brixen"yeah sorry dude good luck" in response to my suggestion that apple should have gotten the data from at&t and handled the whole transaction
19:03:19brixenalso "you're welcome to wait around here" when the reserve button fails to load a page
19:03:41evanhah
19:03:42evan:(
19:03:47brixenheh
19:04:22brixenI'm looking forward to some facetime... with steveo
19:04:36evantell him that perhaps webobjects is past it's prime.
19:04:41brixenheh
19:04:47Zoxcwhy would you buy a iPhone? =P
19:04:50evanand that webobjects shouldn't be apples core competecy anymore.
19:05:12brixenZoxc: because it kicks ass on every other device out there
19:05:39brixenZoxc: and because my subversive strategy is to continue buying apple to force linux to actually make interfaces
19:06:07brixenubuntu 10.04 is pretty good
19:06:55brixenhopefully they continue the apparent strategy of not trying to emulate Windoze and trying to emulate Mac instead
19:07:21brixennext up, get rid of menu-per-app horrid design crap
19:07:32evanok, think i'm ready to say that the new signal code is good enough.
19:07:50brixenzweet!
19:08:03evanbut thats all i'll admit to.
19:08:05evangood enough.
19:08:47ZoxcUbuntu needs less Mac and huge interfaces =P
19:08:52boyscoutConform WeakRef API to MRI. Closes #370. - 3fca490 - Brian Ford
19:09:29brixenZoxc: what exactly do you mean? what is a huge interface? Win7 start menu?
19:17:10ZoxcUbuntu/Gtk/Mac has huge fonts/interfaces
19:21:11boyscoutCI: rubinius: 3fca490 successful: 3455 files, 13599 examples, 41163 expectations, 0 failures, 0 errors
19:36:04BrianRice-workbrixen, quick review of the galois talk?
19:36:54brixenBrianRice-work: heh, you dissuaded me from attending :P
19:37:04BrianRice-workoh, that was not my intention :)
19:37:18brixenactually, I was most interested in seeing agda in practice
19:37:29BrianRice-workok
19:37:59brixenI tried to reserve an iphone instead, but failed
19:39:01BrianRice-workyeah, a co-worker is going quietly insane in that process.
19:44:08evanI guess I just got lucky.
21:18:47somebodyevan, So ruby-head and 1.8 wrong?
21:19:01evanyou mean your block ticket?
21:19:05kronos_vanoyes
21:19:05evanthey're not wrong
21:19:17evanthe default scope of methods in a script body is private
21:19:21evanthats what you're seeing.
21:19:35evanif you did that in a class body, the method would be public, since public is the default
21:19:50kronos_vanoblk = lambda { def a; puts 'a'; end }; klass = Class.new { blk.call }; klass.new.a
21:20:00evanexactly.
21:20:04evanyou're confusing yourself.
21:20:04kronos_vanorubinius outputs 'a'
21:20:08evani know.
21:20:13evanyou're making yourself confused.
21:20:34evanthe default visibility of a script is private
21:20:41evanthats why it doesn't work in 1.8
21:20:47evanthere is a bug in rubinius
21:21:02evanthe block at the script level is not seeing that it should private visibiity
21:21:12evani understand the issue
21:21:16evanit's tricky to fix
21:21:23evani'll work on it this week.
21:21:42kronos_vanois it compiler level issue?
21:21:51evanno.
21:22:02evanuntil very recently
21:22:09evanwe still had public as the script level visibility
21:22:14evanthat fix was hard
21:22:18evanso i know this is also going to be a pain.
21:36:16nicksiegerconfig.gems['sinatra'] by itself doesn't modify anything
21:36:24nicksiegerwhoops wrong ch
21:37:56evani forgive you.
21:38:03evanbesides, you won.
21:38:13evani hope start lording that over brian and carl soon.
21:45:19brixenthere was poor requirements gathering on my part in that contest
21:45:34brixenI thought I had to give the other guy time to respond :)
21:46:38evanheheh
21:56:49kstephensevan: I'm pretty close to having SprintfCompiler finished.
21:57:21kstephensWould you consider a similar technique for pack/unpack?
21:57:30evanmmm
21:57:34evanwe've got an idea for them already
21:57:41kstephenscool
23:18:37evanman these signals suck ass.
23:19:00brixen:(
23:21:16evanI thought I had it working
23:21:27evanand now it fails a really simple case that the process#kill specs used
23:24:06tarcieritony@virtualmac:~/src/gems/idtv (master)$ rvm use rbx
23:24:06tarcieriinfo: Using rbx 1.0.1 20100603
23:24:49evantarcieri: ?
23:25:02tarcieri:D
23:25:19tarcieriheh, sorry, just upgraded
23:27:27kstephensIn the past, I resorted to having all signal handlers append to a statically-allocated signal queue and poll the signal queue periodically in a safe/critical section. Kinda sucked but it worked.
23:27:50kstephensGets around the problem of what is safe to call in a signal handler.
23:28:50evanthats what i'm doing
23:29:01evanthe wrinkle is the ability to have the signal interrupt what is going on.
23:29:04evanwhich has to be supported.
23:30:20kstephenstrying to "deliver" the signal to the main thread?
23:30:29kstephensor an arbitrary thread?
23:30:46evanmain thread
23:32:37kstephensMaybe spawn a thread (when a signal handler is installed) to poll the signal queue and have it interrupt the main thread?
23:32:56evanyep
23:32:58evanthats what i'm doing :)
23:33:07evanit's still tricky.
23:33:38evani'm actually use a pipe+select trigger to the other thread
23:37:21kstephenswhat about using the exception fd_set in select()? Not sure how that would work on a pipe fd or be different than the read fd_set.
23:37:29evanFUDGE
23:37:31evantries something.
23:38:38evanif I just fixed it
23:38:40evanit's going to be funny.
23:38:44evanwe'll all have a good laugh.
23:38:50kstephensflush(fd)?
23:38:54evanhah
23:38:57evanthankfully, no
23:39:04evani'm using read/write(2)
23:39:13evanBUT you're close!
23:39:22evanBINGO.
23:39:22evanhaha
23:39:24evanhilarious.
23:39:46evanI should have just jabbed my eyes in with a breadstick instead
23:39:47evananyway
23:39:56evanthe test i'm using uses Process.fork
23:40:15evanand in the forked rbx, i restart the background query thread
23:40:20evanbut i forgot to recreate the pipe fds
23:40:27evanso it was sharing them with the parent
23:40:32brixenheh
23:40:34evanso the parent would send a signal to the child
23:40:47evanthe child would go "oh signal!" and write a byte to it's pipe fd
23:41:00evanat which time the background thread IN THE PARENT would wake up and go
23:41:06evan"um, huh? nothing to do."
23:41:27brixenevan: you should do a skit of that at next railsconf :)
23:41:41evanit's going to end with http://skitch.com/evanphx/n9bc6/cam
23:41:56brixenhah, I knew it
23:44:43evananyway, perhaps I've got it now.
23:49:02kstephensI always thought libc fork() should have had an at_fork() callback mechanism, like at_exit().
23:50:54evanthere is one
23:50:58evanpthread_at_fork()
23:51:20evaner, whats it called...
23:51:46evanpthread_atfork
23:55:53evanthough that function is a mega fail.
23:56:05evanit's arguments are pointers to functions that take no args
23:56:12evanso you have to do everything via global variables.