Show enters and exits. Hide enters and exits.
| 02:45:43 | krainboltgreene | Woooo. Installing rbx. |
| 06:24:06 | robgleeson | hey, can anyone confirm that FFI(0.6.3 from gemcutter.org) is working on rbx 1.0.1? |
| 07:08:33 | dbussink | robgleeson: no, ffi can't work |
| 07:08:41 | dbussink | and never will, since rbx has it's own ffi |
| 07:08:50 | dbussink | which needs to be updated to match the ffi gem's api |
| 07:08:54 | dbussink | but that hasn't been done yet |
| 07:09:20 | robgleeson | dbussink: yup, thanks, i had filed a ticket in the tracker since i posted my first message ;) |
| 07:09:26 | robgleeson | that's fine, I'll just need to wait :) |
| 07:10:40 | dbussink | robgleeson: we welcome any work to get it up to date though ;) |
| 07:13:03 | dbussink | robgleeson: ah, i see evan already replied to the issue too |
| 07:13:39 | robgleeson | yep :) |
| 17:44:32 | stockholm | hi |
| 17:45:20 | evan | hello. |
| 17:45:31 | stockholm | i saw this: http://blog.bitfluent.com/post/27983389/git-utilities-you-cant-live-without |
| 17:45:44 | stockholm | and am especially interested in the rake part |
| 17:45:58 | evan | stockholm: mmhmm? |
| 17:45:59 | BrianRice-work | hg-git is the best thing you can do if git doesn't make sense to you |
| 17:46:14 | BrianRice-work | there is no way to fix the git UI other than to reject it |
| 17:46:22 | stockholm | BrianRice-work: i think i am on a good way to get what git is about |
| 17:46:26 | stockholm | but i am not there yet |
| 17:46:30 | BrianRice-work | and yes, I'm bitter at git |
| 17:46:42 | stockholm | and i think the git task for rake is a great help |
| 17:46:45 | BrianRice-work | and also, I grok how git works |
| 17:46:52 | stockholm | that i would like to use for non-rake things |
| 17:46:55 | BrianRice-work | and it's a load of tosh |
| 17:47:00 | stockholm | tosh? |
| 17:47:02 | BrianRice-work | </rant> |
| 17:47:04 | stockholm | new word for me |
| 17:47:27 | BrianRice-work | "nonsense" |
| 17:47:38 | stockholm | i was wondering how i could use the rake task without my project using rake |
| 17:47:48 | stockholm | i have a puppet project that is in git |
| 17:48:15 | brixen | stockholm: we made the rake tasks quite a long time ago |
| 17:48:15 | stockholm | rake goes up in the directory tree if it does not find a rakefile |
| 17:48:28 | brixen | stockholm: honestly, most people just use the git commands |
| 17:48:41 | stockholm | i can learn those, too |
| 17:48:49 | stockholm | i liked the push part |
| 17:48:54 | stockholm | it seems to save some time |
| 17:49:08 | brixen | stockholm: I found just making some git aliases helped a lot |
| 17:49:21 | stockholm | ok |
| 17:49:25 | brixen | I generally use about 4 commands |
| 17:49:56 | stockholm | i need to find my workflow, still |
| 17:50:03 | evan | someday I'll pimp git-update more |
| 17:50:05 | brixen | stockholm: here is my ~/.gitconfig http://gist.github.com/549962 |
| 17:50:42 | brixen | stockholm: I use git com, git purr, git co <branch>, git rem mostly |
| 17:51:14 | brixen | ie, checkout master, pull --rebase, checkout my topic, rebase master, edit, edit, edit |
| 17:51:33 | stockholm | see, you have stuff like git-update.rb |
| 17:51:35 | brixen | eventually merge back to master and push |
| 17:51:57 | stockholm | purr is cute |
| 17:52:03 | brixen | :) |
| 17:52:24 | brixen | the aliases can be super useful for managing your workflow |
| 17:52:34 | stockholm | thanks :-) |
| 17:52:38 | brixen | n/p |
| 17:52:43 | evan | stockholm: well, i'm the only one that uses git-update.rb |
| 17:52:47 | evan | that I know of |
| 17:52:50 | evan | maybe others use it... |
| 17:52:51 | brixen | also, evan is a great person to ask about git stuff |
| 17:52:59 | evan | but i love it. |
| 17:53:17 | stockholm | love makes everything easy. :-) |
| 17:53:40 | evan | auto stashing, interactive conflict resolver, etc. |
| 17:53:59 | brixen | evan: yeah, you need to pimp it more |
| 17:54:07 | brixen | like, write a fancy man page for it :) |
| 17:54:16 | evan | :D |
| 17:59:08 | sbryant | I just use magit, and write bindings for custom stuffs |
| 17:59:16 | sbryant | but that's because I'm a dirty emacs user |
| 17:59:36 | sbryant | it also means I can hide the entire git front end from myself and write around it. |
| 18:00:15 | brixen | the only pain I ever suffered from git, or it's commands, was my own ignorance |
| 18:00:27 | brixen | the time spent learning the commands is well spent |
| 18:00:35 | brixen | s/it's/its/ |
| 18:00:41 | sbryant | stockholm: have you seen the git parable? |
| 18:01:00 | sbryant | It can help you get your head around how git works. |
| 18:01:33 | brixen | what's funny to me, I never saw a furor about svn commands, and they are certainly no more intuitive than git's |
| 18:02:06 | brixen | that said, I did not know a bunch of cvs users when I was learning svn |
| 18:02:11 | sbryant | I think it's case of work flow prevalence. |
| 18:02:20 | sbryant | So, it makes learning new work flows difficult. |
| 18:02:39 | brixen | learning is difficult, not a reason to eschew it :) |
| 18:02:48 | sbryant | hah, tell that to most people. |
| 18:02:52 | brixen | I am |
| 18:02:53 | brixen | :) |
| 18:02:57 | sbryant | :) |
| 18:03:16 | sbryant | We just instituted my personal work flow here at the company. Seems to be working out so far. |
| 18:04:00 | sbryant | Which basically boils down to: don't develop on public branches. |
| 18:04:43 | brixen | public branches can be great for collaborating |
| 18:05:04 | sbryant | Sure. |
| 18:05:10 | brixen | a "public" branch is just where stuff gets integrated when you have a canonical repo |
| 18:05:17 | sbryant | Correct. |
| 18:05:25 | sbryant | But real development happens on local branch |
| 18:05:41 | brixen | for some values of real and local :) |
| 18:05:53 | brixen | point is, use what works and let the rest go by |
| 18:06:13 | brixen | hat tips ken kesey |
| 18:06:39 | sbryant | Sure, sure. It's not set in stone, just an easy sane default |
| 18:07:32 | evan | i warn people of the "you must never work on master ever" hardline philosophy. |
| 18:08:21 | evan | i think it's a silly philosophy |
| 18:08:33 | sbryant | I generally like to stay away from ideological stances, as there's almost always some exception that falls outside the ideological philosophy. |
| 18:08:47 | sbryant | stays flexible |
| 18:11:03 | brixen | this is pretty interesting http://www.caiso.com/outlook/outlook.html |
| 18:11:28 | brixen | philtor: how's rbx going? any issues, feedback? |
| 18:12:29 | evan | brixen: that is cool |
| 18:19:31 | sbryant | You Californians and your power forecasts. |
| 18:21:12 | stockholm | sbryant: no, i havent |
| 18:21:20 | stockholm | sbryant: do you have a uri? |
| 18:21:25 | stockholm | or url :-) |
| 18:22:11 | sbryant | ya, let me get it |
| 18:22:18 | sbryant | http://tom.preston-werner.com/2009/05/19/the-git-parable.html |
| 18:22:31 | stockholm | this seems to be a friendly channel. |
| 18:22:49 | brixen | stockholm: we try to be! :) |
| 18:22:53 | stockholm | its funny how different they are :-) |
| 18:22:56 | sbryant | Does not actually teach you to use git, will teach you how to think in terms of git. |
| 18:23:09 | stockholm | brixen: i am especially sensitive as a debian developer. :-) |
| 18:23:49 | stockholm | wow, this is long |
| 18:23:57 | stockholm | i will put it on my ebook :-) |
| 18:30:46 | sbryant | stockholm: debian developer, I know a former release engineer. I think it was debian she worked for |
| 18:59:55 | dbussink | evan: what would be a sane way to check whether something is a string in capi? |
| 19:00:40 | evan | a handle or an object? |
| 19:02:24 | dbussink | evan: it's a VALUE |
| 19:02:34 | evan | k |
| 19:02:39 | evan | there should be plenty of examples |
| 19:02:56 | dbussink | yeah, i know, but just wondering what would be the best approach |
| 19:02:57 | evan | what do you want to do? |
| 19:03:01 | brixen | dbussink: in c-api or in c-api implementation? |
| 19:03:09 | dbussink | brixen: just using it |
| 19:03:09 | brixen | we have c_as<> |
| 19:03:15 | dbussink | not implementation |
| 19:03:24 | evan | StringValue() is the usual way. |
| 19:03:30 | brixen | that converts a string |
| 19:03:40 | evan | right, but thats still the usual way :D |
| 19:04:23 | brixen | dbussink: grep TYPE in spec/ruby/optional/capi |
| 19:04:35 | brixen | if you really need to conditionalize on type |
| 19:04:44 | brixen | but like evan said, you should probably just be getting a String |
| 19:05:20 | dbussink | true, but i don't want it to raise if it's not a string :) |
| 19:05:31 | brixen | yeah, that's what TYPE is for |
| 19:05:50 | evan | or rb_obj_kind_of |
| 19:05:56 | evan | not that people use that enough. |
| 19:06:19 | brixen | true, that's safer for duck-type code |
| 19:06:45 | brixen | it's the same deal as with Ruby code, don't conditionalize on type except as a last resort |
| 19:07:01 | brixen | that tends to expose implementation details in a bad way |
| 19:08:13 | brixen | dbussink: there are also conversion protocols that return nil rather than raise |
| 19:08:17 | brixen | at least for integer |
| 19:08:23 | brixen | let's see if there are for string |
| 19:10:10 | brixen | dbussink: check out rb_check_convert_type |
| 19:10:19 | dbussink | brixen: i couldn't find it, so maybe thought you guys knew |
| 19:10:24 | dbussink | ah ok, will look at that :) |
| 19:10:34 | dbussink | don't be bothered too much by my question :P |
| 19:10:55 | brixen | that's a protocol for converting and conditionally raising |
| 19:11:41 | brixen | actually, it uses convert_type which has the conditional |
| 19:12:02 | brixen | rb_convert_type will raise, rb_check_convert_type will return nil |
| 19:18:14 | brixen | evan: I thought a lot about the 1.8/1.9 stuff after our discussion |
| 19:18:28 | brixen | evan: I'm going to try to spike and push a union branch this weekend |
| 19:18:41 | evan | union being what? |
| 19:18:57 | brixen | a 1.8/1.9 union :) |
| 19:19:06 | brixen | I was going to name the branch "union" |
| 19:19:09 | evan | you didn't use the word union yesterday |
| 19:19:17 | brixen | yeah, just thought of it |
| 19:19:18 | evan | so i'm asking what strategy union is |
| 19:19:32 | evan | 1.8/kernel and 1.9/kernel |
| 19:19:32 | evan | ? |
| 19:19:54 | brixen | mastly what we talked about, but I want to try a single kernel that has some conditional logic in the build |
| 19:20:28 | brixen | eg we could have different load_order files that build separate runtime dirs |
| 19:21:14 | brixen | I'm going to try to maximize the shared files and minimize the separate files |
| 19:21:29 | brixen | while still loading one or the other environment on boot |
| 19:21:37 | evan | .... |
| 19:21:41 | evan | that sounds more confusing |
| 19:21:43 | evan | but go for it. |
| 19:21:50 | brixen | yeah, that's why I'm trying it |
| 19:21:54 | brixen | so we can see |
| 19:21:57 | evan | sure |
| 19:22:20 | brixen | I'm going to try to doc the tradeoffs and the group they affect |
| 19:22:31 | brixen | eg, devs, users, packagers, documentation, etc |
| 19:22:46 | evan | ok |
| 19:23:02 | evan | I can't complain with a documented approach |
| 19:23:02 | evan | :D |
| 19:23:08 | brixen | heh |
| 19:23:25 | brixen | at least it gives us a point to react to |
| 19:24:05 | brixen | my goal as always is to make it as simple as possible |
| 19:24:29 | brixen | which is probably as least complex as possible :) |
| 19:24:56 | evan | :D |
| 19:24:57 | evan | i know. |
| 19:25:01 | evan | well, i'm going to get some lunch |
| 19:25:07 | evan | working on the new GIL strategy |
| 19:25:16 | brixen | sweet |
| 19:34:44 | dbussink | evan: ah, to fix that issue in hydra? |
| 20:12:52 | duncanmv | evan: just tested, with my rb_hash patch, ruby-rpm gem also builds and pass all tests :-) |
| 20:13:24 | brixen | duncanmv: sweet! |
| 20:13:37 | evan | duncanmv: great! |
| 20:13:49 | evan | dbussink: no, unrelated to hydra entirely. |
| 20:14:14 | dbussink | evan: ah ok, what's the strategy for then? |
| 20:14:37 | evan | making it so that threads aren't starved |
| 20:14:44 | dbussink | ah ok, so for 1.1? |
| 20:15:06 | evan | wyhaines found that in some linux's, our code that unlocks the gil, tries to yield, and then relocks, starves the system |
| 20:15:09 | evan | ditto with 1.9 |
| 20:15:26 | evan | so i'm coming up with a better strategy for yielding control from one thread to the next |
| 20:15:29 | dbussink | ah ok, so a problem with pthreads on those systems |
| 20:15:31 | evan | dbussink: yeah, for 1.1 |
| 20:15:38 | evan | well, no |
| 20:15:46 | evan | pthreads is doing what it says it does. |
| 20:16:02 | dbussink | well, fairness is usually not really something guaranteed yeah |
| 20:16:03 | evan | there is no promises or expectations about this behavior |
| 20:20:59 | duncanmv | mmmm, ruby-rpm tests should not be very good. I see rb_new_struct is still missing. Will try to do that one |
| 20:29:45 | pyonpyon | hi, i'm trying to get rubinius vm running on the iphone, and currently having problems with ffi |
| 20:29:48 | pyonpyon | i've seen that ffi utility is limited on the iphone due to mprotect() not working. is this needed by the vm? |
| 20:30:43 | pyonpyon | (i'm currently getting errors such as "Unable to find 'ffi_environ'" at startup) |
| 20:31:15 | brixen | pyonpyon: oh cool re iphone! |
| 20:31:26 | brixen | yes, we use FFI for some pretty fundamental stuff |
| 20:31:50 | pyonpyon | so you think it's hopeless then? |
| 20:31:50 | evan | libffi probably uses mprotect |
| 20:32:02 | evan | i'll bet you could comment out that line in libffi |
| 20:32:04 | evan | and it would work |
| 20:32:23 | evan | the iphone likely doesn't care about executable bits on pages |
| 20:33:13 | pyonpyon | alright, if you think it can be done i'll keep looking |
| 20:33:47 | brixen | pyonpyon: you might try to find other projects using libffi on iphone |
| 20:33:54 | brixen | for insight |
| 20:34:23 | pyonpyon | yes there's libffi-iphone port at http://github.com/parmanoir/libffi-iphone and its readme warns about mprotect(), that closures won't work |
| 20:34:45 | evan | the same things apply to rubinius then. |
| 20:35:41 | pyonpyon | they suggest using own function pool as a workaround |
| 20:36:53 | evan | that seems reasonable. |
| 20:44:06 | pyonpyon | this is a bit over my head, have never used ffi and such before, but i'll see if i can figure it out |
| 20:44:09 | pyonpyon | cool project guys, i've been using yarv on the iphone and embedding it has some limitations due to their use of globals and such - e.g. can't (or difficult to) restart the vm, not to mention run multiple instances... |
| 20:45:45 | pyonpyon | btw when i run bin/rbx on a .rbc file (both in 1.0.1 and on head) it fails at parsing (probably trying to parse it as a ruby source?); is it supported? |
| 20:46:06 | evan | nope |
| 20:46:10 | evan | it's not supported. |
| 21:43:13 | evan | brixen: playing hooky shortly, but i've been reading the new python GIL impl. |
| 21:43:21 | evan | i'm thinking about trying it instead of having our scheduler |
| 21:43:26 | evan | because it's simplier |
| 21:43:42 | evan | i've already hit some deadlock snags that worry me with the scheduler bit |
| 21:45:24 | brixen | ok |
| 21:45:46 | evan | their new gil also deals with timing inline |
| 21:45:54 | evan | ie, no extra timer pthread |
| 21:45:56 | evan | which is ince. |
| 21:45:57 | evan | nice. |
| 21:46:46 | brixen | ah indeed |
| 21:47:01 | brixen | I'm looking at the slides by david beazley |
| 21:47:30 | evan | by making the GIL be 2 mutex+condvar pairs |
| 21:47:36 | evan | it's possible to force switching |
| 21:48:03 | brixen | cool |
| 21:48:06 | evan | because when you yield, you broadcast on cv1 and then wait on cv2 |
| 21:48:24 | evan | the person who gets control has been waiting on cv1, and they then broadcast on cv2 |
| 21:48:40 | evan | so that the yielder slips into the normal wait loop |
| 21:48:59 | brixen | gotcha |
| 21:49:02 | evan | basically, it's a handshake |
| 21:49:09 | brixen | yeah |
| 21:49:10 | evan | rather than just throwing snowballs at the other thread |
| 21:49:13 | brixen | heh |
| 21:49:29 | evan | YOU GO YOU GO GO GO GO GOG FINE I'M GOING |
| 21:49:48 | evan | ok, i'm going to work on this a bit later. |
| 21:49:51 | brixen | ok |
| 21:50:24 | duncanmv | notices for the capi specs of methods with va_args, you wrap the spec method into a sa_foo which haves fixed params, enough to test |