Index

Show enters and exits. Hide enters and exits.

02:55:16brixeno
02:55:39brixenum, where'd my vim window go :)
05:43:51brixenseydar: it is so past your bedtime young man
05:45:14seydarbrixen: wtf are you doing on the internet on a friday night
05:45:20seydari went to a dance party and had some fun
05:45:22brixenhheh
05:45:30brixenthat's good!
05:45:36brixenI'm resting
05:46:19seydarhow's the world in rubinius land?
05:46:36brixengood
05:46:45brixenworking on some profiler output
05:47:11marcandrebrixen: Hey, wrote some thanks on my latest blog entry, which might interest you. http://blog.marc-andre.ca/
05:47:25marcandreNow I'll follow seydar's example and I'm going dancing...
05:47:32seydari really want to test my project out on rubinius, but it won't run :-( HOWEVER in the future it is possible that i'll get an intel machine so i can actually build rubinius
05:47:57seydarmarcandre: i recommend avoiding hs girls. most are emotionally unstable
05:47:59brixenmarcandre: I'll take a look
05:48:10brixenseydar: I thought you had rubinius running?
05:48:21seydarbrixen: did i?
05:48:23seydarchecks
05:48:44seydarmarcandre: can you please insert a comma after "Rails" in "Ruby, Rails & Rants"?
05:49:13marcandreseydar: I've got three (and a half) girls already, that's enough for me :-)
05:50:48seydarok. so long as you stay away from hs girls. they're all bad news
05:51:10marcandreseydar: english is not my native tongue, but I thought it took only one comma, like http://www.imdb.com/title/tt0183505/
05:51:52seydarimdb is wrong. they shall burn for their sin. but you! you speak french! you have a chance to redeem yourself
05:52:04marcandredon't worry, I'm too old for hs girls.
05:52:14brixenyeah, the comma before the conjunction is optional
05:52:26brixensome people strongly feel it thould be a, b, and c
05:52:29slavayo
05:52:34brixenothers, a, b and c
05:52:37marcandrethanks brixen because he doesn't want to edit it in PS
05:52:58brixensup slava
05:53:09seydari feel very strongly that there should be a comma there
05:53:12seydarhola slava
05:53:42brixenthe comma would look odd before & imo
05:53:49brixenI usually use it before 'and'
05:54:48brixenseydar: bin/rbx -v <= what do you get+
05:54:49brixen?
05:55:02seydarchecks
05:55:09seydarwaits for his cpu to cool down
05:55:22marcandreanyways, I hope you find something interesting in my post. Answer to the first quiz is on my bug report (posted to redmine)
05:55:27marcandregotta run. GN guys
05:55:33brixenmarcandre: later
05:55:37seydarbon nuit mec
05:55:40seydarbrixen: rubinius 0.11.0-dev (ruby 1.8.6) (eabf5ec7d 12/31/2009) [powerpc-apple-darwin8.11.0]
05:55:44seydarwoot!
05:55:48brixenwoot!
05:55:56brixenseydar: no more excuses lad
05:56:38seydarwait
05:56:41seydarlet's run irb
05:56:51seydarholy shit it's 1am
05:57:54seydari don't.... understand
05:58:00seydarhow does this work all of a sudden
05:58:12slavafactor lets you shut down your computer at compile time
05:58:24slavaMACRO: fuck ( -- ) "shutdown -h now" run-process f ;
05:58:25slavafuck
05:59:51brixenwaits for slava's computer to reboot...
06:01:23seydarbrixen: i will promise you rubinius compatibility for my project by the end of may
06:03:08brixenseydar: excellent
06:03:42seydaroh, how's LLVM integration coming along?
06:03:54slavallvm for rubinius?
06:03:58brixenevan is working on it for the new jit
06:04:03slavaah
06:04:25slavahe started off with llvm then decided to do his own codegen now its back to llvm? :)
06:04:28brixenshould have some of it working in a week or 2
06:04:38brixensomething like that :)
06:05:05brixenthere are a handful of projects that effectively use llvm
06:05:13brixenit's a learning process
06:06:07evanallo
06:06:14brixenwb evan
06:06:15evanslava: I see the C++ port is going well
06:06:45evanbrixen: how ya feeling today?
06:06:51brixenbetter :)
06:07:00evangood!
06:07:07brixenalmost have the gprof graph output working
06:07:49evansweet!
06:08:07brixenreading this "masterminds of programming", too bad matz didn't get interview for that
06:08:26evanwhats that?
06:08:37brixenrecent oreilly book
06:08:59brixenhttp://oreilly.com/catalog/9780596515171/
06:09:51slavaevan: I'm done with it for now
06:10:08slavaevan: I'm going to move on to a few other things now, going to do a new code generator soon
06:11:33evanslava: good to see you picked up some techniques from rubinius
06:11:42evani like you're use of implicit template params
06:11:46evanyour
06:12:11slavayeah, I forgot to give you credit in the blog post, I wanted to mention that gc_root was stolen from your OnStack utility
06:12:15slavasorry :)
06:12:29evanno prob
06:12:40slavaI came up with a nice utility for my byte arrays
06:12:40evanmight mention it at the bottom, just to stroke my ego :)
06:13:13slavaevan: so a byte array has a header with a length, and then its binary data, right
06:13:18evanyep
06:13:21slavaand usually you treat it as an array, char* float* whatever
06:13:22slavatemplate<typename T> T *data() { return (T *)(this + 1); }
06:13:29slavaI have this instance method :)
06:13:38slavafoo->data<char>()[69] = 42;
06:13:39evanah
06:13:42evanheh
06:13:42evannice
06:13:57evani rarely cast the body as anything but a char*
06:14:01evanso it's defined as
06:14:02slavaalso did you see how the 'tagged' smart pointer makes it easy to deal with a setup where tag 0 is fixnum and the other tags are objects?
06:14:06evanchar body[];
06:14:08slavaah
06:14:26slavawell that's fine I guess, if a bit less flexible :)
06:14:33slavain my C code I'd just do (char *)(byte_array + 1);
06:14:33evan:D
06:14:54evani'm looking at your tagged class now
06:15:08slavathis is the first C++ code I write except for school assignments 6 years ago
06:15:11slavago easy eh
06:15:29evanrubinius was my first in a while
06:15:39evanso i'm on in no position to critizes :D
06:15:40slavawell ti looks like you knew all the tricks already
06:16:01slavaso how many of your tags are immediate data?
06:16:17evanwell, if you go back and look at the original C++ code
06:16:21evani did a lot of experimenting
06:16:27evani love to experiment
06:16:33evanit's my strength and downfall
06:16:38slavaI was convinced until today that getting irid of all immediates except for fixnums would be a win, but making 'false' a heap-allocated singleton instead of an immediate with tag 7 was really bad
06:16:43slavas/irid/rid/
06:16:44evanI use a variable length tag
06:16:56slavait slowed down bootstrap by 30 seconds or so
06:16:57evan1 == fixnum, ie 31 data bits
06:17:07slavaah
06:17:21evan110 == symbol
06:17:27evan010 == special
06:17:31slavaclever, you have big fixnums at the expense of half as many tags
06:17:33evanspecial is nil, true, and false
06:18:00evanwell, i've shifted the tag up one
06:18:03slavaon x86-64, you cannot use 64-bit immediates with most instructions
06:18:03evanso i have the same number of tags
06:18:12slavaso comparing a value with a heap pointer requires a spare register
06:18:14evanI just loose a bit of data in the other tags
06:18:22evanyep yep
06:18:28slavawhich means that any code that compares a value with boolean false runs a small perf hit
06:18:29seydarwhy do you need the spare register?
06:18:43slavaseydar: mov rx,<addr of false>
06:18:47slavacmp rx,ry
06:18:50slavaje some_label
06:19:04slavathat's an 'if' comparing a value against boolean false (or true)
06:19:14seydarbut the immediate isn't 64bit?! i don't understand what would cause the need for an extra reg
06:19:19slavait is
06:19:25slavabut there's another way you can do it on 32-bit only
06:19:28slavacmp rx,<addr of false>
06:19:33slavacmp can take a 32-bit immediate
06:19:51slavaso right now 'f' (which has pointer binary value 7) is always an immediate of this form
06:20:10slavabut changing it to a heap value -- and the only change this entails in the codegen is introducing the one register -- was a 10% regression
06:20:18evanslava: well, I can just use the low 32 bits to compare with false
06:20:27slavahow do you know its going to fit in 32-bits?
06:20:29slavabecause its immediate?
06:20:31evanbecause 010 can't be the low bits of anything else
06:20:39slavaah
06:20:50slavawell, same thing here then, I guess
06:20:51evanso you can compare it truncated
06:21:05slavathe reason I wanted to make false not immediate, is that if the only thing that's immedaite has tag 0, then the following can be done with a cmov:
06:21:09slavaint class;
06:21:11evanif nil was a singleton object like smalltalk
06:21:15slavaif(value is fixnum) class = fixnum_class;
06:21:19slavaelse class = value[0];
06:21:20evanthen you'd need to do that
06:21:30seydarslava: oh, so you were comparing 32bit to 64bit numbers?
06:21:52slavaseydar: yeah, because 32-bit operands are sign-extended so the only thing that compares to a 32-bit '7' is a 64-bit '7'
06:21:54evanslava: right
06:22:12evani can do
06:22:23evanif(value is reference) class = value[0]
06:22:37evanelse class = class_table[value & tag_mask];
06:22:38slavabut then your code compiles with a branch
06:22:59slavabut it seems not worth it in any case to try the branchless trick
06:23:21slavagotta go
06:23:21slavabye
06:23:23evanbye
06:23:28seydarasm question: can i make use of a, ax, and eax on a 64 bit machine?
06:23:33seydaradios slava!
06:23:37slavaseydar: yes
06:23:50slavathe instruction encoding can express all possible operand sizes in every 'mode'
06:23:55slavahowever you need a prefix for the one that's not the current
06:24:24slavaso when 32-bit protected mode code works with C shorts, it generates prefixes for instructions to make them 16-bit
06:24:34slavaand 64-bit code needs a prefix to access the additional registers etc
06:24:48slavabut in 16-bit real mode, only 16-bit instructions work and those don't need a prefix
06:24:51slavareally leaving now, bye :-)
06:25:25seydaradios m'laddy
06:27:36seydarok, imma follow slava's cue
06:27:41seydarbecause it's really fucking late now
06:28:12seydarand rubinius works! i'm in love with a stripper^H^H^H^H^H^H^H^Hvm
06:29:13brixenevan: http://gist.github.com/109145
06:29:25brixeni have to fix the called numbers
06:29:32brixenit's a pretty cool format
06:29:45brixenlines above the "primary" line are callers
06:29:50brixenbelow are callees
06:30:05brixenthe primary line is the one with the index in the left column
06:30:26brixenthe graph format is sorted by self seconds
06:30:59brixenI'm deviating from pgrof a bit
06:31:17brixeneg the % time is computed the same as in the flat profile
06:31:32brixenand I don't compute recursive cycles
06:34:47brixenbbiab..
07:18:41evanbrixen: nice!
09:32:14dbussinkrue: in the conf room?
10:13:01bitherderI'm at EuRuKo and someone asked if 'Rubinius is still "alive"' during the QA sessions after Matz's keynote.
10:14:02bitherderWhat should the answer be?
10:14:35tilman'yes'
10:15:40bitherderMaybe a better question would be "how alive is Rubinius"?
10:15:45dbussinkbitherder: you can look at github to see whether it is still actively developed :P
10:32:08ruedbussink: No...there was a minor incident at home at night, I just got up. Might just skip today
10:32:23dbussinkrue: ah, too bad
10:32:28dbussinkrue: well, my talk is tomorrow ;)
10:34:46rueIndeed
10:58:22rueLive stream is neat
11:22:52ruedbussink: Wave to the camera :P
11:24:28dbussinkrue: sitting directly behind aslak atm
17:17:34seydarhola holmies
20:45:32dkubbI was just trying to run the extlib specs with rubinius, and I ran into an error: http://gist.github.com/109377
20:46:37dkubbI was hoping to see if I could get DataMapper core to pass the specs using the in-memory adapter, and then when dbussink is done getting DataObjects working, I was going to make the 3 DB's work too
20:47:25dbussinkdkubb: hmm, last time i checked extlib was working
20:47:38dbussinkdkubb: but there are a whole bunch of failures icw rspec
20:48:27dkubbdbussink: maybe it's just me doing something dumb. I wanted to see if I could add rubinius to my multiruby setup and run all the DataMapper specs against it regularly
20:48:57dkubbdbussink: icw?
20:49:05dbussinkin combination with
20:49:08dbussinki was lazy :p
20:49:08dkubbahh ok
20:49:25dbussinkbut we need to get out and have some food and drinks in bcn :)
20:49:41dkubbI noticed some bugs in rspec 1.2.6 just with MRI and dm-core
20:49:49dbussinkdkubb: btw, extlib runs for me, but a whole lot of failures
20:59:50dkubbdbussink: oh really? is there anything special I need to do other than install rspec + rake?
21:00:18dbussinkdkubb: i'm running for example ../rubinius/bin/rbx -S gem install rspec
21:00:34dbussinkdkubb: then ../rubinius/bin/rbx -S gem install rake
21:00:44dbussinkand ../rubinius/bin/rake spec
21:00:52dbussinkassuiming extlib is in the same directory as rubinius
21:01:35dkubbdbussink: ahh, ok, I have rbx in my path, but otherwise I'm doing the same thing
21:09:36dkubbdbussink: just to be sure, I re-installed those gems and when I ran the specs I get the same results
21:10:28dkubbdbussink: when I compiled rubinius from a fresh git checkout (from about an hour ago) all but one spec passed
21:13:12dbussinkdkubb: that's weird
21:14:27dkubbdbussink: maybe I'll blow everything away and start with a clean install, just to be sure
21:29:15dbussinkdkubb: ok, well, we're really going now, ttyl!
21:29:25dkubbdbussink: k, ttyl
22:50:42rueMeeble
22:51:14dkubbdbussink: ok, I got the specs to run by reinstalling everything. you're right, alot of extlib fails atm
22:51:42dkubbdbussink: which is understandable, but good to know anyway
23:28:30boyscoutAdding rb_big2(u)long to capi, with specs. - 9e5a20e - Cezar Sa Espinola
23:32:53boyscoutCI: 9e5a20e success. 2647 files, 10179 examples, 32469 expectations, 0 failures, 0 errors
23:48:19rueHm. iWeb is consuming 192% CPU :)