Index

Show enters and exits. Hide enters and exits.

00:00:54slavadgtized: its an article about macruby, not rubinius though
00:03:19jptixyakischloba: you don't think jruby is among the primary implementations?
00:03:44yakischlobajptix: *sigh* that was definitely not what I was insinuating
00:15:45brixenare the core foundation classes thread safe?
00:15:53brixenie in the same way Java's are
00:16:06brixenthe DT invariants hold but your code may have races etc
00:16:54brixen(I can't write core foundation without thinking of asimov :)
00:22:08evanbrixen: I highly doubt core foundation classes are thread safe
00:22:18evanand thus, i'm betting it's very easy to segfault macruby
00:22:50brixenyeah, I was wondering about that
00:22:50evanplayed hooky this afternoon and went to transformers
00:22:57brixenheh, how was it
00:23:10brixenhaven't decided whether to watch it in theatre yet
00:23:25evanit was "GIANT ROBOTS FIGHTING OTHER GIANT ROBOTS"
00:23:27evanas I expected.
00:23:34brixenno way!
00:23:41evanseriously!
00:23:51brixenheh
00:24:15evanhttp://developer.apple.com/documentation/Cocoa/Conceptual/Multithreading/ThreadSafetySummary/Threa dSafetySummary.html
00:24:39brixenahh
00:24:55brixenheh "Immutable objects are generally thread-safe."
00:24:57brixenno way
00:25:30evanway!
00:25:34brixeninteresting, put cocoa into multithreaded mode
00:25:41evan"Giant robots generally consider city-unsafe."
00:25:42evanWAY.
00:25:50evanconsidered
00:26:25brixenhmm, NSMutableString not generally thread-safe
00:26:40brixenbut NSArray is
00:27:21brixeneww, is this current? "Of course, when using immutable objects, you still need to remember to use reference counts correctly. If you inappropriately release an object you did not retain, you could cause an exception later.
00:27:50evancourse
00:27:52evansilly huh.
00:28:16brixenwell, I'm happy to see MacRuby passes the thread specs
00:28:29brixenI look forward to seeing it pass the specs in general
00:28:34evanyep
00:30:07brixensomehow, this line feels like a contradiction of what I read above in that page
00:30:10brixen"Core Foundation is sufficiently thread-safe that, if you program with care, you should not run into any problems related to competing threads."
00:30:20brixenseems like plenty to watch out for
00:30:30brixenwhich means things to overlook
00:30:35brixenwhich means human errors
00:31:04brixenI guess for certain values of "program with care"
00:33:31evanwell
00:33:39evanespecially because ruby programmers don't use mutexs
00:33:40evangenerally.
00:34:14brixenmu-what?
00:34:16brixenheh
00:40:07evanexactly
00:40:32evanthey use them when their high level logic needs orchestrating
00:40:37evannot when they use a string in 2 threads
00:42:15brixenyep
00:42:44brixenI think that's basically what charles was referring to
00:43:13brixenhe didn't get the warmest response via twitter
00:44:34evanresponse where?
00:46:09ddubthere is that whole bridges being set on fire thing
00:46:33evanwho needs bridges WHEN YOU CAN FLY
00:46:57ddubI think the macruby folk took his attitude toward benchmarking, then the whole 'macruby is a fork' the wrong way
00:47:07dduband now read his posts with FUD-colored glasses
00:47:16ddubis not sure what color FUD is
00:49:12brixenevan: http://twitter.com/MacRuby/status/2407895158 and http://twitter.com/MacRuby/status/2407928178
00:50:00evanyeah, i found them.
00:59:22evanARG
00:59:29evanwhy is popen hanging?!
00:59:32evanGR
01:27:06evanDAMNIT.
01:27:17evanshakes his fist towards cleveland
01:27:28evanthats why LeBron, my new god, lives.
01:27:35evanseems that doing
01:27:41evansignal(SIGPIPE, SIG_IGN);
01:27:49evanpretty much breaks IO in interesting ways.
01:36:10brixenhmm
01:37:16brixenI never actually knew what SIGPIPE was for before
01:37:33evanwell, i can tell ya this
01:37:42evanyes, the unix command
01:37:52evanwill not exit if SIGPIPE is ignored
01:38:04evanbecause it uses the default SIGPIPE handler
01:38:07evanwhich exits the process
01:38:17evanand if you fork and exec yes
01:38:23evanthe signal handlers are inherited
01:38:39brixeninteresting
01:39:11brixenso, is this wikipedia page wrong when it says "One can ignore SIGPIPE (using, for example, the signal system call). In this case, all system calls that would cause SIGPIPE to be sent will return -1 and set errno to EPIPE." ?
01:39:31evanone can do that
01:39:33evanbut yes does not!
01:39:44brixenahh
01:39:46evanto avoid this future situation
01:40:01evani think i'm going to have perform_exec reset all signal handlers
01:40:47brixenwhat were they thinking making 'yes' a command?
01:40:58brixenit makes for very hard to grok sentences at first glance
01:42:11evani'll refer to it as yes(1)
01:42:17brixenheh
01:42:19brixenthat works!
01:42:25evanhahahah
01:42:28evanfrom the man page
01:42:35evanSYNOPSIS yes [expletive]
01:42:40evanDESCRIPTION yes outputs expletive, or, by default, ``y'', forever.
01:42:45evanie
01:42:51evan#> yes fuck
01:42:54evanoutputs "fuck" forever.
01:42:58brixenheh
01:43:39brixenI like "be repetitively affirmative"
01:43:53brixenshould make for some good insults
01:44:14evan#> yes please
01:44:15brixen"dammit, what are you, the yes command? you are being repetitively affirmative"
01:44:55brixen#> yes no
01:45:01evanconfused
01:45:03evanconfused
01:45:03evanconfused
01:45:04evan:D
01:45:05brixenheh
01:45:22brixendammit, almost spit water on my laptop
01:45:59evanhah
01:46:13evanok, so, i'm going to tag 2 thread specs
01:46:21brixenk
01:46:27evanor make us not_compliant
01:46:33evanbecause the behavior contradicts itself.
01:47:24evanmainly
01:47:45evanthe behavior as it relates to how exceptions are handled when a thread is "dying"
01:48:49evanhi ben.
01:49:04evanok
01:49:18evanthe FTP specs are being unhappy.
01:49:51benschwarzwhatup ev
01:50:17brixenprobably because they have to sit next to the HTTP specs all day
01:50:31evanand get neglected.
01:50:38brixenyep
01:50:44brixenwho wants FTP
01:50:59benschwarznot me
01:51:15benschwarzftp is like the fat sister
01:51:19brixenheh
01:56:19evanUG.
01:56:36evanthese FTP server specs leave something to be desired.
01:56:38evanmainly, the server.
14:21:31morris1rubinius does not try to cope with ruby 1.9 language stuff, correct?
14:37:49morris1what are the "components borrowed" from MRI, currently?
14:39:31morris1is there a way to create a sort of sandbox (like a sub-instance of rubinius) in rubinius?
14:57:55morris1is just cloned rubinius from git, "rake" gives: rake aborted! no such file to load -- rakelib/git
14:59:19sbryant_workmorris1: rubinius is still matching 1.8.6
15:00:10sbryant_workAs for as spawning new multiple vms' from a vm, not sure.
15:00:32sbryant_workThere's a bunch of readmes for building
15:43:08dbussinkmorris1: weird, i do have that file
15:43:39morris1its not a rubinius problem, so nevermind :) was myself having a screwed up ruby environment
15:51:32dbussinkmorris1: btw, there has been support for multiple vm's, but i don't know what state it is
17:32:56evanmorning.
18:22:58sbryant_workAfternoon
18:25:21evansbryant_work: how are you today?
18:26:01sbryant_workTerrible.
18:26:09sbryant_workThis application is making me angry.
18:26:24evanthats too bad.
18:26:33sbryant_workYeah, more and more things are just plain wrong with it.
18:28:34sbryant_workI'm trying to rip out a custom mailer solution and replace it with ActionMailer
18:29:24sbryant_workBut everything is tied to the state of the controller
18:29:30sbryant_workWhich is just strange.
18:29:41evansounds... unfun.
18:30:18sbryant_workit is.
18:30:34sbryant_workI'd love to work on something else
18:31:00sbryant_workAnd when I'm done with this at the end of the day I don't even want to touch code because of how unfun this is.
18:32:24evan:( :( :(
18:32:30evanon the up side!
18:32:45evani'm going to do a little experiment
18:33:05evani'm going to lace Fixnum addition inline code with using the uncommon code
18:33:27evanthat should give LLVM a clear alias path
18:33:56evanand I believe something like a + b + c should result in some simple code
18:34:00evantesting now!
18:34:08evanactually, testing in a sec!
18:34:54sbryant_workNice.
18:37:13sbryant_workWhat is going on with the jit failures?
18:38:48evani dunno
18:38:53evani'm going to check it out soon
18:39:13sbryant_workAnd I just found a disparity in rails.
18:39:35sbryant_workor at least I think
18:39:39sbryant_workToday is not going well
18:42:50dbussinksbryant_work: you usually know a crappy day right from the start
18:44:55sbryant_workYeah.
18:44:57sbryant_workToday is one.
18:45:02sbryant_workI blame the great night I had.
18:46:06evancould be.
18:46:37dbussinkhehe
19:38:32sbryant_workFinally. This finally works!
19:39:03brixenI think the number of compilation errors a statically typed language compile finds is misleading because the syntax usually has way more things to trip you up
19:40:23brixenthat said, I find potion's syntax terrible http://hackety.org/potion/
19:40:30brixenespecially the block example
19:41:52evanyeah, i don't really like the look either.
19:42:47brixenwhether . is used in english as a separator or full stop is mostly irrelevant
19:42:57brixendecoding the white space takes way too much time
19:44:17evanagreed
19:44:31evanto me, white space seperates to independent elements
19:44:39evans/to/two/
19:45:23sbryant_work_why is so crazy
19:46:05brixenI looked up 'so crazy' in the dictionary. it said, see _why
19:51:31sbryant_workbrixen: well yeah but that's _why for ya
19:56:04brixenheh, yeah
21:02:47boyscoutReforge local access to use StackVariales - 448c0a5 - Evan Phoenix
21:02:47boyscoutMerge branch 'vs_internal' - a7024cd - Evan Phoenix
21:03:09evanthere we go
21:03:11evan!
21:03:25brixencopy-pastes from #rubyspec
21:03:35brixenyeah, lunch for me too
21:03:48evannow a method can manipulate it's own locals quickly
21:03:59brixensweet
21:04:11evanand accessing a parent's locals is slower
21:04:13evanthe way it should be.
21:14:32boyscoutCI: a7024cd success. 2723 files, 10827 examples, 33840 expectations, 0 failures, 0 errors
22:13:45brixenevan: bin/mspec ci -B full ... Finished in 39.235279 seconds
22:14:05evanYAY!!
22:14:10brixenheh
22:14:36brixenso, when you have a minute, could you write up a list of all the things off the top of your head we need to fix with the GC
22:15:18brixen~10 million method calls is about the same time cost as 15,000 allocations
22:15:36evanoh interesting
22:15:36evanok
22:16:21brixenI wrote the Array::Iterator in pure ruby, and while the method call count went up about 1m, the time I saved from shaving > 10 million calls got eaten
22:16:33brixenI've redone it as primitives for now
22:16:44brixenit's really easy to implement either way actually
22:16:51brixenI might leave the ruby code in as comments
22:17:23evansurely
22:17:40brixenso, there appear to be a ton of bugs in Array
22:17:55brixenalmost no code that loops respects the @start slot
22:18:03brixenjust loops from 0 to @total
22:18:07brixen@total being size
22:18:17brixenso, having an Iterator will help with this
22:18:36brixenand allow experimenting with other Array structures possibly
22:18:50brixenjust need to keep the Iterator#next invariant
22:19:35evanum
22:19:37evanug.
22:19:38evanthat sucks.
22:19:39evan:/
22:19:49evani found some bugs in our IO buffering yesetrday
22:19:56evannot sure why they suddenly appeared
22:19:58evanlikely timing
22:20:04brixeninteresting
22:20:07evanbecause they showed up in the FTP specs
22:20:19evanwhich writes to sockets between 2 threads
22:20:30brixenahh
22:28:56dgtizedbrixen: I think what we need with the Array code is the standard external behavior tests in rspec, but we also need some internal specs for sizing / resizing / start point behavior
22:30:44dgtizedbrixen: and secondly what is the code that is not respecting @start, is it stuff that is external to array?
22:30:47brixenI have tests/specs
22:31:42evannothing external to array should look at @start
22:32:08dgtizedright, it should all use get which respects start, so that's what I'm confused about what's broken
22:32:20dgtizedsorry aref I mean
22:32:35evani don't know what you're saying
22:33:56dgtizedbrixen just said there was a bunch of code that loops from 0 to @total, and I'm pretty sure all the code in Array itself loops from @start to @total unless it's initializing a new Array and then it knows for certain it can go from 0 to @total
22:34:08dgtizedso I'm trying to find out what code he is referring to that doesn't
22:34:34evanok.
22:35:07dgtizedand for external looping it all uses Array#at which uses Primitive#array_aref which respects the @start variable as well
22:36:38brixenwell, le'see... does rindex allocate an array?
22:36:39brixenno
22:36:47brixendoes it loop from @total
22:36:50brixen-1 to 0
22:36:51brixenyes
22:37:26dgtizedbut it uses at which respects @start
22:37:38brixenhuh?
22:37:47dgtizedit's using Array#at to access each member
22:37:52brixenso?
22:38:03dgtizedArray#at does a index + @start in order to get that element
22:38:10brixenand?
22:38:40brixenthat's a serious mismatch between algos
22:38:49brixenand brittle if one part changes
22:38:53brixenthat's my point
22:39:35evanif it uses Array#at()
22:39:38evanit should not look at the ivars
22:39:42evanit should use size
22:40:04brixenright
22:40:29dgtizedok, that makes sense, my guess is there are a number that use @total instead of size, but I'm pretty sure everything that uses a loop from 0 to @total is using at to access each index
22:41:00evanusing size is almost the same as using @total now
22:41:02evanwith the JIT
22:41:03dgtizedbrixen: do you want to clean those up, or do you want me to do it?
22:43:05brixenleave it
22:43:10brixenI just said I'm working on it
22:45:02dgtizedthe other thing is most of those loops were inlined because at the time using each was killing us in speed, it's possible a lot of those are fast enough now
22:45:53evanthat code should try not to use each
22:46:06evanfor a while still
23:01:02evanmmm
23:01:06evanuncommon traps
23:01:07evanlove them.
23:01:58morris1do you somehow create html docs from the markdown stuff in /doc ?
23:03:00brixenmorris1: not yet, but it's planned
23:03:06brixenmorris1: also, see rake -T doc
23:03:24brixenthere's some tasks for creating the doxygen docs for the C++ code
23:03:33brixenbut I think they need some help
23:17:33boyscoutAdd guards for Symbol and Fixnum - f9bd0dc - Evan Phoenix
23:20:43boyscoutCI: f9bd0dc success. 2723 files, 10827 examples, 33840 expectations, 0 failures, 0 errors