Show enters and exits. Hide enters and exits.
| 02:55:16 | brixen | o |
| 02:55:39 | brixen | um, where'd my vim window go :) |
| 05:43:51 | brixen | seydar: it is so past your bedtime young man |
| 05:45:14 | seydar | brixen: wtf are you doing on the internet on a friday night |
| 05:45:20 | seydar | i went to a dance party and had some fun |
| 05:45:22 | brixen | hheh |
| 05:45:30 | brixen | that's good! |
| 05:45:36 | brixen | I'm resting |
| 05:46:19 | seydar | how's the world in rubinius land? |
| 05:46:36 | brixen | good |
| 05:46:45 | brixen | working on some profiler output |
| 05:47:11 | marcandre | brixen: Hey, wrote some thanks on my latest blog entry, which might interest you. http://blog.marc-andre.ca/ |
| 05:47:25 | marcandre | Now I'll follow seydar's example and I'm going dancing... |
| 05:47:32 | seydar | i 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:57 | seydar | marcandre: i recommend avoiding hs girls. most are emotionally unstable |
| 05:47:59 | brixen | marcandre: I'll take a look |
| 05:48:10 | brixen | seydar: I thought you had rubinius running? |
| 05:48:21 | seydar | brixen: did i? |
| 05:48:23 | seydar | checks |
| 05:48:44 | seydar | marcandre: can you please insert a comma after "Rails" in "Ruby, Rails & Rants"? |
| 05:49:13 | marcandre | seydar: I've got three (and a half) girls already, that's enough for me :-) |
| 05:50:48 | seydar | ok. so long as you stay away from hs girls. they're all bad news |
| 05:51:10 | marcandre | seydar: english is not my native tongue, but I thought it took only one comma, like http://www.imdb.com/title/tt0183505/ |
| 05:51:52 | seydar | imdb is wrong. they shall burn for their sin. but you! you speak french! you have a chance to redeem yourself |
| 05:52:04 | marcandre | don't worry, I'm too old for hs girls. |
| 05:52:14 | brixen | yeah, the comma before the conjunction is optional |
| 05:52:26 | brixen | some people strongly feel it thould be a, b, and c |
| 05:52:29 | slava | yo |
| 05:52:34 | brixen | others, a, b and c |
| 05:52:37 | marcandre | thanks brixen because he doesn't want to edit it in PS |
| 05:52:58 | brixen | sup slava |
| 05:53:09 | seydar | i feel very strongly that there should be a comma there |
| 05:53:12 | seydar | hola slava |
| 05:53:42 | brixen | the comma would look odd before & imo |
| 05:53:49 | brixen | I usually use it before 'and' |
| 05:54:48 | brixen | seydar: bin/rbx -v <= what do you get+ |
| 05:54:49 | brixen | ? |
| 05:55:02 | seydar | checks |
| 05:55:09 | seydar | waits for his cpu to cool down |
| 05:55:22 | marcandre | anyways, I hope you find something interesting in my post. Answer to the first quiz is on my bug report (posted to redmine) |
| 05:55:27 | marcandre | gotta run. GN guys |
| 05:55:33 | brixen | marcandre: later |
| 05:55:37 | seydar | bon nuit mec |
| 05:55:40 | seydar | brixen: rubinius 0.11.0-dev (ruby 1.8.6) (eabf5ec7d 12/31/2009) [powerpc-apple-darwin8.11.0] |
| 05:55:44 | seydar | woot! |
| 05:55:48 | brixen | woot! |
| 05:55:56 | brixen | seydar: no more excuses lad |
| 05:56:38 | seydar | wait |
| 05:56:41 | seydar | let's run irb |
| 05:56:51 | seydar | holy shit it's 1am |
| 05:57:54 | seydar | i don't.... understand |
| 05:58:00 | seydar | how does this work all of a sudden |
| 05:58:12 | slava | factor lets you shut down your computer at compile time |
| 05:58:24 | slava | MACRO: fuck ( -- ) "shutdown -h now" run-process f ; |
| 05:58:25 | slava | fuck |
| 05:59:51 | brixen | waits for slava's computer to reboot... |
| 06:01:23 | seydar | brixen: i will promise you rubinius compatibility for my project by the end of may |
| 06:03:08 | brixen | seydar: excellent |
| 06:03:42 | seydar | oh, how's LLVM integration coming along? |
| 06:03:54 | slava | llvm for rubinius? |
| 06:03:58 | brixen | evan is working on it for the new jit |
| 06:04:03 | slava | ah |
| 06:04:25 | slava | he started off with llvm then decided to do his own codegen now its back to llvm? :) |
| 06:04:28 | brixen | should have some of it working in a week or 2 |
| 06:04:38 | brixen | something like that :) |
| 06:05:05 | brixen | there are a handful of projects that effectively use llvm |
| 06:05:13 | brixen | it's a learning process |
| 06:06:07 | evan | allo |
| 06:06:14 | brixen | wb evan |
| 06:06:15 | evan | slava: I see the C++ port is going well |
| 06:06:45 | evan | brixen: how ya feeling today? |
| 06:06:51 | brixen | better :) |
| 06:07:00 | evan | good! |
| 06:07:07 | brixen | almost have the gprof graph output working |
| 06:07:49 | evan | sweet! |
| 06:08:07 | brixen | reading this "masterminds of programming", too bad matz didn't get interview for that |
| 06:08:26 | evan | whats that? |
| 06:08:37 | brixen | recent oreilly book |
| 06:08:59 | brixen | http://oreilly.com/catalog/9780596515171/ |
| 06:09:51 | slava | evan: I'm done with it for now |
| 06:10:08 | slava | evan: I'm going to move on to a few other things now, going to do a new code generator soon |
| 06:11:33 | evan | slava: good to see you picked up some techniques from rubinius |
| 06:11:42 | evan | i like you're use of implicit template params |
| 06:11:46 | evan | your |
| 06:12:11 | slava | yeah, 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:15 | slava | sorry :) |
| 06:12:29 | evan | no prob |
| 06:12:40 | slava | I came up with a nice utility for my byte arrays |
| 06:12:40 | evan | might mention it at the bottom, just to stroke my ego :) |
| 06:13:13 | slava | evan: so a byte array has a header with a length, and then its binary data, right |
| 06:13:18 | evan | yep |
| 06:13:21 | slava | and usually you treat it as an array, char* float* whatever |
| 06:13:22 | slava | template<typename T> T *data() { return (T *)(this + 1); } |
| 06:13:29 | slava | I have this instance method :) |
| 06:13:38 | slava | foo->data<char>()[69] = 42; |
| 06:13:39 | evan | ah |
| 06:13:42 | evan | heh |
| 06:13:42 | evan | nice |
| 06:13:57 | evan | i rarely cast the body as anything but a char* |
| 06:14:01 | evan | so it's defined as |
| 06:14:02 | slava | also 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:06 | evan | char body[]; |
| 06:14:08 | slava | ah |
| 06:14:26 | slava | well that's fine I guess, if a bit less flexible :) |
| 06:14:33 | slava | in my C code I'd just do (char *)(byte_array + 1); |
| 06:14:33 | evan | :D |
| 06:14:54 | evan | i'm looking at your tagged class now |
| 06:15:08 | slava | this is the first C++ code I write except for school assignments 6 years ago |
| 06:15:11 | slava | go easy eh |
| 06:15:29 | evan | rubinius was my first in a while |
| 06:15:39 | evan | so i'm on in no position to critizes :D |
| 06:15:40 | slava | well ti looks like you knew all the tricks already |
| 06:16:01 | slava | so how many of your tags are immediate data? |
| 06:16:17 | evan | well, if you go back and look at the original C++ code |
| 06:16:21 | evan | i did a lot of experimenting |
| 06:16:27 | evan | i love to experiment |
| 06:16:33 | evan | it's my strength and downfall |
| 06:16:38 | slava | I 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:43 | slava | s/irid/rid/ |
| 06:16:44 | evan | I use a variable length tag |
| 06:16:56 | slava | it slowed down bootstrap by 30 seconds or so |
| 06:16:57 | evan | 1 == fixnum, ie 31 data bits |
| 06:17:07 | slava | ah |
| 06:17:21 | evan | 110 == symbol |
| 06:17:27 | evan | 010 == special |
| 06:17:31 | slava | clever, you have big fixnums at the expense of half as many tags |
| 06:17:33 | evan | special is nil, true, and false |
| 06:18:00 | evan | well, i've shifted the tag up one |
| 06:18:03 | slava | on x86-64, you cannot use 64-bit immediates with most instructions |
| 06:18:03 | evan | so i have the same number of tags |
| 06:18:12 | slava | so comparing a value with a heap pointer requires a spare register |
| 06:18:14 | evan | I just loose a bit of data in the other tags |
| 06:18:22 | evan | yep yep |
| 06:18:28 | slava | which means that any code that compares a value with boolean false runs a small perf hit |
| 06:18:29 | seydar | why do you need the spare register? |
| 06:18:43 | slava | seydar: mov rx,<addr of false> |
| 06:18:47 | slava | cmp rx,ry |
| 06:18:50 | slava | je some_label |
| 06:19:04 | slava | that's an 'if' comparing a value against boolean false (or true) |
| 06:19:14 | seydar | but the immediate isn't 64bit?! i don't understand what would cause the need for an extra reg |
| 06:19:19 | slava | it is |
| 06:19:25 | slava | but there's another way you can do it on 32-bit only |
| 06:19:28 | slava | cmp rx,<addr of false> |
| 06:19:33 | slava | cmp can take a 32-bit immediate |
| 06:19:51 | slava | so right now 'f' (which has pointer binary value 7) is always an immediate of this form |
| 06:20:10 | slava | but 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:18 | evan | slava: well, I can just use the low 32 bits to compare with false |
| 06:20:27 | slava | how do you know its going to fit in 32-bits? |
| 06:20:29 | slava | because its immediate? |
| 06:20:31 | evan | because 010 can't be the low bits of anything else |
| 06:20:39 | slava | ah |
| 06:20:50 | slava | well, same thing here then, I guess |
| 06:20:51 | evan | so you can compare it truncated |
| 06:21:05 | slava | the 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:09 | slava | int class; |
| 06:21:11 | evan | if nil was a singleton object like smalltalk |
| 06:21:15 | slava | if(value is fixnum) class = fixnum_class; |
| 06:21:19 | slava | else class = value[0]; |
| 06:21:20 | evan | then you'd need to do that |
| 06:21:30 | seydar | slava: oh, so you were comparing 32bit to 64bit numbers? |
| 06:21:52 | slava | seydar: 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:54 | evan | slava: right |
| 06:22:12 | evan | i can do |
| 06:22:23 | evan | if(value is reference) class = value[0] |
| 06:22:37 | evan | else class = class_table[value & tag_mask]; |
| 06:22:38 | slava | but then your code compiles with a branch |
| 06:22:59 | slava | but it seems not worth it in any case to try the branchless trick |
| 06:23:21 | slava | gotta go |
| 06:23:21 | slava | bye |
| 06:23:23 | evan | bye |
| 06:23:28 | seydar | asm question: can i make use of a, ax, and eax on a 64 bit machine? |
| 06:23:33 | seydar | adios slava! |
| 06:23:37 | slava | seydar: yes |
| 06:23:50 | slava | the instruction encoding can express all possible operand sizes in every 'mode' |
| 06:23:55 | slava | however you need a prefix for the one that's not the current |
| 06:24:24 | slava | so when 32-bit protected mode code works with C shorts, it generates prefixes for instructions to make them 16-bit |
| 06:24:34 | slava | and 64-bit code needs a prefix to access the additional registers etc |
| 06:24:48 | slava | but in 16-bit real mode, only 16-bit instructions work and those don't need a prefix |
| 06:24:51 | slava | really leaving now, bye :-) |
| 06:25:25 | seydar | adios m'laddy |
| 06:27:36 | seydar | ok, imma follow slava's cue |
| 06:27:41 | seydar | because it's really fucking late now |
| 06:28:12 | seydar | and rubinius works! i'm in love with a stripper^H^H^H^H^H^H^H^Hvm |
| 06:29:13 | brixen | evan: http://gist.github.com/109145 |
| 06:29:25 | brixen | i have to fix the called numbers |
| 06:29:32 | brixen | it's a pretty cool format |
| 06:29:45 | brixen | lines above the "primary" line are callers |
| 06:29:50 | brixen | below are callees |
| 06:30:05 | brixen | the primary line is the one with the index in the left column |
| 06:30:26 | brixen | the graph format is sorted by self seconds |
| 06:30:59 | brixen | I'm deviating from pgrof a bit |
| 06:31:17 | brixen | eg the % time is computed the same as in the flat profile |
| 06:31:32 | brixen | and I don't compute recursive cycles |
| 06:34:47 | brixen | bbiab.. |
| 07:18:41 | evan | brixen: nice! |
| 09:32:14 | dbussink | rue: in the conf room? |
| 10:13:01 | bitherder | I'm at EuRuKo and someone asked if 'Rubinius is still "alive"' during the QA sessions after Matz's keynote. |
| 10:14:02 | bitherder | What should the answer be? |
| 10:14:35 | tilman | 'yes' |
| 10:15:40 | bitherder | Maybe a better question would be "how alive is Rubinius"? |
| 10:15:45 | dbussink | bitherder: you can look at github to see whether it is still actively developed :P |
| 10:32:08 | rue | dbussink: No...there was a minor incident at home at night, I just got up. Might just skip today |
| 10:32:23 | dbussink | rue: ah, too bad |
| 10:32:28 | dbussink | rue: well, my talk is tomorrow ;) |
| 10:34:46 | rue | Indeed |
| 10:58:22 | rue | Live stream is neat |
| 11:22:52 | rue | dbussink: Wave to the camera :P |
| 11:24:28 | dbussink | rue: sitting directly behind aslak atm |
| 17:17:34 | seydar | hola holmies |
| 20:45:32 | dkubb | I was just trying to run the extlib specs with rubinius, and I ran into an error: http://gist.github.com/109377 |
| 20:46:37 | dkubb | I 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:25 | dbussink | dkubb: hmm, last time i checked extlib was working |
| 20:47:38 | dbussink | dkubb: but there are a whole bunch of failures icw rspec |
| 20:48:27 | dkubb | dbussink: 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:57 | dkubb | dbussink: icw? |
| 20:49:05 | dbussink | in combination with |
| 20:49:08 | dbussink | i was lazy :p |
| 20:49:08 | dkubb | ahh ok |
| 20:49:25 | dbussink | but we need to get out and have some food and drinks in bcn :) |
| 20:49:41 | dkubb | I noticed some bugs in rspec 1.2.6 just with MRI and dm-core |
| 20:49:49 | dbussink | dkubb: btw, extlib runs for me, but a whole lot of failures |
| 20:59:50 | dkubb | dbussink: oh really? is there anything special I need to do other than install rspec + rake? |
| 21:00:18 | dbussink | dkubb: i'm running for example ../rubinius/bin/rbx -S gem install rspec |
| 21:00:34 | dbussink | dkubb: then ../rubinius/bin/rbx -S gem install rake |
| 21:00:44 | dbussink | and ../rubinius/bin/rake spec |
| 21:00:52 | dbussink | assuiming extlib is in the same directory as rubinius |
| 21:01:35 | dkubb | dbussink: ahh, ok, I have rbx in my path, but otherwise I'm doing the same thing |
| 21:09:36 | dkubb | dbussink: just to be sure, I re-installed those gems and when I ran the specs I get the same results |
| 21:10:28 | dkubb | dbussink: when I compiled rubinius from a fresh git checkout (from about an hour ago) all but one spec passed |
| 21:13:12 | dbussink | dkubb: that's weird |
| 21:14:27 | dkubb | dbussink: maybe I'll blow everything away and start with a clean install, just to be sure |
| 21:29:15 | dbussink | dkubb: ok, well, we're really going now, ttyl! |
| 21:29:25 | dkubb | dbussink: k, ttyl |
| 22:50:42 | rue | Meeble |
| 22:51:14 | dkubb | dbussink: ok, I got the specs to run by reinstalling everything. you're right, alot of extlib fails atm |
| 22:51:42 | dkubb | dbussink: which is understandable, but good to know anyway |
| 23:28:30 | boyscout | Adding rb_big2(u)long to capi, with specs. - 9e5a20e - Cezar Sa Espinola |
| 23:32:53 | boyscout | CI: 9e5a20e success. 2647 files, 10179 examples, 32469 expectations, 0 failures, 0 errors |
| 23:48:19 | rue | Hm. iWeb is consuming 192% CPU :) |