Index

Show enters and exits. Hide enters and exits.

00:00:22brixensweet
00:01:22rueCool. I was thinking about adding "banner" or "comment" items, but the current setup in vm/configuration.hpp would not really work well with that
00:01:42evanrue: yeah, this works fine
00:01:50evanit's not the nicest in the world, but it gets the job done.
00:02:04rueIt will work fine until there are 20 or 30 options :)
00:02:15evanyeah
00:02:16evanoh well
00:02:24rueThey are grouped, rather than alphabetised, which makes sense in the .hpp, but not when you print them :)
00:03:09evanyeah, i was thinking that too
00:03:53rueYou have to give up the direct ivar access to gain that without writing any more elaborate parser code
00:07:05evanhuh?
00:08:04boyscoutCI: 2bc8d00 success. 2683 files, 10346 examples, 32917 expectations, 0 failures, 0 errors
00:08:07boyscoutMinor reformat - c1c20f7 - Evan Phoenix
00:14:56boyscoutCatch unknown gc. options - d03fb5a - Evan Phoenix
00:15:24boyscoutCI: c1c20f7 success. 2683 files, 10346 examples, 32917 expectations, 0 failures, 0 errors
00:47:50evandbussink: poke
00:51:49rueProbably gone, it is 23.809444444444445 UTD already
00:52:14evanT-0.19 til tomorrow!
00:52:33rueOr UMT, I suppose
00:52:45seydarstalks a wild rue
00:52:54seydarwithdraws his pokeball
00:53:01seydargreetings fellow pokehunters
00:53:08rueIt is pitch black. You are likely to be eaten by a rue
00:53:21seydarbwahahahaha
00:54:09seydaryou are full of the best things
00:54:17seydarwhat was it you wanted to be back in middle school?
00:55:29rueWell, many things
00:55:43rueI am a renaissance man of wanting to be stuff
00:56:28seydaryou need to update your blog
00:56:40seydaror use twitter to broadcast your brilliant remarks
00:57:13seydarsorry to seem to be idolizing you, but that past two things you've said that i've caught have been fucking hilarious
00:59:11seydaryou said you wanted to be a traveling minstrel of sorts
00:59:15seydarbut there was some qualifier
01:05:53rueOh
01:05:59rueOpium-addled
01:06:48seydarand i bet you would've made a great one at that
01:09:37boyscoutProperly initialize the header of a VariableScope - a7f7c9a - Evan Phoenix
01:09:37boyscoutProperly initialize NativeMethodEnvironment - 319665d - Evan Phoenix
01:11:16seydarrue: whatever happened to mod_rubinius?
01:11:17evanok, tell dbussink to try again
01:17:14boyscoutCI: 319665d success. 2683 files, 10346 examples, 32917 expectations, 0 failures, 0 errors
01:17:54rueseydar: Nothing; Rubinius is still not quite at the point to do any of the more drastic stuff and Passenger pretty much takes care of the non-drastic variety
01:18:23seydarok, but it WILL happen at some point, right?
01:19:45rueI rather hope Apache dies a painful death first. Will probably give Rubinius serverisation a go at some point, though
01:20:32seydaror maybe if thin/mongrel/ebb become good enough to take apache's place, that'd be sweet
01:20:37seydarbecause i HATE passenger
01:21:34macournoyerseydar: don't think that will happen
01:21:46seydarmacournoyer: what would it take?
01:22:01rueA cataclysm
01:22:13macournoyermagic and lots of cupcakes
01:22:27seydari meant technologically, not have it socially replace apache
01:22:29rueI am totally going to devise an SMP device that only affects crappy technology
01:23:08macournoyeryou'd have to serve static files very fast
01:23:40macournoyerthat means sendfile on some system writev on others and other technics
01:25:00seydarand besides serving static files mthrfckingly fast?
01:25:13rueseydar: Oh, hey, got something for you
01:25:32seydarrue: kyllä, olen here
01:26:06seydarfeels loved
01:26:23macournoyermanage response/request body buffers more efficiently I guess
01:26:24ruehttp://files.kittensoft.org/photos/summer/03-12am.jpg
01:27:42seydarrue: hah, that's midnight for you?
01:28:23seydarmacournoyer: how do you feel about using swiftiply
01:28:33seydarezmob: you going to GoRuCo?
01:28:40ezmobnope
01:28:42ezmob:(
01:29:46seydar:-(
01:30:13seydarfades for 20 min to finish his hw
01:47:32seydaraloha, children
05:30:27ddubman xkcd is soo geeky
05:39:21will_lhttp://www.isxkcdshittytoday.com/
05:39:21evanseriously
06:22:58tarcierihmm
06:23:00tarcierihey evan?
06:23:28tarcieriwhen you're doing eval, do you build some sort of environment object that stores the bound local variables, then use that in conjunction with some compiled bytecode?
06:23:37tarcieri</toolazytousethesourceluke>
06:58:27evantarcieri: yes.
06:58:56tarcieriokay, hmm
06:59:21tarcieriI don't know a lot about stack machines work, but does that environment object just populate certain registers with values or, umm, yeah I don't really know what I'm talking about
06:59:40evanno
06:59:54evanit's pretty unrelated to it being a stack machine
07:00:00tarcierihow does the bytecode reference state in the environment?
07:00:02tarcieriby name?
07:00:09evandepends
07:00:12evandifferent ways
07:00:18tarcierifun!
07:00:24evanlocals are id'd by index
07:00:32tarcieriindex of what?
07:00:37tarcierilocals are really what I'm concerned about
07:00:38evanso like 'push_local 0' pushes the first thing in the locals tuple
07:00:45tarcieriok
07:00:49evani don't store the locals on the operand stack
07:00:59tarcierilike... I have a list of tuples
07:01:00evanbecause then i have to keep the whole operand stack around after a method exists
07:01:00tarcierifor locals
07:01:03evanexits
07:01:08evanok
07:01:11evanso in eval
07:01:18evani'll give ya a quick example
07:01:19evanthe code
07:01:25evana = 0; 1.times { p a }
07:01:28evanand
07:01:33evana = 0; eval("p a")
07:01:39evanexecute almost exactly the same way
07:01:45tarcieriif you're curious I'm basically trying to rewrite my eval to compile the code first
07:01:52evanahok,
07:01:53tarcieriyeah, so that basically does eval("p a", binding)
07:01:53evanok.
07:01:55tarcierior something?
07:01:59evanright
07:02:07evanso it's constructing a new block
07:02:09evanand running it
07:02:15tarcierio a block eh?
07:02:19evanand it references a using 'push_local_depth'
07:02:20evanin this case
07:02:25tarcierihmmmm
07:02:25evanpush_local_depth 1, 0
07:02:29evanie, up one level, index 0
07:02:30tarcierithat is a particularly interesting solution
07:02:47tarcieribecause it handles building the environment for me
07:02:50evanit's always up, relative the current one
07:03:07evanso the binding is just the variables available at depth 1+
07:03:09tarcieriErlang funs have an environment which contains the same list of tuples representing bound variables
07:04:05evanright
07:04:21evanso, in rubinius the locals are in a VariableScope object
07:04:24tarcieriand the resulting bytecode can reference them by name, provided the initial argument ordering is right
07:04:25evanthat has a parent pointer
07:04:30slavaevan: so next I'm going to extend my register allocator to operate on the whole procedure instead of basic blocks
07:04:32evanto an optional nother VariableScope
07:04:36tarcieriyeah I'm afraid I can't do anything that elaborate
07:04:49evanwhy not?
07:04:57tarcieribecause I don't have objects, heh
07:05:00evancan you just access them directly in a mutable tuple
07:05:10tarcieriat least until I write a self-hosted compiler
07:05:13tarcieriI don't have mutable state
07:05:22tarcieriat all
07:05:29evanslava: neato
07:05:33evantarcieri: hrm
07:05:52tarcieritheir craptastic generational GC depends on immutable state
07:06:16evanFUN!
07:06:18tarcieriyep
07:06:19tarcieriheh
07:06:24evanthat takes away all the fun parts of a GC
07:06:29tarcierihehe
07:06:37tarcierithey need a better GC for their "hybrid" heap
07:06:50tarciericuz their current one fails miserably
07:07:12tarcierihybrid heap is a shared heap for message-passed objects
07:07:30tarcierimaybe something like concurrent mark/sweep would work better? I dunno I'm certainly not a GC expert
07:08:03evanhow were you doing reassigned locals with no mutable state?
07:08:14tarcieriquasi-SSA sort of thing
07:08:25tarcierievery variable gets a version number
07:08:28tarcieriincremented on rebind
07:08:40evanah.
07:09:32tarcieriI wind up with a dict of variable names mapped to their current version number
07:09:51evanright.
07:09:55tarcieriso in a compiled eval, I have to translate that into something that builds a new list-of-bound-variable-tuples, and returns that in a tuple along with the real return value
07:09:58tarcieriFUN!
07:11:13evanug.
07:11:43tarcieriyeah pure functional = pain
07:12:28tarcierisome mutable state would really be handy
07:12:56evanmy kingdom for mutable state!
07:13:20evan$my_kingdom.owner = you
07:13:22evanin other words
07:13:23evan:D
07:13:34tarcieriheh
07:14:30tarcieribut yeah, using a lambda to build the environment for you, effectively
07:14:32tarcierithat's awesome
07:15:16tarcierimy compiler is full of "cool hacks" like that which other people thought up
07:15:31tarcierilike using throw/catch to implement "return" in a pure functional language was badass
07:15:37tarcieriwell
07:15:53evanthat is bad ass.
07:15:55tarcieriumm, using pure functional language constructs in a very impure functional language rather
07:16:15tarcieriErlang has imperative features up the wazoo
07:18:56tarcierievan: I talked to slava and I think he ditched his metacircular eval for something that just compiles, which is what you do too right?
07:19:00tarcierithat seems like the way to go
07:19:14slavaI never had a metacircular evaluator
07:19:26tarcierimainly I'm just tired of discrepancies between the metacircular evaluator and the compiled form
07:19:29tarcierislava: o
07:20:03slavafactor has been a compiled language from the first release in 2004
07:20:05tarcierithere's totally bugs in eval which are only in eval and I'm tired of trying to debug those independently of the compiled form
07:20:23tarcieriyeah Erlang is completely compiled as well, although compiled to interpreted bytecode, unless you're using HiPE
07:20:36tarcierihowever they do have a very gimpy metacircular eval
07:20:46tarcierithere are some lulzy code snippets from it
07:20:50tarcieriwhich I'm sure you've seen, slava
07:20:50tarcieriheh
07:20:54slavaevan: did you read my blog post about PICs?
07:21:27slavaI should've written it a month ago right after I implemented everything
07:22:15tarcieriI wish I could program the arduino in something better than C
07:22:24tarcierihas been trying to do analog eletronics lately
07:22:28tarcieriwow is it teduious
07:22:43tarcieriI'm looking through resistors manually inputting their color bands into a web site to identify them
07:53:28evanslava: I did!
07:53:39evanslava: and I think I want to use your code for back-patching call sites
07:55:34evantarcieri: ah, EE
07:55:38evani recall my EE classes well.
07:56:41boyscoutInvoke the write barrier when writing locals - bdba687 - Evan Phoenix
08:02:16boyscoutCI: bdba687 success. 2683 files, 10346 examples, 32917 expectations, 0 failures, 0 errors
08:10:03tarcieriheh
08:10:09tarcieriyeah I took like a semester of EE
08:10:20tarcieribut I did analog electronics crap before that
08:12:25slavaevan: write barrier for locals? that doesn't sound right
08:12:33dbussinkevan: looks like i have all passing specs for DO now :)
08:13:17brixendbussink: seriously? on all adapters?
08:13:29dbussinkbrixen: with rspec 1.2.2
08:13:39dbussinkbrixen: with 1.2.6 it throws a whole bunch of errors
08:13:47brixenahh ok
08:14:15dbussinkso that's something in the rspec / rbx playground, not in DO :)
08:14:26brixenwell, good to know
08:14:29dbussinknext up, running datamapper :)
08:14:44brixenprogress :)
08:14:48dbussinkbut i don't think that should be really too problematic
08:19:44evanslava: no, thats right.
08:19:57evanslava: since locals can be promoted to be stored in a heap structure
08:20:41tarciericrazy
08:20:42tarcieriheh
08:20:46evanlooks like, atm
08:20:51evanbin/rbx -S rdoc -1 -v -r -o file.html lib/rdoc
08:21:02evanadd -Xjit.enabled in there, get 25% improvement
08:21:06tarcierithe values can move from the stack to the heap?
08:21:16evantarcieri: locals aren't on the stack.
08:21:20evanoh that
08:21:21tarcierio
08:21:25evanyeah, it's on the C stack
08:21:27evanto begin life
08:21:31tarcieriyeah
08:21:36evanand promoted to the heap if need be
08:21:43tarcieriok
08:22:00slavaI hope your goal is a lot better than 25% improvement :)
08:22:22evannah, i figured i'd stop here. :/
08:24:29tarcieriis looking at a ~1000% improvement from his present code compilation strategy
08:24:37tarcieribut all that really means is my present implementation sucks balls
18:07:02ddubis there any grammar definition for ruby outside of the .y file bundled with MRI? :)
18:10:05brixenddub: not that I know of, other than the other grammars out there
18:14:33ddubbrixen: any that are fairly complete?
18:14:43brixenjruby's
18:14:52brixenruby_parser
18:15:33ddubis it a refactoring of the MRI grammar or a new one?
18:15:46brixenboth are based on MRI's
18:15:58brixenyou could join #rubyspec and see if jonrafkind is around
18:16:08ddubyeah?
18:16:18brixenhe's written a peg lib in scheme and implemented a ruby grammar in ti
18:16:19brixenit
18:17:19ddubI saw the tinyrb pegleg grammar but thats rather incomplete
18:17:27ddubwho is jonrafkind? :)
18:17:51brixensome guy at U of Utah that likes grammars
18:18:34brixenalso, the principle author of this paper www.cs.utah.edu/~regehr/papers/ismm15-rafkind.pdf
18:25:55evanmorning
18:27:02brixenmorning
18:31:39evanso, happily the JIT is only making things faster
18:31:41evannot slower
18:31:41evanyay
18:33:53scooprwoo
18:34:36scooprhow would it fare in the language shootout? ;)
18:36:19evandunno
18:36:23evangive it a try
18:36:40evanit's still not generating the right code in some cases
18:36:47evanie, the specs don't pass with -Xjit.enabled
18:36:50evanso i'm working on that now.
18:36:53brixenevan: I'll have some numbers running the Hash benches shortly
18:37:01evan10-4
18:37:27brixenevan: it took the total time with cuckoo from ~9m6s to 7m4s
18:37:40evannice!
18:37:46brixenthat's just 'time <benchmark command'
18:38:12brixenrunning against regular hash now, bbiab..
18:40:04evanummmm...
18:40:28evan<= confused
18:40:37evanok, lets try this again...
18:42:41evanboggles.
18:42:43evanwtf is going on...
18:43:16evanoh
18:43:17evanman.
18:43:22evancoffee hasn't kicked in yet.
18:47:52scooprpours gin + grapelemonade
18:52:17rueTentacle!
18:52:59scoopryummie <3
18:53:35rueNever could stand beer or ciders...but tentacles are alright :)
18:56:43scooprI was never a beer fan either .. cider goes occasionally (mostly only dry apple).. but oh my.. tentacles!
19:05:33dgtizedevan: what's a quick test to make sure the JIT is enabled/
19:06:17evan-Xjit.show
19:06:23evanwill print out messages when it kicks in for methods
19:09:29dgtizedhmm, is it doing it on count yet, or is there just a specific call in IRB to get it to JIT a method?
19:09:48evanif you do
19:09:52evan-Xjit.enabled
19:09:55evanit does call counter based
19:10:28dgtizedah which is kicked in by just starting up IRB I see
19:10:39evanright
19:10:47evanjust have to run stuff enough times.
19:13:29dgtizedcan you inspect the list of methods that have been JITed and have it print out there bytecode or something?
19:17:01evannot atm no
19:26:49dgtizedmy my the jit does love the array_each example
19:36:19evan:D
19:59:52cremesgin + grapefruit juice == lonkero, right? (haven't been to Helsinki for a few years...)
20:00:33scooprmore or less
20:00:40scoopryes
20:00:49cremesi miss those... :)
20:01:05scoopr(and literal translation of lonkero -> tentacle)
20:01:13cremesah, it all makes sense now
20:13:54dbussinkevan: interested in more gc fun?
20:19:53brixendbussink: always :)
20:19:55brixenticket it up
20:23:36dbussinkbrixen: http://github.com/evanphx/rubinius/issues/#issue/9
20:33:50dgtizedevan: interesting Array#[index] appears to be faster using the JIT, but Array#[index,offset] appears to be slower
20:34:43dgtizedevan: that or it's just that example bounces around in how long it takes
20:37:11ReinH'ello folks
20:37:59ddubbrixen: thanks for the pointer earlier.
20:39:16brixenddub: sure
20:39:18brixenReinH: hello
21:03:22rueHello
21:41:24rueYay Barca
22:12:45boyscoutCheck the return value of .call for an exception - a47bce2 - Evan Phoenix
22:13:09evanok, specs pass with -Xjit.enabled
22:13:16brixennice!
22:13:21evanthere are a few thread related crashes i'm going to work on now
22:15:17boyscoutCI: a47bce2 success. 2683 files, 10346 examples, 32917 expectations, 0 failures, 0 errors
22:23:17dbussinkevan: did you see i have another issue for you?
22:23:23evannope
22:23:25evanchecking now
22:23:29evani need that GH Issues RSS!
22:23:53evandbussink: interesting...
22:24:06brixenevan: could boyscout report tickets added?
22:24:48dbussinkevan: this is actually without a capi extension or whatever, just pure ruby
22:25:21evanbrixen: oooh
22:25:25evanbrixen: trixy!
22:25:31evandbussink: ok.
22:32:27evandbussink: le sigh
22:32:32evanwhy is extlib using _id2red?
22:32:35evan_id2ref
22:33:07dbussinkevan: some ugly hack afaik create method hooks
22:33:25evanthe faster you get rid of that
22:33:30evanthe faster extlib will run on rubinius
22:33:34dbussinkhehe
22:33:43evanbecause i can implement _id2ref
22:33:44dbussinkwell, i'm more concerned with crashes :P
22:33:48evanbut you're not going to like the implementation
22:34:00evanie, i return nil everytime
22:34:11evanor use the GC to search the whole heap for the object you want
22:34:39evani'm working on the crash now.
22:34:50dbussinkevan: yeah, i know, i would want to get rid of it yeah
22:39:45dbussinkevan: but i'm going to head to bed, good luck with the nasty stuff i seem to hit :P
22:40:19evan:D
22:40:22evanyou're finding good stuff!
22:40:59slavasup evan
22:41:15evansup
23:58:52boyscout1.8.7: Enumerable#reverse_each (implemented new method) - 1f9470d - Marc-Andre Lafortune
23:58:52boyscout1.8.7: Enumerable#to_a (now accepts arguments) - 86ec672 - Marc-Andre Lafortune
23:58:52boyscout1.8.7: Enumerable#drop (bug fix) - ff156e9 - Marc-Andre Lafortune