Index

Show enters and exits. Hide enters and exits.

00:00:56evanbrixen:
00:01:06evanclass A; define_method :foo, lambda { super }; end
00:01:11evanI get a compiler error
00:05:37brixenum..
00:06:52evanalso get a VM error
00:07:01evanif i move things around a little
00:07:11evanbecause I think the super send site is created with nil as the name
00:07:15evanwhich makes sense
00:07:17brixenyes
00:07:32brixenit does have nil name
00:07:37jvoorhisso if i wanted my llvm bindings to run on rbx, i should avoid implicit use of to_ptr, implement dispose instead of AutoPointer, and avoid dynamically linking LLVM if it's already statically linked
00:07:45evanok, i'll adjust code to allow for that
00:07:53evani think we should probably always use nil there.
00:08:13evani'll have to check, but we need to work out the "which super method is invoked" issue
00:08:24evanie, does aliasing influence super
00:08:28brixenevan: if you look at rubyspec/language/super_spec.rb there are specs at the bottom we've never passed
00:08:38evanjvoorhis: those would help!
00:08:49brixenthey are deleted in frozen because they caused compiler errors under the old compiler
00:08:50evanjvoorhis: if you wanna polish up the FFI api a little
00:08:54evani'd be happy to give you a commit bit
00:09:09evan10-4
00:11:00jvoorhisevan: i should ask for it a little bit later :) i'd love to help out, but the LLVM wrapper is just a small piece of a bigger project i want to pull off soon
00:11:12evanok cool
00:11:18evani'd love to get your LLVM API running on rbx
00:11:33evaneventually, i could see us writing optimization passes in ruby
00:11:35evanthat the JIT would use
00:11:43jvoorhisthat would be awesome
00:11:55jaribjvoorhis: what's the bigger project?
00:11:59jvoorhisi'm only going through the C wrappers
00:12:13jvoorhisjarib: i'm prototyping something not entirely unlike Csound
00:12:25jariboh, nice
00:12:37jariblooked at supercollider?
00:12:45brixenevan: that form above (with super) is a compile error under the old compiler too
00:12:46jvoorhisyeah, supercollider is cool
00:12:57brixenevan: I didn't know how to fix it with the scheme we use
00:13:01jvoorhisi have a pretty different design though
00:13:40evanbrixen: ok.
00:13:44evanyeah
00:13:45evanhm.
00:13:45evanok
00:14:27evani'm going to focus on "lambda { super() }"
00:14:31evanfor right now
00:14:47jaribjvoorhis: i don't really know the internals of either csound/supercollider, just know what they are
00:15:06jaribsounds like a cool project though
00:15:46jvoorhisthey're both based around components called "unit generators" that get connected in a graph and pass discrete audio signals around
00:16:37jvoorhisthe components are written in C or C++, and get connected by a higher-level language
00:17:33jvoorhisinstead of using a traditional digital audio representation, i'm representing audio signals as functions from continuous time to samples
00:18:19jvoorhisand instead of connecting prebuilt components, i'm generating code with llvm
00:20:08jaribsounds interesting
00:20:32jvoorhisdesign is mostly based on http://conal.net/papers/jfp-saig/compile-dsel.pdf
00:20:43jaribi'm a ruby programmer with a degree in music, so will definitely keep an eye on your work :)
00:21:03jvoorhisbut substitute audio for animation, and ruby for haskell
00:21:12jvoorhisand LLVM for C in the codegen :)
00:21:15evani'm a ruby programmer with a degree in lazy, so i want you to work on the FFI API!
00:21:16evan:D
00:21:51jaribok, i'll stop distracting him :)
00:21:53jvoorhisi'll get to it :) this is something i've wanted to make for a long time and i keep getting stalled
00:22:21evan:)
00:22:38evanjvoorhis: i'm curious
00:22:45evanwhat aspects of LLVM are you looking to use?
00:23:10evani ask because i've been interested in extending rubinius to add some hooks for people to generate rbx bytecode directly
00:23:28evani could easily add a few things that would make stuff able to be compiled via the JIT very well
00:24:19jvoorhisevan: primarily, i'm interested in generating *fast* callback functions for audio IO
00:24:44evanwho calls them?
00:24:52jvoorhisCoreAudio or PortAudio
00:25:03evani know squat about how audio APIs work
00:25:10slavaevan: how do you debug your remembered set?
00:25:18jvoorhisboth PA and CA have similar apis
00:25:24evanslava: whats there to debug?
00:26:11jvoorhisyou give them a callback, they call it repeatedly with some user data and optionally a buffer of input samples; callback fills a buffer of output samples
00:26:29evanah ok
00:26:52evanyeah, sounds like something you need a unique language to do
00:27:08jvoorhisso i'm interested in using LLVM as an optimizing JIT
00:27:19evanyep.
00:27:34jvoorhisand i might explore using LLVM's vector types to generate SIMD instructions
00:27:38jvoorhisbut i don't know if i'll get to that
00:27:40slavaevan: well, what if you forget a write barrier
00:27:43slavaand you get a random crash because of it
00:28:01slavajvoorhis: this sort of thing is what llvm is good for
00:28:19evanslava: we've got extensive apis that internally use the write barrier
00:28:24jvoorhisslava: are you the factor guy?
00:28:27evanwe almost never poke one pointer into another
00:28:39evanso we rarely have troubles
00:29:08slavaevan: so you just encapsulate it all like crazy. hmm
00:29:44evanthe attr_accessor() macros we use in a class body setup methods that set data members and then call the write barirer
00:29:51evanand we go through those generated methods always
00:30:11evanthe few other cases, such as tuple, are explicitely coded to call the write barrier
00:31:46slavaok
00:32:19evanso the answer try very hard to not have to debug it.
00:32:26evanwith disipline
00:32:39slavaheh
00:32:50evanbecause debugging it SUCKS SO HARD
00:33:01slavaI was just wondering if you've ever coded up a tool that walks the heap and checks if all young pointers are recorded or something
00:33:03evani've certainly done my share
00:33:11slavaand if you have any thoughts on such an idea
00:33:21evani wrote a heap debug early on that has done random things
00:33:33evanit's pretty useless now, because i rewrite it to help me debug everytime
00:33:45evanbut certainly something that would validate the contents of the remember_set would do the trick
00:33:54evanrun the validation before you do a collection
00:34:05evanso you know the mature object and the young objcet that were missed
00:34:32evanthat gives you the relative time of the missed write barrier (after the last collection) and the parties involved
00:34:44evanthats typically enough forensics to start the hunt
00:35:10slavayeah
00:35:17evani'd probably then isolate the time even more
00:35:31evanby numbering each collection
00:35:37evanand on the one right before it goes wrong
00:35:50evanset it up so that every allocation does the validation
00:35:58evanor something thats run frequently
00:36:17evanthat should get you pretty darn close to the code that is bad.
00:36:39evan(btw, numbering each collection ==
00:36:56evanstatic int collection = 0; collection++;
00:37:08evanat the top of your garbage_collection function
00:46:09evanerg.
00:46:14evanthis super thing sucks.
00:46:30evanbecause super calls the super class version of whatever the current method calls itself
00:46:36evana lambda doesn't call itself anything.
00:47:57brixen:(
00:50:25jvoorhisbut you're calling some superclass method corresponding to the method enclosing the lambda – calling super within a lambda shouldn't change anything
00:50:36evanah
00:50:37evanbut it does.
00:50:42evanif the lambda was passed to define_method
00:50:56evanand you're invoking the lambda like it were a method.
00:51:17evanin that case, super in the lambda goes towards the superclass version of the method named what was passed to define_method
00:51:39jvoorhishm
00:52:32slavawhat if the same lambda is used for two define_methods?
00:52:59evanah ha!
00:53:05evan2 different superclass are invoked.
00:53:30jvoorhisyeah, it seems totally late binding in MRI
00:53:49evani've got an idea
00:53:51evani'm testing now
00:54:18evani'm doing to dup the internal data
00:54:34evanand change the name of the CompiledMethod within a lambda to have the name passed to define_method
00:54:41slavawhy not clone the lambda?
00:54:50evansame thing really
00:54:58slavaI don't really know anything but it seems strange that define_method would mutate its argument
00:55:13evanwhen you pass a lambda to define_method
00:55:27evani actually use the internal data of the lambda anyway
00:55:36evana lambda is an instance of Proc
00:55:43evanwhich is just a wrapper around BlockEnvironment
00:55:54evanso I dup the BlockEnvironment
00:55:58slavaah
00:56:16evanheh
00:56:24evanAn exception occurred running scratch/defmeth.rb
00:56:25evan StackError (StackError)
00:56:25evanBacktrace:
00:56:27evan #<D:0x94>.foo at scratch/defmeth.rb:20 (2289 times)
00:56:30evan main.__script__ at scratch/defmeth.rb:25
00:56:31evani'm getting closer
00:56:37evani love my recursion flattening in backtraces
00:56:42jvoorhisooh
00:57:34evanI should flatten mutual recursion too
00:58:20jvoorhisdoes rbx support tail calls (mutual or not)?
00:58:31slavait supports them, just doesn't run them in O(1) space :)
00:58:39evanjvoorhis: not atm, no.
00:58:50jvoorhisslava: you knew what i meant :)
00:58:52slavatail calls are kinda shitty as far as stack traces go
00:58:52evanhehe
00:58:57evanyeah
00:59:03evantail calls are really hard on the programmer
00:59:23jvoorhisyeah, they are
00:59:31evantail call to myself could be done and not confuse the programmer
00:59:35evani'd do that before anything else
01:02:16jvoorhisnot an important point for me – so far, nobody writes Ruby code that way
01:02:28boyscoutFixed unnamed splat arg to a method calling super. - 630184d - Brian Ford
01:02:28boyscoutFixed clamping mode_t in File. - 8e5aa8a - Brian Ford
01:05:51boyscoutCI: 8e5aa8a success. 3002 files, 11417 examples, 35483 expectations, 0 failures, 0 errors
01:37:22ddubI'm fine with tail calls as an optimization, I just don't like it being advertised as a feature
01:38:21slavaI'm fine with it being advertised as a feature, but as an optimization that the compiler may or may not do, its problematic :)
01:38:42slavaseriously, something that changes space complexity is not "just" an optimization; its either something you can rely on always being there, or you ignore it completely
01:40:11evanyes
01:40:15evanthats why scheme is scheme.
01:40:20evanbecause it depends on it existing.
01:40:44ddubI don't get this bigdecimal thing
01:40:57ddubbuilding a 32 bit ver of 1.9.1 now to see what happens
01:41:50ddubhuh.
01:41:53slavaevan: turns out I had a fencepost bug in my write barrier and it wasn't always marking the last card of an array when resizing an array that was so large that the resized array was ending up in tenured space :)
01:42:17evanoops.
01:42:35slavaits been there for two weeks but CI only started seeing crashes from it yesterday
01:43:48ddubevan, brixen: http://gist.github.com/232514
01:44:15evanyes?
01:44:18evanwhat of it?
01:44:40brixenthe value of pi is 3.14159...
01:44:48ddubeven on 386 I get the value that you are supposed to get for 64 bit in that failing test
01:44:49brixenddub: I don't have the problem in my head
01:45:11evanit's fucking stupid
01:45:13evanis the answer.
01:45:19evanwhen the question involves bigdecimal.
01:46:48brixenddub: bigdecimal is an ext
01:47:03brixenit may get compiled with different flags than the ones you used to compile mri
01:47:12brixenit's possible, dunno if it's happening
01:47:33ddubI think the test itself is broke, doesn't help that it crashes under the system mri in SL :P
01:48:30brixenwell, before you blame the test, make absolutely sure how bigdecimal is being compiled
01:48:48brixenit's got an extconf.rb, it's getting its own Makefile during build on MRI
01:49:49ddubyeah, the test itself seems unpossible
01:49:59evanit's very possible.
01:50:03evani've seen both values
01:50:12evanperhaps they changed it in the bigdecimal that 1.9 uses
01:50:17ddubbigdecimal internally uses long types, which means on 64 bit OS X (which is LP64) it should have double the precision and accuracy
01:50:18evanlike i said, it's fucking stupid.
01:50:29ddubyet the 64 bit test checks it against a less precise answer
01:50:36evancan and should do not apply when the question involves bigdecimal.
01:50:41brixenfires up 64bit ubuntu
01:50:53evanddub: thats entirely because thats what value it produces
01:51:06evanon the version we use.
01:51:08ddubevan: you sound like a big fan :)
01:51:52ddubtries to get an 'I <3 BigDecimal' bumper sticker made up for evan in time for rc
01:51:57evansweet!
01:52:36brixenimagined a large set of fins attached to a motor and pushing air
01:53:45ddubthe 1.9 bigdecimal (that I looked at earlier) seems to mostly have maintainability changes
01:55:31ddubhmph yeah that time I got the 32 bit value
01:55:37ddubgives up
01:55:46evansee.
01:55:50evanfucking stupid.
01:56:54ddubI'd say the test is broken
01:57:14ddubit is written as "check to see if the ruby impl segfaults"
01:57:23ddubwell, obviously most of the tries I had didn't
01:57:27ddubso it should be fine
01:57:37ddubat this point, not segfaulting seems like a good stretch goal for bigdecimal
01:59:11brixenddub: saying the test is broken is meaningless
01:59:26brixentell me why the expected value is not correct
01:59:58brixenif the test is "broken" then there is a bug in MRI
02:00:57ddubbrixen: the check of the value is not relevant for what the test actually says it is testing
02:01:13brixensure it is
02:01:18brixenwhy isn't it?
02:01:38brixenwe don't have a lambda { }.should_not segfault() matcher
02:07:48evansweet.
02:07:51evansuper super'd!
02:11:02brixensweet!
02:14:39ddubhmm
02:14:57ddubbrixen: I'm thinking about whether I could write a should_not segfault matcher now
02:15:23brixenddub: probably shouldn't bother, I won't accept it :)
02:20:07ddubbrixen: anyway, to be more clear, I think checking for segfaults and checking for some (standard defined) accuracy of bigdecimal are both valid tests
02:21:05ddubbut I'm trying to investigate some arbitrary and undocumented expectation of bigdecimal accuracy in a test which really is "handles creation from really long strings"
02:22:40brixenddub: why do you say arbitrary and undocumented?
02:22:51brixenit's a value that was shown to cause a segfault
02:22:56brixenthe output is the dump format
02:23:03brixenwhat are you bitchin' about? :P
02:23:37brixenand all bigdecimals are created from strings
02:24:11ddubseems like you don't need to dump the value or look at it to know if creation caused a segfault
02:24:28brixenthe dump is to show the string value
02:24:35ddubif there is another spec to say, enforce the format of the dump value, that makes sense
02:24:43brixenhow would you confirm it?
02:24:53ddubshould_not segfault ;-)
02:24:57brixenno
02:24:58brixensorry
02:25:02brixennext issue?
02:25:08ddub(actually looked and no, I can't define a sigsegv handler in ruby)
02:26:02ddub*shrug* ok, I'll stop pushing
02:27:45ddubi don't know whether you understand what I am saying or not, but at this point I'm willing to let someone else deal with adding a new platform or exclusion or whatever for bigdecimal on rbx
02:28:14brixenthat's fine
02:28:22brixenthere's a ticket for it on os x sl
02:28:34brixenI'll investigate in on x86_64 ubunutu
02:32:26ddub(but I would suggest that the test should be at least calling to_s rather than dump)
02:32:46brixenno, we don't need to create a string that big
02:32:53brixenthat's why _dump is used
02:33:02brixenbesides, *why* should it call to_s?
02:33:12brixenwhy is that value preferable over _dump?
02:34:29ddubbecause dump gives an internal representation, while to_s gives the scientific notation
02:34:50ddubwell, quasi. => "0.1E10000001"
02:36:15brixenso what?
02:36:29brixenif bd could not reproduce the real value from the dump
02:36:34brixenthere would be no point
02:36:52brixenthe set of dump values is isomorphic under load to the set of string values
02:37:02brixenis getting very annoyed
02:37:09brixenI'm going to eat some dinner
02:40:48evan:(
04:40:48brixenI've got a repro of the bigdecimal issue on ubuntu 64bit
04:40:53brixenso I can poke at it
04:46:17boyscoutSome fixes to build on ubuntu 9.10 64bit. - 31b9126 - Brian Ford
04:48:08boyscoutCI: 31b9126 success. 3002 files, 11417 examples, 35483 expectations, 0 failures, 0 errors
05:16:31brixencan someone on SL run this cmd in irb and gist me the output
05:16:32brixenConfig::CONFIG.each { |k,v| puts "#{k.to_s.ljust(20)} -> #{v.inspect}" }; nil
05:33:27ddubbrixen: http://gist.github.com/232628
05:41:48brixenddub: thanks
05:42:01brixenI've got the issue, but the solution sucks :/
05:42:14brixenthe defines are wrong on 64bit for bigdecimal
05:42:34brixenthe extconf.rb runs a program to figure out what to define
05:43:41brixenhm, I wonder what is the best way to detect 64bit from rbconfig values
05:43:51brixenI could look for x86_64
05:44:02brixenor target_cup i686 ?
05:44:31brixencpu rather
05:44:48brixenddub: what do you think?
05:46:16rueHi
05:47:26brixenhi rue
05:50:07brixenmri has a paucity of information about the platform in rbconfig
05:52:51ruex86_64
05:53:37ruei686 can appear for 32-bits too
05:53:54brixenrue: k
05:55:54brixeneffen beautiful
05:56:20brixentarget_cpu is i686 on SL, x86_64 on ubuntu 64bit
05:58:17brixenI don't see a standard config value to use :/
05:58:27rueHum, is it possible it was built for 32-bit or universal?
05:58:54brixenddub: that config gist was from default SL ruby, yes?
06:00:58brixenso much for the easy solution...
06:03:22rueTehee...watching M.A.S.K.
06:03:31rueWonder if they will resurrect it next
06:05:28rueo/~ Masked heroes / working overtime / fighting crime o/~
06:05:40brixenbigdecimal you SUCK
06:16:31brixenI suppose I will just use 1.size
06:17:09brixenddub: giving bigdecimal the right defines makes all the difference :)
06:33:28ddubbrixen: what was the missing define?
07:52:29dbussinkbrixen: hmm, my simple test case for the super(*) was indeed fixed, but rspec seems to still fail, have to look further apparently :)
07:56:59dbussinkbrixen: ah, stale rbc files
08:04:59brixendbussink: working on fixing the stale files right now
08:05:33dbussinkbrixen: w00t, got data_objects passing now completely
08:05:43dbussinkuses rspec, with shared specs etc.
08:06:05rueNice
08:06:15dbussinkwe're actually looking at moving to bacon
08:06:26dbussinkbecause that would allow us to run specs on new implementations way earlier
08:06:35dbussinklike macruby and ironruby these days
08:09:43brixenthere's rspec clones that are simpler and wouldn't require changing all the syntax
08:10:13brixenand rumor has in rspec 2.0 will be much simpler
08:10:58boyscoutFixed building bigdecimal ext on 64bit. - 677cf53 - Brian Ford
08:11:29dbussinkbrixen: yeah, bacon is one of them
08:11:38dbussinkthat's why we are looking at that
08:12:45boyscoutCI: 677cf53 success. 3002 files, 11417 examples, 35483 expectations, 0 failures, 0 errors
08:12:57brixendbussink: understood
08:13:11brixenpoint is still that it's possible without changing syntax
08:19:36brixendbussink: btw, I'd think it'd be a toss-up between LazyArray and rspec for most difficult for a nascent impl to run ;)
08:19:45slavahi brixen
08:19:50brixenhi slava
08:45:24boyscoutFix super in a block passed to define_method - 0adcec2 - Evan Phoenix
08:45:24boyscoutFix a few Module#define_method corners - cc6f8bc - Evan Phoenix
08:45:24boyscoutUpdate Module#define_method tags - 30c120b - Evan Phoenix
08:47:18evanhehe, abby found a WTFWJD xmas card
08:51:38evanif a block doesn't access any outer data
08:51:43evanyou could call it...
08:51:44evanpure?
08:52:14evanvirtuous?
08:52:24evanclosed?
08:53:39boyscoutCI: 30c120b success. 3002 files, 11419 examples, 35487 expectations, 0 failures, 0 errors
08:53:47scooprstandalone?
08:53:59evanstandalone
08:54:01evanthere ya go.
08:57:17brixenevan: I can repro the segfault installing a gem with --ri --rdoc
08:57:23brixenI update #69 with a gist
08:57:32evank
08:57:33brixenpast tense, updated
08:57:52evanso
08:57:55evanyou installed rdoc
08:58:02evanso you could build with --rdoc
08:58:05evanthen you installed rdoc again
08:58:08evanto generate the rdoc for rdoc
08:58:24brixengdb --args vm/vm -S gem install rdoc --ri --rdoc
08:58:28brixenit installs the gem
08:58:38brixensegfaults installing the rdoc for it
08:59:05brixenhttp://gist.github.com/232746
08:59:11brixenwant me to try a different way?
09:00:15dbussinkbrixen: i've already simplified lazy array :)
09:00:24dbussinkbrixen: although that makes it a less useful test case ;)
09:00:26brixendbussink: grand :)
09:00:39brixenindeed, it does a bit
09:00:56dbussinkbrixen: http://github.com/datamapper/extlib/blob/master/lib/extlib/lazy_array.rb
09:01:20dbussinkbrixen: no method undeffing and define_method proxying anymoore
09:02:59brixennice
09:04:22evandude
09:04:26evanwtf is include?
09:04:38evanyou're oring into a begin?
09:05:00rueEek
09:05:24dbussinkevan: not what i wrote, but i've seen it more often, it's not a very uncommon thing actually
09:05:27evangreat, i seem to have broken gem.
09:05:37evandbussink: i've never seen that.
09:05:52brixenI've seen wycats do that I think
09:05:56brixensurprised me too
09:06:05dbussinkevan: i've seen code like @object ||= begin; long; bunch; of; statements; end pretty often
09:06:28brixenanyveys, beddie bye für mich
09:06:52evannite
09:06:54evanyeah, me too.
09:06:57brixennite!
09:07:18evanpeople are wierd.
09:11:57slavaevan: no u
09:11:59rueActually, I would not be surprised wycats did that
09:42:07boyscoutTrap returns through a define_method {} - 5fa4878 - Evan Phoenix
09:44:47boyscoutCI: 5fa4878 success. 3002 files, 11419 examples, 35487 expectations, 0 failures, 0 errors
16:50:37evanAWESOME
16:50:37evanhttp://github.com/shugo/rubinius
16:50:42evanshugo is working on rubinius
16:52:59DefilerSweet
16:55:15boyscoutAvoid the rounding error of 0.49999999999999994 + 0.5 in Float#round - 4110770 - Shugo Maeda
16:55:15boyscoutFix whitespace - 4040161 - Evan Phoenix
16:58:00boyscoutCI: 4040161 success. 3002 files, 11419 examples, 35487 expectations, 0 failures, 0 errors
17:12:12brixenrad
17:12:44brixenevan: could you help me with a git command?
17:12:52brixengit log spec/frozen
17:12:57evansure
17:13:10evanyou want me to run it?
17:13:12brixenI'd like to convert commits from top to some hash to format-patch-es
17:13:23brixenas easily as possible
17:13:29evanfrom top being what?
17:13:33brixenhead
17:13:43brixenmost recent commit in spec/frozen
17:13:50evanjust the most recent one?
17:14:12brixenall of them from most recent to a particular commit
17:14:28brixena signpost, like the last time I sync'd with rubyspec
17:15:30evanok
17:15:32evanone sec
17:15:49evanyou want format-patch's right?
17:15:59brixenyeah
17:18:24evangit log -p is SOO close.
17:18:34evanthey should have just made it the same format as format-patch
17:18:59brixenhmm
17:20:56evanwell
17:21:05evangit-format patch -<num> spec/frozen
17:21:06evanworks
17:21:07evanso
17:21:11evangit-format patch -1 spec/frozen
17:21:15evanto get the top one
17:21:18brixenwow, git log man page is awesomer than I remember
17:21:31evani didn't recall format-patch taking a path
17:21:32evanbut it does now
17:21:41brixenok
17:22:02evanlooks like you can do
17:22:11evangit format-patch spec/frozen <since>
17:22:18evanso since just needs to be a spinpost commit
17:22:25brixenk
17:22:42evani can show you how to detect a spinpost
17:22:45evanif you need
17:23:26brixenyes, please
17:24:31evanyou basicly want a merge-base that works across 2 repos
17:27:39brixenwell, I would expect git fp spec/frozen R1..R2 to work, but when I specify hashes for R1..R2 I get an error about ambigument, path not in working tree
17:28:09evanhm
17:28:10evanweird.
17:28:11evanoh
17:28:13evann
17:28:15evanno
17:28:24evanwell, i guess you can do that
17:28:29evanbut the sha to fp is a since one
17:28:41evanbut you don't want all since
17:28:45evanyou want just a certain range?
17:29:10brixenwell, the man page says since or rev range
17:29:23brixentrying to grok git-rev-parse atm
17:33:05brixenhah, above, ambigument is supposed to be ambiguous argument
17:33:13brixena little pokemon contraction there
17:34:23brixenadds a new word to the lexicon: ambigument n. an ambiguous argument. usage: that sounds like an ambigument to me
17:34:28evanbrixen: ah crap.
17:34:43evani can't do an automated search using SHA1s
17:34:58evanbecause when you port them over, the SHA1 changes
17:35:06brixenah yeah
17:35:15brixenthat's ok, I can get the commit hashes manually
17:35:34brixenjust thought you may have some magic :)
17:35:51evani was writing you a little script
17:41:29evanbrixen: git rev-list skips from Oct 20 to May 28th on rubyspec
17:41:30evanfor some reason.
17:41:42brixenhrm
17:42:51evanoh, then it jumps back
17:43:03evani guess marc-andre must have had a whole bunch of commits he never pushed
17:43:06evanand then did
17:43:09evanso the dates are funny
17:43:24evangit log can be confusing because it's linearizing a tree
17:45:10brixenahh
17:45:19brixenwell, don't waste time on it
17:46:32evank
17:46:35evani shant!
17:46:41brixenheh
17:47:50brixenthe git fp -N spec/frozen is sweet and simple enough
17:50:15evank
18:11:43dbussinkevan: you should mail him so he can work directly on the repo then :)
18:11:51evanI did.
18:12:00evanhe'll need to fix is formatting though
18:12:11evanhe's using the MRI format
18:12:13evanbad news.
18:12:22evanmixed tabs and spaces
18:12:40boyscoutEnsure that only internally used method is private - b19d213 - Dirkjan Bussink
18:12:40boyscoutAdded rb_const_set to CAPI, but forgot to add it to the header - b5cc489 - Dirkjan Bussink
18:13:44dbussinkevan: the diff on github also shows it yeah
18:15:13brixenpeaches and cream
18:15:32brixenthat's oatmeal, people
18:15:40brixenman, kids these days
18:15:51boyscoutCI: b5cc489 success. 3002 files, 11419 examples, 35487 expectations, 0 failures, 0 errors
18:16:18evancinnamon and spice ftw!
18:16:23brixenheh
18:18:25brixenevan: so for installing, are bin, include, lib the 3 main divisions?
18:18:43evanyeah
18:18:46brixenk
18:19:11brixenand for single dir prefix, prefs on the substructure
18:19:21brixenroot/bin, root/include, root/lib ?
18:20:05brixenroot/runtime?
18:20:16brixenwhere should the runtime dir go in the 3-part instal?
18:23:18evanno
18:23:21evannot root/runtime
18:23:25evanthat would be /usr/local/runtime then
18:23:41evanor are you thinking of root as /usr/local/rubinius
18:23:48evanthere are 2 schools of thought
18:23:58brixenyeah, root is prefix/rubinius
18:24:02evan1) a root dir for the project, with everything in it
18:24:09brixenin the single dir intall
18:24:12evan2) many project dirs in the respective system dirs
18:24:17brixenright
18:24:19evan /usr/local/lib/rubinius
18:24:21evanetc.
18:25:26brixenoh, we need a man page!
18:25:29evanyeah!
18:25:33brixenhow can we be legit with no man page
18:25:34evanif you're going for prefix/rubinius
18:25:38evanthen /runtime is fine
18:25:43brixenk
18:26:28brixenbut in the case of /usr[/local]/lib/rubinius, it would be .../rubinius/runtime, .../rubinius/lib (stdlib)
18:26:32brixenlike that?
18:26:47evanheh?
18:26:51evani don't see what ya mean
18:27:20brixenwell, sec..
18:27:26brixenI'm making a gist
18:27:34brixenjust want to be clear
18:31:45brixenhttp://gist.github.com/233144
18:32:42brixenupdated
18:38:56evancan we support both?
18:39:13evanif we can only do one
18:39:20evan3-part install is better
18:39:24evanbecause thats the typical way
18:39:44brixenoh, we will definitely support both
18:39:52brixenvia configure switches
18:39:59brixen--prefix= is a one-dir install
18:40:09brixen--prefix-bin=, etc for 3-part
18:40:15evank
18:40:30brixenI just need to get everything in the right places
18:40:43brixenlike, just realized, where do gems go?
18:41:15evanlib/rubinius/gems
18:41:29brixenk, updated gist
18:41:53brixenand gem bins in /lib/rubinius/bin yes?
18:42:07brixennot with bin/rbx in the 3-part install?
18:43:18evanlooks good.
18:43:40evanno, not with bin/rbx in the 3part
18:43:46evanbecause we'll clutter up a system directory that way
18:45:35brixenk
19:06:43boyscoutFix how and where a return-in-lambda is caught - f319184 - Evan Phoenix
19:06:43boyscoutAdd specs for behavior of return in lambda - e614007 - Evan Phoenix
19:06:49evanyay! return is fixed!
19:07:16imajes:D
19:07:20brixensweet!
19:09:57evanlambda was broken
19:10:02evanif you were supposed to return through it
19:10:03evanit wouldn't
19:10:40evanb = block { return }; l = lambda { |x| x.call }; l.call(b); puts "FAIL"
19:10:44evanFAIL would print
19:10:46evanit shouldn't
19:10:47evanfixed now.
19:11:02brixencool
19:12:55evanwoop.
19:13:01boyscoutCI: e614007 success. 3002 files, 11423 examples, 35491 expectations, 0 failures, 0 errors
19:13:03evanlambda { |a| a + 1}.standalone? # => true
19:13:17evanb = 1; lambda { |a| a + b }.standalone? # => false
19:13:36evanstill not sure if standalone is the word I want
19:16:39Defiler$LOAD_PATHS are searched first-to-last, right? As in, by default '.' is the last directory checked?
19:17:16brixenevan: that's a pretty good adj, signifies it can run "independently" in a sense
19:17:31evanbrixen: right
19:18:55brixenDefiler: should
19:19:24brixenunless you $:.unshift "."
19:19:56DefilerI would have sworn I knew how to do this.. but I'm trying to figure out the real path to something shown in $LOADED_FEATURES
19:20:17Defilergot multiple openssl.so files, making sure the correct one is loading
19:20:22brixenhmm
19:20:54brixenproblem is, $: could have changed after requiring something
19:21:13evanbrixen: what should I used instead of describe now?
19:21:17evani wanna fix describe to work again.
19:21:17DefilerI'm saving a copy of $LOAD_PATH and $LOADED_FEATURES before the require
19:21:25Defilerand load_path is unchanged, just the new stuff in loaded_features
19:21:26brixenin 1.9, $L_F has absolute paths
19:21:41brixenevan: oh yeah
19:21:46DefilerIt seems like 1.8 just discards this info
19:21:51brixenyou can do bin/rbx compile -B file
19:22:03brixenevan: but I think an irb plugin would be rad
19:22:11evanok
19:22:12evani'll do that
19:22:13brixenthat would just cm.decode the expr you typed in
19:22:22brixenfor interactive mode
19:22:37brixenI was going to just make describe.rb exec to compile -B
19:23:29brixenI think using irb as the shell for the debugger would be rad too
19:41:35evanwoop
19:42:03evanused Proc#standalone? to make it so that Module#define_method can extract and twiddle the enclosed CompliedMethod
19:42:11evanand then insert it directly into the method table of the module
19:42:27evanthusly
19:42:37evanmodule A; def foo(a) a + 1; end; end
19:42:46evanis the same speed as
19:42:54evanA.define_method(:foo2) { |a| a + 1 }
19:43:46brixenthat's awesome
19:46:10evanit's a minor improvement, performance wise, now that i've fixed define_method itself
19:46:15evanbut nice none the less.
19:51:36DefilerI saw that Rubinius::DelegatedMethod is relegated to just handling Method objects now
19:51:42DefilerThe new setup looks sweet
19:52:47evanyeah, i'm not yet sure if thats right either
19:56:36dbussinkevan: were you able to repro the segfault already? i saw brixen commented he saw it too
19:57:12evanoh darn
19:57:13evani forgot
19:57:16evani'll try after lunch.
19:57:29brixenI saw it up close and personal, like booyah, right in my terminal
19:58:07dbussinkbrixen: was it scary?
19:58:12brixenyes!
19:58:15brixenhad nightmares
19:58:49brixenthat may be because I was looking at bigdecimal.c before bed too
20:11:31ddubbrixen: would you like that bigdecimal test to just be inlined into bigdecimal.c? (so that it does the right thing without having to determine and set defs)
20:13:19brixenddub: you could do that in _init I suppose
20:13:48brixenseems more robust, but it's a tiny bit more cost on load
20:14:01brixenI'm cool with doing that
20:14:26ddubbrixen, I was thinking of just doing it at compilation time, in the file
20:14:48brixenwith macros?
20:14:53ddubprobably enums
20:15:14brixenok, well show me what you mean
20:16:06brixenI thought you mean compute it the way extconf.rb does
20:16:18brixenif you just mean, move the size check into compile time
20:16:28brixenthat's fine, but not really different
20:17:02brixenI guess moody people don't stay long
20:17:34brixenhunts for lunch
20:18:22evanheh
20:19:17ddubbrixen: I'm trying to compute it, but at compile time. I'm not sure if it will work, however :)
20:42:01ddubbrixen: yeah, I can do it with compile time with templates, know people don't want me to go there :)
20:42:23slavahi
22:15:08rueevan: #selfcontained?
22:27:23tarcieri /join #activemerchant
22:27:26tarcieridurr
22:27:36tarcierihi
22:27:51tarcierithat channel doesn't exist anyway :(
22:33:07ddubis watching/listening to the go programming language tech talk
22:39:34rueWith the little black and white pebbles?
23:27:34DefilerRobert Griesemer, Rob Pike and Ken Thompson started sketching the goals for a new language on the white board on September 21, 2007. Within a few days the goals had settled into a plan to do something and a fair idea of what it would be.
23:27:39DefilerThat is an extreme way to begin a FAQ
23:34:16rueThey are just machoing it up