Index

Show enters and exits. Hide enters and exits.

00:00:02DefilerIs an unusually easy-to-understand line of code in it
00:00:11Packet_Monkey leaves the room.
00:00:16tarcieriheh
00:00:17evanok, so what do you want to do?
00:00:39DefilerI see two options.. get subtend compatible enough to run syck, or run syck with minor mods..
00:00:43Defileror write something new
00:00:57evanwe were doing the later before RbYAML
00:01:10tarcieriYou don't have to write something completely new
00:01:13DefilerYeah, I believe we made a mistake by assuming RbYAML was functional
00:01:16evannot with the the complete Yaml API
00:01:23evanquick_emit was missing
00:01:29DefilerBecause it isn't. It is full of broken code-paths, and just doesn't return what syck returns
00:01:29evanand thus we switched to RbYAML
00:01:33tarcieriYou should be able to use Syck's Ragel file to generate the parser
00:01:40tarcieriin Ruby
00:01:48DefilerI think I hear a volunteer
00:01:55tarcieriHeh
00:01:59tarcieriMaybe, sounds like fun
00:02:08DefilerI am working on ticket 322, and it is super super super crazy
00:02:12tarcieriOr ask _why :)
00:03:10DefilerI'm not sure I can fix this, unless someone can explain to me why node#value isn't the thing to_yaml was called on
00:03:23evanDefiler: what is blocked on yaml right now?
00:03:33DefilerOr why there is code that expects FalseClass#[] to exist
00:04:13Defileryaml, or syck?
00:04:27evani assume you're working on this because something needs yaml
00:04:31evanwhat is that thing?
00:04:58evani guess lots needs it these days
00:04:59DefilerI am working on it because I have a ticket assigned to me about it that is marked 1.0 previerw
00:05:03Defilerpreview, that is
00:05:09DefilerI guess I can just leave it
00:07:49tarcieriweird, perhaps I'm mistaken... I don't see a Ragel file in the Syck distribution, or code that looks like it was produced by Ragel :/
00:08:28DefilerYeah, I believe _why was saying he WANTED to do that, but wrote Hpricot instead
00:08:34tarcierioh
00:08:44tarcieriI thought it might be an easy conversion like Mongrel's parser... guess not :(
00:08:54boyscout2 commits by Wilson Bilkovich
00:08:55boyscout * Add (failing) Symbol#to_yaml spec based on ticket 322; b40c1cf
00:08:56boyscout * Apply ticket 351 and resolve ticket 350 (RbYAML bugs); c0bcb01
00:09:03evanif it's decided that we need something else for Yaml, i'm eager for us to have positive movement on that
00:13:59crafterm leaves the room.
00:15:26brixenwell, I'm almost done with libgdtoa, and String was high on my list. we absolutely need RSTRING for openssl at least, so I can work on that next
00:15:36evank
00:15:50webmat enters the room.
00:16:10brixenoff to dinner with jenny and the cousins for now
00:16:26evanenjoy
00:16:32brixenthanks :)
00:17:37enebo enters the room.
00:18:08brixenDefiler: btw, if you wanted to resurrect syck, somewhere around here: cc28068, that would be helpful :)
00:19:04brixenactually, put to pasture here: 36345996
00:19:29rubuildius_ppcWilson Bilkovich: b40c1cf43; 1756 files, 6037 examples, 20249 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/165477
00:20:21enebo leaves the room.
00:24:22boyscout1 commit by Alister Lee
00:24:23boyscout * Rake task 'spec:mspec' for running mspec specs using RSpec; 4996e66
00:26:50DefilerWho is our debugger guy again? agardiner?
00:26:54evanyep
00:26:56agardineryep
00:27:00agardinerwhat's up?
00:27:06Defiler'n' is skipping multiple lines for me
00:27:30agardinerhmm... what's the source on the line look like?
00:27:37boyscout4 commits by Matt Palmer
00:27:38boyscout * Put in an explicit IO.new test for single-argument; 2601900
00:27:39boyscout * Mark changing failures in the CI test suite; 58216e0
00:27:40boyscout * Allow IO.new to take only one argument; 4603ee2
00:27:41boyscout * Rearrange the UDPSocket test cases for better separation; 36f91c5
00:28:01radarek enters the room.
00:29:55DefilerSo, here is the code..
00:30:04Defilerhttp://rafb.net/p/dnYxog78.html
00:30:16wmoxam leaves the room.
00:30:40Defiler..and this is the debug session
00:30:41Defilerhttp://rafb.net/p/mAR8Kk70.html
00:31:52agardinerand which n is the one you think is wrong?
00:31:54Defiler dummy, @salt2 = a.unpack("a13a12")
00:32:04Defilernever appears as the current line in the debugger session
00:32:43agardinercan you hit d and get a decode listing at that point?
00:32:56agardinerit could be the line numbers are not correct in the CompiledMethod
00:33:38obvio171 enters the room.
00:33:47agardinerif that is the case, you can use ni and step by instructions instead
00:34:33obvio leaves the room.
00:35:59random8r enters the room.
00:36:00radarek leaves the room.
00:36:37nicksieger leaves the room.
00:37:51random8rDAMN I missed the sydney sprint :(
00:37:58Defilerline numbers appear correct in the 'd' output
00:38:04random8rI think I'm gonna cry.
00:38:18radarek enters the room.
00:38:23agardinerok, then it may be a bug in the step logic
00:38:25Defilerhttp://rafb.net/p/RBbxEg97.html
00:38:38DefilerNot a big deal, just thought I would let you know
00:38:59agardineryep, i think i know what the problem is...
00:39:04agardineri'll look into it
00:40:14agardinerit will be related to the branch handling logic not detecting a line change following the gif
00:41:02rubuildius_ppcMatt Palmer: 260190092; 1756 files, 6039 examples, 20250 expectations, 0 failures, 1 error; http://pastie.caboo.se/paste/165482
00:41:03rubuildius_ppcAlister Lee: 4996e6633; 1756 files, 6037 examples, 20249 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/165480
00:44:20lachie leaves the room.
00:44:31lachie enters the room.
00:44:49random8r leaves the room.
00:48:03evanDefiler: you still around?
00:49:25DefilerYeah
00:49:44DefilerI am seeing some pretty weird stuff in IO, as well
00:49:57crafterm enters the room.
00:50:07evanyaml wise, something to consider would be to just reuse the RbYAML parser and scanner
00:50:18evanand redo the rest
00:50:30evani just looked through the parser
00:50:32evanit's not too bad
00:50:48DefilerYeah. That sounds sane
00:50:55evanit's directly ported from the reference yaml specification
00:51:10DefilerIt's not really a good way to scan or parse yaml, but it probably at least works
00:51:29evanthats a small enough piece that it could be speced and found to be working nicely
00:51:35evanthen just build out the rest from there
00:52:09evanhell, maybe even just write a shim between syck's yaml.rb files and the rbyaml parser/scanner
00:52:36DefilerGot a sec to look at lib/socket.rb with me?
00:52:40evansure
00:53:17DefilerOK.. around line 464
00:53:29Defilerafter the call to the 'setup' method in the superclass
00:53:36evanyep
00:53:56miamoto_musashi enters the room.
00:54:30DefilerSo.. what I am seeing is that 'descriptor' is some valid fd (e.g. 8)
00:54:33Defiler..but @descriptor is nil
00:54:39DefilerThat sounds super wrong to me
00:54:45evanfull stop
00:54:56evanyou can't read @descriptor like that in this file
00:54:59evanit's a slot in IO.
00:55:03evanuse self.descriptor
00:55:26Defileraah, ok
00:55:47evanthere is a warning to that effect in README-DEVELOPER
00:55:56evanit's a human side-effect of making the slots look like ivars
00:56:26evanmaybe i should have used something other than ivars
00:56:37evan$__descriptor__
00:56:38evanor something
00:56:44DefilerIt's fine, I just forgot that subclasses needed to declare them if they wanted to access them
00:56:51evanyeah
00:56:53DefilerSince the 'annotation' mechanism has changed so many times
00:57:00evanyou should't declare them outside the kernel either.
00:57:10DefilerSo, anyway.. let's go look at kernel/core/io.rb line 490
00:57:18evanoutside the kernel, they should be seen as hidden values
00:57:18evanok
00:57:32evanin seek?
00:57:43Defileractually, the call to @buffer.empty?
00:57:50evanin seek or write?
00:57:54Defilerwrite
00:57:59evanok
00:58:15Defiler..and maybe this is a debugger problem.. but inside 'def empty?' on Buffer..
00:58:20Defiler(when called from here)
00:58:21imajes_ enters the room.
00:58:27Defiler@bytes is nil
00:58:39Defiler(I know @bytes is a slot)
00:58:40evannot 0 eh...
00:58:51evanyou sure it's nil?
00:59:18DefilerLet me check it another way to make sure it isn't a debugger quirk
00:59:24evank
00:59:47imajes leaves the room.
00:59:58DefilerHrm
01:00:06DefilerActually.. HOW can I check this
01:00:11DefilerI can't just do p @bytes
01:00:16evanwhy?
01:00:26evanoh, because it calls write
01:00:27evanuse
01:00:37evanSTDOUT.prim_write @bytes.inspect + "\n"
01:01:04DefilerOK, it's actually zero
01:01:09DefilerThe debugger just can't see fields
01:01:43wdperson enters the room.
01:01:50evanthats what i suspected.
01:01:54DefilerGod damnit.. this problem is kicking mey ass
01:02:08DefilerI am working on the MySQL client..
01:02:24Defiler..and I have it to the point where I can show that it attempts to write the exact same bytes to the socket as MRI does
01:02:32Defiler..but when rbx writes it, I get SIGPIPE
01:02:50DefilerWhen I just create a server in MRI and write to it from rbx, it works fine
01:03:02evanSIGPIPE? thats odd.
01:03:07evanthat means it's reading from a pipe()
01:03:27mernen enters the room.
01:03:28DefilerSIGPIPE is also raised when you write to a unix socket that isn't connect(2)ed
01:03:33evanah
01:03:35evantricky.
01:03:36tarcieriyeah
01:03:40tarcierifor any socket that closes
01:03:49tarcieriaren't you swallowing SIGPIPE?
01:04:03DefilerNo. We just exit
01:04:06tarcieriwhy?
01:04:07evani thought Defiler was going to change it so we did
01:04:11evanwe should be
01:04:13evaneveryone else does.
01:04:23DefilerYeah, I know.. but it isn't relevant to this fix, and I didn't want to get derailed
01:04:34evanbut doing so might give you some insight
01:04:51evanjust trap it in rubyland as a test
01:05:07evanSignal.trap("PIPE") { puts "you're a sucker." }
01:05:46tarcieriit's a single line of code in C as well, except I think libev demands a function stub to call :/
01:06:22agardinerDefiler: how were you trying to view the contents of @bytes in the debugger?
01:06:28DefilerI have a giant headache, and they have started to make Obama buttons in this room, so I'm going to take a break
01:06:40Defileragardiner: p @bytes when in def empty?.
01:07:03agardinerok, so its not really a debugger problem, right?
01:07:23evanagardiner: no, it's a visual likeness problem
01:07:24DefilerHow should I have accessed it?
01:07:39evanthere is no simple way anymore
01:07:49evanyou could have done at(3) or whatever the slot number is
01:07:52evanbut Object#at is done
01:07:54evaner. gone.
01:08:09DefilerGotcha
01:08:15agardinerdon't know, but i do intend to add a command to see ivars... and that will have to handle this
01:08:33evanagardiner: sorta
01:08:35evanit doesn't have to
01:08:50evanprobably should have another command to show slots
01:08:51DefilerHaving them be ivars is a little tricky because ivars are auto-vivifying
01:09:02DefilerSo you see nil instead of 'wtf are you asking??'
01:09:11evanyeah
01:09:12agardinerhehe
01:09:15Defilerp @bytes creates a shadow ivar
01:09:34agardinerwell, if you had a command to show ivars, it would only show you what existed
01:09:45agardinerwhich would help
01:09:46evanlike I said, the visual similarity is starting to feel like a mistake
01:10:19Defileragardiner: Oh, right.
01:10:29DefilerOK. Back online a bit later. Going to get out of here.
01:10:31agardinerthe (imaginary) debugger ivars command could show both ivars and slots, but have a type field to distinguish them
01:10:33evanDefiler: k
01:10:34elight leaves the room.
01:10:51DefilerPeople are talking in 'outdoor voices' in the cozy nook I am using
01:11:04DefilerUnlike Ryan, I don't plan to berate them at length for their sins :)
01:13:01evanheh
01:13:23eventualbuddha leaves the room.
01:15:22crafterm leaves the room.
01:15:24agile enters the room.
01:16:03skaar leaves the room.
01:28:11cored enters the room.
01:31:18random8r enters the room.
01:36:19lopex leaves the room.
01:37:58imajes_ leaves the room.
01:41:26boyscout1 commit by David Whittington
01:41:27boyscout * Fixed typos in rubuildius README; 4e3a795
01:41:47evanany song that references sodium flares rocks.
01:42:41lachie leaves the room.
01:42:41benburkert leaves the room.
01:42:41ijcd leaves the room.
01:42:41cyndis__ leaves the room.
01:42:41rphillips leaves the room.
01:42:41Chrononaut leaves the room.
01:42:41mojombo leaves the room.
01:42:41Silex leaves the room.
01:42:44wdperson leaves the room.
01:43:02wdperson enters the room.
01:43:03rphillips enters the room.
01:43:30Chrononaut enters the room.
01:43:38rubuildius_amd64 enters the room.
01:44:03mojombo enters the room.
01:44:08jtoy enters the room.
01:44:08cored leaves the room.
01:44:26rubuildius_amd64 leaves the room.
01:47:33lachie enters the room.
01:48:23benburkert enters the room.
01:49:41yipstar leaves the room.
01:54:17rubuildius_ppcDavid Whittington: 4e3a795d3; 1756 files, 6039 examples, 20250 expectations, 0 failures, 1 error; http://pastie.caboo.se/paste/165504
01:56:25roo enters the room.
01:56:44wdperson leaves the room.
01:57:17webmat leaves the room.
01:58:32Silex enters the room.
02:00:58josb leaves the room.
02:01:19webmat enters the room.
02:02:54rubuildius_amd64 enters the room.
02:03:32cyndis__ enters the room.
02:03:56wombleWhat sort of situations could trigger an "Unknown travel plans" error?
02:04:17cavalle leaves the room.
02:04:44boyscout1 commit by Adam Gardiner
02:04:45boyscout * Fix bug where stepping by line would sometimes skip a line; 4bdd3df
02:05:01cavalle enters the room.
02:05:55Defilerwomble: Something terrible and unexpected involving the invocation of a C function
02:06:30wombleDefiler: I figured as much... what's the best way to track that sort of thing down?
02:07:20DefilerFirst step should be to use gdb to figure out what the 'travel' value was
02:07:31Defilersee around 330-something in shotgun/lib/subtend/nmc.c
02:07:35bremac enters the room.
02:07:44elight enters the room.
02:07:48wombleThe travel value is printed in the error, but it changes on each run.
02:08:24DefilerSet a watch point in gdb on 'travel' then, perhaps
02:08:31crafterm enters the room.
02:09:09agardinerDefiler: that last commit ought to fix the step problem
02:09:19wombleOh man, I just ran it again and it segfaulted this time. That's weird, I ran the exact same ruby code as last time. At least I've got it in GDB...
02:09:24Defileragardiner: Cool
02:09:26elight leaves the room.
02:09:27agardinerand i'm working on adding an ivars command now
02:09:31wombleDoes shotgun run OK in efence?
02:11:42DefilerNever tried it
02:12:09DefilerAnyone feel like adding a lock to rubuildius so that it doesn't try to do multiple builds at once?
02:12:22DefilerThat failure we are seeing in the UDPSocket specs looks like a race
02:14:03wombleDefiler: Yeah, there's a couple of icky problems in the UDPSocket specs... I'm actually faffing around in there at the moment, and I've gotten sidetracked by this travel issue.
02:14:26rubuildius_ppcAdam Gardiner: 4bdd3df09; 1756 files, 6039 examples, 20259 expectations, 0 failures, 1 error; http://pastie.caboo.se/paste/165510
02:14:45rubuildius_amd64Adam Gardiner: 4bdd3df09; 1756 files, 6036 examples, 20232 expectations, 1 failure, 1 error; http://rafb.net/p/53j0hD59.html
02:15:20djwhittrubuildius_amd64 lives!
02:15:26DefilerOK, I'll leave it to you, then. Heh
02:16:05djwhittit's running Gentoo in case anyone is curious
02:17:13ezmobiusgentoo ftw
02:18:23wombleDoes anyone ever go through the output of ./bin/rspec tag -g fails <dir> and untag specs that are passing?
02:18:33wombleJust curious...
02:19:11DefilerYou mean for specs that start passing by 'accident'?
02:19:24Defiler(as a side-effect of another fix)
02:19:47DefilerPresumably, though we should probably make that be somebody's job
02:21:59wombleDefiler: Yeah, that's the one. I've noticed that when I'm fixing some high-level spec, I sometimes fix something lower-level that's probably specced somewhere. I wondered if it'd be worth my time to do that now and then when I'm feeling "low energy"
02:22:37UncleD enters the room.
02:23:24boyscout1 commit by Adam Gardiner
02:23:25boyscout * Add ivars command to Debugger; shows current instance variables; 4d427ae
02:25:07jtoy leaves the room.
02:26:25bremac leaves the room.
02:26:55radarek leaves the room.
02:27:09kamal_farizwomble: you gotta be extra careful with those. I cleared the tags once before, everything was alright on my machine. some of the bots went nuts though.
02:29:17womblekamal_fariz: Yeah, I know that the fix might be platform-specific, but you're always going to have that problem, even for fixes you've explicitly made. Cross-platform compatibility sucks. <grin>
02:29:44rubuildius_amd64Adam Gardiner: 4d427ae17; 1756 files, 6036 examples, 20232 expectations, 1 failure, 1 error; http://rafb.net/p/BG26QB73.html
02:34:09rubuildius_ppcAdam Gardiner: 4d427ae17; 1756 files, 6039 examples, 20259 expectations, 0 failures, 1 error; http://pastie.caboo.se/paste/165512
02:34:49dkubb enters the room.
02:44:14DefilerWe should probably make the build bots fancy enough to keep track of that for us
02:44:37DefilerLike, having a command we could send them to run all the specs and tell us which were excluded but passed anyway
02:48:49RyanTM leaves the room.
02:49:36RyanTM enters the room.
02:52:46boyscout1 commit by Matt Palmer
02:52:47boyscout * Don't assume that the rbx command is in the root of the tree; a2e8e62
02:53:31roo leaves the room.
02:57:45jinjing enters the room.
02:59:46rubuildius_amd64Matt Palmer: a2e8e6294; 1756 files, 6036 examples, 20232 expectations, 1 failure, 1 error; http://rafb.net/p/21otjX31.html
03:00:27ezmobius leaves the room.
03:03:53jtoy enters the room.
03:04:16rubuildius_ppcMatt Palmer: a2e8e6294; 1756 files, 6039 examples, 20259 expectations, 0 failures, 1 error; http://pastie.caboo.se/paste/165523
03:11:08wmoxam enters the room.
03:12:11dewd leaves the room.
03:14:24binary42 leaves the room.
03:16:07brother_rspec enters the room.
03:16:24mernen leaves the room.
03:21:05KirinDave enters the room.
03:22:56cavalle leaves the room.
03:23:25cavalle enters the room.
03:31:43lachie leaves the room.
03:34:58cavalle_ enters the room.
03:36:30KirinDave leaves the room.
03:38:35srbaker enters the room.
03:42:26wmoxam leaves the room.
03:44:21perplexes leaves the room.
03:44:37perplexes enters the room.
03:47:58crafterm leaves the room.
03:50:48cavalle leaves the room.
03:55:09webmat leaves the room.
04:00:30AndrewO enters the room.
04:01:13mediogre enters the room.
04:08:01jtoy leaves the room.
04:11:43GMFlash leaves the room.
04:14:13jtoy enters the room.
04:19:28therealadam leaves the room.
04:25:41cavalle enters the room.
04:25:41cavalle_ leaves the room.
04:28:42mutle leaves the room.
04:30:58mutle enters the room.
04:37:54benburkert leaves the room.
04:40:37AndrewO leaves the room.
04:41:42cavalle leaves the room.
04:43:20cavalle enters the room.
04:44:19cavalle leaves the room.
04:44:40cavalle enters the room.
04:45:33cavalle_ enters the room.
04:45:46cavalle leaves the room.
04:48:14benburkert enters the room.
04:50:28tlockney enters the room.
04:53:26miamoto_musashi leaves the room.
04:57:04gnufied enters the room.
04:59:53KirinDave enters the room.
05:02:00jinjing leaves the room.
05:04:45jtoy leaves the room.
05:09:36agardiner leaves the room.
05:10:40srbaker leaves the room.
05:11:24jtoy enters the room.
05:19:23random8r leaves the room.
05:19:26jinjing enters the room.
05:19:58bitbang enters the room.
05:22:05kamal_farizi'm tempted to commit the result of ./bin/mspec tag -g fails -R fails spec/ruby/1.8/core/ -fa
05:22:31kamal_farizgreen in rbx, mri .. just waiting for jruby to finish checkout and build
05:22:38bitbang leaves the room.
05:22:53bitbang enters the room.
05:28:23KirinDave leaves the room.
05:35:48boyscout1 commit by MenTaLguY
05:35:49boyscout * still not entirely right, but better; I should not be trying to do this; 0125cfd
05:36:40brixenkamal_fariz: how many tags were deleted?
05:38:36brixenkamal_fariz: also, jruby uses a separate set of tag files, afaik
05:42:14mediogre leaves the room.
05:44:50rubuildius_amd64MenTaLguY: 0125cfdb9; 1756 files, 6036 examples, 20232 expectations, 1 failure, 1 error; http://rafb.net/p/gZkeV072.html
05:46:09headius enters the room.
05:49:03RyanTM leaves the room.
05:49:42rubuildius_ppcMenTaLguY: 0125cfdb9; 1756 files, 6039 examples, 20259 expectations, 0 failures, 1 error; http://pastie.caboo.se/paste/165565
05:55:39headius leaves the room.
05:56:04headius enters the room.
06:08:36rby enters the room.
06:14:22_martinS_ leaves the room.
06:17:19cavalle enters the room.
06:17:19cavalle_ leaves the room.
06:20:04rueDamnit, I forgot again. Which is better, VMWare or Parallels?
06:21:49evanthere about the same
06:21:58evani guess VMWare has a little better arch these days
06:22:08evansame for what I typically do though
06:22:27tmornini enters the room.
06:22:55jtoy leaves the room.
06:22:55ctennis leaves the room.
06:23:08GMFlash enters the room.
06:23:21jtoy enters the room.
06:23:21ctennis enters the room.
06:23:38jtoy leaves the room.
06:25:03jtoy enters the room.
06:26:51headius leaves the room.
06:37:55perplexes leaves the room.
06:39:52kamal_farizbrixen: 45 tags deleted
06:40:23lachie leaves the room.
06:40:38lachie enters the room.
06:41:40brixenkamal_fariz: nice :)
06:41:54kamal_farizso i'll commit it then
06:42:11kamal_farizhope it won't screw up on other platforms
06:42:22lachie leaves the room.
06:43:22mediogre enters the room.
06:43:54boyscout1 commit by Kamal Fariz Mahyuddin
06:43:54boyscout * Remove fail tags from passing ruby/1.8/core specs; 33890d9
06:50:39rubuildius_amd64Kamal Fariz Mahyuddin: 33890d9a7; 1756 files, 6075 examples, 20326 expectations, 1 failure, 1 error; http://rafb.net/p/lM18gI19.html
06:50:57kamal_farizyay amd64
06:54:55rubuildius_ppcKamal Fariz Mahyuddin: 33890d9a7; 1756 files, 6078 examples, 20353 expectations, 0 failures, 1 error; http://pastie.caboo.se/paste/165578
06:56:30kamal_farizawesome
06:57:30KirinDave enters the room.
06:59:56dkubb leaves the room.
07:04:41benburkert enters the room.
07:05:00rby leaves the room.
07:06:53benburkert leaves the room.
07:11:22KirinDave leaves the room.
07:15:58jero5 leaves the room.
07:19:06radarek enters the room.
07:22:14cjheath_ enters the room.
07:22:22boyscout1 commit by Tom Mornini
07:22:23boyscout * Increase count to reduce effects of startup overhead, and close opened files; 6127888
07:24:38cjheath leaves the room.
07:30:42rubuildius_amd64Tom Mornini: 612788892; 1756 files, 6075 examples, 20326 expectations, 1 failure, 1 error; http://rafb.net/p/082jhA40.html
07:30:54evanhm. what should I talk about at my rubyfools keynote
07:30:55evan....
07:31:47imajes enters the room.
07:32:15wombleevan: Does it have to be fool-related?
07:32:28evannot as far as I know.
07:32:34jammirails or something related, maybe?
07:32:34KirinDave enters the room.
07:32:37evanit has to be ruby related
07:32:40evanthats all
07:32:48evancode, community, anything
07:33:00evanit's before a social event
07:33:10evanwhat would you guys be interested in hearing, were you to be there
07:33:21jammii'd suggest concentrating on the community part
07:33:24evanmaybe i'll make up some bullshit graphs again
07:33:28evanpeople loved that
07:33:40jammiit's at least as important as technology in open-source projects.
07:33:45dbussinkgraph plotting world domination :)
07:34:02evanoh
07:34:04evanthats a good one
07:34:23evani'll be java versus ruby on a bar chart, graphed against fun/nanosecond
07:34:27wombleWhat about how the rubinius specs are giving the entire Ruby world some idea of what the language is supposed to look like?
07:34:27rubuildius_ppcTom Mornini: 612788892; 1756 files, 6078 examples, 20353 expectations, 0 failures, 1 error; http://pastie.caboo.se/paste/165582
07:34:38evani'll throw in a crap math equation to go with it
07:34:57evanwomble: thats a good one
07:35:13evanyeah, i've been thinking about talking about how great it is that the whole community is moving forward now
07:35:39brixenevan: when is that conf again?
07:36:03wombleThat's it -- we've got specs that MRI, jruby, rubinius, can all use to define the language -- and hopefully avoid more API breaking in 1.8.x releases. <grin>
07:36:08evanbrixen: april 1st
07:36:14evanhence the name
07:36:15brixenahh ok
07:36:16brixenheh
07:36:20dbussinkfor who wants to know btw, i passed my thesis exam :)
07:36:22wombleHahah, cool naming convention.
07:36:29dbussinki can call myself master of science now
07:36:30evandbussink: yay! congrats!
07:36:31wombledbussink: Always a good thing. Congrats.
07:36:37evanmaster bussink!
07:36:40brixendbussink: woohoo, congrats!
07:36:57dbussinkthnx :)
07:37:10evanwhen I see goodney, I call him master goodney sometimes
07:37:23evandbussink: you going up to copenhagen at the end of the month?
07:37:39dbussinkwasn't planning to
07:37:59evanah, ok.
07:38:00evanjust curious.
07:38:13dbussinkwell, it's a bit too far to just go
07:38:29dbussinkand i'd probably have to pay for it myself :P
07:38:40dbussinknew boss is already sponsoring my portland trip
07:39:08evancool, I'll see ya then
07:39:15evanwe can use the bosses expense card then :D
07:39:22dbussinkhehe :)
07:39:28antares_ enters the room.
07:39:34dbussinkgoing anywhere else except copenhagen then?
07:39:43evanoslo
07:39:52evanabby and I are staying pretty much in the city I think
07:39:56evanboth cities
07:39:58dbussinkah, that's the wrong direction for me to pay a visit :P
07:40:02evanheh
07:40:14evanportland it is then
07:40:17dbussinkyeah
07:40:21evanwith fresh stroopwaffles!
07:40:45dbussinkyeah, i still remember my promise
07:40:49evan:D
07:41:04dbussinkalthough i'm not standing for the freshness after the 14 hour flight :p
07:41:13evanhehe
07:41:16evanfreshish
07:41:17evan:)
07:45:21dbussinkmaybe i can take some extra and start a street selling business
07:45:32dbussinkpssst, ssht, wanna buy stroopwafels?
07:45:54evanhah
07:46:00evanyou could make a bundle doing that
07:47:29dbussinkthat's what i've been thinking
07:48:25dbussinkbrixen: any idea whether mspec is going to support pending stuff?
07:49:21imajes leaves the room.
07:50:24brixendbussink: I'm not terribly inclined to
07:50:31brixenwhy not just write the spec?
07:50:36brixenwe have tags for excluding stuff
07:50:58dbussinkwell, there are for example some tickets that partially spec stuff in stdlib
07:51:29brixenhow do those need 'pending'?
07:51:59dbussinkwell, if those tickets are applied, it's bound to happen that the remaining part is forgotten and not specced
07:53:01brixenright, but pending doesn't solve that
07:53:24dbussinki know, but it could raise some concern for other people perhaps
07:53:31KirinDave leaves the room.
07:53:31brixenthere are likely always a set of specs not yet written but technically should exist in the universe of discourse
07:54:02dbussinkyeah, that's true, but i was thinking about how to not forget these kinds of things
07:54:20brixenwe could use the 'incomplete' tag
07:54:30brixenit wouldn't be excluded but you could list them
07:54:49brixenor we could use more than 'fails' to exclude from ci
07:55:02dbussinksomething like that perhaps
07:55:10evanthe big thing is knowing whats incomplete
07:55:16brixenif there is something that is a huge concern, just add a spec that flunks
07:55:35brixenincomplete or not is meta-data
07:55:50brixenand there is not a good way to know without an audit process
07:55:59brixenI'm not in favor of 'pending' being our audit process
07:56:15dbussinkwell, what i was mainly thinking of for example the spec file generation for a new class
07:56:43dbussinkpeople put it specs for a few methods and then leave it
07:56:51w1rele55 leaves the room.
07:56:58brixenmake mkspec add failing stubs if the file is empty
07:57:14dbussinkmaybe something like that
07:57:17brixenit "is not completely spec'd" do flunk end
07:57:24brixenand remove those in the audit process
07:57:24geekounet leaves the room.
07:58:27evani like that
07:58:32evanbecause nothing is 'hidden'
07:58:32dbussinkwell, i got this from the ostruct ticket on lighthouse
07:58:54brixenI just don't think having 'pending' solves the problem of not knowing if something is reasonably spec'd
07:59:06brixenit's a false sense of security
07:59:19w1rele55 enters the room.
07:59:19brixenwe seriously need an audit process
07:59:23brixenthat is meta-data
07:59:47evanwhat's in the audit process?
07:59:58brixenneeds to be defined
08:00:20kamal_farizevan: a run down of the various CS papers you implemented and their impact on the VM would be cool
08:00:28brixensuppose we think we've spec'd IO since we're using libc
08:00:38evani'm doing a rubinius technical intro that i'm going to go over that at
08:00:42brixenthen jruby discovers that we've missed stuff because they are implementing from scratch
08:00:50antareskamal_fariz, where one can read those CS papers? :)
08:00:53brixenthere needs to be a way to consolidate that information
08:02:22kamal_farizantares_: i dunno .. get the list of must reads from evan
08:03:15antaresevan, I already asked you but still :) what beside Baker's gc book and The Blue book is a good way to learn about ideas shotgun is built upon?
08:04:24brixenlordy, make has probably the most useless error messages ever
08:04:35brixenit might as well just say: broked
08:04:48evanantares_: i need to put together a list
08:04:58antaresis it just me or rubini.us is out? I cannot pull from it, ping it or access it in the browser
08:05:27tmorninirubini.us works for me
08:05:34antaresevan, may I ask you to really do it anytime soon? :) we all need it, man!
08:05:36antarestmornini, ok
08:05:38evan:D
08:07:06antaresevan, start small, put 3 or 4 titles on a page at LH :) then move on when you come across it next time :)
08:07:41evansuer
08:08:29kAworu leaves the room.
08:08:41kAworu enters the room.
08:13:38cavalle leaves the room.
08:16:52rudebwoy_ enters the room.
08:17:07geekounet enters the room.
08:17:19rudebwoy leaves the room.
08:17:23kamal_farizantares_: next time use this http://downforeveryoneorjustme.com/
08:17:53antareskamal_fariz, thanks did not know about that
08:18:06evanbut what if that site is down!?!
08:18:07kamal_farizit's from alex payne
08:18:24kamal_farizaccording to it, rubini.us is down
08:18:46antaresand it says to me "it's just you" :)
08:20:06GMFlash leaves the room.
08:24:38thehcdreamer enters the room.
08:26:35UncleD leaves the room.
08:26:39UncleD enters the room.
08:33:28tmornini leaves the room.
08:35:47motionhaha thats cool
08:47:20cavalle enters the room.
08:51:24mutle leaves the room.
08:55:57wifelette leaves the room.
08:59:22mutle enters the room.
08:59:39d2dchat leaves the room.
08:59:59wycats leaves the room.
09:00:20jtoy leaves the room.
09:02:15mae leaves the room.
09:09:07cavalle_ enters the room.
09:09:52wombleSo, I've got a spec that is failing under MRI. What's the procedure for that?
09:11:04Arjen_ enters the room.
09:11:13dbussinkwomble: what platform?
09:11:47wombledbussink: Debian Etch, Ruby 1.8.5.
09:12:08dbussinkwomble: make sure to test with 1.8.6-p111
09:12:11wombledbussink: What's really odd is that it's a spec that's shared between two methods (IO#write and IO#write_nonblock) and it's only the IO#write version that's failing.
09:12:16dbussinkbecause that's the reference implementation
09:12:26dbussinkcould be a bug in 1.8.5
09:12:27wombledbussink: Ah, of course. I'll upgrade and give it all another go.
09:12:31womblethanks.
09:13:21wombledbussink: Does it have to be exactly 1.8.6-p111? Is 1.8.6-p114 also OK?
09:13:39dbussinkthat should probably work too yeah
09:13:44dbussinkperhaps good to test with :0
09:13:45dbussink:)
09:14:18dbussinkah, i see 114 is the version now that's on ruby-lang.org
09:14:25dbussinkwe should definitely test with that then :)
09:17:46dbussinkwomble: you're backporting the version from unstable?
09:18:22wombledbussink: Actually, I found a 1.8.6.111 version I had laying around from another machine, and I'm using that. The backport was going to be my next step. <grin>
09:18:36dbussinkah, cause i'm building one right now
09:18:40wombleSpeaking of backporting and packaging, has anyone considered .debs for rubinius?
09:18:52dbussinki thought about it
09:18:59dbussinkbut we're not really there yet
09:19:07dbussinkbut if you want, you could take a look
09:19:10dbussinkat how hard it would be
09:19:16dbussinkprobably not that hard
09:20:01wombleThe packaging is simple, but the integration with MRI and the Debian packaging could be exciting. I might start a discussion on the debian-ruby list about it, in preparation for official package.
09:20:42cavalle leaves the room.
09:24:55dbussinkyeah, i know about the differences in opinion wrt to for examle gem versioning
09:25:06dbussinkso there probably will be discussion
09:26:24wombledbussink: For rubinius packaging, it's mostly about making sure no toes are stepped on when you've got ruby1.8 and rbx packages installed, but so they can both share (f.ex.) installed pure ruby libraries. It's a pity that the stdlib and "third-party" libraries are mixed in /usr/lib/ruby/1.8
09:26:32wombleGems are a whole *other* kettle of poop
09:26:51dbussinkyou're part of the ruby debian team?
09:27:30dbussinkthe mixing of stdlib and 3rd party stuff is definitely a problem that needs to be handled
09:28:38rueWeell, it is 5:30 and I am wide awake *sigh
09:29:20wycats enters the room.
09:29:29dbussinkrue: time to force yourself back into a regular rhythm then :P
09:29:33nemerle_afk leaves the room.
09:29:50wombledbussink: Not really a core member, but I am a DD, and I've never shrunk from a good argument. <grin>
09:30:03wombledbussink: Oh, on the original topic, that spec is still failing with 1.8.6p111.
09:30:17wombleAnd it's still only the #write version, not the #write_nonblock.
09:30:21rueI think kamal_fariz made changes there
09:30:30rueOr combined the two, something
09:30:49kamal_farizi aliased it
09:30:55kamal_farizoh you mean specs
09:31:08kamal_farizyeah, i used shared specs for both of them
09:31:09rueCould be a platform difference too, I suppose
09:31:20dbussinkyeah, there are some more of thoe
09:31:22dbussinkthose
09:31:36dbussinkthe File#chmod always succeeds with any numeric values for example
09:32:09dbussinkthat fails on freebsd because there it doesn't succeed
09:32:15dbussinkit's mapped directly to the platform functions
09:32:32dbussinkdo we mimic that or do we want to create some consistency
09:32:33dbussink?
09:33:12rueI think it should be sane
09:34:46wifelette enters the room.
09:34:57rueAny numeric as in 9999 or in that it umask/perms do not matter?
09:36:10dbussinkjah
09:36:14dbussinkyeah
09:37:03dbussinki think we can't really determine whether it's sane before calling it i think
09:37:42rueWell, er 999 is not :P
09:38:13rueOh, wait..
09:38:30rueIs it automatically interpreted as octal?
09:39:20womblerue: I don't think so.
09:39:41rueI would *hope* not but that is the only way 999 would be sane (ish)
09:41:52dbussinkwell, i don't know if we can cover everything before calling the ffi function
09:42:06dbussinkand apparently not every platform generates an error if the value was invalid
09:43:20jinjing_ enters the room.
09:43:36jinjing leaves the room.
09:43:55shingara leaves the room.
09:46:39wombleCan someone run ./bin/mspec -t ruby spec/ruby/1.8/core/io/write_spec.rb on current head and tell me if they get a failure?
09:48:22rueWell damn
09:49:04wombleOh, and more interestingly, run ./bin/mspec -t ruby spec/ruby/1.8/core/io/write_nonblock_spec.rb and see if they *don't* get a failure.
09:50:40rueIt IS being interpreted as octal on OSX at least
09:51:00dbussinkwomble: they're ok on os x
09:51:02rueFile.chmod 999, '/tmp/blah' == File.chmod 01747, '/tmp/blah'
09:51:28womblerue: I think you might have your conclusion backwards.
09:51:31dbussinkyou mean intepreted as int, not octal?
09:51:45womblerue: 999b10 => 1747b8, I think.
09:51:50wombleis too lazy to check
09:52:14rueI have confused myself too but
09:52:45rue01747 == sticky + rwx r rwx
09:53:04rue999 == sticky + rwx r rwx
09:53:23dbussinkyeah, but the first one is the octal :)
09:54:03dbussinkbut the problem here is platform idiosyncrasies, and the question is how to handle that
09:54:07dbussinkor just let them be
09:54:29rueRight, so the value contained by 999 is accepted as an integer but treated as if it had been an octal
09:54:52dbussinkwell, it just uses the bit pattern 999 represents
09:54:54womblerue: They're both numbers. The only difference is in the representation we give to the number when we write it.
09:55:05rueRight.
09:55:14rueWhich is problematic.
09:55:57rueIt also seems to happily ignore anything beyond its assigned bits
09:56:44womblerue: It's not problematic unless you muck up your program. <grin>
09:59:25dbussinkwomble: same problem for me on linux
10:00:00wombledbussink: So your IO#write fails the spec? How interesting.
10:00:13dbussinkon linux that is yeah
10:00:16dbussinkon os x it's fine
10:01:31wombleWell, well, well. I might get a patch into two Ruby interpreters this month.
10:03:39dbussinklooks like a bug on linux then?
10:03:43dbussinkin mri?
10:04:37wombledbussink: It's the only thing that makes much sense. I'd certainly expect #write to work the way the spec says it should, and presumably it worked OK for someone. kamal_fariz, what's your platform?
10:05:07kamal_farizwomble: leopard x86
10:05:24womblekamal_fariz: Cheers.
10:06:35wombledbussink: Definitely looks looks like it's a Linux-specific bug that's still present in the latest MRI release.
10:06:50dbussinkwell, good we have the specs :)
10:06:59dbussinkbut write doesn't seem like something very obscure
10:07:04dbussinkthat no one else ever found it...
10:07:37dbussinki've found some stuff in mri when writing specs too, but usually it was some nasty edge case that wasn't really used in any system out there
10:09:46wombledbussink: This is an edgecase too -- how many people would write to a part of an already-existing file using #write and then read from it using #sysread without seeking anywhere? That #write/#sysread pair is an important part of the bug -- #write/#read works fine.
10:10:07dbussinkah ok, well, didn't look in the spec in depth
10:10:13wombleI reckon the Linux implementation of read/write in MRI is different to on OS X, and it's using different primitives for no adequately explained reason.
10:11:46wombleProbably caching related.
10:14:54boyscout1 commit by Matt Palmer
10:14:55boyscout * Fix up IO#write spec so it works cross-platform; c4a4dc1
10:17:28rueMm, mixing sys and non-sys is undefined, technically
10:17:58womblerue: Really? I didn't know that.
10:18:44womblerue: Would that mean that we need to detect whether write or syswrite is being called, and call the matching read method?
10:18:57lachie enters the room.
10:20:07rueIn the specs? Actually probably that those should not be combined
10:21:16wombleYeah, in the specs. kamal_fariz, any opinion?
10:24:26cjheath_ leaves the room.
10:24:59rubuildius_ppcMatt Palmer: c4a4dc19a; 1756 files, 6078 examples, 20353 expectations, 0 failures, 1 error; http://pastie.caboo.se/paste/165609
10:25:18wombleError? What error? There can be no ERROR!
10:25:31_mutle enters the room.
10:25:43rubuildius_amd64Matt Palmer: c4a4dc19a; 1756 files, 6075 examples, 20326 expectations, 1 failure, 1 error; http://rafb.net/p/sr60fJ33.html
10:25:51wombleOh, that one. Bah, I'm fixing that elsewhere. Failure? What now?
10:25:54rueLooks like it is contagious
10:26:27wombleThat amd64 failure is... odd.
10:33:30rueMm, both seem reasonable-ish
10:41:50mutle leaves the room.
10:46:10boyscout1 commit by Matt Palmer
10:46:11boyscout * Don't assume that IO.new called without a mode means "readonly"; dfc4a25
10:46:27wombleC'mon, rubuildiusen
10:51:45dbussinkthat failure probably needs the nasty strtod that is going to be imported
10:55:39rubuildius_amd64Matt Palmer: dfc4a2525; 1756 files, 6075 examples, 20326 expectations, 1 failure, 0 errors; http://rafb.net/p/WYHSgd87.html
10:56:41webmat enters the room.
10:56:48webmat leaves the room.
10:56:54octopod enters the room.
10:57:53wombleWell, that's the best I was expecting. Off to bed for me. Bugger me, 4am.
10:58:02wombleThis stuff is addictive.
10:58:17wombleIt's like a huge choose-your-own-adventure.
10:59:24webmat enters the room.
10:59:44rubuildius_ppcMatt Palmer: dfc4a2525; 1756 files, 6078 examples, 20353 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/165623
11:08:51mediogre leaves the room.
11:16:52wifelette leaves the room.
11:17:11radarek leaves the room.
11:19:09wifelette enters the room.
11:37:56cjheath enters the room.
11:40:11octopod_ enters the room.
11:42:54octopod leaves the room.
11:46:21wdperson enters the room.
11:48:39ctennis leaves the room.
11:49:03lachie leaves the room.
11:49:43lachie enters the room.
11:53:28cjheath leaves the room.
12:12:09w1rele55 leaves the room.
12:18:45chris2 enters the room.
12:25:10jtoy enters the room.
12:33:35obvio171_ enters the room.
12:38:30w1rele55 enters the room.
12:48:33mediogre enters the room.
12:51:07obvio171 leaves the room.
12:52:20skaar enters the room.
12:52:26dewd enters the room.
12:55:29AndrewO enters the room.
13:04:15AndrewO leaves the room.
13:09:08mediogre leaves the room.
13:20:31RyanTM enters the room.
13:22:47GMFlash enters the room.
13:36:14binary42 enters the room.
13:36:14binary42 leaves the room.
13:36:55octopod leaves the room.
13:53:14AndrewO enters the room.
13:53:39moofbong enters the room.
13:54:18felix enters the room.
14:09:19RyanTM leaves the room.
14:10:28RyanTM enters the room.
14:17:58wmoxam enters the room.
14:18:15srbaker enters the room.
14:29:30jinjing_ leaves the room.
14:29:38Fullmoon enters the room.
14:30:54Fullmoon leaves the room.
14:32:52d2dchat enters the room.
14:43:59agile leaves the room.
14:46:33jinjing enters the room.
14:48:05therealadam enters the room.
14:50:49KirinDave enters the room.
15:02:36srbaker leaves the room.
15:03:34foysavas leaves the room.
15:11:16jinjing_ enters the room.
15:11:37wifelette_ enters the room.
15:15:23srbaker enters the room.
15:21:13foysavas enters the room.
15:27:00wifelette leaves the room.
15:28:19jinjing leaves the room.
15:46:18ttmrichter leaves the room.
15:46:35nicksieger enters the room.
15:52:45enebo enters the room.
15:57:19KirinDave leaves the room.
16:13:39jtoy leaves the room.
16:25:08agile enters the room.
16:28:20nicksieger leaves the room.
16:29:47enebo leaves the room.
16:30:01enebo enters the room.
16:35:43danm_ enters the room.
16:38:08srbaker leaves the room.
16:49:36moofbong leaves the room.
16:51:18antares_ leaves the room.
16:53:54srbaker enters the room.
16:58:49lopex enters the room.
17:00:07KirinDave enters the room.
17:00:30fizx enters the room.
17:01:09fizx leaves the room.
17:03:04chris2 leaves the room.
17:05:10enebo leaves the room.
17:05:29fizx enters the room.
17:06:44cavalle_ leaves the room.
17:11:16GMFlash leaves the room.
17:22:57mutle leaves the room.
17:30:49tizianobis enters the room.
17:41:44yaroslav enters the room.
17:42:04yaroslav leaves the room.
17:42:31thehcdreamer leaves the room.
17:42:52cavalle enters the room.
17:43:06fizx leaves the room.
17:43:23cavalle leaves the room.
17:57:22Arjen_ leaves the room.
18:03:25brixeninteresting, it would appear that compile opts makes strtod segfault on gentoo 64
18:03:56brixenfortunately I only have 3 to test, since this system is so slow
18:05:08benburkert enters the room.
18:05:59DefilerSurprising to hear that
18:08:39brixenyeah
18:08:51brixenit's not -funroll-loops
18:09:23lopexre, intrinsics ?
18:09:40brixenotoh, perhaps not surprising, as the original makefile in the freebsd source did not have any opts
18:10:03yipstar enters the room.
18:10:14brixenI'm testing the -O2 and -finline-functions now
18:11:05lopexgcc 4.x supports vectorization
18:11:41lopexis strtod considered an intrinsic in gcc 4.x
18:11:58lopex?
18:12:07brixenI don't know what that means
18:12:13brixenwith is 'instrisic' ?
18:12:23lopexfor example strcpm
18:12:24brixenor intrinsic :)
18:12:39lopexbeing used very frequent it can be inlined by the compiler
18:12:49brixenhmm, dunno
18:12:51lopex(the body)
18:12:56wmoxam leaves the room.
18:12:59lopexor even generated from a template
18:13:07brixenit works fine if I do not specify opts, looks like -O2 is the culprit
18:13:39lopexO2 does not use aggressive inlining, does it ?
18:14:15perplexes enters the room.
18:14:19lopexbrixen: btw, http://en.wikipedia.org/wiki/Intrinsic_function
18:14:31brixenah cool, thanks
18:15:06lopexhotspot uses few intrinsics (e.g. System.arraycopy)
18:15:13lopexit's inline even it's native
18:15:16lopexer, inlined
18:17:42brixenwell, removing -O2 and leaving unroll-loops and inline-functions seems fine
18:18:09lopexso you'll need to look at -O2 enabled options
18:18:11FoobarWidget enters the room.
18:18:22brixenyeah
18:18:56lopex1.9 suffers such problems as well btw
18:18:59brixenlopex: btw, this is not the standard libc strtod, I've grabbed the fbsd 7 gdtoa source to import, like 1.9
18:19:08lopexah
18:19:09FoobarWidgetdoes rubinius's garbage collector scan the C stack for pointers, like MRI?
18:19:19octopod enters the room.
18:19:20brixenlopex: was there a bug ticket on that?
18:20:06lopexbrixen: dunno, I heard from folks here and there
18:20:22brixenFoobarWidget: someone can correct me if I'm wrong, but rbx is stackless, there's no pointers on the stack for memory to collect
18:20:38brixenlopex: ok, good to know though, thanks
18:20:49lopexbrixen: -O3 afair
18:20:55brixenhmm
18:21:44brixenlopex: I think I'll punt for now, binary search of the offending opts enabled by -O2 is a pita
18:22:03brixenif it ends up being a perf bottleneck, we can revisit
18:22:06DefilerFoobarWidget: Yeah, we are stackless.. code in C extensions works the way it works in 1.8
18:22:21lopexbrixen: oh, hmm
18:22:42Defilercheck out shotgun/lib/baker.c 'baker_gc_collect' for the function that does the main work
18:23:20brixenFoobarWidget: but objects in C ext using subtend are indirectly accessed through handles on the C side, not the direct pointer to GC memory, iiuc
18:23:32brixenI shall be learning this in detail shortly :)
18:23:44FoobarWidgetis rubinius's gc incremental and generational?
18:23:52brixengenerational
18:23:52FoobarWidgetand does it do compaction?
18:23:58FoobarWidgetI said "and" :)
18:24:09FoobarWidgetthat is, I presume that a gc can be both
18:24:21brixenyoung is copying collector, so I guess you get compaction with that
18:24:27brixenold is not compacting that I know
18:24:45brixenyou should probably ask evan this, I'm fuzzy myself
18:24:50lopexold is mark&sweep ?
18:25:04brixenyes, I believe
18:25:48rmm5t enters the room.
18:25:59FoobarWidgetso you only have two generations
18:26:06DefilerFoobarWidget: You can google up baker two-space to see what we do
18:26:14FoobarWidgetbut is the gc incremental as well?
18:26:17brixenyeah, and a special part where contexts begin life
18:26:22brixennot incremental no
18:26:30brixenyes, you can have incremental + generational
18:26:33brixenwe don't
18:27:28DefilerThe GC system is extremely modular. It is relatively straight-forward to swap in another
18:27:35tizianobis_ enters the room.
18:27:39brixenincremental starts to become an issue if you're trying to do stuff near real time, and you need to prevent big stops
18:27:43Defilerbaker is just what we are using for now, until a better idea comes along
18:27:50brixenincremental is just N segments of a gc run
18:28:17brixenconcurrent or parallel would be interesting
18:28:35lopexlow pause ?
18:28:41lopexfor gamers!
18:29:08Defilerincremental relies on being able to jump back into the middle of the task, though
18:29:11wmoxam enters the room.
18:29:22DefilerWhich implies certain things about what your pointers point to, etc
18:29:35brixenright
18:29:50brixenyou need to have a read barrier, following forward pointers
18:29:54lopexjvm has concurrent mark&sweep as an option, though, there are still "stop the world" phases
18:29:56FoobarWidgetor a write barrier
18:30:09lopexlike updating the native references
18:30:29FoobarWidgetbut would implementing write barriers be possible without breaking compatibility with the MRI API?
18:30:48brixenwhat api is that?
18:30:59FoobarWidgetthe API that all the Ruby C extensions use
18:31:22brixenwell, for us, RSTRING, RARRAY are quite problematic
18:31:26brixenI'm working on that shortly
18:31:39brixenmost of the rest of the C api doesn't appear to be a problem
18:31:40rmm5t leaves the room.
18:31:54brixenwe have a bunch implemented in our subtend system (the MRI C api compat layer)
18:33:06dkubb enters the room.
18:34:02brixeninterestingly, parallelizing the gc appears to have benefits. a local company doing haskell dev is giving a talk on work on a parallel, generational gc for haskell and say the observe 2x wall clock speedup on commodity 4-core machines with that
18:34:20brixen2x gc time that is
18:34:27brixennot overall program :)
18:36:07brixenalso, folks working on this are working on incremental, concurrent, generational (I believe) gc: www.cse.ogi.edu/PacSoft/projects/Timber/Timber-2002-04.pdf
18:36:17imajes enters the room.
18:36:47Arjen_ enters the room.
18:40:45DefilerFun
18:41:45perplexes leaves the room.
18:43:29perplexes enters the room.
18:45:43tizianobis leaves the room.
18:45:59rue leaves the room.
18:49:06evanFoobarWidget: we already have a write barrier
18:49:14evanand it doesn't break MRI compat
18:49:29evanmainly because all C extensions see objects indirectly
18:50:44KirinDaveevan: http://pastie.caboo.se/165776
18:51:07KirinDaveevan: We're discussing how ruby behaves with this code, and Defiler seems to indicate this doesn't work the same way in rubinius.
18:52:07evanhm. whats it doing?
18:52:21Defilerstand by for paste with lots of details
18:52:42Defilerhttp://rafb.net/p/cHnJlp61.html
18:53:44evanis it that it things / 25 # /
18:53:46evanis a regex?
18:53:48evanis that the problem
18:55:00enebo enters the room.
18:55:04DefilerIt treats 'whatever' as an fcall, rather than an lvar
18:55:15evancourse it does
18:55:17evanyou called it
18:55:25evanit will never treat it like an lvar
18:55:35evanit's an fcall, not a vcall
18:55:41evanfcall is unambigious
18:56:07DefilerThis should be invoking Fixnum#/ on 50
18:56:11evanbut it did that because it didn't seet he binary message
18:56:16evanthe parser didn't see thit
18:56:17evanthat
18:56:20evanit saw a regex
18:56:25evanwhich makes whatever a method name
18:56:29evanthats the problem
18:57:52evanwhy the lexer isn't eating everything after the # is the big question
18:58:21tarcierifeedback from the parser?
18:59:10evani doubt it
18:59:26evanthe lexer is the one that sees the # and should be consuming it without regard
18:59:33evanthe test case is easy
18:59:41evanwhatever /25 # /
18:59:49imajes leaves the room.
19:00:04imajes enters the room.
19:00:17De