Index

Show enters and exits. Hide enters and exits.

00:00:11drbrainI can do lists in RDoc
00:00:17rueShould we look into annotations/docbooks format or something?
00:00:18agardineractually, check out e.g. make_array
00:00:36agardinerthis shows a nested array case
00:00:49drbrainrue: RDoc could output docbook format if you wrote the outputter
00:01:19drbrainok, it makes a pretty picture
00:01:43drbrainI could do this with RDoc
00:01:54drbrainit supports nested lists
00:02:29rueYes, but RDoc kinda sucks
00:02:39rueThe lib, not the idea
00:03:04drbrainI made it at least 5 times better by fixing the namespacing
00:03:16rueYeah
00:04:08drbrain(the fixed namespacing version is in our lib/)
00:04:37nicksieger leaves the room.
00:05:15rueruby_parse does not preserve comments either, does it?
00:05:58drbrainruby_parser? not yet
00:06:09drbrainit's planned
00:06:16evanthere is a mode of grammar.y that does
00:06:22rueAh, well there we go
00:06:24evanwe just don't use it currently
00:06:27drbrainzenspider is making the lexer suck less
00:06:34rueThat pretty much removes 50% of RDoc and IRB
00:06:44evanit puts all the comments in an array with their start line and column
00:20:58drbrainhow is the opcode number maintained?
00:21:09wmoxam leaves the room.
00:21:40agardinerdrbrain: that comes from the InstructionSet stuff in kernel/core/iseq.rb
00:22:06drbrainthanks
00:23:05drbrainI was thinking I could embed most of this .yaml information into a regular RDoc comment, and spruce it up afterward with a custom generated
00:23:09drbraingenerator
00:23:19agardineryeah, that could work
00:23:42agardinerjust need something that could parse the stack rep and turn it into tables
00:23:45drbrainbecause putting the opcode in the RDoc is lame
00:24:19drbrainyeah, and I'm familiar enough with the RDoc formatting parts that I think I can do that
00:24:50drbrainwhy is there both operation and description?
00:24:58drbrainfor make_array, description is just more verbose
00:24:59agardinerif you can do lists of lists, you can handle the structured representation
00:25:07agardinerthe operation is a one-liner
00:25:21agardinerit appears as a tooltip if you hover over an op in the index
00:25:39drbrainok
00:25:49agardinerthe basic structure of the doc was ripped off of the JVM opcode doc
00:26:31twbray leaves the room.
00:28:13Arjen_ leaves the room.
00:28:28drbrainok, I'll play with make_array a bit and see what happens
00:29:00agardineryeah, if you can do make_array and make_hash, you should be golden
00:29:10drbraincool
00:29:47drbrainthen the documentation will all be in one place, which will be excellent
00:30:07agardineryeah, that would be nice
00:31:02drbraindepending on how this turns out, we may get "normal" rdoc for a regular run
00:31:22drbrainand the good stuff with lots of pretty for a custom run
00:32:04agardinerthat would be super-cool!
00:32:38drbrainI'm not sure if I can make it do the pretty run in a "normal" rdoc run just yet
00:38:42agardinerwell, i'm off now...
00:38:49agardinergoing go-karting and then getting pissed! (bucks do)
00:39:01agardinerlater!
00:39:22evanenjoy!
00:39:27agardiner leaves the room.
00:39:33headius leaves the room.
00:45:19wifelette leaves the room.
01:01:12kofno leaves the room.
01:10:02Defilerevan: Lua source code is pretty interesting. I think I am going to read all of it.
01:10:25Defilerevan: What surprises me so far is how similar most of it is to what we do.. despite the fact that Lua is so much faster than us
01:10:25twbray enters the room.
01:10:56evanDefiler: is the VM really faster? or is it that most of Lua's kernel is C functions
01:11:03evanie, the kernel of Lua isn't written in Lua.
01:11:13DefilerThat is a super question, and I intend to try to figure out the answer
01:11:21Defiler..but yeah, I was asking myself that earlier
01:11:39evanyou're reading the lua 5 source, yes?
01:11:42cored leaves the room.
01:11:42DefilerThey appear to allocate the Lua stack almost exactly the way we do
01:11:43DefilerYeah
01:11:47evani've looked at the lua 4 source a few times
01:11:54evanok, i'm going to read the 5 source
01:11:57DefilerI am reading the lua 5 and luajit source
01:12:19Defilerluajit is quite nice.. has some well-written comments, and stuff like this: http://luajit.org/coco_portability.html
01:13:42evaninterestin.g
01:14:06DefilerDoesn't support MacOS64, sadly. :)
01:14:19Defiler..but I am going to email the guy, because he knows his stuff
01:15:06evanoh.. ha!
01:15:14evani had a src/lua-5.1 directory already
01:15:15evan:)
01:15:24evanseems i downloaded it at some opint.
01:15:53DefilerThe DynASM library at this same site is interesting too
01:16:26evani've looked briefly at luajit before
01:17:00evanoh yeah.
01:17:11evanlua is where I got the idea for STATE as the first argument to everything
01:17:13evanlua uses L
01:17:14nicksieger enters the room.
01:17:14Defilerevan: In particular, I am glad that this guy reminded me of Fibers on windows
01:17:17lopex leaves the room.
01:17:27Defilerbecause that will be the way to go with subtend on Win64, I suspect
01:17:28evannot that passing state as the 1st arg is very new
01:18:13d2dchat leaves the room.
01:20:56zenspiderYAY!!! ruby_parser now stores comments on defs, defn, module, and class!
01:21:50technomancysweet!
01:22:04technomancy leaves the room.
01:22:25Defilerzenspider: nice
01:30:29evanzenspider: once you commit those changes to p4
01:30:35evani might try and run ruby_parser under rbx
01:31:42zenspiderevan: the fuck you will! that's all mine!! MINE!
01:31:54evanwrestles it out of zenspider's hands
01:33:45zenspiderlooks like I'm not checking in then. :P
01:33:54zenspiderp4 protect remove evan
01:33:59evanpoo on you.
01:34:05zenspiderhaha
01:34:13zenspidermuahaha
01:34:28zenspideryou can't take my fun away from me
01:34:43zenspideruntil... it doen't work and I can't debug it at least. :P
01:34:47twbray leaves the room.
01:34:55evanhehe
01:39:35brixenevan: return FALSE is still how we indicate failure in a primitive? or did that change?
01:39:48evanheh
01:39:58evani've got a change i'm working on that reworks that completely.
01:40:03brixenah, ok
01:46:42evanbrixen: but if you want to fix something, go for it
01:46:44evani'll just merge it in
01:46:47evanjust do
01:46:50evan_ret = FALSE;
01:46:51evanbreak;
01:47:03brixenok, might not need to
01:47:10evaneither way, no prob.
01:47:18evanthe new API has macros like
01:47:18brixenjust wasn't seeing it and readme-dv still says do taht
01:47:26evanRET(), DONE(), FAIL()
01:47:29brixennice
01:47:46brixenwe're pulling the (_ = fixnum) stuff back into POP() ?
01:47:50evanyep
01:47:52brixenok
01:47:55evani've gotten rid of all that.
01:47:57vintrepid enters the room.
01:47:59brixensweet
01:48:03evanself is also not on the stack
01:48:05brixenit was looking rather ragged in here
01:48:07evanit's at msg->recv
01:48:11brixenahh
01:48:19evanwhich cleans up things a bit.
01:48:26brixendefinitely
01:48:51twshelton enters the room.
01:50:23brixengah, apple and their special shit
01:50:32brixenthey add 20 bytes on the end of struct stat
01:50:43brixenand have different names for st_[amc]time
01:50:50evanreally? ack.
01:50:51brixenbut, gcc still resolves those names
01:50:57brixenyeah
01:51:04evanthey're probably #define aliases
01:51:05evanie
01:51:16brixenyep, I think so
01:51:16evan#define st_ctime apple_rocks_ctime
01:51:37brixenthe suck is that the header file doesn't reflect the man page
01:52:01brixenI'm going to add the ability to give the struct an overall size
01:52:10brixenin StructGenerator
01:52:46drbrainbrixen: st_[amc]time seems to not be POSIX
01:52:50brixenso the MemoryPointer is always the right size
01:52:52drbrainhttp://rafb.net/p/uTBVAZ12.html
01:53:05drbrainfrom FreeBSD 6's stat(2)
01:53:21brixenthat says if _POSIX_SOURCE is not defined
01:53:39drbrainwell, whichever way that goes
01:53:43brixenyeah, not sure
01:53:50brixenI remember st_mtime from way back
01:53:56brixenthis st_mtimespec is new to me
01:54:10brixeneither way, we just want the damn value :P
01:54:50drbrainI bet that POSIX allows for > 1 second of resolution for those fields
01:55:10brixenyeah
01:55:22drbrainso it's a struct timespec instead
01:55:29brixenyep
01:55:31evanha
01:55:33evaner.
01:55:34evanah
01:55:37evanthats the extra 2 bytes
01:55:42evanit's probably a timeval
01:55:47brixenwell, it's a 8 byte value
01:56:22evaner.
01:56:24evanextra 20 bytes.
01:57:34brixenno, that's special stuff apple adds
01:57:59evanok
01:58:02brixenat the end of the struct
01:58:21brixenthe crappy thing is that I'm looking at the ubuntu man page for struct stat
01:58:32brixenit uses time_t st_atime, etc
01:58:48brixenanyway, I'm going to add the overall struct size thing
01:58:54evanok
01:58:58brixenthen the offsets seem to be generated ok
01:59:20brixenso, we can use just the common subset in the Stat < FFI::Struct
01:59:43evanzenspider: muhhah! I HAVE YOUR CHANGES
02:07:44kofno enters the room.
02:13:28rueMoo
02:15:11evanmoo to you.
02:18:47maxpenguin leaves the room.
02:22:42nicksieger leaves the room.
02:23:44rubyconsumer enters the room.
02:29:29vintrepid leaves the room.
02:29:42VVSiz_ enters the room.
02:30:43obvio171 enters the room.
02:33:31agile enters the room.
02:36:14VVSiz leaves the room.
02:36:44tongueroo_ enters the room.
02:37:40robinhoodeI guess I have to bug someone to get my patch reviewed: http://rubinius.lighthouseapp.com/projects/5089/tickets/306-bug-class-variables-not-available-thro ugh-modules
02:37:47djwhitt enters the room.
02:38:10robinhoodeCan't say it's the best patch, actually.. I'm inclined to clean it up
02:39:19brixenchinese new year eve dinner, bbl...
02:41:13eventualbuddha leaves the room.
02:44:34ezmobius leaves the room.
02:48:42obvio leaves the room.
02:49:52tlockney_ enters the room.
02:54:48squeegy enters the room.
02:55:41hornbeck leaves the room.
02:55:51hornbeck enters the room.
02:57:14_mutle enters the room.
03:00:24tlockney leaves the room.
03:01:25mutle leaves the room.
03:03:27MenTaLguY enters the room.
03:04:42antaresrobinhoode, looks good enough to me. I have no commit bit though but had a look.
03:05:00robinhoodeantares, Thanks
03:06:29tongueroo leaves the room.
03:08:04KirinDave leaves the room.
03:22:23_ADS enters the room.
03:23:01tongueroo enters the room.
03:23:54antares leaves the room.
03:24:06_ADSwhere is ucontext.h?
03:24:34tongueroo leaves the room.
03:26:04_ADSI found PortableUContext.h, but state.h includes "context.h".
03:29:06Defilerucontext.h is provided by POSIX operating systems
03:29:14macournoyer enters the room.
03:29:19_ADSbut not cygwin apparently
03:29:19Defilercontext.h is unrelated, and is part of Rubinius
03:29:53DefilerCygwin is going to be a problem
03:29:59DefilerBecause it doesn't provide ucontext
03:30:43DefilerWe probably need to develop a replacement technique using longjmp for systems like that, but that will take a while
03:31:02headius enters the room.
03:32:01_ADSdoes Rubinus acually use the POSIX context funcs?
03:32:16DefilerYes
03:32:26DefilerIt is how our C API is implemented
03:32:31DefilerSo it is important
03:32:45DefilerYou might be able to get it running under UWIN, though, since I know it has full-on POSIX support
03:32:49Defilerhttp://www.research.att.com/sw/tools/uwin/
03:33:08DefilerThough almost certainly we have Makefile bugs on systems like that
03:33:46tongueroo enters the room.
03:34:28_ADShmm
03:34:36DefilerOnce things are more stable, I am going to spend some time on Windows support. It is going to be hard, though
03:34:48DefilerSince a number of things are just totally different
03:35:12DefilerI suspect we are going to need to abstract out the ucontext stuff anyway.. right now it is expecting POSIX, though
03:35:26_ADSI know ... I've done some crossplatform work
03:37:34DefilerI guess what I am trying to say is.. getting Rubinius up on Cygwin or Win32 is going to be a challenge. It is cool that you are giving it a shot, but making it work is going to be new development, not just fixes or header changes
03:37:52DefilerFeel free to implement those things, though. :)
03:39:15tongueroo_ leaves the room.
03:42:09nicksieger enters the room.
03:51:25tongueroo leaves the room.
03:53:09Judofyr leaves the room.
03:59:42enebo leaves the room.
03:59:55macournoyer leaves the room.
04:05:12wmoxam enters the room.
04:09:44GMFlash leaves the room.
04:09:49GMFlash enters the room.
04:32:52benburkert enters the room.
04:57:51twbray enters the room.
05:10:07ttmrichter enters the room.
05:11:53defunkt enters the room.
05:22:36MenTaLguY leaves the room.
05:28:00RyanTM leaves the room.
05:29:56RyanTM enters the room.
05:31:13wmoxam leaves the room.
05:32:14mediogre enters the room.
05:40:02_ADS leaves the room.
05:43:22rueThis is just ridiculous.
05:52:14lstoll leaves the room.
05:53:29dewd leaves the room.
06:10:01Judofyr enters the room.
06:15:23evanack.
06:15:32evanour ffi stub generator is broken.
06:16:02evanit's poping the wrong value into ebx
06:16:08nicksieger leaves the room.
06:16:38rueHm, that would probably be bad
06:16:50evanyes, it's proving to be bad.
06:16:56evani'm debugging it now.
06:16:56GMFlash leaves the room.
06:22:54evanhr.m
06:22:56evanhrm.
06:23:02evanwhen is ffi_x86.c used?
06:23:14GMFlash enters the room.
06:23:31evandrat.
06:23:38evanonly linux and x86
06:23:44evanthat means this problem is in lightning.
06:23:49evancrap stick.
06:28:29Judofyrgood morning :P
06:29:58rubyconsumer leaves the room.
06:35:18be9 enters the room.
06:36:32aotearoa leaves the room.
06:40:29GMFlash leaves the room.
06:45:28GMFlash enters the room.
06:49:55brixenrue: you around?
06:50:51benburkert leaves the room.
06:51:54lstoll enters the room.
06:56:47mfp leaves the room.
07:06:57nicksieger enters the room.
07:07:31defunkt leaves the room.
07:12:07ragge leaves the room.
07:12:15rueNow
07:14:07mfp enters the room.
07:17:51ruegoes to hide behind a tree
07:20:20brixenheh
07:20:45brixenrue: so, all the File consts that you moved to IO, I think I'm going to put them on File::Stat
07:20:51brixencus that's the only place that will use them
07:21:00brixenand const lookup is currently expensive
07:21:19brixenlooking at mri, I only see SEEK_xxx on IO
07:21:44brixenI almost have an FFI stat
07:24:17aotearoa enters the room.
07:25:34rueSure, does not matter much where they go
07:27:30brixenok
07:31:18ezmobius enters the room.
07:37:09ezmobius_ enters the room.
07:38:50jtoy enters the room.
07:39:53cout leaves the room.
07:40:18brixenhell of a wind, rain, lightning storm here
07:40:55brixenwowsers, I think ffi File::Stat might be working
07:41:36rueCool
07:41:47brixenok, it was for a while :P
07:42:01brixennothing like bin/ci to shoot down ones hopes
07:42:28evanheh
07:42:31evani'm having that problem now.
07:42:48evanwith ffi stubs not behaving when compiling the VM normally
07:42:59evanI have a feeling we've always had this problem
07:43:05evanbut the way we called the primitives, it was mitigated.
07:43:11evansince i'm reworking that stuff, it's exposed it.
07:43:11brixenlove it when those dots start screaming across the screen only to come to a glorious stop
07:43:35brixenhmm, interesting
07:43:45brixendoesn't affect os x, right?
07:44:16evanvery much it does.
07:47:06brixenah ok
07:47:10lstoll leaves the room.
07:47:28brixenI misunderstood the above about linux and x86
07:48:06evanthe bug seems to be in lightning
07:48:24evanwhich we're using on os x still (x86 or not)
07:48:37brixenok
07:48:45ezmobius__ enters the room.
07:48:49evani'm going to try 2 different things
07:48:56evan1) get a new version of lightning
07:49:08evan2) make our ffi_x86.c work on darwin
07:49:14evanor maybe 3) fix lightning.
07:49:20evanwe'll see tomorrow.
07:49:24brixenheh ok
07:49:55cjheath leaves the room.
07:51:18evansweet, lightning switched to git.
07:51:23evanmakes it that much easier.
07:51:32brixennice
07:51:48scooprurge them to do a arm port >:)
07:52:12evanack.
07:52:17evanthey switched to gplv3
07:52:20evancrap.
07:52:22evanwell
07:52:26evantime to gut lightning
07:55:31evanyay! our pal ian! http://vvm.lip6.fr/projects_realizations/ccg/
07:56:22ezmobius leaves the room.
07:56:28brixensweet!
07:56:38brixenand only there since 2004 it looks like
07:56:39evanit's ooooold code
07:56:40brixen:)
07:56:53evanbut i'm guessing i can get it to at least do what we want.
07:57:35brixenif only we could get ian to realize Ruby is the future! :D
07:57:38cout enters the room.
07:58:03brixenfohc - future of happy computing
07:58:47evanheh
07:58:49evanwel
07:58:50evanl
07:58:52evanbed for me.
07:59:00evanthen off to orlando in the morning
07:59:08brixen"We have found that porting the back-end to a new platform is considerably easier with a tool such as ccg, and requires only a day or two of work."
07:59:09evantalk to everyone later.
07:59:15brixennite!
07:59:18brixensafe trip
08:00:29rueLaters
08:07:28dbussink enters the room.
08:15:13lstoll enters the room.
08:16:51twbray leaves the room.
08:18:15maduyb leaves the room.
08:25:35thehcdreamer enters the room.
08:34:56VVSizhi everybody
08:35:25rueHullo
08:37:19headius leaves the room.
08:37:28dbussinkmorning
08:50:32rueEarly night for me, *cough&
08:50:35rueNites
08:55:15zimbatm enters the room.
09:05:17aotearoa leaves the room.
09:06:13Arjen_ enters the room.
09:06:37wifelette enters the room.
09:07:48octopod enters the room.
09:08:34wifelette leaves the room.
09:11:32geekounet leaves the room.
09:14:10ragge enters the room.
09:35:16aotearoa enters the room.
09:36:57dbussink leaves the room.
09:37:14dbussink enters the room.
09:43:10geekounet enters the room.
09:44:34cjheath enters the room.
09:47:23imajes leaves the room.
09:53:30TheVoice leaves the room.
10:06:10ragge leaves the room.
10:16:23ezmobius__ leaves the room.
10:16:24ezmobius_ leaves the room.
10:28:47imajes enters the room.
10:29:58rightondev leaves the room.
10:30:49rightondev enters the room.
10:37:28jero5 leaves the room.
10:51:06nitay_ enters the room.
10:59:24ragge enters the room.
11:04:34dodecaphonic_ enters the room.
11:04:47dodecaphonic leaves the room.
11:05:10dodecaphonic enters the room.
11:05:21dodecaphonic leaves the room.
11:05:24nitay leaves the room.
11:05:38dodecaphonic__ enters the room.
11:19:09chris2 enters the room.
11:27:50sudoer enters the room.
11:27:50imajes leaves the room.
11:29:38Phoop leaves the room.
11:30:10Phoop enters the room.
11:36:02jtoy leaves the room.
11:37:51jtoy enters the room.
11:39:49lstoll leaves the room.
11:43:46cjheath leaves the room.
11:47:06octopod leaves the room.
11:52:37ctennis leaves the room.
11:53:23sudoer_ enters the room.
11:54:41sudoer leaves the room.
11:56:17dbussink leaves the room.
12:12:15nitay enters the room.
12:13:51jtoy leaves the room.
12:17:17dbussink enters the room.
12:17:40sudoer_ leaves the room.
12:30:52nitay_ leaves the room.
12:31:17imajes enters the room.
12:33:14ctennis enters the room.
12:35:11be9 leaves the room.
12:51:27ragge leaves the room.
13:02:23pluskid enters the room.
13:05:14radarek enters the room.
13:19:59dewd enters the room.
13:20:34_maartenHi all
13:21:10_maartenWhat is the status on reducing the startup time of rubinius? Does anyone focus on that particular problem already?
13:22:25_maartenI'd like to put some time into this, but I'm not really inclined to do what already is being worked on by others. ;)
13:25:45Fullmoon_ enters the room.
13:37:55dbussink leaves the room.
13:43:34pluskid leaves the room.
13:48:25RyanTM leaves the room.
13:50:43RyanTM enters the room.
13:51:17jtoy enters the room.
13:55:25squeegy leaves the room.
14:04:17macournoyer enters the room.
14:05:24ragge enters the room.
14:06:08mae enters the room.
14:06:19maewhats up biatches
14:06:21maehow goes rails supprot
14:06:24maesupport *
14:16:05moofbong enters the room.
14:17:49probablycorey enters the room.
14:20:16RyanTM leaves the room.
14:20:33RyanTM enters the room.
14:34:16probablycorey leaves the room.
14:36:32probablycorey enters the room.
14:44:58skaar enters the room.
14:45:43probablycorey_ enters the room.
14:48:57octopod enters the room.
14:51:10mediogre leaves the room.
14:51:24probablycorey_ leaves the room.
14:51:28nitay_ enters the room.
14:52:32probablycorey leaves the room.
14:54:00twshelton leaves the room.
14:54:39enebo enters the room.
14:59:26nitay__ enters the room.
14:59:26nitay_ leaves the room.
15:05:06rightondev leaves the room.
15:07:59mad_phoenix enters the room.
15:09:35nitay leaves the room.
15:09:54squeegy enters the room.
15:12:40rightondev enters the room.
15:18:28twshelton enters the room.
15:22:03dbussink enters the room.
15:25:06dbussink_maarten_: dutch?
15:25:29dbussinkmae: rails support isn't on the radar yet afaik
15:25:30wmoxam enters the room.
15:25:52maeaww shucks
15:26:28dbussinkwell, there are a lot of things that need to be done first
15:26:55dbussinkezmobius is working in merb though, trying to get that running
15:27:22maeyeah i know ;)
15:27:37maei was back here 8 months ago working on rubinius
15:27:43maebut then i flaked out and abandoned them
15:27:50maelike an orphan
15:27:57hornbeck leaves the room.
15:28:03ragge leaves the room.
15:28:14dbussinkmae: what a shame ;)
15:28:26dbussinkmae: you would like to return? :P
15:28:39maewell
15:28:44maerubinius is in the back of my mind
15:28:51maebecause holy hell radiant cms is slowww
15:28:57maeand a perf boost would be nice
15:29:13maeand omg, the stack trace in rubinius is so much cooler
15:29:24dbussinkwell, i've seen the first performance changes seep in
15:29:27maeand like omg closures and stack frames are first class objects
15:29:34maeyeah method caching and all that
15:30:05hornbeck enters the room.
15:32:13macournoyer leaves the room.
15:32:45macournoyer enters the room.
15:52:07vascoas enters the room.
15:57:26brixenmae: dude, our bin/ci runs are like 23 sec, it took 20+ min when you were here :P
15:57:41brixenmae: *and*, we have tons more specs now
15:58:34brixenbreakfast, bbiab..
15:59:21twbray enters the room.
16:00:16maeyeah yeah
16:00:32maemy fav thing
16:00:35maeis still the stack trace
16:00:36maeoutput
16:00:39maehow its aligned
16:00:41maebeautiful
16:00:44maereadable
16:00:48evan:)
16:00:50evanme too.
16:00:56maeheh
16:01:00maeso evan
16:01:08maewhat really is stopping rubinius from having rails support
16:01:10maewhats in the way
16:01:19maeis it stuff like mysql drivers and stuff
16:01:26maeor some ruby parts are still missing..
16:01:33evani suspect a little bit of both.
16:01:36maeheh
16:01:42evanyou should go and try to run rails
16:01:46evanand fix things along the way
16:01:51maei thought about it
16:01:57maebut i don' t have any time these days
16:01:58maesigh
16:01:58evanthats how drbrain got rubygems working
16:02:14maewhat about mongrel?
16:02:29evanit's running, i suspect it needs a little love though.
16:02:32maei suppose webrick would run natively much faster than on mri
16:02:49maeok ok
16:02:51maeso i've done it
16:02:56dbussinkevan: did you look into the ffi problems?
16:03:01maei've decided to take the plunge and waste 1 hour compiling the lates stuff
16:03:08squeegy leaves the room.
16:03:09maeheh
16:03:15maecompiles rubiius
16:03:34dbussinkevan: because i can't understand why Math#asinh is failing, maybe it's the same issue
16:03:36maeif i could make radiant faster with rubinius
16:03:41maei would have an orgasm in pants
16:03:46maeits sooo slow
16:03:47evandbussink: i see it fail or and off.
16:03:54evandbussink: i haven't figured it out either yet.
16:04:16maeluckily in the "real business world of programming" no one cares about asinh being accurate
16:04:24maeso i'll happily ignore that
16:04:55maeso err whats the svn url
16:04:56maethese days
16:05:12dbussinkwe use git :)
16:05:12maeor wait
16:05:14maegit now
16:05:15maejeez
16:05:20maewhy didn't you use mercurial
16:05:32maeok ok so your telling me
16:05:34maenow i have to get cogito
16:05:36maeyour killing me
16:05:41maesheesh
16:06:03dbussinkcogito?
16:06:22maeyeah, i'm not about to remember all the housekeeping i have to do with standalone git
16:06:28maethat was 2 years ago i tried that
16:06:33maeswitched to mercurial, never looked back
16:06:43dbussinkmae: there's a lot of stuff on the lighthouse pages
16:06:58dbussinkmae: there are some rake tasks to make git life easier
16:07:24maewhy use git when i can use cogito ; )
16:07:37knowtheory leaves the room.
16:07:44twbray leaves the room.
16:07:57maehttp://www.kernel.org/pub/software/scm/cogito/README
16:08:36dbussinkevan: and now for something completely different, i was looking into the last failing Time specs, it's basically failing because there is no coerce on every object
16:08:59dbussinkevan: what's the approach for that? either fix it locally only for time, or devise some more general solution?
16:09:14maeahh legacy code, its like women, can't live with it, can't live without it.
16:09:47maethis is open source, fix it right!
16:10:23evanwell, i'm off to the airport
16:10:27evanlaters
16:10:30maedon't let the october 2007 discourage you.
16:10:36maewhere are you ging
16:10:45binary42 leaves the room.
16:10:50evanorlando
16:10:52maenice.
16:10:53maehave fun
16:11:05dbussinkhave a nice trip
16:11:05mae damn legacy code... *grumble*
16:11:37maei wonder how hard it would be to port rubinius to erlang
16:11:41knowtheory enters the room.
16:11:47maehehehehehehe
16:13:06maejruby, rubinius, erluby
16:14:40wyhaines leaves the room.
16:15:13vascoas leaves the room.
16:17:00boyscout1 commit by Dirkjan Bussink
16:17:01boyscout * Fix Time#<=> for objects other than Time; f550552
16:17:55d2dchat enters the room.
16:20:56pauldix enters the room.
16:21:25maeer damn
16:21:28maei need a commit bit
16:22:12maeevan just left
16:22:18maeoh gobblety goop
16:22:19dodecaphonic leaves the room.
16:22:27maebrixen do u have access
16:22:49brixenmae: nope, evan's still the one
16:23:09maeok u gotta tell me something
16:23:19maewhat is with the 124123 changes to the issue tracking system
16:23:27maeeven an olympic athlete would run out of endurance keeping up
16:23:37maeyou were modifying beast, but then u gave up o rwhat
16:23:43aotearoa_ enters the room.
16:23:50brixenmae: yeah, better time spent on rubinius
16:23:59maeheh
16:24:02maeyou finally realized!
16:24:08brixenbtw, you should learn git, it kicks ass
16:24:12maei know git already
16:24:13maelike i said
16:24:18maei was using it before i started using mercurial
16:24:21brixencogito is deprecated since git porcelain got better
16:24:26maeah
16:25:01brixengit is like taking a doom bfg to a sticks and knives local gang fight in the 50's
16:25:22brixengit : other scms :: doom bfg : silly boy gang fights
16:25:59maenah dude
16:26:05maemercurial has almost identical features
16:26:11brixenyeah, I know
16:26:14maeexcept its not overly complicated for the basic programmer
16:26:18brixen'cept for the ones it doesn't :P
16:26:27maeif i was using git i think i would have alot more trouble with my team..
16:26:42maeok name one thing about git that is better than mercurial
16:26:47brixenit's an often cited reason, but we've faired pretty well
16:26:55maeyes but brixen
16:26:56maedude omg
16:27:07brixendunno mercurial yet
16:27:07maeyou don't have dumb programmer working on this project
16:27:09maeonly smart ones
16:27:12brixenhehe
16:27:12maeof course its not a problem
16:27:31maei've been dragged down to reality
16:27:45maeyour still living in your ivory towers of TDD and whatnot.
16:28:00dbussinkwe don't recognize reality ;)
16:28:02maequite literally, i just migrated a team from not using ANY SCM to mercurial
16:28:03brixennah, I've switched to the dark side, I write code first
16:28:03maeimagine
16:28:09brixenthen decide if I want to test it :P
16:28:09mae3 programmers working on a code base
16:28:15maewith no scm
16:28:22brixenyeah, scary
16:28:23maeyeah me too
16:28:31maeif you only knew the power of the dark side..
16:28:44maeTDD is pragmatic, because you don't let your imagination run wild..
16:28:53maebut letting your imagination run wild is too fun..
16:28:53maehehe
16:29:03brixentry not, write or do not write specs
16:29:18twbray enters the room.
16:29:21dbussinkspecs first write you must
16:29:26maeomg
16:29:26brixenhah
16:29:32maebrixen wrote the book on anal speccing
16:29:46maehe almost wanted to kick my ass about a year ago
16:29:46brixennot me brotha
16:29:55maebecause i was creating too many spec files
16:30:05brixenreally?
16:30:14maeerr sorry
16:30:21maedon't wanna bring up mud
16:30:26maeskeletal closets
16:30:30brixenheh
16:30:40wyhaines leaves the room.
16:30:52maewow did u guys like annihilate the dependencies for rubinius
16:30:57maebecause it seems i'm making it on my first try
16:30:57brixendon't remember the files, I remember the primitives tests :P
16:30:59maewith no failures
16:31:05rubuildiusDirkjan Bussink: f5505522f; 4687 examples, 17173 expectations, 0 failures, 0 errors
16:31:10brixenyeah, we whacked most of them
16:31:18maeyeah primitive tests..
16:31:25maewas a good idea i think
16:31:33maebut everything back then was so low level
16:31:40brixenyep
16:32:07brixenevan is doing a big cleanup of primitives sounds like, new macros and other fun stuff
16:32:26maecool
16:32:29maefinished the job i never finished..
16:32:42maei donno man
16:32:50maeive been reborn as a programmer
16:33:11maei've sacrificed my perfectionist ideals at the altar of self absorption
16:33:14maeerr
16:33:19maeat the altar of pragmatism
16:33:20maerather
16:33:23maefirst way didn't make sense..
16:33:37maebut the only problem is
16:33:41maepragmatism is BOORRRING
16:33:56maebut it is happy when u see smiling faces of happy customers
16:34:05maeand happy paycheck
16:34:06maeand all that
16:34:12dodecaphonic enters the room.
16:34:37brixenyeah, pragmatism is essential
16:34:56maei still like ruby
16:35:00brixenI still talk to people though who tell me "yeah, we should really do specs/tests, but it's never in the client's budget"
16:35:03maebut only single threaded ruby
16:35:05brixenthat's just pure bs
16:35:17maemakes your life more difficult
16:35:27maeno specs that is
16:35:28brixenmae: oh, did you see we have multiple vm stuff?
16:35:36brixenyou can spawn a subvm
16:35:38maedon't know much of anything that is new
16:35:40brixenwith isolated heap
16:35:48maethat is pretty wicked i must say
16:35:51brixenand basic inter vm messaging
16:36:00Fullmoon_ leaves the room.
16:36:01maei like that on a semantic level
16:36:15maebecause it means that the vm has been localized as far as variables go
16:36:17maeno nasty global hacks
16:36:35maebut again, i really hate almost all the current semaphores
16:36:42dbussinkbrixen: did you get to reading my thesis? today my professors approved my latest draft version :)
16:36:44maei think erlang has the best concurrency model
16:37:20brixenand if you haven't checked this out, do: http://revactor.org/
16:37:31brixendbussink: :( not much
16:37:37maebrixen: how do you do ipc between vms.
16:37:40brixendbussink: congrats on the approval!
16:38:06brixenmae: you know there are no globals in rubinius!
16:38:23brixenevan had an example script, dunno where it is
16:38:54brixenmae: http://pastie.org/pastes/143904
16:38:57brixensomething like that
16:39:20brixenthere's a very basic msg queue between vms
16:39:25brixenyou'll have to look at the code :P
16:39:55maehmm
16:40:20maesigh
16:40:21brixenwe need macros in ruby
16:40:23maequeues suck
16:40:33maebravo for multiple vms
16:40:39maebut traditional semaphores all suck
16:40:43nicksieger leaves the room.
16:40:43maethats just my opinion
16:40:45maeand i'm sticking to it
16:40:48mae; )
16:40:51brixenok
16:41:07brixenqueue hides all that from you, but ok
16:41:19maequeue
16:41:26maei mean
16:41:28maeok it has a queu
16:41:31maegreat.
16:41:45maewhat happens if one vm explodes
16:41:48maedoes it have fallout
16:41:52brixencould
16:41:56brixenit's still single process
16:42:03maeok
16:42:04maeassuming
16:42:10brixenbut we handle a lot of catastrophies from C better than before
16:42:17mae that no idiot exhausted the heap and/or no shady C extensions
16:42:19maecan there be fallout
16:42:32brixenlike what?
16:42:34maelike
16:42:38maeyou know
16:42:42maebuffers
16:42:46maeoverflows
16:42:52maeum
16:42:55maedeadlock
16:42:59maeis there a timeout
16:43:11brixenwell, buf overflows usually affect the process, so yeah
16:43:17mae; )
16:43:18brixenthe vms run each in a native thread
16:43:23maeahh
16:43:29maehm
16:43:34maenot sure if i like that either
16:43:43brixenheh
16:43:45maenative threads are exhaustable
16:43:56maeits an unpredictable upper limit
16:44:25brixenwell, you're likely to run out of heap for the vm's before the threads
16:44:26maei thought evans motto was
16:44:38mae"the only thing that should stop rubinius is running out of heap"
16:44:56maethat really depends on the application
16:45:05maewhat if you have 1000 http keep alives
16:45:15brixenwell, use the right tool
16:45:17maesome os level threads are horrible
16:45:25brixenpeople who want mvm to emulate an OS are dumb
16:45:26maeok, so green threads?
16:45:39maemvm?
16:45:43brixendon't share vm's across what would normally be different processes in an OS
16:46:00brixenmulti vm
16:46:13maehmm ok
16:46:13brixenI wouldn't write a http server that spawned a vm for every request
16:46:17brixenthere's better ways to do that
16:46:26maei mean i see the value, especially because of the namespacing issues you run into sometimes in ruby
16:46:33maefor instance
16:46:38maerails could be rewritten
16:46:41maeto have the rails stuff in one vm
16:46:45brixenyeah, we'll see what folks do with it
16:46:47maeand your custom code isolate
16:46:48maed
16:46:50brixenbut check out the revactor stuff
16:46:52maeso its not always like
16:46:56mae"Blah is a reserved name"
16:47:02maefor your models
16:48:06maeah
16:48:12maerevactor is similar to what erlang has natively
16:48:25brixenright
16:48:26aotearoa leaves the room.
16:49:04headius enters the room.
16:49:37maeso um, one thing i think would be really cool in rugby
16:49:39maeruby
16:49:51maeis if it were easier to make picky methods
16:49:59maeinstead of
16:50:08maeraise 'BLALKDFJALSKDJlsadkflsdakf' if blah?
16:50:12maeand you have like 3 of these
16:50:13maeits ugly
16:50:21maewhat WOULD be wicked
16:50:24maeis if you could do it like
16:50:36DefilerI think Ruby could use some performance before it gets any new language features :)
16:50:40maedef blah(foo)
16:51:03maehmm
16:51:04maegood point
16:51:10maebut i thought rubinius addressed that
16:51:14mae; )
16:51:24maeok ok
16:51:25DefilerHopefully someday
16:51:28maehonestly
16:51:35maei just want rubys pattern matching to be upgraded
16:51:41maelike
16:52:04Defilermethod calls are already about as expensive as it is possible to make them in Ruby =(
16:52:16maeit would be cool
16:52:21maeif i could do
16:52:23Defilergiven that anything can change at any time
16:52:36maedef foo(String === bar)
16:52:40mae //blah
16:52:41maeend
16:52:44maeand then
16:52:56maedef foo(Integer === bar)
16:52:57maeend
16:53:11maethe c++ folks call it "parametric polymorphism"
16:53:14maebut i don't want static typing
16:53:19maei just want some way to pattern match
16:53:22maeso its more flexible
16:53:42DefilerI don't see how something that restricts polymorphism should be called 'polymorphism' :)
16:53:51brixenhah
16:53:53Defilerbut C++ has a bunch of weird names I guess
16:53:53maeok don't get all semantic on me
16:53:54maejeez
16:54:03maethats why i said c++ folks call it that
16:54:04maenot me
16:54:19maei'm just saying
16:54:28maewouldnt it be wtfcool if ruby had upgraded pattern matching
16:54:34brixenI think duck-typing goes a long way toward making pattern matching unnecessary
16:54:38maemore than foo, bar = car
16:54:44brixena language that needs pattern matching can't ducktype well
16:55:13maetrue, but i just want more declarative language and less if then else etc..
16:55:13brixenyou need pattern matching when you have to do special shit with an object
16:55:28brixenyou need objects that just do the write thing
16:55:36brixendo first instead of ask first
16:55:55maeyeah but there is information loss sometimes
16:55:56brixenobj.blowme instead of if obj.girl? then obj.blow me
16:55:57maeok for instance
16:55:59maein rails
16:56:09maeon one screen i want to display the date format HH:MM:SS
16:56:10brixenfor example ;)
16:56:12maeon another
16:56:13maei want
16:56:15maeHH:MM
16:56:20maeto_s is a retarded child
16:56:25maeit doesn't know how to differentiate
16:56:44brixenhmm, not sure how pattern matching helps there
16:56:56brixento_s(:short) / to_s(:long) or something
16:57:01brixenseems like the info is at the call site
16:57:05brixennot in the obj or to_s
16:57:24maethe problem with the do first instead of ask first
16:57:36maeis the object has to know context about its surroundings
16:57:51maeits nice but it decreases abstraction and increases cohesion
16:58:00maelike
16:58:12maeobj.blowme ..
16:58:31maeso obj has to know whether to blow me or not...
16:58:36maewhy should it know
16:58:40brixennono, not true
16:58:42maeits just a hoover sucking blow machine
16:58:50maeheh
16:58:55maelook
16:58:57maeits a tradeoff
16:59:00maeif i ask it
16:59:05maei'm assuming the object is dumb
16:59:10maeif i tell it, i'm assuming the object knows
16:59:25maeeither way your pushing the responsibility or taking the responsibility
16:59:33brixennot dumb, just does what it's asked with the semantic of #method tailored to it's reality
16:59:41smartocci leaves the room.
16:59:44maeits' *
17:00:04maejok
17:00:05mae then
17:00:09maeyour example was terrible
17:00:10maeit should be
17:00:20smartocci enters the room.
17:00:20brixenbah, this ffi stat is killing me
17:00:25brixenhad it almost working
17:00:31maeobj.blowme
17:00:42maeso obj would have a method for ...
17:00:48maeobj.blowme(me)
17:00:50maeobj says
17:01:04maeme.can_be_blown?
17:01:16maeand me.is_a_dude?
17:01:19maeok see
17:01:25maeyou can't get away from the cohesion
17:01:27maeyour screwed
17:01:35headiusafternoon
17:01:40maehey
17:01:54maei guess you could have
17:02:08maeme.can_be_blown_by(self)
17:02:21maein which case self would ask
17:02:55maecan the passed argument for _can_be_blown_by? be a possible candidate for b lowing
17:02:55brixenyay, irb loads
17:02:57maeand it goes on forever
17:03:08maeuntil someone actually knows how to decide who should be blwon
17:03:10maeblown
17:03:13brixenhah
17:03:14maeso there is cohesion
17:03:19maeno way around it
17:03:20maenope
17:03:36brixenshould not try to come up with risque examples when mae's in the room
17:03:40maein haskell you would have a monad 'blowme'
17:03:49brixenmae: write some pattern matching dude :P
17:03:53maeand it could be applied to any number of blowees and blower
17:03:56maeblowers *
17:04:01maewithout strong cohesion
17:04:21maeand the blower and blowee can be blissfully happy about ignoring the other
17:04:25brixenjust for clarification, I was talking about molten glass blobs ;)
17:04:31maeuhuh.
17:04:38dbussinkbrixen: you're able to find the problem with ffi?
17:04:54brixendbussink: not ffi in general
17:04:55dbussinkbrixen: i was wondering whether Math.asinh suffers from the same issues
17:04:57brixenevan's working on that
17:04:59dbussinkbrixen: ah ok
17:05:06brixenyeah, there's definitely a problem
17:05:16brixenI'm trying to get File::Stat using FFI
17:05:34brixenour stating is really expensive now, because we calc a lot up front
17:05:41brixenruby just stores the stat struct
17:05:46dbussinkon a different thing, there are still two Time specs failing, basically because not every object has a coerce function
17:05:48brixenand that's what this new thing does too
17:05:52maebrixen, cohesion sucks, we need a third party... a independent organization
17:05:54maeLIKE NATO
17:06:10maeand NATO can decide whether the political climate is good for obj to blow me
17:06:13brixennot another traffic officer?
17:06:25brixendbussink: hmm
17:06:28headius leaves the room.
17:06:31brixendbussink: can you show me the failure?
17:06:34brixenso I can understand
17:07:03brixenoh lordy, bin/ci is running!
17:07:09brixendamn!
17:07:11brixenexception
17:07:14maebrixen: don't you think me and obj would be infinitely more usable if we expressed our interactions as functions, free agents.
17:07:23dbussinkbrixen: Time#- accepts arguments that can be coerced into Float
17:07:32maeor is it that the human brain doesn't want to think about the details and thats why we make complex objects which have to know lots of context
17:08:10dbussinkbrixen: in time/plus_spec
17:08:14brixendbussink: one sec
17:08:22dbussinkno hurry :)
17:09:31brixendbussink: so, using Float(obj) doesn't work?
17:09:57maeOMG
17:10:00dbussinkwell, i have problems with where to put it
17:10:02maenot the Float coercion madness again
17:10:13maethis is still a thing
17:10:20mae??!?
17:10:21brixenmae: we fixed it once you quick mucking with it :P
17:10:35maeoh yeah, then why doesn't it work?
17:10:41brixendbussink: what does mri do?
17:10:46brixenmae: Float() works
17:10:50brixenthis is Time
17:11:01maebrixen what is bin/ci
17:11:12brixenour continuous integration spec runner
17:11:17maeok
17:11:18dbussinkbrixen: you mean whether it works on mri? or how they coerce the value?
17:11:22maelast time i ran specs
17:11:28maewe still had like 100 failing specs
17:11:32brixendbussink: seems like if Time.at(obj) and obj is not Integer, then Float(obj).to_i
17:11:34maethis is impressive
17:11:44maegood job brixen
17:11:49brixendbussink: yeah, how mri coerces
17:11:54brixenI know it can be convoluted
17:12:01brixenmae: it's everyone!
17:12:03maeas i recall, mri is really screwed up with coercion
17:12:11maeit acts differently depending on how you do it
17:12:29maewow
17:12:30brixenmae: at one point, we had over 1,100 failing specs :P
17:12:36mae17164 expecations passed
17:12:41brixenehe
17:12:42nicksieger enters the room.
17:12:50mae0 failures
17:12:56maeyou nuked primitives right
17:13:01brixenyeah
17:13:07maebastard.
17:14:07dbussinkbrixen: i don't really see how changing Time.at helps
17:14:25maeyou have yarv benchmarks in here?
17:15:01brixenmae: yeah, test/benchmark
17:15:11maewhere did sirb go
17:15:18brixendbussink: oh, not necessarily checking what to change, just need to look at it
17:15:24brixenI want to finish this stat thing
17:15:37brixencus the spec rewrite checkin is hanging behind it ;)
17:15:42brixenmspec*
17:16:05brixenbah, not necessarily suggesting*
17:16:17maebrix
17:16:21maewhere did sirb go
17:16:43brixendbussink: just to clarify, in mri not every obj has #coerce either
17:16:47brixenor am I missing something
17:16:50brixenmae: we run irb
17:16:55brixenshotgun/rubinius
17:16:58brixenwill drop you into it
17:18:11maeoh
17:18:15maeoriginal irb?
17:18:17maewtf?
17:18:24maebut it doesn't have all the nifty features that sirb did
17:19:31maelets see
17:19:38maeis stack explosion error still there
17:19:43maeor do you allow heap exhaustion
17:19:47maeso far no explosions..
17:21:36technomancy enters the room.
17:21:47brixenmae: yeah, we need to write an irb ext that has sexp, asm, bytecode output
17:21:56brixenrequire 'irb/rubinius' :)
17:25:28maeok
17:26:15maebrixen
17:26:19maepoint me in the right direciton plz
17:26:20maehttp://pastie.caboo.se/148756
17:26:28maeto fix this..
17:26:32maehow to test what the prob is
17:28:05Arjen_ leaves the room.
17:28:23brixenmae: that looks suspiciously like the bt's I got initially working with mathn
17:28:29zimbatm leaves the room.
17:28:43brixenso, my first suspicion is that rails is undef'ing a core method
17:29:21brixenoh that's builder, too
17:29:44brixenprobably some nasty hack to get around mri
17:30:27brixenrue: class BlankSlate < NilClass
17:30:36brixener, mae
17:30:47brixensee if that works
17:37:22lopex enters the room.
17:39:56ruivaldo enters the room.
17:42:29ezmobius__ enters the room.
17:44:09maesrry
17:44:11maeboss called
17:44:13maeok try this?
17:44:31thehcdreamer leaves the room.
17:44:33maecan i pass that in with -e
17:45:18maeprimitive failure again
17:45:42brixenmae: well, I mean replace BlankSlate with one appropriate for rubinius
17:45:56brixeninstead of letting it muck with a bunch of the core methods
17:46:02brixenI'm just guessing based on the bt
17:47:38brixensweet marry, bin/ci finished, only 36f/6e
17:49:06jtoy leaves the room.
17:49:42nitay enters the room.
17:49:49maeheh
17:49:56maeok that didn't fix it
17:49:59mae; )
17:50:03maeoh well
17:50:06maedon't have time right now
17:50:07maewish i did
17:50:26mae