Index

Show enters and exits. Hide enters and exits.

05:02:17giancarlo84Hi, is there a curses library for rubinius compatible with the one in ruby 1.9
05:19:52matthewdevan: Sorry, I didn't get a chance to do anything last night; I'll push tonight.
13:23:42boyscoutmethod_defined? shouldn't search Object/Kernel. - fc14d35 - Matthew Draper
13:23:42boyscoutKernel is a module too, and so should search Object. - 221cc80 - Matthew Draper
13:23:42boyscoutSpec that method_defined? doesn't search Object/Kernel. - 9c4aa8f - Matthew Draper
13:23:42boyscoutSpec that some Module methods search Object too. - 77f8d1d - Matthew Draper
13:31:45boyscoutCI: rubinius: 77f8d1d successful: 3463 files, 13870 examples, 41532 expectations, 0 failures, 0 errors
14:03:17goyox86JOIN gentoo-ve
14:03:24goyox86JOIN #gentoo-ve
14:04:09cremesgoyox86: you need a forward slash in front of join
15:25:13matthewdevan: http://gist.github.com/415926 okay? Everything passes.
16:01:00brixenmorning
16:01:04brixenmatthewd: looks ok to me
16:03:37boyscoutRemove redundant method lookup functions. - 6b20492 - Matthew Draper
16:04:03matthewdbrixen: Thanks; just wanted a sanity check before playing with stuff.. even though I know that's really what the specs are for :)
16:06:32brixenheh, yes, a review never hurts :)
16:06:47brixenthanks for working on that!
16:07:07brixenalso, it's still possible to write very broken stuff even with the specs
16:07:15brixenand evan is a good broken detector
16:07:36evanmorning lads.
16:07:44brixenmorning
16:08:36evani'll give it a once over.
16:08:50matthewdbrixen: It was a fun twisty little passage... started out with method_defined?(:id), found the check-Object-too stuff, tried just removing that (per evan's suggestion)... and ended up working out that far less things failed than should have :P
16:09:22brixenheh
16:09:27brixenthat's always fun
16:10:37brixenfor me, that usually leads to a file that hase one: it "needs to be review for spec completeness"
16:11:27evanmatthewd: :/
16:11:29evanmatthewd: in the future
16:11:37evanplease do the fix in one commit
16:11:45evanthen the commit that removes the redundent methods in another
16:11:48boyscoutCI: rubinius: 6b20492 successful: 3463 files, 13870 examples, 41532 expectations, 0 failures, 0 errors
16:11:52evanit's hard for me to tell which is which.
16:11:58matthewdevan: I did?
16:12:06evanyou did what?
16:12:14evanyou put both bodies of work in one commit
16:12:15matthewdI thought I did separate them
16:13:04evannope.
16:13:07matthewdErm, well, the removing redundant methods meant merging two functions (adding a param, changing callers to use the other function and handle the different return)
16:13:42evanoh, hrm, is see.
16:13:46evanit's just a little confusing.
16:14:10evanok
16:14:11matthewdBut the fixing of the identified issues was in fc14d35 and 221cc80
16:14:13evanit's cool, i gotcha.
16:14:22evanthough, i worry about http://github.com/evanphx/rubinius/commit/6b204921badcd210a063d7e87a73d186bc30ecc9#L0L120
16:14:35evanyou deleted 3 lines at the bottom of a method
16:14:48evanthat seem important
16:15:29evanaren't those lines where you're supposed to be using check_object_too?
16:15:37matthewdThat's just the diff being confusing
16:15:50matthewdIt uses the last lines of the otherwise-deleted following function
16:16:11evanoh weird.
16:16:13evanoh oh.
16:16:14matthewdThough I apparently managed to end up with the less accurate comment :/
16:16:17evanle sigh.
16:16:27evanmy fault.
16:16:32matthewdfixes comment
16:16:41evanyeah, that comment needs to be fixed
16:16:45evani'm looking at module.rb without the diff
16:16:47evanit's clear
16:16:53evanwhat you did.
16:17:08evanputting it together from the diff is, i guess, something i shouldn't attempt without more morning coffee.
16:17:34matthewdheh :)
16:18:34brixenI really wish I at least read/wrote japanese
16:18:42brixenso much discussion happens on ruby-dev
16:18:59brixenthankfully, mame is curating specs now it seems
16:19:15brixenthat's Yusuke Endoh
16:19:24evan:)
16:19:25evangood!
16:19:51brixenI wish he'd hang out in #rubyspec
16:20:23boyscoutFix a now-inaccurate comment; the flag means "always" is a lie. - 40e02ed - Matthew Draper
16:20:39evanheheh
16:20:42evanthe flag is a lie!
16:21:20matthewdhas his flag and eats it too
16:21:40evanis there frosting on it?
16:22:58matthewdThat depends... it's Modular, you see
16:23:15matthewdSome people like frosting, others would Object
16:25:45brixenhah
16:27:18evanmatthewd: ZING.
16:32:42evanAWESOME
16:32:51evanthey had a successful test of a ramjet engine
16:33:02evanMach 4.5 for 200 seconds.
16:33:16brixenwowsers
16:33:21BrianRice-workthus burning more fuel than my motorcycle does in a year
16:33:44brixenBrianRice-work: I'm guessing more than your motorcycle would use in a century
16:33:48brixenor 5
16:34:02brixenif you drove it constantly :)
16:34:09BrianRice-workoh it's not that bad
16:34:12evanBrianRice-work: you're bike runs on liquid oxygen? cool!
16:34:21BrianRice-workoh, I wish
16:34:31BrianRice-workturbine-power would be awesome
16:34:43evanramjet has no turbine.
16:34:48evanit has no moving parts in fact.
16:34:59evanit's a pure air compression engine
16:35:01BrianRice-workyes, I'm aware. I did study aerospace engineering for a bit
16:35:06evanoh oh ok!
16:35:36BrianRice-workand worked on nuclear reactors. I mostly know the gas figure because of the F-15 zoom climbs by the air national guard in PDX
16:35:50matthewdOh, easy win I noticed in passing: `Bignum.new`. I'm up far too late again, but I promise I'll ticket it (and probably just fix it, if no-one else has) tomorrow morning. :/
16:36:01BrianRice-workwhich, yeah, consume enough gas to push my bike 20,000 miles :P
16:36:11BrianRice-workdigresses, goes back to perl code
16:36:16evanBrianRice-work: :)
16:36:41evanperl code, nuclear reactors, it's about the same
16:36:42evan:)
16:36:50BrianRice-workreactors are cleaner
16:37:52evanoh, I wonder if it's a scramjet engine that uses oxygen from the atmosphere as fuel
16:37:57boyscoutCI: Commit 40e02ed failed. http://github.com/evanphx/rubinius/commit/40e02eda89ff80a45e25fd7aa36d66cab32cbd9d
16:38:14evanwtf
16:38:19evana weakref_alive? error...
16:38:29evanoh dear
16:38:30evana lot.
16:38:45evangeez
16:38:52evanit's totally destabalized.
16:40:39brixenhah, that's what I saw
16:40:42brixeninteresting
16:41:06evani'm pulling on elle into my copy and trying.
16:42:09brixenhmm yeah, this is exactly what I saw on ubuntu 9.10 the other day
16:42:16brixenbut I just ran it again with no issue
16:42:30BrianRice-workevan: yes, it was a scramjet
16:42:37brixenthe segfault here is interesting
16:42:38evanrad.
16:42:57evanBrianRice-work: so it didn't use as much fuel as your bike!
16:43:02evanunless you count the rocket to get up to speed.
16:43:05BrianRice-workheh
16:43:32evanyour bike breaths air, the scramjet is just more clever about how it uses the air. :)
16:43:40BrianRice-workagreed about that
16:43:58evanbut don't worry.
16:44:20evanair breathing life is still the most clever.
16:49:03evanyoudonotexist: I do exist.
16:49:05evani can prove it.
16:49:53youdonotexistWhoopdie doo. A non-existent being trying to prove he exists. Like I haven't seen that before.
16:50:23evanhah
16:51:01BrianRice-workOn the internet, no one knows you're not.
16:52:06BrianRice-workWow, so I'm really chatty today. Let's just say it's because I'm awaiting news that might make me an involved rubinius user.
16:52:27brixenBrianRice-work: what what what?
16:52:34BrianRice-workbrixen: can't say yet
16:52:38brixenhah
16:52:42brixenwhat a tease
16:52:54brixenthought about a career change to entertainer
16:52:57BrianRice-workwell hey the suspense is killing me
16:53:01brixenheh
16:53:14evanI MUST KNOW
16:53:16evan:D
16:53:52BrianRice-workI'll explain soon
16:54:00BrianRice-workor privately
16:54:04BrianRice-workyeah, PM...
16:54:08brixenBrianRice-work: tell them to hurry the hell up
16:57:37evanyeah, weird, i ran it on elle and it's gone...
16:57:49evanhrmzers.
16:57:54brixenso bizarre
16:58:19brixenlike something twiddled that MT entry
16:58:26brixeninterestingly, it's repeatable!
16:58:30evanit is?
16:58:33brixenjust no idea under what circumstances
16:58:36brixenabsolutely
16:58:44brixengot the exact same stuff
16:58:56evanoh, it manifests the same way when it appears
16:58:58evanis what you mean
16:59:00brixenyes
16:59:02evanrepeatable means YOU can do it on command.
16:59:04evan:)
16:59:21brixenwell, for some values of repeatable
16:59:28brixenI usually say reproducible
16:59:28evanhehe
16:59:33brixenit repeats, there
16:59:37brixen:)
17:00:03evan:)
17:00:05brixenit's randomly deterministic
17:00:22evanwow, thats quite a statement.
17:00:25brixenit's nondeterministically nonrandom
17:00:34evanlike saying you invented peanut butter marshmallow.
17:00:38brixenheh
17:03:19evanbrixen: I wonder if the @threads array in ThreadGroup is getting corrupted in some way...
17:03:41brixenhmm
17:04:04evanI can easy add some code to #prune to deal with this case, so it's a non-issue
17:04:11evaneven if it happens.
17:04:29evanthe first hickup is because there is a nil in @threads
17:04:30brixenworth a shot
17:04:36evanthe rest because there is some unknown Object
17:05:31brixenthe fact this has only been observed on ubuntu/deb suggests it could have something to do with underlying thread stuff, yes?
17:05:48evansince it is mildly thread related, yes.
17:08:24evanyou know...
17:08:35evanah!
17:08:35evanyep.
17:08:40evandelete_if is bad news.
17:08:49evanif the block passed to delete_if raises an exception
17:08:58evanthe Array is left with random undefined's in it!
17:09:06evanbecause it puts undefines in as place holders.
17:09:20brixenahh oops
17:09:30evanso thats the cause of N-1 of those errors
17:09:40evanbut patient zero is something else.
17:12:17evanso, it's seems very unlikely that WeakRef.new randomly returned a nil
17:13:12evanwhich would mean that either @threads was mutated outside the method in some weird way
17:13:23evanor delete_if left it with a nil in there.
17:13:39evangiven delete_if's cleanup problem
17:13:42evanthat might happen.
17:13:49brixenyeah
17:14:09evanbecause delete_if also adjusts @total at the end
17:16:19evani think delete_if also might have a "bug" in the presense of Array mutation done by the block
17:16:26evanbut thats in the realm of undefined behavior
17:16:41brixenyeah, we should not allow any such code
17:17:13evanok, i'll commit this fix for delete_if
17:26:41evanbrixen: check out around line 707 in common/array.rb
17:26:50evanthe line that is "too_big_for_long = ..."
17:27:23evansimilar to your code in shift, we should probably figure out a better way to express this
17:31:30brixenhmm
17:32:40brixenyes, we should
17:33:47brixenmy code in shift?
17:35:12evanthe stuff you did with Fixnum#<<
17:35:21evanabout just not accepting a Bignum
17:36:05evanwe have another on of these "block raises" behaviors
17:36:09evanbut i'm not going to change it
17:36:24evannamely, Array#sort! appears to leave the array as is in MRI if you raise
17:36:41evanwhere as we leave it partially sorted.
17:39:12brixenhmm
17:39:59brixenyeah, a general method that says, "you're not a fixnum"
17:40:26brixenrather than the MRI "long" boundary
17:40:57brixenhow does MRI leave the array as is in #sort! ?
17:41:01brixendoes it not sort in place?
17:41:05evanmust not.
17:41:12brixeninteresting
17:41:20evanit uses qsort(3)
17:41:36evanwhich must sort the data into a temp array
17:41:39evanthen memcpy it back
17:56:56boyscoutBe sure to cleanup any temp modifications during #delete_if - 5e92f15 - Evan Phoenix
17:56:56boyscoutMinor style cleanup - 6171613 - Evan Phoenix
17:57:41evanwe'll see how that goes.
17:57:49evanshould solve at least the N-1 errors.
17:58:50brixennice
17:59:21brixenman, we have a lot of capi specs
17:59:55brixenI'm just #ifdef HAVE_ wrapping it all
18:00:03brixenno point in doing shit half-assed
18:00:32evanyeah, I thought you meant have to.
18:00:45evani'll go ahead and write a script to analyze our ruby.h
18:00:52evanand generate a defines.h that has them all
18:01:03evanor you can write it
18:01:06evanbut it should be automated.
18:01:14brixenwell, hmm
18:01:23brixenI'm going based on what's in the specs
18:01:28evanok
18:01:41brixenmy thought was a single rubyspec.h file that includes all the HAVE_ for the specs
18:01:58brixenand difference files for each impl that explicitly #undef what they do not support
18:02:06brixensince I need this to work with MRI too
18:02:17brixenfor symbols that we extend in the c-api
18:02:41brixenso on mri you get rubyspec.h + mri.h
18:02:57evanah cool
18:03:00evanthats perfect.
18:03:14brixenwhere mri.h #undef's rb_frozen_p for instance
18:03:50brixenthis enables me to write very clear directions for extending the c-api specs
18:04:04brixenand keep things consistent
18:04:14brixensince I'm a consistent bitch :)
18:04:15evansounds good.
18:04:19evanoh, i know.
18:04:19evan:)
18:04:22brixenheh
18:05:45boyscoutCI: rubinius: 6171613 successful: 3463 files, 13870 examples, 41532 expectations, 0 failures, 0 errors
18:06:00brixenatta boyscout
18:08:05boyscoutFix subtle control flow bug - 071f784 - Evan Phoenix
18:16:07boyscoutCI: rubinius: 071f784 successful: 3463 files, 13870 examples, 41532 expectations, 0 failures, 0 errors
18:25:49cremesevan: where does ffi fall on your list of priorities post-1.0?
18:26:07evanoh, i'd like to have it fixed for 1.1
18:26:18evanI need to basically give it a solid week
18:26:19cremesokay, so sometime within the next 3-4 months
18:26:20evanand it will be done
18:26:23evanperhaps next week.
18:26:33cremessounds good
18:26:44cremesi have some stuff that will put your GIL to the test
19:41:10Defilerezmobius: where should I go to ask eventmachine questions? It is just crazytown
19:55:08ezmobius /join #eventmachine
19:55:11ezmobiusDefiler ^^
19:55:15ezmobiusgotta run
20:14:31evancremes: oh?
20:14:41evancremes: what stuff about FFI is missing?
20:14:47evani can focus on the true usecases first.
20:16:22cremesevan: i'm not certain which functions are missing from rbx yet; haven't gotten past the #ffi_lib call which has changed in the latest jruby & ffi gems
20:16:51cremesi'll look closer now and give you a run down of the features i need
20:17:13evank
20:23:33kronos_vanoevan, What's the difference between proc and Proc.new ?
20:23:43evanread the source.
20:23:44kronos_vanohi everybody
20:23:46evanproc == lambda
20:23:54kronos_vanoah, ok
20:23:55evanProc.new is the same as a literal block
20:41:18cremesevan: just messing with rbx ffi; trying to use the library.rb spec for guidance on loading libc but getting nowhere
20:41:19cremeshttp://pastie.org/980749
20:41:28cremesthis is on osx intel
20:41:53evan:/
20:41:59evanyou don't need a library there at all.
20:42:01evandelete that line
20:42:02evanit will work.
20:43:01cremesyes, it did. so that's at least one difference so far; the FFI::Library::LIBC constant doesn't exist...
20:43:25evanif you want to help
20:43:30evanyou could send me a patch
20:43:37evanthat should take you ~30s to add.
20:43:39cremesyes, of course
20:43:57cremesi do want to help; i'm certainly not expecting you to do it all
20:44:04cremespatches coming this weekend
20:44:09cremesjust poking right now
20:44:20evank
20:45:17cremesjust lend me a hand getting to the next step
20:45:59cremeswhat is the syntax to load a library from /usr/local/lib? i tried "ffi_lib '/usr/local/lib/mylib.dylib' but attach function barfs when i try to map an existing function
20:46:01evanare you on to the next step?
20:46:29evanthat should work.
20:48:17cremesnope: http://pastie.org/980749
20:49:21evani'll have to look at that then.
20:49:28evani don't have suggested fix.
20:49:41cremesif i do it without the ffi_lib line, it says it can't find the function in this process (as expected)
20:50:00cremeswith the ffi_lib line it says it can't find it in the actual library
20:50:04evanwhat about just "ffi_lib 'libzmq'"
20:50:12cremestrying...
20:51:10cremesworked; so perhaps it doesn't like it when .dylib is added on; i'll investigate that too
20:51:23evancertainly possible.
20:51:29evanactually, you know
20:51:37evani'm about to finish up poking with the agent API
20:51:41evani'll spend some time on FFI today.
20:52:17cremesno worries; if you have other priorities then tackle them
20:52:26cremesi can take a whack at this stuff over the weekend
20:52:26evani don't actually!
20:52:33evanthats the great part about hitting 1.0
20:52:37cremesall righty then!
20:52:39evanall these things i had to put off I can do finally!
20:53:38evancremes: one of the best parts about Rubinius FFI implementation, though, is that it's wired into the JIT
20:53:54evanso if a method that calls out to an FFI attached function is JIT'd
20:54:04cremesi remember that; that's why i'm excited about trying this stuff out!
20:54:06evanthe JIT'd method will contain a direct call to the FFI function
20:54:17cremeskick ass
20:54:24evanthough, i just realized, i'll bet I need to fix the GIL stuff with that.
20:54:33evani'll bet the JIT doesn't release the GIL
20:54:37evanthats an easy fi.
20:56:33boyscoutRevamp agent API, add a number of variables - d087929 - Evan Phoenix
20:56:39boyscoutCI: Commit d087929 failed. http://github.com/evanphx/rubinius/commit/d087929257506fe22c22586dcae36c843e7d9c27
20:56:49evanthat was fast.
20:57:02evanack, forgot a file.
20:57:04evanthanks CI!
20:57:54boyscoutAdd missing files - 60ce952 - Evan Phoenix
21:02:49boyscoutCI: Commit 60ce952 failed. http://github.com/evanphx/rubinius/commit/60ce95232fcf17618f15e387d3707195c4a002ce
21:03:22evan:/
21:04:22slavaevan: oh, your FFI calls release the GIL now?
21:04:29cremesgot my ffi library loading now; it barfs on my use of FFI::Function
21:04:32evanslava: to my surprise, yes.
21:04:34cremesthat must not exist yet
21:04:50evancremes: got a url for that code?
21:04:58slavaevan: I recall at some point you moved a few socket operations into the VM because FFI calls didn't release the GIL
21:05:00evanslava: i had it unlock the GIL more than a year ago
21:05:02evanforgot about it.
21:05:07cremesin a sec...
21:05:17evanslava: yeah, those were actually not that the weren't releasing the GIL
21:05:24evanbut rather than there was no way to interrupt them.
21:05:29slavaah
21:05:47evanI didn't realize that until last week though.
21:06:14cremesevan: git://github.com/chuckremes/ffi-rzmq.git
21:06:14slavaheh
21:06:27evanslava: file and line please
21:06:36evancremes: also a github http url for the file and line is best.
21:06:38cremeshttp://github.com/chuckremes/ffi-rzmq/blob/master/lib/ffi-rzmq/wrapper.rb#L48
21:06:47cremesi was gettin' ya both :)
21:06:48evanwtf is that.
21:06:54evanwtf is FFI::Function :/
21:07:10cremesit's for a callback
21:07:19evan:(
21:07:34evanok well,
21:07:38evanyou might as well give up now then.
21:07:46evanit's going to take me a while to sort this out.
21:07:54cremes<sigh>
21:08:07evancallback support is hardly trivial.
21:08:11cremessorry
21:08:18evani wish it had never been added.
21:09:38cremesi imagine it really complicates things; this code was causing very reproducible mri crashes until i upgraded the ffi gem to master
21:10:00evanthats very unsurprising.
21:10:16evanwait wait
21:10:32evanall that is so you can say free(2) is the message deallocator?
21:11:02cremesyes; the api requires a function pointer for a structure; the library calls your deallocator when it's done with the memory
21:11:14cremesif i had a way to inline a bit of C then i would do that
21:11:42cremesthough i can imagine other cases where a callback like that might need to run some ruby or access ruby heap
21:11:58boyscoutAdd missing includes - dbe6c11 - Evan Phoenix
21:11:59slavaevan: you wish callbacks were never added to ruby ffi?
21:12:00slavawhy?
21:12:06slavacallbacks are indispensible
21:12:09evannah
21:12:11evani could do without them.
21:12:12evanand have.
21:12:15evanfor a very long time.
21:12:32slavaa lot of APIs rely on callbacks
21:12:37cremeshow do you get along without them when the api requires it?
21:12:40slavayeah
21:12:45evancremes: i don't use those APIs
21:12:46evanpretty easy.
21:12:51slavathat's a cop out
21:12:52cremes:)
21:12:54evannot really
21:13:01evani haven't needed to use an API that required them.
21:13:06slavawhat's the technical hurdle to implementing callbacks?
21:13:07evanit's a matter of building what you need.
21:13:34evanslava: i'd prefer to not explain it.
21:13:39evani have to do the work anyway
21:13:41evanyou can see when i'm done.
21:14:37slavacocoa needs callbacks for instance, if you want to be able to subclass objective C classes and provide your own method implementaitons
21:14:46cremesin the short term i could conditionalize that code for rbx and just leave it out; it will leak native memory but i can get further into testing out the FFI implementation
21:14:48slavawin32 as well, you supply a function to handle messages
21:15:31cremesslava: was it hard for you to support it in factor?
21:15:39cremesor was it a layup?
21:16:04slavacremes: its one of those things where adding it initially was not too hard, but various changes and features added down the road interacted with callbacks in sometimes non-trivial ways so it requires ongoing thought
21:16:43cremesi understand
21:17:17evani'm going to add them.
21:17:21evani've just been avoiding it.
21:17:25evanbut i'm a big boy.
21:17:28evanneeds to be done.
21:17:33slavabecause libffi doesn't support them?
21:17:38evanit does.
21:17:41slavaoh
21:17:56evanjust always had more important things to do.
21:20:04slavaevan: are you able to call function pointers?
21:20:14evanat which level?
21:20:26slavasuppose a C function called via FFI returns a function pointer
21:20:31slavaand you want to invoke the function pointer, via FFI
21:20:32slavafrom ruby
21:21:34cremesletting two language implementers suss it out
21:22:01slavaevan: you might want to add this first if you don't have, it makes callbacks esaier to test :)
21:23:15evanyeah, i'll be doing that at the some time.
21:23:19evansame time, rather.
21:23:59slavait comes up if you want to interface with COM libraries
21:24:06slavaDirectX, etc
21:24:09cremesperhaps it's time for a pow-wow with wayne meissner (ffi gem guy) to lock this all down
21:24:18evancremes: i have many times.
21:25:00cremesok; i guess the current api reflects a few disagreements then ;)
21:25:25cremesi'll get out of the way and let folks who know what they are talking about tackle it
21:25:39evancremes: wayne evolved the API without me.
21:25:40evanis the issue.
21:25:42cremesmy opinions don't matter much other than to say i'd like callback support
21:25:45cremesright
21:26:23BrianRice-workslate's memory manager implements pinning which we have experimentally used for callbacks but haven't made it fully viable yet. we mostly use it for C-stack-related troubles
21:26:57BrianRice-workand of course, anything pinned is in tenured space
21:27:05slavahow does pinning help with callbacks?
21:27:09boyscoutCI: rubinius: dbe6c11 successful: 3463 files, 13870 examples, 41532 expectations, 0 failures, 0 errors
21:27:51BrianRice-workslava: so that the memory manager doesn't move something around that the vm has registered externally for asynchronous invocation
21:28:14slavaoh, like moving compiled code?
21:29:00BrianRice-workyeah, or stuff that compiled code points to
21:29:39slavaI put callbacks in a separate heap where they don't move or get deallocated
21:29:57slavasince there's no way to tell if a callback is referenced from C code or not
21:30:10BrianRice-workyeah I sat through a VisualWorks presentation and that's what they do, but their memory manager is really sophisticated
21:30:37BrianRice-workso, maybe that'll get done, but on a timescale I can't commit to.
21:30:55slavaif you use LLVM you can generate C functions and C function calls so you get FFI for free pretty much
21:31:53BrianRice-workyeah we need to get that done
21:47:59evanslava: yep
21:48:19slavais this like King of the Hill? yep, yep. yep... yep; yep.
21:48:24evanslava: the bigger thing is not just callbacks (though i've been a whiny bitch about them) it's having to sort through all the incompat FFI changes that were made in ruby-ffi
21:48:59evani'll have to just put on some NIN and turn it up loud.
21:53:06evanruby-ffi was wayne's first ruby c extension (and the first he'd written c)
21:53:19evanand, sadly, it shows.
21:53:37evanhe did a great job, it's just c written as java.
21:53:49slavaare you reusing his code or just the API?
21:53:55evanAPI.
21:54:14evanI just need to nut up and do it.
21:54:16evanwhich i'm doing now.
23:32:59evancremes: i've got a few ideas that should clean up the FFI impl
23:33:03evani'm working on them now.
23:44:08cremesevan: you are a rock star
23:44:28cremesbtw, i stripped out the incompatible code (FFI::Function) and got a little bit further
23:44:35evanok
23:44:38cremesthe Struct stuff is slightly incompatible now
23:44:44evanoh?
23:44:49evanwhere at?
23:45:17cremesit doesn't like arrays of primitives
23:45:25evancould you show me in the code?
23:45:48cremeshttp://github.com/chuckremes/ffi-rzmq/blob/master/lib/ffi-rzmq/wrapper.rb#L61
23:46:02cremesi'm using "screen sharing" to get to my work box so it's a bit pokey
23:46:18evanok
23:46:42evanI take it thats a uint8_t thing[30];
23:46:44evanin the C struct
23:46:50cremesyessir
23:47:05cremesi took a look at this ffi code a few weeks back; i believe it is all ruby
23:47:13evanyeah, i just never added that.
23:47:41evanif you wanna try to hack support in, go for it.
23:47:59cremesokay
23:48:07cremesi'll let you tackle the big stuff like callbacks
23:48:13evank
23:48:25evani'm working on it so that hopefully I can do more in Ruby
23:48:35evani'll need to add callback support in the VM
23:48:39evanbut hopefully that will be it.
23:49:05evancremes: I have to ask
23:49:05cremesgreat
23:49:11cremesyes?
23:49:14evanwhy do you use the included hook to do a layout
23:49:21evanwhen you only include that thing one place
23:49:44cremesit's a "pattern" suggested on the ffi wiki to do struct casting
23:49:57evanbut you only use it once place, yes?
23:50:00evanone place, rather.
23:50:09cremesso far, yes
23:50:16evan*eyeroll*
23:50:24cremesyeah, YAGNI
23:50:38cremesi *did* use it before so i'm glad i know the technique
23:50:50cremesfeel free to send me a patch :-P
23:51:03evanat this stage in my ruby career
23:51:08evani'm so opposed to using the included hook for stuff
23:51:20evanit's extremely over abused.
23:51:31cremesthat's because you see how the sausage is made, mr runtime
23:51:42evanso true.
23:51:47cremesignorance is bliss
23:51:49evanplus
23:51:55evanI usually have to debug that code
23:52:04evanbecuase it might not run properly on rubinius
23:52:16evanso i have to figure out what unecessary magic the developer used
23:52:55evani think i'll change that in the wiki.
23:53:09cremesi'm going through my library now and building out specs
23:53:20cremesi'm sure i'll simplify that when i get to it; i have no clue how to test it
23:56:38toulmeanbrixen: let's not compare our days. Ever. You win singlehanded. You win with two fingers even.
23:56:54cremesone more episode of spartacus blood & sand and i'll do some ffi hacking
23:57:01evancremes: :)
23:57:02evantoulmean: hehe
23:59:56brixentoulmean: so, I am a winner? :)