Index

Show enters and exits. Hide enters and exits.

00:03:26GMFlash leaves the room.
00:03:33GMFlash enters the room.
00:06:55twshelton leaves the room.
00:08:15agile leaves the room.
00:10:18drbraindid the Unable to resolve type 'off_t' (FFI::TypeError) problem on FreeBSD get resolved somehow?
00:10:42drbrainI'm still getting it
00:10:57tongueroo leaves the room.
00:11:19tmpkOh, that reminds me, with the direct threading, when are the addresses generated? From the bytecode at runtime?
00:11:51agardinertmpk: for the direct threading we currently have, they are generated at shotgun compile time
00:12:04agardinerfor the fusion stuff, they will be generated at run time
00:13:07tmpkWhat I mean is, the compiler spits out bytecode. Presumably the bytecode is converted to actual machine addresses for the NEXT then.
00:13:26agardineryeah, that's true
00:13:47agardinerthere's a method called cpu_compile_method that converts bytecode to direct-threaded code at run time
00:14:15benburkert leaves the room.
00:14:15benburkert_ leaves the room.
00:14:30tmpkOkay. Just checking that bytecode is going nowhere.
00:14:33benburkert enters the room.
00:14:43tmpkAlthough I'm not sure how rbc's would work then.
00:14:51agardineryeah, it is kept around
00:14:56pd enters the room.
00:15:39agardinersince we can (and do) manipulate compiled methods at run time, and therefore need the ability to regenerate direct-threaded code
00:15:44headius leaves the room.
00:15:52agardinerthe debugger relies on this
00:16:09murphee enters the room.
00:17:46benburkert leaves the room.
00:17:48benburkert_ enters the room.
00:17:52mernen enters the room.
00:17:58enebo leaves the room.
00:23:06tmpkNow that I think on it, instruction fusion makes branch monitoring cheaper.
00:23:31tmpkSo if you ever get around to JITing things, it won't be too expensive when you're determining hot paths.
00:23:40ezmobius enters the room.
00:24:48agardinerhmmm... not sure it makes it cheaper; simpler perhaps, but we haven't eliminated any branches, just coalesced linear code paths into single code blocks
00:25:49tmpkThe branches are still there, but you're not NEXTing constantly in straight-line code.
00:25:52agardinerbut the notion of a sendsite equivalent for branches to code blocks could track hotness and be used for jiting
00:26:05agardineryeah
00:28:04tmpkI'm still not clear on what sendsite is, except that it's similar to a polymorphic inline cache.
00:29:17nicksieger leaves the room.
00:29:39agardinerwell, its an object used to handle method sends; it contains unchanging information, such as the method selector, as well as changing information such as hotness
00:29:59agardinerand custom send sites can be used for different types of method calles
00:30:49agardinere.g. when a method is compiled, we know whether a send is to a primitive or FFI function which are static (non-virtual), so we can avoid method lookup checks
00:31:22hornbeck leaves the room.
00:31:26murpheehowdy - quick question - is the Selector.lookup API something that'll stick around?
00:31:34hornbeck enters the room.
00:31:56murpheeI find it incredibly useful - eg. graphing the live Rubinius code image
00:32:06agardineri certainly hope so!
00:32:16agardineras you say, it is *incredibly* useful
00:32:58drbrainwhere do I find documentation on Channel and friends?
00:33:27tmpkWhat is the hotness in a sendsite used for?
00:33:33agardineri don't think there is much beyond what i had in the VM doc
00:34:49agardinernot much yet... though you can run shotgun with -ps and get stats
00:35:06eventualbuddha enters the room.
00:35:18agardinerbut obviously, it will be useful for jiting later
00:35:42tmpkStats alone is pretty handy.
00:35:55agardinergreat for finding things to optimise!
00:36:04murpheedamn... stats are pretty cool!
00:36:06tmpk:)
00:36:15agardinerand more accurate than the sampling profiler
00:37:13murpheeBTW: the whole Selector.lookup stuff could make something like this possible
00:37:14murpheehttp://factorcode.org/responder/help/show-vocab?vocab=byte-arrays
00:37:29murpheeLive view inside an image... + "Used by" cross referencing...
00:37:46agardineryeah...
00:37:57agardineri think this is something i'll add to the debugger
00:38:14agardinerso you can find out what calls a method, get stats on how often etc
00:39:01therealadam leaves the room.
00:39:14murpheeBTW I saw some discussion about ParseTree some days ago...
00:39:15tmpkThat would be useful. There's been a number of times I wished I could pipe out everything to graphviz.
00:39:32murpheeAre method bodies still available as s-exprs?
00:40:07agardinerstill? there's talk of adding that to CM, but it hasn't been there before
00:40:17murpheeNo?
00:40:24agardineralthough if you have the source, you can always get one using String#to_sexp
00:40:31murpheeHmm...
00:41:01agardinermaybe you were thinking of describe.rb?
00:41:03murpheeWould be useful... eg. for debugging code that was created at runtime
00:41:18murpheeeg. take s-expr, yank it through Ruby2Ruby -> done
00:41:26agardineryeah... and for better macro capabilities
00:41:28murpheeagardiner: what's describe.rb
00:41:39agardinerin lib/compiler
00:41:53agardinergive it a source file and it describes the compilation process
00:41:58agardinersexp, bytecode, etc
00:43:03murpheeAh... I saw that as a feature of Rubinius' irb, with a command line argument
00:43:25agardinerah, yeah, we used to have -dc etc with sirb
00:43:35agardinernot sure if that has been added to IRB yet
00:43:44murpheeOh, about macros: http://www.infoq.com/news/2008/02/using-parsetree
00:43:52murphee(sorry for self promotion)
00:44:06agardinerhehe, not at all! you write some good stuff
00:44:48murpheethanks... though the Rubinius crowd adds stuff too fast for me to write up
00:44:55agardineri've added infoq to my bookmarks, after all the recent coverage on Rubinius
00:45:26agardinermurphee: yeah, i keep meaning to start blogging, but it takes away from coding...
00:46:37murpheeyeah... for now I'll just keep on mining the IRC logs...
00:46:58lopex leaves the room.
00:47:04agardinerprobably the best source :-P
00:48:02lstoll enters the room.
00:50:44agardinermurphee: good article, btw... i knew merb was using parsetree this way, but not Ambition and Sequel
00:51:12murpheeyeah... I was really surprised about merb using it this way
00:51:22agardinerits great to have use cases for this stuff
00:51:52murpheeYeah... and I guess the whole hubbub... hububb...hmm... excitement about LINQ adds some merit...
00:53:26tarcieriSequel's use of ruby2ruby is pretty slick
00:54:06agardinerruby2ruby is pretty darn slick too!
00:54:09agardiner:-)
00:54:28tarcieriyeah, kinda like Erlang parse transforms
00:54:45tarcieriThat's what inspired Ambition
00:54:48agardinerdoesn't know Erlang... :-(
00:54:51tarcieriMnesia's use of parse transforms
00:56:42smartocci leaves the room.
00:57:53murpheehttp://www.jroller.com/murphee/entry/metaprogramming_erlang_macros_from_ground
00:58:28murpheeHeh... blog long enough and you can post a link for every topic at your local dinner party...
00:58:37agardiner:-D
01:03:37murpheeOK... getting late here... cheerio...
01:03:39murphee leaves the room.
01:06:21Fishy5 enters the room.
01:10:00pd leaves the room.
01:13:23wmoxam leaves the room.
01:16:27Fishy5 leaves the room.
01:18:39nicksieger enters the room.
01:27:24pd enters the room.
01:30:17femtowin enters the room.
01:31:12cored enters the room.
01:32:22femtowin leaves the room.
01:42:03rubyconsumer enters the room.
01:43:08twshelton enters the room.
01:44:17mernen leaves the room.
01:47:51vintrepid leaves the room.
01:48:32d2dchat leaves the room.
01:56:49agile enters the room.
02:04:39zuwiki leaves the room.
02:08:47mernen enters the room.
02:09:39tmpkagardiner: what do you do at UniMelb?
02:09:49Yurik leaves the room.
02:09:54tmpkstudied there for a while.
02:10:06agardineri'm contracting on a data warehouse implementation
02:10:29boyscout1 commit by Eric Hodel
02:10:30boyscout * Add some RDoc, cleanup some RDoc.; 5a53add
02:12:14tmpkI'm not familiar with what a data warehouse is. Is this like the huge rooms full of tape racks of yore?
02:12:42agardinerhehe... no
02:13:23agardinera data warehouse is a database used to combine data from a myriad of operational systems and make it available for reporting and analysis
02:14:00jeremydurham enters the room.
02:14:02Yurik enters the room.
02:15:29tmpkSounds like something that gets a heavy load.
02:15:35technomancy leaves the room.
02:15:57agardineryeah... the largest databases in the world are data warehouses
02:16:22agardinere.g. WalMart have a gargantuan data warehouse
02:16:31agardinerbut ours is tiny at present
02:17:07tmpkHow do you handle queries on such data? Regular vertical scaling probably doesn't work that well.
02:17:39agardinera data warehouse has a different design to a normal (operational) database
02:17:42bburcham leaves the room.
02:17:43agardinerits not 3NF
02:17:58agardinerbut something known as a star schema
02:18:22agardinerits a design that trades redundancy for query simplicity and performance
02:19:17jeremydurham leaves the room.
02:20:02jeremydurham enters the room.
02:20:18noclue123 enters the room.
02:20:44tmpkReading the wiki entry does bad things to my brain. I'm not good with DB. D:
02:21:36agardinerhehe... it takes a bit to get your mind around, but then it all falls into place
02:21:45eventualbuddha leaves the room.
02:23:18bburcham enters the room.
02:24:11VVSiz_ enters the room.
02:27:58zuwiki enters the room.
02:31:39VVSiz leaves the room.
02:34:02obvio171 enters the room.
02:39:25bburcham leaves the room.
02:46:14DefilerHah. Too bad I missed muphee
02:48:50obvio leaves the room.
02:49:05_mutle enters the room.
02:51:53femtowin enters the room.
02:52:52cored leaves the room.
03:04:39mutle leaves the room.
03:18:12boyscout2 commits by Adam Gardiner
03:18:13boyscout * Rename CompiledMethod#locals to CompiledMethod#local_count; 4462dd5
03:18:14boyscout * Remove unused fields from CompiledMethod; ddc63b9
03:18:33mernen leaves the room.
03:23:01macournoyer enters the room.
03:23:32djwhittbenny: you around?
03:24:04bennydjwhitt: yes
03:24:20djwhittyou know that rubuildius is down?
03:24:28bennynope
03:24:41djwhittyeah, went down a day or two ago
03:24:48djwhittI wasn't sure if anyone had told you
03:24:58jeremydurham leaves the room.
03:25:07rueKnowledge is half the battle!
03:25:21macournoyer leaves the room.
03:26:15rubuildius enters the room.
03:27:38bennyI guess it had to do with the network outage at the colocation
03:28:00bennyit's somehow amateur the way they do it, but that has other advantages :-)
03:30:12djwhittexcellent, thanks for starting it back up
03:30:55bennymy pleasure, you guys can always privately msg me so I notice, because I don't keep track of this channel that much
03:33:09macournoyer enters the room.
03:34:24imajes leaves the room.
03:36:14imajes enters the room.
03:39:25DefilerI think a "restartable" Exception could be implemented by
03:39:25Defilercreating an Exception with an instance variable that holds
03:39:25Defilera Continuation. The Continuation would assigned when
03:39:25Defilerthe Exception was created such that when .call'd it
03:39:25Defilerresumed (or restarted) execution at the desired point.
03:39:30rubuildiusAdam Gardiner: 4462dd5dd; 4789 examples, 17479 expectations, 1 failure, 0 errors; http://rafb.net/p/wsmvNk58.html
03:39:32Defileroops. Meant that to paste on one line.
03:40:17pergesu enters the room.
03:40:42agardinersounds interesting
03:41:39MenTaLguY enters the room.
03:41:45DefilerSounds slow. Heh
03:43:28agardinercan't have everything... :-)
03:46:30rueHrm, wtf
03:47:34rueStrings are very slow for some weird reason
03:47:50Defilerevan: Ooh.. cool idea for what to do with the 'data' immediate tag defined in oop.h
03:53:10mae leaves the room.
03:53:24ezmobius leaves the room.
03:53:36mae enters the room.
03:58:59rueHehe, the old #sort processes about 1500 strings in the same time new does 150000
03:59:33agardiner2 orders of magnitude improvement! now that's worth bragging rights! :-D
04:00:17rueThink we are still about two behind Matz though
04:00:42agardinerheh.. 2 steps at a time
04:01:07agardinerthat's because they are strings, right?
04:02:00rueHave not looked at it too closely, we still have to use the same #<=>
04:02:46agardineryeah, but i thought your changes were faster than MRI with fixnums, no?
04:03:24agardinerooh, interesting... just noticed we aren't evaluating constant expressions like 2**28 at compile time
04:03:36DefilerYeah, ** could be redefined :)
04:03:53agardineroh
04:04:05Defiler"It's Ruby, Jack"
04:04:10Defiler"Just walk away"
04:04:24agardinerthat example came from BlockEnvironment#under_context
04:04:48agardinerso every block creation is doing an unnecessary send
04:05:09DefilerOh, that value isn't being stored in a constant somewhere?
04:05:18agardinerno, i think i'll change it though
04:05:51DefilerOh yeah, I see that. Definitely worth changing
04:06:41agardinera constant isn't any better here... should be a literal number to avoid a lookup/send, no>
04:07:31DefilerThe constant will only be calculated when the class body runs the first time
04:07:38DefilerBut a literal would be even better
04:07:44DefilerThis looks like a rich trove, actually
04:07:44Defilerhttp://rafb.net/p/eAustc32.html
04:07:56rueReversed order perfoms badly at high counts, it looks like
04:08:03DefilerLook at all that stuff in integer.rb
04:08:26agardinerwow!
04:08:54DefilerThe compiler one is the only one that does it right, that I can see
04:09:23agardinerwell, there's still a problem with the compiler one two...
04:09:31DefilerWhy?
04:09:35agardinerbecause a constant has to be looked up using find_constant
04:09:35DefilerOr, rather.. what?
04:09:45DefilerYeah. Should just inline that
04:10:23agardinerinlining kinda sucks though, since then you end up with magic numbers everywhere
04:11:19agardinercouldn't we make an argument that constant expressions will be inlined at compile time?
04:12:02agardineri.e. Numeric <op> Numeric gets inlined?
04:12:41agardineror at least, they should be inlined when compiling kernelland
04:14:35DefilerYeah, that would be fun too
04:15:13DefilerAre you changing this, by the way, or should I?
04:15:17DefilerI changed the one in compiler
04:15:18agardinerwonder what JRuby/1.9 do for constant expressions
04:15:46agardinerwell, i think we ought to resolve it in the compiler, rather than using magic numbers
04:16:10agardineronly question is whether it should be a global or kernelland feature
04:20:06railsfactory enters the room.
04:20:09DefilerI have to say I think it would be a pretty safe feature to enable
04:20:16Defiler..but it might be a little early for it
04:21:32agardineri guess if the logic is implemented in the compiler, it would be easy to change whether it was on all the time, on just for kernelland, or a switch for userland...
04:23:42DefilerHuh. With this change to BlockContext, ci is running a little faster than I've ever seen it run before
04:24:08agardinernot surprised... that's gonna reduce the number of sends by a huge amount
04:24:31agardinerparticularly on specs
04:24:32boyscout2 commits by Wilson Bilkovich
04:24:33boyscout * Avoid a Fixnum#** in BlockContext; b0851e6
04:24:34boyscout * Avoid a constant lookup for inline integer cutoff; d8e700d
04:28:17DefilerThe C version of that method has a similar issue, actually
04:28:46DefilerI2N(0) and I2N(1 << 25) always result in the same object, and could be static, I think
04:29:00DefilerMaybe gcc optimizes all that away, though
04:29:18agardineryeah, it would
04:33:04macournoyer leaves the room.
04:34:13rubuildiusWilson Bilkovich: b0851e653; 4789 examples, 17479 expectations, 1 failure, 0 errors; http://rafb.net/p/bK9bv348.html
04:39:21squeegy enters the room.
04:40:24rueOK, final results: http://pastie.org/152553
04:40:32rueNeed to clean up my commits a bit
04:46:47femtowin enters the room.
04:56:21wmoxam enters the room.
05:19:03cremes enters the room.
05:19:36cremesBuild is broken on OSX PPC since at least yesterday (20080213). Here are the details:
05:19:38cremeshttp://pastie.caboo.se/152562
05:19:48cremesShall I open a ticket or is this a known issue?
05:20:35rueYeah, open one
05:20:41rueThis just started yesterday?
05:21:13cremesI do a fresh build (git pull; rake distclean; rake build) about every other day... so yeah, yesterday
05:25:45lstoll leaves the room.
05:26:25lstoll enters the room.
05:27:15cremesTicket 328 is now open:
05:27:16cremeshttp://rubinius.lighthouseapp.com/projects/5089/tickets/328-build-broken-on-osx-ppc
05:29:00cremes leaves the room.
05:33:08agardinerbleh...
05:33:24agardinerDefiler: i wrote a compiler plugin for const expressions
05:34:08agardinerworks well for cases like 2**28
05:34:25agardinerbut not for more complex expressions like 2**32-1
05:38:39lstoll_ enters the room.
05:38:39lstoll leaves the room.
05:41:59RyanTM leaves the room.
05:42:06drbrainDefiler: why didn't you drop the lvar in lib/compiler/generator
05:43:22gmh33 enters the room.
05:44:22agardinerdrbrain: i've got an alternate solution to this problem
05:44:24femtowin enters the room.
05:44:38agardinerit's a compiler plugin that replaces constant expressions with literal values
05:45:16drbrainyeah, it just seems silly to replace a CONST lookup with an lvar lookup
05:45:27agardinerwell, at least lvar lookup is a lot faster
05:45:45drbrainbut, a literal is faster yet
05:45:49agardinerof course
05:47:19agardinerso, think i should push my plugin? it's only enabled for kernel mode
05:48:43drbrainfor things in kernel/? yes
05:48:49drbrainI think that would be safe
05:48:58drbrainwe can always revert it, if there are problems
05:49:03agardinerit's easy to disable at any rate
05:49:44agardinerunfortunately, the plugin only handles cases where the receiver and arg are both literals
05:50:22agardinerso it only does the highest precedence part when you have an expression like 2**32-1
05:50:53agardineri think our plugin architecture could use a little more flexibility...
05:51:34agardinerit only allows plugins at the bytecode generation stage, but in this instance, that's too late to handle this properly
05:52:14agardinerideally, i'd plug into the node stage, and replace the Call node with a NumberLiteral node
05:52:35drbrainyeah
05:52:48drbrainSexpProcessor would let you do that more easily
05:53:33agardineri think we ought to have a more flexible pipeline, where plugins can be installed at any of the node, bytecode, or generation stages
05:55:19ezmobius enters the room.
06:04:23srbaker leaves the room.
06:04:26rubyconsumer leaves the room.
06:04:46rubyconsumer enters the room.
06:10:00mahargit should be possible to do that kind of optimization at the bytecode level
06:10:06mahargpossibly it makes even more sense
06:14:53agardinersure, it's possible... why do you think it makes more sense though?
06:15:39boyscout1 commit by Adam Gardiner
06:15:40boyscout * Add a compiler plugin for constant expressions; f1370ac
06:17:02agardinergotta run... bye
06:17:06agardiner leaves the room.
06:17:18boyscout9 commits by Eero Saynatkari
06:17:19boyscout * Implemented new, better Array#sort and #sort!; c3a735e
06:17:20boyscout * Improved Array#sort, #sort! specs.; 56af7be
06:17:21boyscout * Improved benchmark files a bit in case of reuse.; 45a987d
06:17:22boyscout * Rewrote Array#sort. Performance gain anywhere from 40x to infinite.; d4cede4
06:17:23boyscout * Improved Array#sort specs a bit.; 714ea4b
06:17:24boyscout ...
06:19:53scooprthat sounds like a nice perf increase =)
06:19:59kofno_away leaves the room.
06:20:39ezmobiusnice
06:23:17rue'S limited with our data sets, should help generally though
06:25:13scooprdon't be modest, infinite performance gain is good even if with only very special sets =)
06:25:43rueHeh
06:29:11rubuildiusEero Saynatkari: c3a735e9e; 4796 examples, 17489 expectations, 1 failure, 0 errors; http://rafb.net/p/gRJYV111.html
06:29:48ezmobius ./bin/ci runs in ~17seconds for me now
06:31:14rueAbout 32 seconds here
06:31:21rueMatzRuby clocks in at 5 seconds
06:36:33rueThat is actually surprisingly good. Took a moment for that to sink in
06:37:19pietia enters the room.
06:39:24drbrainrue: I think something is broken
06:39:29drbrainI can't install rake anymore
06:42:41drbrainstrange, I only have 112 gems now
06:43:05rueOo, can you distill?
06:43:22drbrainI'm trying
06:43:36rueI do not have gems/rake here in any capacity
06:43:55drbrainyeah, and there's a ton of crap in there, too
06:44:58drbrainok, I'm seeing 1% of all the gems here
06:49:54pergesu leaves the room.
06:53:07drbrainrue: I give up, something hates me
06:53:13drbrainrue: I'll look into it tomorrow
06:53:53rueRoger
06:54:01MenTaLguY leaves the room.
06:55:25pietia leaves the room.
07:06:51cjheath leaves the room.
07:07:13lstoll_ leaves the room.
07:10:24jero5 leaves the room.
07:18:09lvmc enters the room.
07:18:23lvmcrue,
07:18:41lvmci`m very interested on mod_rubinius!
07:19:02lvmceva
07:19:03lvmcevan,
07:19:06lvmcyou are on?
07:19:27hornbeck leaves the room.
07:20:26dewd leaves the room.
07:22:22lvmccan mod_rubinius be index on google summer code
07:23:06w1rele55 enters the room.
07:23:29lvmci`m very interested with it, but i really need some ($$) motivation [to buy a apple notebook]. any chances?
07:23:38Fullmoon enters the room.
07:25:45ezmobius leaves the room.
07:34:17rue leaves the room.
07:39:52femtowin enters the room.
07:42:32lvmc leaves the room.
07:43:07TheVoice enters the room.
07:43:36Yurikanybody was able to repeat http://blog.segment7.net/articles/2008/02/14/rubygems-in-rubinius ?
07:43:36mae leaves the room.
07:44:00mae enters the room.
07:45:39mae leaves the room.
07:45:56mae enters the room.
07:48:54dbussink enters the room.
07:49:58dbussinkmorning
07:55:59obvio171 leaves the room.
08:03:20Fullmoon leaves the room.
08:11:37langenberg enters the room.
08:13:23w1rele55 leaves the room.
08:16:24w1rele55 enters the room.
08:16:31nicksieger leaves the room.
08:16:48dbussink leaves the room.
08:17:57thehcdreamer enters the room.
08:20:29femtowin enters the room.
08:25:23femtowin leaves the room.
08:28:25gra enters the room.
08:40:41gra_ enters the room.
08:40:42gra leaves the room.
08:44:25langenberg leaves the room.
08:53:19gra enters the room.
08:53:23gra_ leaves the room.
08:57:07mae leaves the room.
08:57:31mae enters the room.
08:59:42VVSizmorning indeed! :)
09:01:24wycats leaves the room.
09:11:03gra_ enters the room.
09:11:05gra leaves the room.
09:15:18rubyconsumer leaves the room.
09:15:51rubyconsumer enters the room.
09:22:14dctanner enters the room.
09:24:27gra enters the room.
09:24:29gra_ leaves the room.
09:25:13Arjen_ enters the room.
09:27:52benburkert enters the room.
09:28:08benburkert_ leaves the room.
09:28:19benburkert leaves the room.
09:28:48benburkert enters the room.
09:28:50obvio enters the room.
09:29:07obvio171 enters the room.
09:31:04benburkert_ enters the room.
09:31:04benburkert leaves the room.
09:31:06gra leaves the room.
09:35:24maduyb__ leaves the room.
09:35:30ragge enters the room.
09:36:23graza enters the room.
09:38:04langenberg enters the room.
09:46:34langenberg leaves the room.
09:49:08imajes leaves the room.
09:51:16graza_ enters the room.
09:51:17graza leaves the room.
09:57:35fork_ enters the room.
10:00:43GMFlashcongrats on getting rubygems running! rubinius ftw!
10:00:55dctanner leaves the room.
10:00:55edward_g leaves the room.
10:00:55zenspider leaves the room.
10:00:55lenbust leaves the room.
10:00:55Chrononaut leaves the room.
10:01:35wmoxam_ enters the room.
10:01:40kAworu leaves the room.
10:01:41halorgium leaves the room.
10:01:43halorgium enters the room.
10:01:52kAworu enters the room.
10:07:36dctanner enters the room.
10:07:36edward_g enters the room.
10:07:36zenspider enters the room.
10:07:36Chrononaut enters the room.
10:07:36lenbust enters the room.
10:10:42graza enters the room.
10:10:43graza_ leaves the room.
10:13:32wmoxam leaves the room.
10:15:38fork leaves the room.
10:23:57graza_ enters the room.
10:23:58graza leaves the room.
10:47:30cavalle enters the room.
10:47:36graza_ leaves the room.
10:54:16ruivaldo enters the room.
11:01:54ragge leaves the room.
11:13:58dbussink enters the room.
11:17:05dbussink_ enters the room.
11:17:05dbussink_ leaves the room.
11:23:28_helo enters the room.
11:23:30ragge enters the room.
11:24:01dbussink leaves the room.
11:26:23dbussink enters the room.
11:31:31ruivaldo leaves the room.
11:31:55dbussinkand, anyone in?
11:43:49dbussinki got it working again on freebsd, but for some reason irb fails
11:47:13dbussink_ enters the room.
11:47:21femtowin enters the room.
11:47:51ragnarddbussink: aha, so it workds on freebsd... cool. know if anyone is working on openbsd?
11:48:08dbussinki'm gonna push the current fixes for now
11:48:26dbussinkat least it's a better state then :P
11:51:54dbussinkragnard: you have a freebsd system available?
11:52:16dbussink_ leaves the room.
11:57:18ragnarddbussink: nope... only openbsd. apparently the machine is unhappy right now though... just tried to boot it...
11:57:27boyscout2 commits by Dirkjan Bussink
11:57:28boyscout * Fixed some white spaces; daeac3d
11:57:29boyscout * Add support for the GCC __attribute__ construct to TypesGenerator; 04da8d7
11:57:46dbussinkragnard: ah, well, would be nice to test there :)
11:57:58ragnarddbussink: i'll give it a try soon
11:59:04dbussinkragnard: ah ok
11:59:26dbussinki don't know whether the current failure on freebsd on because of the new typesgenerator, or that the problem already existed
11:59:48dctanner leaves the room.
12:03:29GMFlash leaves the room.
12:03:37GMFlash enters the room.
12:07:45xmlhackerJust for fun > http://www.oreillynet.com/xml/blog/2008/02/how_to_pronounce_rubinius.html
12:09:31rubuildiusDirkjan Bussink: daeac3de9; 4796 examples, 17489 expectations, 1 failure, 0 errors; http://rafb.net/p/M8TLhq95.html
12:14:45hornbeck enters the room.
12:19:21kofno enters the room.
12:19:33boyscout1 commit by Dirkjan Bussink
12:19:34boyscout * Removed now working exclude for Array#sort; f25e0e1
12:20:16ragnarddbussink: hmm... does ftruncate not fail on linux with negative offset?
12:21:00dbussinkragnard: let me check on my linux machine
12:21:53ragnarddbussink: rubuildius runs i686-pc-linux-gnu i see... the specs hade a comment about "May fail"...
12:27:08dbussinkragnard: fails on my linux machine too
12:27:43ragnarddbussink: aha... how do you handle such platform differences?
12:29:42rubuildiusDirkjan Bussink: f25e0e130; 4796 examples, 17489 expectations, 1 failure, 0 errors; http://rafb.net/p/dAjvUd73.html
12:29:49dbussinkwell, this could be fixed by checking it in ruby
12:29:50chris2 enters the room.
12:30:01dbussinkragnard: if we can prevent platform diversion, we really should
12:30:33dbussinkright now the truncate argument is just passed through to the c function
12:32:52ragnarddbussink: of course... hm. makes me curious what happens when you pass -1 to ftruncate on linux...
12:35:44ragnarddbussink: should we raise an ArgumentError instead and be non_compliant? what's the policy? (still haven't pastied my pubkey to evan so I can't do anything yet though...)
12:36:34dbussinkwe could manually raise the Errno exception, but that's also ugly
12:36:59dbussinki'm not gonna make a call on this one atm, don't know that the policy has been in other cases
12:38:17ragnardallrightey... i agree about raising Errno manually being ugly...
12:39:45dbussinkaccording to the man page, the linux version should fail with EINVAL too
12:43:25ragnardanother strange thing is that the spec for File.truncate is the same as #truncate, but doesn't fail... that means truncate sets errno, but not ftruncate.. no?
13:03:31gnufied enters the room.
13:04:45dctanner enters the room.
13:05:36dctanner leaves the room.
13:08:20graza enters the room.
13:10:11dbussinkragnard: probably, but it's really strange yeah
13:10:27dctanner enters the room.
13:11:51ragnarddbussink: well... I guess the ruby solution is the best... seems like it's using ftruncate64 on linux when _FILE_OFFSET_BITS == 64
13:12:14dbussinkyeah, the LFS supports makes it use some other functions under water
13:12:25ragnardhttp://repo.or.cz/w/glibc-cvs.git?a=blob;f=sysdeps/unix/sysv/linux/ftruncate64.c;h=60e7ae0ac729a44 eae7854fde856226eb8d8bcc4;hb=HEAD
13:12:39cavalle leaves the room.
13:13:06dctanner_ enters the room.
13:13:46cavalle enters the room.
13:17:41smartocci enters the room.
13:21:07d2dchat enters the room.
13:23:22imajes enters the room.
13:27:14graza_ enters the room.
13:27:15graza leaves the room.
13:28:15dctanner leaves the room.
13:31:26cavalle leaves the room.
13:34:35dodecaphonic leaves the room.
13:34:39dodecaphonic enters the room.
13:35:40dodecaphonic leaves the room.
13:37:17dodecaphonic enters the room.
13:44:16langenberg enters the room.
13:49:26bburcham enters the room.
13:49:45AndrewO enters the room.
13:55:41rubyconsumer leaves the room.
14:02:27graza enters the room.
14:02:28graza_ leaves the room.
14:03:10pd leaves the room.
14:04:29cjheath enters the room.
14:09:55rubymaverick enters the room.
14:10:14cjheath leaves the room.
14:16:32anonuser enters the room.
14:27:15probablycorey enters the room.
14:34:12rubyconsumer enters the room.
14:36:29wmoxam_ leaves the room.
14:38:09bburcham leaves the room.
14:38:17_maarten_ leaves the room.
14:41:16graza leaves the room.
14:41:31graza enters the room.
14:48:43graza_ enters the room.
14:49:09twshelton leaves the room.
14:57:05crossblaim enters the room.
14:57:17crossblaimhello
14:58:23femtowin enters the room.
14:59:56wmoxam enters the room.
15:01:34kAworu leaves the room.
15:03:05moofbong enters the room.
15:04:05kAworu enters the room.
15:05:59RyanTM enters the room.
15:09:28graza leaves the room.
15:10:20Yurikcrossblaim, hey
15:10:35RyanTM_ enters the room.
15:10:39pd enters the room.
15:10:55crossblaimhey Yurik
15:11:10RyanTM leaves the room.
15:11:24nicksieger enters the room.
15:11:33twshelton enters the room.
15:15:51graza_ leaves the room.
15:28:06macournoyer enters the room.
15:30:05squeegy leaves the room.
15:34:24rue enters the room.
15:39:14dbussinkinteresting conversation :P
15:39:48srbaker enters the room.
15:41:53pauldix enters the room.
15:42:01mae leaves the room.
15:42:03rueMorning
15:44:39rueHrm, string allocation performance is shot to hell
15:45:35skaar enters the room.
15:46:05anonuserrue, how so? I'm not really familiar with the code base but hopefully this weekend I can take a crack and start helping out rubinius.
15:49:03dbussinkrue: has it ever been any decent then?
15:51:29rue('hello there what aaaa'..'hello there what iiii').to_a worked OK previously, it takes forever now
15:53:43anonuserAny idea why it takes so long.
15:56:25rueNope, need to investigate late
15:56:32therealadam enters the room.
16:01:12dctanner_ leaves the room.
16:08:46dbussink leaves the room.
16:18:03wvl enters the room.
16:18:04anonuserI assume rubinius has a profiler.
16:18:37dctanner enters the room.
16:19:11defunkt enters the room.
16:20:01gnufied leaves the room.
16:28:07enebo enters the room.
16:31:33dctanner leaves the room.
16:32:56headius enters the room.
16:36:39headiushowdy
16:41:48nicksieger leaves the room.
16:43:00nicksieger enters the room.
16:43:45dewd enters the room.
16:55:13chris2 leaves the room.
16:57:12crossblaim leaves the room.
17:02:27lopex enters the room.
17:11:53headius leaves the room.
17:12:09headius enters the room.
17:12:56langenberg leaves the room.
17:20:31agile leaves the room.
17:20:57dctanner enters the room.
17:26:28Defilerdrbrain: (belatedly) I wanted to give it a name to make it clearer
17:27:37wycats enters the room.
17:28:14dgtizedanonuser: yes if you use shotgun/rubinius -p
17:34:06technomancy enters the room.
17:34:06bburcham enters the room.
17:34:16technomancyis this correct? http://www.oreillynet.com/xml/blog/2008/02/how_to_pronounce_rubinius.html
17:34:25cavalle enters the room.
17:34:46technomancyi thought it was a long "I"
17:35:19DefilerYeah, it is an I as in the first sound in 'each'
17:36:24DefilerThough he might be right, since it is modified from the Latin, and I am not sure how the latin word is pronounced
17:36:31Defiler..but that page is definitely not how Evan says it :)
17:36:59technomancyok, that's what I thought. Evan is right by definition.
17:37:46djwhittegad, don't tell him that
17:38:01brixenheh, if you listen to the text-to-speech, she pronounces it pretty much right in this sentence "... and that?s it! You now know how to properly pronounce the Rubinius project"
17:38:06bburcham leaves the room.
17:38:08thehcdreamer leaves the room.
17:38:24brixenru bin aye us
17:38:32brixenthe pirate pronunciation
17:39:01technomancyarrrrrrbx
17:39:07brixenhah
17:39:52boyscout1 commit by Brian Ford
17:39:53boyscout * Rework Fixnum, Bignum equal and compare primitives.; f873a25
17:41:10brixenrue: were you going to move the other benchmarks to the toplevel dir?
17:41:58dgtizedwhat platform does the File#truncate spec work on?
17:42:33dgtizedspecifically the one that is supposed to throw EINVAL on a -1 argument
17:43:04dgtizedthere is a comment in the code that says "# may fail" next to it, so clearly it's known that a platform guard is necessary, but I don't know what platforms it works on
17:43:14brixendgtized: works on os x, checking on ubuntu 32bit gutsy now
17:43:20tongueroo enters the room.
17:43:36brixendgtized: I'll check on gentoo 64bit too
17:44:16brixenI've got an opensuse 1/2 installed too, I need to finish that
17:44:30KirinDav enters the room.
17:44:37dysinger enters the room.
17:45:21w1rele55 leaves the room.
17:46:48dgtizedit breaks on my ubuntu 32bit gutsy
17:47:12anonuserdgtized, thanks
17:47:30dgtizedso maybe it's an osx versus linux issue?
17:47:36dgtizedanonuser: no problem
17:47:41anonuserThe lighthouse pages aren't mutable are they?
17:47:51dgtizedanonuser: they are if you have an account
17:49:14dgtizedso is FFI the same speed as primitives, and if so why is it we are using primitives for everything?
17:49:20rubuildiusBrian Ford: f873a2574; 4796 examples, 17489 expectations, 1 failure, 0 errors; http://rafb.net/p/aKZrYU30.html
17:49:45TheVoice enters the room.
17:49:53wifelette enters the room.
17:49:58dgtizedlooks like it's linux that doesn't throw EINVAL based on rubuildius
17:50:06brixendgtized: it's not the same speed
17:50:18brixenffi is for external lib stuff, it it's not a headache
17:50:26anonuserdgtized, hrrm I signed up but not sure where you're able to edit the pages, but then again I'm new to the site.
17:50:29brixenprimitives are for primitive vm/language implementatinos
17:50:42DefilerYou have to click 'Edit' near the top of the page. It is hard to see =(
17:51:10langenberg enters the room.
17:51:50brixendgtized: the truncate spec passes on gentoo 64bit
17:52:06brixenfails on 32bit gutsy for me also
17:53:54anonuserI'm not finding it :(
17:54:43probablycorey leaves the room.
17:55:07brixendgtized: were you able to confirm the "-0".to_f => 0 bug with libc version <= 2.6.1
17:55:23brixendgtized: donald luo's comment on #307
17:57:07brixenanonuser: what's your LH account email? I'll invite you to the project
17:58:26anonuserrue, are you still having problems with devel/git ?
17:58:53dgtizedbrixen: yea the String#to_f spec fails for me, i'm a little foggy today, what is the quick way to check libc version?
17:58:58brixenanonuser: sent
17:59:13brixendgtized: ldconfig -v | grep libc is how I did it
17:59:20brixenI'm at 2.6.1 and have the issue
17:59:30brixenanyone have an easy way to upgrade libc on ubuntu
17:59:50anonuserbrixen, thanks :)
18:00:06brixenanonuser: np
18:00:13dgtizedbrixen: yup I have 2.6.1-1
18:00:52evanmorning.
18:02:28brixenmorning
18:02:45brixendgtized: hmm, not sure I want to source upgrade libc on this ubuntu
18:03:47evanoooh cool
18:04:12evanadam committed a plugin to perform constant propogation of fixnum operations
18:04:14evanyay!
18:04:28brixenyeah, nice
18:04:57evanhave a nice valentines day?
18:05:07brixendgtized: I suppose I could try using hardy's libc under ubuntu, it's 2.7
18:05:12evanabby and I got a hotel room in a fancyish hotel last night
18:05:20brixenevan: nice!
18:05:25evanlounged, got room service, that kinda thing.
18:05:28brixenjenny and I had a fight :P
18:05:32evan:/
18:05:45brixenI think we worked it out though
18:06:01bburcham enters the room.
18:06:48brixenevan: so, string perf, do we want to just tweak or consider implementing ropes or something more radical like that?
18:07:04evani'm open to whatever.
18:07:08brixenok
18:07:10evanlike rue is considering for Array
18:07:13brixensure
18:07:22evanit could be useful to implement it as a seperate class
18:07:35brixenso, mri runs bin/ci in 3.6 vs 18 for rbx
18:07:40evanplay with, debug it in that capacity
18:07:42brixenthat's pretty damn hot
18:07:53brixenevan: yeah, make sense
18:07:56brixeneasy to load over what we have
18:08:02brixengotta love ruby
18:08:05evan:)
18:08:12evancall it... BString
18:08:17evanB for Brian
18:08:22evan:)
18:08:23brixenheh, ok
18:08:29dbussink enters the room.
18:08:37brixendbussink: 'lo
18:08:46dbussinkbrixen: howdy
18:08:55evandbussink: evening
18:09:02dbussinkevan: :)
18:09:20dbussinki got it working on freebsd, only irb is failing for some reading
18:09:24dbussink./bin/ci is working though
18:09:32brixenawesome!
18:09:32dbussinkfor some reason
18:09:37evansweet!
18:09:41brixendrbrain will be happy to hear that
18:10:08brixendamn, with docwiki, drbrain will likely have the first website running on rubinius
18:10:36dbussinkhttp://pastie.org/152782
18:11:17brixendbussink: but bin/ci runs without errors?
18:11:27dbussinkbrixen: only some minor
18:11:33dbussinkbrixen: with BSD in the name too
18:11:35dbussinkbrixen: let me check
18:12:06brixeneither way, I guess good opportunity for a new spec :)
18:12:28dctanner leaves the room.
18:12:38dbussinkbrixen: http://pastie.org/152786
18:13:20brixenhmm, the float one concerns me
18:13:21agile enters the room.
18:13:43vintrepid enters the room.
18:13:43dbussinklooks like perhaps a parse problem or something like that
18:13:53brixenyeah
18:14:00brixenthe other's could be platform related
18:14:56dbussinki find the fact that irb doesn't work more troubling
18:15:20dbussinkbecause that constant should be defined
18:15:30brixenyeah
18:15:49brixenlooking at the float spec, probably unrelated, since it should be parsing that float literal from the spec
18:16:06brixenstill, great progress :)
18:17:03anonuserIs there a place that list platform specific problems. I only ask because I'll be developing in FreeBSD and dbussink says he's gettings to work on FreeBSD.
18:18:04dbussinkanonuser: not atm, but my opinion on this is that we should setup some basic systems like rubuildius, so problems are immediately identified
18:18:32anonuserdbussink, I'm going to assume that will be platform specific CI servers?
18:19:30dbussinkanonuser: yeah, something like, some virtual machines with at least linux 32 / 64 bit, some bsd flavours and eventually even windows
18:20:17anonuserdbussink, I have been looking for an excuse to use Amazon's EC2 service.
18:20:56rubyconsumer_ enters the room.
18:20:59rubyconsumer_ leaves the room.
18:21:20rubyconsumer leaves the room.
18:21:26anonuserThat could be overkill though.
18:21:30rubyconsumer enters the room.
18:23:32dbussinkwell, we've got ey people, maybe they can provide some :P
18:23:34wifelette leaves the room.
18:24:57anonuserWhat are the issues I'm going to be running into when trying to develop the thing on FreeBSD?
18:26:34dbussinkwell, most important right now is that irb doesn't work
18:26:37benburkert_ leaves the room.
18:27:11benburkert enters the room.
18:28:15benburkert_ enters the room.
18:28:31anonuserOkay.
18:29:12benburkert__ enters the room.
18:29:20benburkert_ leaves the room.
18:29:32wycats leaves the room.
18:30:00benburkert_ enters the room.
18:34:34yipstar enters the room.
18:42:58probablycorey enters the room.
18:43:04KirinDave leaves the room.
18:43:43benburkert leaves the room.
18:45:21benburkert__ leaves the room.
18:47:09wifelette enters the room.
18:47:29lvmc enters the room.
18:47:37lvmcrue, you are on?
18:47:53lvmcevan, you are on?
18:48:37evanyep
18:48:52lvmcevan,
18:49:03lvmccan mod_rubinius project be part of google summer code?
18:49:12lvmci'm really very interested to help it
18:49:24defunkt enters the room.
18:49:41evani'm sure we could work something out to that effect
18:49:50wifelette leaves the room.
18:49:55evani've offered to mentor again this year
18:49:56lvmc i need buy a new laptop to devel, and google summer code can give me this chance
18:50:09lvmcnice!
18:50:10evanto pat eyler, he's who organizes the ruby guys
18:50:14lvmccan i participate?
18:50:25lvmcmail?
18:50:27evanyeah, you'll need to submit a proposal
18:50:43lvmcthe proposal are open?
18:51:08evandoesn't look like 2008 proposal are open yet
18:51:50lvmcthanks!
18:52:05lvmci will see google summer code constantly
18:55:25tmornini enters the room.
18:56:15octopod leaves the room.
18:56:45thehcdreamer enters the room.
18:56:56dbussinkbrixen: hmm, the float spec breaks because the float defined in the spec file is cut off
18:57:55dbussinkbrixen: the problem is not the float that comes from the header files
18:58:25lvmc leaves the room.
18:59:21probablycorey leaves the room.
19:00:50brixendbussink: yeah, parse error
19:01:07brixendbussink: do you know why it's truncating it?
19:01:25probablycorey enters the room.
19:01:38dbussinkno idea actually
19:01:47Defilerbrixen: I need a knowledge transfer
19:01:49dbussinkdidn't have time to really look into it
19:01:55obvio171 leaves the room.
19:01:58Defilerbrixen: What have we learned about writing specs for socket.rb?
19:02:04Defilerbrixen: As in.. what to avoid.. what is a good idea, etc
19:02:13obvio leaves the room.
19:02:38brixenDefiler: good question, but I don't have a good answer
19:02:51brixeniirc socket specs segfault on os x, but le'me check
19:03:02DefilerI need to get UNIXSocket working today
19:03:11Defiler..but you can't even call 'new' on it as it stands
19:03:26brixenDefiler: yeah, they segfault in
19:03:26brixenS
19:03:35brixenSocket#pack_sockaddr_in
19:03:43dbussinkbrixen: maybe it's a problem with long variable names, or something
19:03:54dbussinkbrixen: might be the same cause as the irb failure
19:04:04brixendbussink: that would be most odd, wouldn't it?
19:04:19dbussinkbrixen: definitely, but it's just a first guess
19:04:33brixenDefiler: sorry, no good answer, I'd just start with what's there and make sure there's no races or deadlocks
19:05:29DefilerIs there someone more opinionated I could talk to? :)
19:06:05evanDefiler: you suck.
19:06:07evanhows that?
19:06:56brixenDefiler: haha, PDS (please do spec) :P
19:07:01brixenhow's that for an opinion?
19:07:23evanDefiler: you're dealing with the totally busted class hierarchy of Socket
19:07:38evanUnixSocket#initialize can't call super
19:07:46evanit needs to do all the work to create the unix socket
19:07:52evanthen call setup(descriptor)
19:08:52Defilerevan: Yeah, I ran into that before with TCPServer and crew
19:08:58evanhm, i don't think you can ever do dead code elimination in ruby
19:08:59evansad.
19:09:29evanwell, you might be able to do simple, trivial DCE
19:09:31evanbut it would be useless.
19:11:25dbussinkbrixen: definitely looks like a length issue
19:11:26Defilerevan: So.. do you follow ruby-core these days?
19:11:37dbussinkbrixen: works ok for a float of 511 chars, not 512
19:11:50brixendbussink: oh that, I thought you meant the name of the constant
19:11:51probablycorey leaves the room.
19:12:05dbussinkbrixen: yeah, but that got me the idea to test this
19:12:05evanDefiler: not much, no.
19:12:14evanDefiler: i wait for people to point out messages I should be reading
19:12:24dbussinkbrixen: just a weird way of thinking out loud on my behalf
19:12:26probablycorey enters the room.
19:12:29evanlate binding mailling list reading
19:12:30Defilerevan: So, there has been a discussion of why 1.9 is so slow on character-by-character string walking
19:12:31brixendbussink: heh, np
19:12:33evanis the method I use.
19:12:34evan:)
19:12:42brixenevan: works well I'd say
19:12:47Defilerevan: ..and matz patched it up to be 'only' 2.3x slower than 1.8
19:12:54KirinDave enters the room.
19:12:58tarcieriheh, nice
19:13:17Defilerevan: The consensus at the moment is that 1.9 doesn't treat individual characters as Fixnums anymore, due to m17n, but creates String objects for them
19:13:40Defilerevan: What if we use our badass oop.h definition of DATA_ and make an immediate type that holds a UTF8 codepoint? We only need 21 bits
19:13:51evanDefiler: for access it does, yeah.
19:13:55evan(1.9)
19:14:03brixenDefiler: that would be cool
19:14:09DefilerThat way we don't need to allocate a String for a single character
19:14:09evanDefiler: sounds perfect.
19:14:13brixenperhaps an immediate type of Char?
19:14:25DefilerCodepoint, because it could be a combining character or other whatnot
19:14:27evanwe have a the bit space
19:14:28Defiler(I vote, at least)
19:14:34brixenDefiler: oh yeah, right
19:14:37evanthe custom type currently has 28 bits of data
19:14:40evani believe
19:14:44evanwe can just divide it again
19:14:47DefilerEven cooler, we have room to hold the codepoint AND a prefix, leaving room for future similar things
19:14:52evanmake a custom and char immediate
19:14:56evanthey'd have 27 bits
19:15:12dbussinkbrixen: any idea where these sizes are defined?
19:15:26evani'm specificaly always leaving a bitspace as custom btw so we can do stuff like this
19:15:26DefilerWhich sizes?
19:15:35brixendbussink: none, but I'd guess maybe the lexer?
19:15:56dbussinkbrixen: yeah, but it's strange that this is platform dependent
19:16:06evanDefiler: can you fit the codepoint and prefix in 27 bits?
19:16:10brixenDefiler: seems that a long number literal is being truncated when read/lexed/parsed ?
19:16:23DefilerYeah. I think we need 21 bits for the codepoint, leaving 6 for a prefix
19:16:25evanobviously 64bit platforms have PLENTY of room.
19:16:55evani've actually considered enlarging out refs to always be 64bits wide
19:17:06Defilerbrixen: compiler/generator.rb specifies the max size of a parsed int before it gets shoved into a literal
19:17:23Defiler32bit systems are on their way out :)
19:17:58evanthey shouldn't be truncated anymore.
19:18:46DefilerYeah, we have specs for that now, so I would be surprised
19:18:58dbussinkDefiler: for truncated stuff in the lexer?
19:19:08evanit's not in the lexer
19:19:09evando
19:19:15evan"code with the thing".to_sexp
19:19:18DefilerYeah, use 'describe' on a script, as well
19:19:19defunkt leaves the room.
19:19:20evanand see if the sexp has it truncated
19:19:29evanif so, then it's the lexer (unlikely)
19:19:48defunkt enters the room.
19:20:38dbussinkit's in the lexer then
19:20:47dbussinkon freebsd that is
19:21:04dbussinkif i put in a float with more than 512 chars, it gets truncated
19:21:28dbussinkhttp://pastie.org/152811
19:22:07DefilerOoh floats
19:22:14Defilerwe didn't look at floats
19:22:35dbussinkah
19:22:35DefilerAre you sure a double has enough precision for a float that long?
19:22:38evanthe compiler doesn't handle floats in a special way
19:22:42evanand it's the lexer doing it
19:22:45evanas he shows
19:22:47dbussinkthis comes straight from the specs
19:22:51evanthe lit is truncated
19:22:57DefilerYeah, I see that
19:23:13evanit's missing the e-308
19:23:25DefilerI hadn't scrolled all the way on the second one. Oops
19:23:35dbussinkfor each extra numeral, on of the parts on the end gets cut off
19:23:58evanfloat_from_bstring must be truncating it
19:23:59dbussinkbut i assume this uses some platform dependent platform buffer?
19:24:10dbussinkmy typing sucks today...
19:24:11evanyep
19:24:24evaner...
19:24:52dbussinkwhat is actually the length we want to support?
19:24:52evanit's using sscanf
19:25:00evanto convert the string into a double
19:25:29evanperhaps it's being truncated before it gets to float_from_string
19:25:34dbussinkapparently that is cut off at 512 bytes on freebsd
19:25:46evanperhaps thats a cutoff in sscanf
19:25:58evani don't see anywhere else thats truncating on a buffer size
19:26:06dbussinkyep, sscanf cuts it
19:26:18evanBAD SSCANF
19:26:22dbussinkNumerical strings are truncated to 512 characters; for example, %f and %d are implicitly %512f and %512d
19:26:23evansends sscanf to the corner
19:26:25dbussinkfrom the manpage
19:26:46defunkt leaves the room.
19:27:01evanwe should be using
19:27:03evanstrtod
19:27:04bburcham leaves the room.
19:27:05evanto sscanf
19:27:06evaner.
19:27:08evannot sscanf
19:27:13evancheck the strtod manpage
19:27:22evansee if it says anything about an internal buffer
19:28:17dbussinknothing mentioned there
19:28:31evantry changing float_from_string to use strtod
19:28:38evanit's a one line change
19:30:52thehcdreamer leaves the room.
19:36:23dbussinkhmm, what kind of error handlng should be done there? or is it by definition not possible to have an error there?
19:42:11evanit's not realy
19:42:15evanwell
19:42:28evanthats not stictly true
19:42:31evanwhat do you want to signal?
19:42:46dbussinkwell, the old sscanf version had nog error handling
19:42:51dbussinkwhen i'm there i can add some
19:43:00dbussinkfor if the string can't be parsed into a float
19:43:29evanadd a /* HACK */ note
19:43:33evanand just return Qnil
19:43:33bburcham enters the room.
19:46:01boyscout1 commit by Dirkjan Bussink
19:46:01boyscout * Change sscanf to strtod in Float primitive; 340b780
19:47:12thehcdreamer enters the room.
19:47:37benburkert_ leaves the room.
19:49:04dbussinkevan: do you have any idea what the cause of the failure of irb could be?
19:49:09dbussinkevan: on freebsd
19:49:27evando you have a pastie for the error?
19:51:02dbussinkevan: http://pastie.org/152782
19:51:26tarcierioh boy MRI's profiler.rb caused a null pointer error in a totally random place
19:51:30tarcierilongs for Rubinius's
19:51:31evandbussink: interesting....
19:51:43evanHA!
19:51:47evanloves SendSite
19:52:03evanwhen i'm profiling, i can actually look and see how well the method was dispatched
19:52:16evancm = def foo2; some_method; end
19:52:21