Show enters and exits. Hide enters and exits.
| 01:11:03 | boyscout | FFI API revamp, take 1. - 71fdc75 - Evan Phoenix |
| 01:11:11 | evan | that was a biggy. |
| 01:14:35 | brixen | awesome! |
| 01:14:51 | brixen | I'm almost done with c-api |
| 01:15:24 | brixen | pondering equality saturation again |
| 01:15:32 | evan | :) |
| 01:16:01 | brixen | I think I should take a stab at converting an opcode stream using their algo and the llvm ffi bindings |
| 01:16:16 | evan | go for it. |
| 01:16:26 | brixen | also, pondering generating all this AOT into a db that the jit can consult |
| 01:16:33 | brixen | with a way to fill in the IC info |
| 01:16:54 | evan | sure |
| 01:17:44 | brixen | we should write down what me don't know that we don't know about perf relative to the existing jit |
| 01:18:43 | brixen | er s/me/we/ |
| 01:19:06 | evan | :) |
| 01:19:15 | evan | how can we write it down if we don't know it? |
| 01:19:19 | brixen | heh |
| 01:39:19 | boyscout | CI: Commit 71fdc75 failed. http://github.com/evanphx/rubinius/commit/71fdc7551f676fec9ac7df08845c6b0e8e4f0210 |
| 01:40:03 | evan | ack. |
| 01:53:26 | boyscout | Use proper ordered choice syntax - 4460b2f - Evan Phoenix |
| 02:01:26 | boyscout | CI: rubinius: 4460b2f successful: 3463 files, 13870 examples, 41532 expectations, 0 failures, 0 errors |
| 02:02:18 | slava | brixen: wouldn't it be cool if the rbx jit was written in ruby? :) |
| 02:05:07 | brixen | slava: it would be interesting |
| 02:05:14 | brixen | and it may yet be :) |
| 02:05:37 | brixen | what would be really interesting is a dynamic insn set |
| 02:05:47 | brixen | and dynamically adding to the set of primitives |
| 02:05:50 | brixen | at runtime |
| 02:06:00 | slava | that's an FFI :) |
| 02:06:06 | brixen | no, not really |
| 02:06:21 | brixen | kinda, but not exactly |
| 02:07:10 | brixen | I'm actually talking about passing some source to llvm and getting a new insn |
| 02:07:16 | brixen | not loading a dylib |
| 02:13:30 | slava | brixen: we have a facility for that in factor |
| 02:13:55 | slava | brixen: there's a mechanism where you can pass a code block instead of a function name or a function pointer |
| 02:14:16 | slava | brixen: the compiler generates the usual paramter unboxing and return value boxing, but instead of a call instruction in the middle, it calls your block, which can emit arbitrary assembly |
| 02:15:10 | slava | I guess its like inline assembly in C |
| 02:17:30 | brixen | nice |
| 02:20:14 | slava | it means we don't need assembly in the VM, and aren't tied to a single inline asm syntax |
| 02:20:29 | slava | SquirrelFish #ifdefs all of its inline assembly, once for gcc and once for msvc |
| 02:24:47 | brixen | that doesn't sound fun |
| 02:25:21 | slava | many language implementations can just brute force everything like that |
| 02:25:30 | slava | without having to come up with elegant solutions to problems |
| 02:25:37 | slava | because they have a lot of manpower to throw at the project |
| 02:32:27 | evan | ok, off to enjoy the friday |
| 02:32:33 | evan | have a nice weekend everyone! |
| 02:33:25 | brixen | evan: you too! |
| 06:40:12 | postmodern | wow a few first specs in the rubinius suite got really slow |
| 06:40:22 | postmodern | and hang for 10-20 seconds |
| 07:04:40 | brixen | postmodern: I'm not seeing that |
| 07:05:02 | brixen | could you run bin/mspec ci -fs and tell me which those are? |
| 07:07:43 | postmodern | - reads all lines of stdin |
| 07:07:51 | postmodern | - reads the contents of stdin |
| 07:07:59 | postmodern | - reads a number of bytes from stdin |
| 07:08:03 | postmodern | etc |
| 07:08:10 | postmodern | looks like stdin had a regression? |
| 07:08:51 | postmodern | - presents $0 file data after __END__ as a File object |
| 07:09:17 | postmodern | hmm IO related things in fact |
| 07:11:06 | brixen | what platform? |
| 07:11:16 | postmodern | linux amd64 |
| 07:11:22 | brixen | could be the ffi stuff |
| 07:11:32 | brixen | try reseting before evans commit |
| 07:11:41 | brixen | I'm not seeing anything like that here |
| 07:11:52 | brixen | but I do have iconv specs failing |
| 07:11:56 | brixen | oddly |
| 07:12:18 | postmodern | im still waiting for iconv to become available on my platform |
| 07:13:13 | brixen | become available? |
| 07:13:53 | postmodern | Gentoo has it masked on amd64 |
| 07:13:57 | postmodern | i have no clue why |
| 07:14:13 | brixen | weird |
| 07:14:16 | postmodern | er i think it's due to it requiring a newer version of glib |
| 07:15:00 | brixen | hrm, well, I'm not going to get anywhere looking at these failures tonight :/ |
| 07:15:07 | brixen | sleeps |
| 10:29:32 | PierreY | Hi. To update rubinius to latest codebase do git pull / rake is sufficient ? |
| 10:32:30 | cyndis | usually yes |
| 10:33:37 | PierreY | thank you, I thought I have to invoke some strange git commands to get the code in sync with remote repository |
| 19:01:00 | dbussink | evan: ping? |
| 20:12:52 | brixen | dbussink: seeing any iconv specs failing on leopard? |
| 20:13:08 | slava | yo brixen |
| 20:13:14 | dbussink | brixen: i'll check |
| 20:13:16 | brixen | yo slava |
| 20:13:25 | brixen | slava: stirring up the bees I see :P |
| 20:13:52 | slava | if publishing objective measurements counts as such, sure |
| 20:14:09 | brixen | yeah, some of those comments are teh hilarious |
| 20:14:29 | brixen | "you aren't playing fair by making language features that work well in this domain? |
| 20:14:32 | brixen | " |
| 20:14:40 | slava | remember, if your favorite language doesn't perform well on a benchmark, the benchmark is flawed |
| 20:14:49 | brixen | yeppers |
| 20:15:02 | slava | its hilarious how V8 is 10x ahead of everyone else on the regex test |
| 20:15:18 | brixen | oh, does V8 use re2? |
| 20:15:24 | slava | it uses google irregex |
| 20:15:43 | slava | which is apparently really optimized and hardcore |
| 20:15:50 | brixen | interesting |
| 20:16:00 | slava | also it makes space usage guarantees, like the implementation has no unbounded recursion internally |
| 20:16:09 | slava | apparently stack overflow is a problem with some regex implementations |
| 20:16:11 | brixen | I was looking at re2 the other day, but it doesn't allow backrefs, so we couldn't use it |
| 20:16:18 | slava | neither does irregex |
| 20:16:21 | brixen | I see |
| 20:16:43 | slava | I think v8 switches to another engine if the regex has backrefs |
| 20:16:46 | slava | ppcre probably |
| 20:17:01 | brixen | huh, that's interesting |
| 20:17:42 | slava | its funny how people attach arbitrary labels to languages and get upset if you compare two languages that they perceive as being different in some fundamental way |
| 20:17:50 | slava | like scripting languages -vs- compiled languages, meaningless stuff |
| 20:18:01 | brixen | welp, I need a shower and nutrition badly, aikido kicked my ass today |
| 20:18:09 | brixen | slava: yeah, people are just lame |
| 20:18:13 | brixen | that about sums it up |
| 20:18:16 | slava | heh |
| 20:18:30 | brixen | bbiab... |
| 20:18:36 | slava | I think a lot of programmers don't really grasp the difference between language and implementation |
| 20:18:58 | slava | daydreams of a dynamic JITted scripting interpreted COBOL |
| 20:24:25 | jarib | haha |
| 20:26:25 | evan | slava: we could do it! |
| 20:27:06 | evan | so, I watched Primer yesterday |
| 20:27:14 | evan | and I think I need to watch it a few more times. |
| 20:32:33 | dbussink | brixen: i'm seeing iconv spec failures too |
| 20:32:41 | dbussink | evan: seem to be related to the ffi changes |
| 20:32:54 | evan | please gist the errors. |
| 20:32:59 | evan | i don't see an issue about it |
| 20:33:13 | dbussink | https://gist.github.com/41bbcaad49805bd09ab0 |
| 20:33:18 | evan | hammers the "ticket first" mantra |
| 20:33:27 | dbussink | evan: me neither, but brixed asked me if i was seeing it too |
| 20:33:29 | evan | easy tickets to close are good! |
| 20:33:34 | dbussink | evan: so i guess he was seeing it |
| 20:34:04 | evan | ok. |
| 20:34:11 | evan | oh, interesting. |
| 20:34:23 | evan | brixen is in the shower I think. |
| 20:34:49 | dbussink | yeah |
| 20:35:14 | dbussink | evan: you put him on a too long leash, so he can leave his computer |
| 20:43:59 | dbussink | evan: i have a system libiconv and one through macports, maybe that's of influence? |
| 20:44:10 | evan | wait, i'm confused |
| 20:44:12 | evan | are you seeing that? |
| 20:44:16 | evan | i thought you said just brixen was. |
| 20:46:08 | dbussink | evan: i'm seeing it too |
| 20:46:19 | evan | ah ok.p |
| 20:46:29 | dbussink | evan: i was responding to that i don't see an issue reported about it either, sorry for the confusion :0 |
| 20:47:05 | evan | well, that seems like it's able to open a library, but the library doesn't have the specified symbol |
| 20:48:30 | evan | dbussink: open up irb, and do |
| 20:48:55 | evan | lib = FFI::DynamicLibrary.new("libiconv") |
| 20:48:57 | evan | p lib |
| 20:48:59 | evan | what do you get? |
| 20:49:10 | brixen | I'm back |
| 20:50:04 | evan | welcome back |
| 20:50:07 | brixen | I just started to look at the iconv failures |
| 20:50:13 | brixen | just wanted confirmation on them |
| 20:50:18 | evan | try the snippit above |
| 20:50:24 | evan | see if you can open libiconv |
| 20:50:31 | brixen | k |
| 20:50:42 | brixen | yep |
| 20:50:53 | evan | does it appear to have a valid handle? ie, not null. |
| 20:51:33 | brixen | yes |
| 20:51:33 | brixen | #<FFI::DynamicLibrary:0x2ec @name="libiconv.dylib" @handle=#<FFI::Pointer address=0x2cd8ab0>> |
| 20:51:38 | evan | ok, then try |
| 20:51:55 | evan | lib.find_symbol "iconv_open" |
| 20:52:28 | dbussink | NameError: no method or variable 'name' on an instance of FFI::DynamicLibrary::Symbol |
| 20:52:33 | brixen | yeah |
| 20:52:45 | brixen | hm |
| 20:52:54 | evan | name? hm. |
| 20:53:05 | dbussink | https://gist.github.com/5a5ca08da3341b3045d4 |
| 20:53:18 | evan | oh oh |
| 20:53:19 | dbussink | ah, inspect triggers that |
| 20:53:20 | evan | inspect bug. |
| 20:53:30 | brixen | yeah |
| 20:53:37 | evan | that should be @name |
| 20:53:44 | evan | change that in kernel/platform/pointer.rb and try again. |
| 20:54:32 | dbussink | #<FFI::Library::Symbol name=iconv_open address=7fff837fcd42> |
| 20:54:47 | evan | hm, ok, so why is attach_function complaining... |
| 20:55:03 | evan | it must be for some reason not using that lib and using the current process |
| 20:55:31 | evan | because there is a bug in #find_symbol |
| 20:55:46 | evan | it needs to return nil and not create a Symbol object. |
| 20:56:09 | brixen | ahh ok |
| 20:56:36 | evan | but you shouldn't be seeing that anyways. |
| 20:57:08 | evan | oh oh oh |
| 20:57:11 | evan | der. |
| 20:57:16 | evan | in lib/iconv.rb |
| 20:57:21 | evan | on line 7 |
| 20:57:31 | evan | change the order of the array |
| 20:57:37 | evan | it needs to check libiconv first |
| 20:57:48 | evan | thats why you're hitting this. |
| 20:57:49 | dbussink | evan: shouldn't it continue with the next one if it doesn't find it? |
| 20:58:01 | evan | i'm checking what the logic should be now. |
| 20:59:11 | evan | ah yes. |
| 20:59:16 | evan | this is just a bug in #find_symbol |
| 20:59:21 | evan | because attach_function would have tried the next one |
| 20:59:26 | evan | if #find_symbol returned nil. |
| 20:59:30 | evan | i'll push the fix. |
| 21:00:14 | boyscout | Return nil if the symbol isn't found - df2d00a - Evan Phoenix |
| 21:00:41 | evan | update and try that |
| 21:00:42 | evan | should fix it. |
| 21:03:05 | brixen | hmm, not quite |
| 21:08:23 | boyscout | CI: rubinius: df2d00a successful: 3463 files, 13870 examples, 41532 expectations, 0 failures, 0 errors |
| 21:08:26 | brixen | hum, there is only one lib in the list here in attach_function |
| 21:08:53 | dbussink | brixen: only the current process? |
| 21:10:21 | brixen | yes |
| 21:10:50 | dbussink | ok, looks like ffi_lib is broken, it only adds the first successful DynamicLibrary loaded to the list |
| 21:10:55 | brixen | sorry, trying to trace it but my mental faculties after 2.5 hrs of aikido are nil |
| 21:11:05 | dbussink | which of course always succeeds for the current process |
| 21:11:08 | dbussink | evan: ^^ |
| 21:11:13 | brixen | dbussink: aah ok |
| 21:11:35 | evan | sorry, on the phone with my mom. |
| 21:11:45 | dbussink | evan: what is the behavior of something like this: ffi_lib ["libxml", "libiconv"] |
| 21:11:57 | brixen | ahh yeah, there's a break there |
| 21:12:01 | dbussink | and then attach_function "iconv_open" |
| 21:12:03 | evan | ack |
| 21:12:04 | evan | yeah |
| 21:12:06 | evan | i screwed that up |
| 21:12:15 | evan | remove the [] |
| 21:12:22 | evan | you want to search both |
| 21:12:27 | evan | not the first one that exists |
| 21:12:51 | brixen | I removed the break on line 33 of kernel/platform/library.rb |
| 21:13:04 | dbussink | brixen: but in that case only the last one is added |
| 21:13:07 | evan | brixen: thats wrong. |
| 21:13:25 | evan | an array means "pick the first one that exists" |
| 21:13:34 | brixen | ahh |
| 21:13:56 | dbussink | evan: also if the method attached doesn't exist in the first one that exists, but in the second one that exists? |
| 21:13:56 | brixen | interesting semantics |
| 21:14:26 | evan | sorry guys |
| 21:14:30 | evan | i'll be back in 10 minutes. |
| 21:16:59 | brixen | this makes sense |
| 21:17:03 | dbussink | evan: for if you're back, what are the semantics of this? https://gist.github.com/d8e97d9f74cc0744029d |
| 21:17:14 | dbussink | does that work or fail if it can succesfully load libxml2? |
| 21:17:37 | brixen | dbussink: as I understand it, [] means use the first lib that loads |
| 21:17:51 | brixen | vs a, b, c means keep checking |
| 21:18:06 | brixen | so commit 4460b2fa3 was because find_symbol had that bug not returning nil |
| 21:18:18 | brixen | I reverted 4460b2fa3 and the specs are running for m |
| 21:18:21 | brixen | e |
| 21:23:02 | dbussink | brixen: all green for me too with that change |
| 21:25:46 | brixen | cool |
| 21:26:30 | brixen | that is a rather odd semantic to me |
| 21:26:40 | brixen | I'd rather there be different method names |
| 21:27:53 | dbussink | i'm thinking what would be a good use case of the [] semantics |
| 21:27:58 | boyscout | Wrap up C-API specs in #ifdefs. - 2a2371f - Brian Ford |
| 21:27:58 | boyscout | Clean up some C-API defines. - 92aa9a8 - Brian Ford |
| 21:27:58 | boyscout | Moved C-API specs under spec/ruby/optional. - c21407b - Brian Ford |
| 21:27:58 | boyscout | Update CI tags for modified C-API specs. - 0cdcbd4 - Brian Ford |
| 21:27:58 | boyscout | Search all iconv FFI libs. - 955d90b - Brian Ford |
| 21:28:15 | brixen | let's see if boyscout breaks with the c-api spec move |
| 21:28:41 | brixen | dbussink: I don't know either, something ruby-ffi added |
| 21:29:13 | brixen | which, since much of that was driven by folks writing ffi libs for the first time, probably didn't have the best vetted use cases :) |
| 21:29:43 | brixen | we have a lotta c-api btw :) |
| 21:30:00 | boyscout | Fix DynamicLibrary::Symbol#inspect - d475e8a - Dirkjan Bussink |
| 21:31:13 | dbussink | brixen: mri's has a huge c-api ;) |
| 21:31:19 | brixen | heh |
| 21:32:34 | evan | ok, back |
| 21:32:40 | evan | yeah, reverting 4460b2fa3 was what I meant should happen. |
| 21:35:06 | brixen | cool |
| 21:35:15 | brixen | evan: wow, that ffi commit is huge :) |
| 21:35:25 | evan | yeah, i know. |
| 21:35:34 | evan | i'm a coding machine. |
| 21:35:44 | brixen | haha |
| 21:36:00 | brixen | so, discovered a bug in 1.8.7-8 with the c-api specs |
| 21:36:01 | dbussink | evan: what fuel do you run on? |
| 21:36:16 | evan | ATP mainly |
| 21:36:21 | brixen | I guess shyouhei will backport the fix and there will be another 1.8.7 patchlevel |
| 21:36:27 | evan | synthesized from raw calories and oxygen. |
| 21:36:31 | brixen | heh |
| 21:37:06 | brixen | evan: http://twitter.com/jvoorhis/status/14998998454 |
| 21:37:16 | evan | I use caffiene as an engine additive. |
| 21:37:34 | brixen | that's jvoorhis' llvm-based music lib afaik |
| 21:38:02 | evan | rad! |
| 21:38:07 | dbussink | evan: you have to watch with that stuff, it can burn the engine out too |
| 21:38:09 | brixen | yeah, pretty sweet |
| 21:38:42 | brixen | dbussink: there's that thing call sweet satisfaction that tends to counter the burnout :) |
| 21:38:44 | evan | dbussink: yeah, it has to be tempered with a modest flow of carbohydrates. |
| 21:38:52 | slava | hi evan |
| 21:38:58 | evan | slava: hello slava. |
| 21:39:59 | slava | DLS paper is almost done |
| 21:40:08 | brixen | slava: when can we see it?! |
| 21:40:17 | brixen | I'll keep it confidential |
| 21:40:22 | slava | I could send you a draft |
| 21:40:27 | brixen | pls do |
| 21:40:31 | slava | I don't think we're allowed to publically release it |
| 21:40:32 | evan | slava: i read the first 3 pages |
| 21:40:34 | evan | seems good. |
| 21:40:51 | slava | we fixed a ton of stuff since you last saw it. better examples and clearer wording |
| 21:41:24 | brixen | slava: brixen at the G mail |
| 21:41:29 | slava | alright |
| 21:48:09 | boyscout | Fixed rb_big2dbl. - 060a995 - Brian Ford |
| 21:48:09 | boyscout | Update CI tags for fixed spec. - bf6778b - Brian Ford |
| 21:48:38 | brixen | trying to teach my fingers to type spec/ruby/optional/capi instead of spec/capi |
| 21:53:14 | boyscout | CI: Commit 955d90b failed. http://github.com/evanphx/rubinius/commit/955d90b628b587b7fa4f5f78659bbeac92f5888d |
| 21:54:19 | evan | :/ |
| 21:54:24 | evan | that was what that fix was for... |
| 21:54:24 | evan | hm. |
| 21:54:53 | evan | ok, repro and fixing on elle |
| 21:56:25 | evan | :/ |
| 21:56:29 | evan | elle works ok... |
| 21:56:56 | evan | oh, nm. |
| 21:58:04 | evan | ah ok. |
| 21:58:07 | brixen | hmm |
| 21:58:17 | evan | the issue is me trying to decifer the ffi gem to figure out the logic. |
| 21:58:27 | evan | i think I see what it's doing. |
| 21:59:58 | evan | hrm. |
| 22:01:25 | evan | brixen: could you try making that ffi_lib line |
| 22:01:55 | evan | ["libiconv", FFI::CURRENT_PROCESS] |
| 22:02:02 | evan | ie, in an array but switched. |
| 22:02:09 | brixen | sure |
| 22:03:01 | brixen | that works |
| 22:03:27 | brixen | I was just booting up ubuntu in a vbox |
| 22:03:46 | brixen | it kernel panicked this morning, so I was putting off doing it |
| 22:03:58 | evan | k |
| 22:04:02 | evan | I think thats the right logic |
| 22:04:18 | evan | the idea here is we want either libiconv or the current process |
| 22:04:32 | brixen | seems like that should be a different method |
| 22:04:42 | evan | well, we're stuck with this API for now. |
| 22:04:46 | brixen | no idea why this overloading args made sense to someone |
| 22:04:48 | brixen | :/ |
| 22:05:10 | brixen | what happens when you pass a Hash? :) |
| 22:05:16 | brixen | or a Range |
| 22:05:16 | evan | we can discuss why the API is what is it later. |
| 22:05:23 | evan | atm, it's not helping. |
| 22:06:18 | evan | oh, ok, i see why he did this |
| 22:06:24 | evan | ffi_lib "a", "b", "c" |
| 22:06:29 | evan | says to attach_function |
| 22:06:38 | brixen | your change works on ubuntu 9.10 for me |
| 22:06:42 | evan | "look for symbols in any one of these libs" |
| 22:06:44 | evan | where as |
| 22:06:58 | evan | ffi_lib "a", ["b32", "b64"], "c" |
| 22:07:24 | evan | says " look for symbols in library a and c, and also either b32 or b64, whichever exists. |
| 22:08:16 | evan | the first behavior lets you a have one Module that has method hooks for my symbols in different libraries |
| 22:08:21 | evan | thats a feature we didn't have before |
| 22:08:26 | evan | it was one Module, one library |
| 22:08:41 | evan | s/my/many/ |
| 22:17:28 | boyscout | Fix how/where to get iconv symbols - 37cf484 - Evan Phoenix |
| 22:17:28 | boyscout | Add some docs - 6a1d4f0 - Evan Phoenix |
| 22:25:32 | boyscout | CI: rubinius: 6a1d4f0 successful: 3441 files, 13524 examples, 41038 expectations, 0 failures, 0 errors |
| 23:37:44 | evan | brixen: oh man |
| 23:37:54 | evan | marcus invited me to hang out with him in vegas again. |