Index

Show enters and exits. Hide enters and exits.

01:11:03boyscoutFFI API revamp, take 1. - 71fdc75 - Evan Phoenix
01:11:11evanthat was a biggy.
01:14:35brixenawesome!
01:14:51brixenI'm almost done with c-api
01:15:24brixenpondering equality saturation again
01:15:32evan:)
01:16:01brixenI think I should take a stab at converting an opcode stream using their algo and the llvm ffi bindings
01:16:16evango for it.
01:16:26brixenalso, pondering generating all this AOT into a db that the jit can consult
01:16:33brixenwith a way to fill in the IC info
01:16:54evansure
01:17:44brixenwe should write down what me don't know that we don't know about perf relative to the existing jit
01:18:43brixener s/me/we/
01:19:06evan:)
01:19:15evanhow can we write it down if we don't know it?
01:19:19brixenheh
01:39:19boyscoutCI: Commit 71fdc75 failed. http://github.com/evanphx/rubinius/commit/71fdc7551f676fec9ac7df08845c6b0e8e4f0210
01:40:03evanack.
01:53:26boyscoutUse proper ordered choice syntax - 4460b2f - Evan Phoenix
02:01:26boyscoutCI: rubinius: 4460b2f successful: 3463 files, 13870 examples, 41532 expectations, 0 failures, 0 errors
02:02:18slavabrixen: wouldn't it be cool if the rbx jit was written in ruby? :)
02:05:07brixenslava: it would be interesting
02:05:14brixenand it may yet be :)
02:05:37brixenwhat would be really interesting is a dynamic insn set
02:05:47brixenand dynamically adding to the set of primitives
02:05:50brixenat runtime
02:06:00slavathat's an FFI :)
02:06:06brixenno, not really
02:06:21brixenkinda, but not exactly
02:07:10brixenI'm actually talking about passing some source to llvm and getting a new insn
02:07:16brixennot loading a dylib
02:13:30slavabrixen: we have a facility for that in factor
02:13:55slavabrixen: there's a mechanism where you can pass a code block instead of a function name or a function pointer
02:14:16slavabrixen: 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:10slavaI guess its like inline assembly in C
02:17:30brixennice
02:20:14slavait means we don't need assembly in the VM, and aren't tied to a single inline asm syntax
02:20:29slavaSquirrelFish #ifdefs all of its inline assembly, once for gcc and once for msvc
02:24:47brixenthat doesn't sound fun
02:25:21slavamany language implementations can just brute force everything like that
02:25:30slavawithout having to come up with elegant solutions to problems
02:25:37slavabecause they have a lot of manpower to throw at the project
02:32:27evanok, off to enjoy the friday
02:32:33evanhave a nice weekend everyone!
02:33:25brixenevan: you too!
06:40:12postmodernwow a few first specs in the rubinius suite got really slow
06:40:22postmodernand hang for 10-20 seconds
07:04:40brixenpostmodern: I'm not seeing that
07:05:02brixencould you run bin/mspec ci -fs and tell me which those are?
07:07:43postmodern- reads all lines of stdin
07:07:51postmodern- reads the contents of stdin
07:07:59postmodern- reads a number of bytes from stdin
07:08:03postmodernetc
07:08:10postmodernlooks like stdin had a regression?
07:08:51postmodern- presents $0 file data after __END__ as a File object
07:09:17postmodernhmm IO related things in fact
07:11:06brixenwhat platform?
07:11:16postmodernlinux amd64
07:11:22brixencould be the ffi stuff
07:11:32brixentry reseting before evans commit
07:11:41brixenI'm not seeing anything like that here
07:11:52brixenbut I do have iconv specs failing
07:11:56brixenoddly
07:12:18postmodernim still waiting for iconv to become available on my platform
07:13:13brixenbecome available?
07:13:53postmodernGentoo has it masked on amd64
07:13:57postmoderni have no clue why
07:14:13brixenweird
07:14:16postmoderner i think it's due to it requiring a newer version of glib
07:15:00brixenhrm, well, I'm not going to get anywhere looking at these failures tonight :/
07:15:07brixensleeps
10:29:32PierreYHi. To update rubinius to latest codebase do git pull / rake is sufficient ?
10:32:30cyndisusually yes
10:33:37PierreYthank you, I thought I have to invoke some strange git commands to get the code in sync with remote repository
19:01:00dbussinkevan: ping?
20:12:52brixendbussink: seeing any iconv specs failing on leopard?
20:13:08slavayo brixen
20:13:14dbussinkbrixen: i'll check
20:13:16brixenyo slava
20:13:25brixenslava: stirring up the bees I see :P
20:13:52slavaif publishing objective measurements counts as such, sure
20:14:09brixenyeah, some of those comments are teh hilarious
20:14:29brixen"you aren't playing fair by making language features that work well in this domain?
20:14:32brixen"
20:14:40slavaremember, if your favorite language doesn't perform well on a benchmark, the benchmark is flawed
20:14:49brixenyeppers
20:15:02slavaits hilarious how V8 is 10x ahead of everyone else on the regex test
20:15:18brixenoh, does V8 use re2?
20:15:24slavait uses google irregex
20:15:43slavawhich is apparently really optimized and hardcore
20:15:50brixeninteresting
20:16:00slavaalso it makes space usage guarantees, like the implementation has no unbounded recursion internally
20:16:09slavaapparently stack overflow is a problem with some regex implementations
20:16:11brixenI was looking at re2 the other day, but it doesn't allow backrefs, so we couldn't use it
20:16:18slavaneither does irregex
20:16:21brixenI see
20:16:43slavaI think v8 switches to another engine if the regex has backrefs
20:16:46slavappcre probably
20:17:01brixenhuh, that's interesting
20:17:42slavaits 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:50slavalike scripting languages -vs- compiled languages, meaningless stuff
20:18:01brixenwelp, I need a shower and nutrition badly, aikido kicked my ass today
20:18:09brixenslava: yeah, people are just lame
20:18:13brixenthat about sums it up
20:18:16slavaheh
20:18:30brixenbbiab...
20:18:36slavaI think a lot of programmers don't really grasp the difference between language and implementation
20:18:58slavadaydreams of a dynamic JITted scripting interpreted COBOL
20:24:25jaribhaha
20:26:25evanslava: we could do it!
20:27:06evanso, I watched Primer yesterday
20:27:14evanand I think I need to watch it a few more times.
20:32:33dbussinkbrixen: i'm seeing iconv spec failures too
20:32:41dbussinkevan: seem to be related to the ffi changes
20:32:54evanplease gist the errors.
20:32:59evani don't see an issue about it
20:33:13dbussinkhttps://gist.github.com/41bbcaad49805bd09ab0
20:33:18evanhammers the "ticket first" mantra
20:33:27dbussinkevan: me neither, but brixed asked me if i was seeing it too
20:33:29evaneasy tickets to close are good!
20:33:34dbussinkevan: so i guess he was seeing it
20:34:04evanok.
20:34:11evanoh, interesting.
20:34:23evanbrixen is in the shower I think.
20:34:49dbussinkyeah
20:35:14dbussinkevan: you put him on a too long leash, so he can leave his computer
20:43:59dbussinkevan: i have a system libiconv and one through macports, maybe that's of influence?
20:44:10evanwait, i'm confused
20:44:12evanare you seeing that?
20:44:16evani thought you said just brixen was.
20:46:08dbussinkevan: i'm seeing it too
20:46:19evanah ok.p
20:46:29dbussinkevan: i was responding to that i don't see an issue reported about it either, sorry for the confusion :0
20:47:05evanwell, that seems like it's able to open a library, but the library doesn't have the specified symbol
20:48:30evandbussink: open up irb, and do
20:48:55evanlib = FFI::DynamicLibrary.new("libiconv")
20:48:57evanp lib
20:48:59evanwhat do you get?
20:49:10brixenI'm back
20:50:04evanwelcome back
20:50:07brixenI just started to look at the iconv failures
20:50:13brixenjust wanted confirmation on them
20:50:18evantry the snippit above
20:50:24evansee if you can open libiconv
20:50:31brixenk
20:50:42brixenyep
20:50:53evandoes it appear to have a valid handle? ie, not null.
20:51:33brixenyes
20:51:33brixen#<FFI::DynamicLibrary:0x2ec @name="libiconv.dylib" @handle=#<FFI::Pointer address=0x2cd8ab0>>
20:51:38evanok, then try
20:51:55evanlib.find_symbol "iconv_open"
20:52:28dbussinkNameError: no method or variable 'name' on an instance of FFI::DynamicLibrary::Symbol
20:52:33brixenyeah
20:52:45brixenhm
20:52:54evanname? hm.
20:53:05dbussinkhttps://gist.github.com/5a5ca08da3341b3045d4
20:53:18evanoh oh
20:53:19dbussinkah, inspect triggers that
20:53:20evaninspect bug.
20:53:30brixenyeah
20:53:37evanthat should be @name
20:53:44evanchange that in kernel/platform/pointer.rb and try again.
20:54:32dbussink#<FFI::Library::Symbol name=iconv_open address=7fff837fcd42>
20:54:47evanhm, ok, so why is attach_function complaining...
20:55:03evanit must be for some reason not using that lib and using the current process
20:55:31evanbecause there is a bug in #find_symbol
20:55:46evanit needs to return nil and not create a Symbol object.
20:56:09brixenahh ok
20:56:36evanbut you shouldn't be seeing that anyways.
20:57:08evanoh oh oh
20:57:11evander.
20:57:16evanin lib/iconv.rb
20:57:21evanon line 7
20:57:31evanchange the order of the array
20:57:37evanit needs to check libiconv first
20:57:48evanthats why you're hitting this.
20:57:49dbussinkevan: shouldn't it continue with the next one if it doesn't find it?
20:58:01evani'm checking what the logic should be now.
20:59:11evanah yes.
20:59:16evanthis is just a bug in #find_symbol
20:59:21evanbecause attach_function would have tried the next one
20:59:26evanif #find_symbol returned nil.
20:59:30evani'll push the fix.
21:00:14boyscoutReturn nil if the symbol isn't found - df2d00a - Evan Phoenix
21:00:41evanupdate and try that
21:00:42evanshould fix it.
21:03:05brixenhmm, not quite
21:08:23boyscoutCI: rubinius: df2d00a successful: 3463 files, 13870 examples, 41532 expectations, 0 failures, 0 errors
21:08:26brixenhum, there is only one lib in the list here in attach_function
21:08:53dbussinkbrixen: only the current process?
21:10:21brixenyes
21:10:50dbussinkok, looks like ffi_lib is broken, it only adds the first successful DynamicLibrary loaded to the list
21:10:55brixensorry, trying to trace it but my mental faculties after 2.5 hrs of aikido are nil
21:11:05dbussinkwhich of course always succeeds for the current process
21:11:08dbussinkevan: ^^
21:11:13brixendbussink: aah ok
21:11:35evansorry, on the phone with my mom.
21:11:45dbussinkevan: what is the behavior of something like this: ffi_lib ["libxml", "libiconv"]
21:11:57brixenahh yeah, there's a break there
21:12:01dbussinkand then attach_function "iconv_open"
21:12:03evanack
21:12:04evanyeah
21:12:06evani screwed that up
21:12:15evanremove the []
21:12:22evanyou want to search both
21:12:27evannot the first one that exists
21:12:51brixenI removed the break on line 33 of kernel/platform/library.rb
21:13:04dbussinkbrixen: but in that case only the last one is added
21:13:07evanbrixen: thats wrong.
21:13:25evanan array means "pick the first one that exists"
21:13:34brixenahh
21:13:56dbussinkevan: also if the method attached doesn't exist in the first one that exists, but in the second one that exists?
21:13:56brixeninteresting semantics
21:14:26evansorry guys
21:14:30evani'll be back in 10 minutes.
21:16:59brixenthis makes sense
21:17:03dbussinkevan: for if you're back, what are the semantics of this? https://gist.github.com/d8e97d9f74cc0744029d
21:17:14dbussinkdoes that work or fail if it can succesfully load libxml2?
21:17:37brixendbussink: as I understand it, [] means use the first lib that loads
21:17:51brixenvs a, b, c means keep checking
21:18:06brixenso commit 4460b2fa3 was because find_symbol had that bug not returning nil
21:18:18brixenI reverted 4460b2fa3 and the specs are running for m
21:18:21brixene
21:23:02dbussinkbrixen: all green for me too with that change
21:25:46brixencool
21:26:30brixenthat is a rather odd semantic to me
21:26:40brixenI'd rather there be different method names
21:27:53dbussinki'm thinking what would be a good use case of the [] semantics
21:27:58boyscoutWrap up C-API specs in #ifdefs. - 2a2371f - Brian Ford
21:27:58boyscoutClean up some C-API defines. - 92aa9a8 - Brian Ford
21:27:58boyscoutMoved C-API specs under spec/ruby/optional. - c21407b - Brian Ford
21:27:58boyscoutUpdate CI tags for modified C-API specs. - 0cdcbd4 - Brian Ford
21:27:58boyscoutSearch all iconv FFI libs. - 955d90b - Brian Ford
21:28:15brixenlet's see if boyscout breaks with the c-api spec move
21:28:41brixendbussink: I don't know either, something ruby-ffi added
21:29:13brixenwhich, 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:43brixenwe have a lotta c-api btw :)
21:30:00boyscoutFix DynamicLibrary::Symbol#inspect - d475e8a - Dirkjan Bussink
21:31:13dbussinkbrixen: mri's has a huge c-api ;)
21:31:19brixenheh
21:32:34evanok, back
21:32:40evanyeah, reverting 4460b2fa3 was what I meant should happen.
21:35:06brixencool
21:35:15brixenevan: wow, that ffi commit is huge :)
21:35:25evanyeah, i know.
21:35:34evani'm a coding machine.
21:35:44brixenhaha
21:36:00brixenso, discovered a bug in 1.8.7-8 with the c-api specs
21:36:01dbussinkevan: what fuel do you run on?
21:36:16evanATP mainly
21:36:21brixenI guess shyouhei will backport the fix and there will be another 1.8.7 patchlevel
21:36:27evansynthesized from raw calories and oxygen.
21:36:31brixenheh
21:37:06brixenevan: http://twitter.com/jvoorhis/status/14998998454
21:37:16evanI use caffiene as an engine additive.
21:37:34brixenthat's jvoorhis' llvm-based music lib afaik
21:38:02evanrad!
21:38:07dbussinkevan: you have to watch with that stuff, it can burn the engine out too
21:38:09brixenyeah, pretty sweet
21:38:42brixendbussink: there's that thing call sweet satisfaction that tends to counter the burnout :)
21:38:44evandbussink: yeah, it has to be tempered with a modest flow of carbohydrates.
21:38:52slavahi evan
21:38:58evanslava: hello slava.
21:39:59slavaDLS paper is almost done
21:40:08brixenslava: when can we see it?!
21:40:17brixenI'll keep it confidential
21:40:22slavaI could send you a draft
21:40:27brixenpls do
21:40:31slavaI don't think we're allowed to publically release it
21:40:32evanslava: i read the first 3 pages
21:40:34evanseems good.
21:40:51slavawe fixed a ton of stuff since you last saw it. better examples and clearer wording
21:41:24brixenslava: brixen at the G mail
21:41:29slavaalright
21:48:09boyscoutFixed rb_big2dbl. - 060a995 - Brian Ford
21:48:09boyscoutUpdate CI tags for fixed spec. - bf6778b - Brian Ford
21:48:38brixentrying to teach my fingers to type spec/ruby/optional/capi instead of spec/capi
21:53:14boyscoutCI: Commit 955d90b failed. http://github.com/evanphx/rubinius/commit/955d90b628b587b7fa4f5f78659bbeac92f5888d
21:54:19evan:/
21:54:24evanthat was what that fix was for...
21:54:24evanhm.
21:54:53evanok, repro and fixing on elle
21:56:25evan:/
21:56:29evanelle works ok...
21:56:56evanoh, nm.
21:58:04evanah ok.
21:58:07brixenhmm
21:58:17evanthe issue is me trying to decifer the ffi gem to figure out the logic.
21:58:27evani think I see what it's doing.
21:59:58evanhrm.
22:01:25evanbrixen: could you try making that ffi_lib line
22:01:55evan["libiconv", FFI::CURRENT_PROCESS]
22:02:02evanie, in an array but switched.
22:02:09brixensure
22:03:01brixenthat works
22:03:27brixenI was just booting up ubuntu in a vbox
22:03:46brixenit kernel panicked this morning, so I was putting off doing it
22:03:58evank
22:04:02evanI think thats the right logic
22:04:18evanthe idea here is we want either libiconv or the current process
22:04:32brixenseems like that should be a different method
22:04:42evanwell, we're stuck with this API for now.
22:04:46brixenno idea why this overloading args made sense to someone
22:04:48brixen:/
22:05:10brixenwhat happens when you pass a Hash? :)
22:05:16brixenor a Range
22:05:16evanwe can discuss why the API is what is it later.
22:05:23evanatm, it's not helping.
22:06:18evanoh, ok, i see why he did this
22:06:24evanffi_lib "a", "b", "c"
22:06:29evansays to attach_function
22:06:38brixenyour change works on ubuntu 9.10 for me
22:06:42evan"look for symbols in any one of these libs"
22:06:44evanwhere as
22:06:58evanffi_lib "a", ["b32", "b64"], "c"
22:07:24evansays " look for symbols in library a and c, and also either b32 or b64, whichever exists.
22:08:16evanthe first behavior lets you a have one Module that has method hooks for my symbols in different libraries
22:08:21evanthats a feature we didn't have before
22:08:26evanit was one Module, one library
22:08:41evans/my/many/
22:17:28boyscoutFix how/where to get iconv symbols - 37cf484 - Evan Phoenix
22:17:28boyscoutAdd some docs - 6a1d4f0 - Evan Phoenix
22:25:32boyscoutCI: rubinius: 6a1d4f0 successful: 3441 files, 13524 examples, 41038 expectations, 0 failures, 0 errors
23:37:44evanbrixen: oh man
23:37:54evanmarcus invited me to hang out with him in vegas again.