Index

Show enters and exits. Hide enters and exits.

00:25:21evanpeople are so weird.
00:25:35evani guy won't go to rubini.us because it's .us domain and he hates the US
00:25:37evaner.
00:25:40evans/i guy/a guy/
00:26:00kronos_vano))))
00:28:33brixenI'm sure there's a proxy out there to sanitize it
00:28:39brixenis he from Iran or something?
00:30:00BrianRice-workwow, there's a squatter on the .com/.org for the project name?
00:30:07evanyes
00:30:08evansadly.
00:30:17evani screwed up and didn't get them
00:30:18BrianRice-workthe wild west is all fenced off now :/
00:30:33kronos_vanorubinius.ru is free :D
00:30:35evanit's obviously a squatter since rubinius isn't a word or used term before this project
00:31:02BrianRice-workchrist, I should have bought slate.org - it's now yellowpages
00:31:10BrianRice-workit was some guy from bellevue, WA
00:33:21kronos_vanoI think we really don't need extra fast perfomance in MatchData#inspect, so this code is ok: http://gist.github.com/315236, right?
00:33:50evanon
00:33:51evanON
00:33:53evaner.
00:33:54evanNO
00:33:59evanunless/else is never allowed
00:34:00evanever.
00:34:28kronos_vanoPlease explain
00:34:29evanotherwise it's fine.
00:34:33evanyou used
00:34:37evanunless captures.nil?
00:34:38evan....
00:34:39evanelse
00:34:40evan...
00:34:42evanend
00:34:44evannever do that.
00:34:46evanalways
00:34:50evanif captures.empty?
00:34:51evan ...
00:34:52evanelse
00:34:54evan ...
00:34:56evanend
00:34:59kronos_vanohm
00:35:09evanyou didn't do .nil?, you did .empty?
00:35:13evanbut you get it
00:44:06boyscoutFix MatchData#inspect - 1024ca2 - Ivan Samsonov
00:49:09boyscoutCI: rubinius: 1024ca2 successful: 3037 files, 11969 examples, 36268 expectations, 0 failures, 0 errors
03:21:28manverudbussink: thanks, it builds again
03:21:55manverunow i'm down to the failing Process.setpriority spec
03:25:16Defiler[22:24] <hova> someone started snoring during the .net user group meeting
03:25:21Defilerouch hehe
03:25:30evanHAHA
03:26:29manveruevan: my error is "Errno::EPERM: Operation not permitted"
03:26:34manveruat main.__script__ {} at spec/ruby/core/process/setpriority_spec.rb:76
03:26:56manveruit doesn't exepct that exception, but it's the same exception as in mri
03:27:32evanyou mean it fails in MRI?
03:28:46manverusigma ~ % ruby -e 'Process.setpriority(Process::PRIO_USER, 0, Process.getpriority(Process::PRIO_USER, 0) - 1)'
03:28:48manveru-e:1:in `setpriority': Operation not permitted (Errno::EPERM)
03:28:54manveruon ruby 1.9.1p378 (2010-01-10 revision 26273) [x86_64-linux]
03:28:57evandoes the spec fail.
03:29:00evanis my question.
03:29:01manveruyes
03:29:05manveruthe spec fails for rbx
03:29:11evanle sigh.
03:29:15evandoes the spec fail on MRI.
03:29:29manveruhow do i check that?
03:29:34evanrun them.
03:29:39evanpass -tr to mspec
03:29:52evanbin/mspec ci -tr <file>
03:30:42manveruhttp://pastr.it/16664
03:30:44manverufail :)
03:30:58manveruruby 1.8.7 (2010-01-10 patchlevel 249) [x86_64-linux]
03:31:18manveruoh, it says that...
03:31:50evanthats passing.
03:32:17manveruoO
03:32:30manveruok, so it fails randomly
03:32:50evandid you run the specs before you made your patch?
03:32:54manveruhttp://pastr.it/16665
03:33:03manveruyeah, it failed back then too
03:33:20evanoh manveru
03:33:22evanyou so crazy.
03:33:25evanthen it's fine
03:33:28evanyou should have reported it back then
03:33:41manveruone ticket at a time :)
03:33:44evanare you trying to fix it or find out if your patch screwed something up
03:33:47evanok, hold on
03:33:51evani don't even know what you're trying to do.
03:33:54evani need some context.
03:34:12manverui just ran rake, it ran the specs, this is the only failure
03:34:26evanand you want to fix it?
03:34:32evanmore context
03:34:34evanplease.
03:35:01manveruthe spec fails, of course it has to be fixed
03:35:30evanmanveru: i'm having a hard time understanding you
03:35:38evanplease clearly indicate what you want and how I can help.
03:37:09manveruhttp://pastr.it/16666
03:37:16manverui'd like to apply that patch
03:38:07evanwhat platform are you on?
03:38:46manveruthe manpage says the error may be raised: http://linux.die.net/man/2/setpriority
03:38:51manveruarchlinux 64bit
03:39:55evanfeels like that spec should be changed in a different way
03:39:58evanto force EACCESS to be raised.
03:40:44DefilerI dunno, that manpage has some hazy shit under 'Notes' about eperm
03:40:54DefilerSounds like you can get it on all kind of systems for all kinds of reasons
03:40:58evanactually
03:41:02evanyour patch is fine.
03:41:15evansetpriority is really platform dependent
03:41:31evanmanveru: if you would
03:41:32DefilerHell, the section about it uses the phrase 'seems to be followed by'
03:41:35evanput in a comment above your change
03:41:40Defilerand 'on some systems'
03:41:44evanthat gives a little description why you added it
03:41:48manveruaight
03:41:51evanthese specs will likely need to be rewritten at some point
03:41:53DefilerI think that is unix speak for 'ha ha eat it'
03:41:58evangiven their form
03:42:06evanso adding more info for the next person would be good.
03:42:49manveruthing is, it fails only sometimes :)
03:42:57evanright
03:43:03manveruso i have no idea what causes it...
03:43:06evanit appears to do that "p - 1" to get a process taht doesn't exist
03:43:09evanwhich is just stupid.
03:43:18evanbecause there could easily be a process with that pid
03:43:22evanthats why it's random.
03:43:25Defilerand this man page says it depends on process priority
03:43:27manveruright
03:43:30Defilerwhich can't help
03:43:40evanthe spec'ing philosophy of these specs is terrible
03:44:01Defilerno human would stack books this way
03:44:06evanthere are a dozen strange actions with no description why they're done.
03:44:13evanhah
03:45:19manveruhrm
03:46:14manverui really don't think a comment like "this spec might depend on the priority of some random other process, but sometimes it doesn't, and the errors may vary per execution" helps
03:46:47manveruwill think about a better fix later
03:47:21evanok
03:49:11evanExcellent!
03:49:16evani've earned myself dinner!
03:49:27evanpats himself on the back
07:44:51dbussinkevan: still there?
08:38:19dbussinkrue|Work: morning :)
08:38:30dbussinkrue|Work: i can always try :)
08:59:17dbussinkrue|Work: where's work for you these days?
09:37:09dbussinkrue|Work: that's quite a commute :P
09:44:13dbussinkrue|Work: man, how can you live with those working conditions
09:54:36dbussinkis feeling old skool with doing a physical commute daily
10:27:43dbussinkyeah, i don't mind it either, works better for me :0
10:27:45dbussink:)
17:56:25brixenearly morning errand in ass rain pdx for the mutha effen el
17:56:32brixenwhat did I miss? are we there yet?
17:56:47evan:D
17:57:20brixenI will never know why it took 20 min at 1 mph to cross the ross island bridge
17:57:22brixenalas
17:59:32evanug.
18:02:10BrianRice-workI had a decent commute... except for crossing train track rails
18:04:47evanok, $~ is rewritten and passing
18:04:48brixenBrianRice-work: such fun in the run, huh
18:05:03brixenevan: [:zweet]
18:05:07evanand for the record
18:05:16evan$~ and friends fucking suck
18:05:24brixenBrianRice-work: s/run/rain/ heh
18:05:27evanseriously terrible.
18:05:41evanbeing scoped to "the calling ruby method" is so fucked.
18:05:52evanbecause it makes implementing things IN RUBY so much harder.
18:06:18brixenwe could blame them on a long night of sake drinking but we know 1. matz doesn't and 2. larry wall is to blame
18:06:35BrianRice-workmatz doesn't drink?
18:06:41brixennah
18:06:46evanhe's mormon.
18:06:52BrianRice-work:O
18:07:06brixenBrianRice-work: pretty interesting to ponder huh? :)
18:07:34BrianRice-workI, uh, am suddenly less trusting of ruby leadership
18:07:41brixenheh
18:07:43brixennow now
18:08:06brixeninteresting to me is the clash of japanese aesthetics with a (imo wacky) western philosophy
18:08:17BrianRice-workoh, sure, that is interesting
18:08:20brixenbut I still love ruby, mostly
18:08:54BrianRice-worklet's just say I have a background in wacky western religiosity and now don't trust anyone who doesn't drink and especially not a mormon
18:09:16brixenheh, my folks were JWs, so yeah...
18:09:44BrianRice-workanyway, $~ comments are spot-on
18:13:12BrianRice-workdoes rubinius provide something like "thisContext" and "thisContext sender" to see/crawl up the send-chain? (excuse the smalltalk idioms)
18:14:04brixenwe have Rubinius::VariableScope.of_sender
18:15:21brixenand Rubinius::CompiledMethod.of_sender
18:17:22brixenyou can get the StaticScope of the CM in the .scope slot
18:17:58evanBrianRice-work: yes is the main answer.
18:18:21BrianRice-workk
18:20:18evanBrianRice-work: do you use those for anything other than a debugger?
18:21:13BrianRice-workevan: generally, no, it's considered in poor taste. squeak continuations use it, of course, and similar system-level abstractions
18:21:35evanright, i'd consider it in poor taste too.
18:21:40evanit's quite brittle.
18:26:50evanBrianRice-work: ended up implementing invoke_primitive yesterday
18:26:53evanBrianRice-work: working great!
18:27:27BrianRice-workcool
18:35:30evani'll probably add "Rubinius.invoke_primitive :name, args"
18:35:35evanas a compiler "macro"
18:35:50evanso that we can invoke primitives by name directly in the kernel
18:36:13evanthis handles a wart we've had, which is having to wrap a primitive in a method that is never normally called
18:38:28brixencool
18:38:33BrianRice-workhm
18:39:01BrianRice-workyeah, sounds reasonable to me. I take it your compiler has some rules for code that it transforms
18:40:08evanyeah
18:40:14evanwe have some transform plugins
18:40:27evanthat can match against part of the AST and run some code
18:40:56BrianRice-workok
18:41:22dbussinkevan: i've made some changes to openssl to silence the warnings, would you care reviewing it?
18:41:31evani'd love to!
18:41:33evanhook me up.
18:42:21dbussinkevan: https://gist.github.com/75a1d2c00985b4eef2ec
18:43:48dbussinkevan: it missed a small thing, updated the gist
18:45:02evanum
18:45:12evani'm highly against moving st_retval into ruby.h
18:45:35dbussinkevan: well, it's used already in syck and now in openssl too
18:45:49evanregardless
18:45:50evanwe're not doing that.
18:46:01dbussinkand there were some hardcoded 0's and 1's in there
18:46:07dbussinkwhat's the alternative?
18:46:14evanthats better than bleeding st stuff into ruby.h
18:46:23dbussinkcause i'd like these changes to be compatible with mri too
18:46:45evanyou deleted st_retval from syck's private st.h
18:46:49evanthats illegal.
18:46:54evanthats not MRI compat.
18:47:03evanlets ignore all st.h related things
18:47:04evanrevert those
18:47:14evanwe need a more holistic approach to st
18:47:43evanhah
18:47:50evanif he commits it, he'll be dealing
18:47:53evanthats not allowed.
18:48:18boyscoutReimplement $~, known as last_match. - 458a558 - Evan Phoenix
18:48:18boyscoutAdd more spec cases for when $~ is set - 24eb366 - Evan Phoenix
18:48:31evanrue|Work: oh yes.
18:48:41dbussinkevan: well, st.h was added specifically for syck
18:48:48evanmm no
18:48:48dbussinkevan: should we do that for openssl too?
18:48:52evansyck had it's own st
18:48:54evanas I recall.
18:48:57evanin MRI.
18:48:57dbussinknope
18:49:09dbussinki'm not seeing it in there at least
18:49:09evanwell, i'm still not going to allow you to put st_retval in ruby.h
18:49:23evanfor right now
18:49:27evanignore it
18:49:28dbussinkwell, could put it in a st.h in lib/ext/openssl/
18:49:32evanand lets come up with a better plan
18:49:33evanno no no
18:49:39dbussinkwell, that was done with syck
18:49:41evanlets do this cleanup without any st related things.
18:49:51evanthen deal with st seperatly.
18:49:55evanplease.
18:50:09dbussinkwell, then i'd have to make a return 0 or something like from it
18:50:16evanthats fine
18:50:24evango back to the hack
18:53:23dbussinkevan: but isn't offering rb_hash_foreach and not ST_* stuff a bit half of a solution?
18:53:38evannope.
18:53:47evanrb_hash_foreach is provided by MRI's ruby.h
18:53:54evanall the ST stuff in MRI is in st.h
18:53:59evani screwed up our st.h and st.c
18:54:05evanwe need to fix it for reals
18:54:21evanthat's why i'm not letting you move that st stuff around
18:54:40dbussinkevan: well the behavior of rb_hash_foreach partly depends on the return value which is one of the ST_* values
18:54:50evanoh well.
18:54:56evanthat actually doesn't matter.
18:55:59evani don't see it depending on it
18:56:06dbussinkevan: i've updated the gist
18:56:55evanok, looks good.
18:57:03evani'm not being gruff
18:57:13evani just want to get st.* fixed first
18:58:04dbussinkwell, if it's wrong now i understand that yeah
18:58:17dbussinki'll commit these changes then
18:58:41boyscoutCI: rubinius: 24eb366 successful: 3037 files, 11971 examples, 36275 expectations, 0 failures, 0 errors
18:58:46evank
18:58:48evanthanks
19:09:23evanfuuuuck.
19:09:36evanrack-mount has a Hash subclass
19:09:44evanand uses ivars that collide with Hash's ivars.
19:09:49evanfail.
19:09:53brixenwow
19:09:59brixenwhat are the ivars?
19:10:17evan@count, @max, @min, @mean are the ones right here
19:10:21evan@max is the collision right now
19:10:30brixenargh
19:11:10evani'm changing @max to @max_entries
19:11:16brixencool
19:12:36rueSweet
19:12:41binary42evan: Maybe rubinius classes should use a _ prefix on ivars?
19:12:51evanso ugly though
19:12:53evanSO UGLY.
19:13:01evanand we don't do it on all of them
19:13:08evanbecause the VM translates them to slots in same cases
19:13:11evanlike in Array
19:13:27binary42evan: Yeah... just thinking it could cause other people some major headaches.
19:13:44evansubclassing these happens little enough that i'm willing to wait and see.
19:14:17brixenand the more ppl run their code on rbx, the more they will fix this stuff in their own code
19:14:50brixenwe should not make kernel code ugly because Ruby programmers have lived in a world of isolated C code under their ruby code for so long
19:14:56brixenit's why we can't have nice things
19:15:12evanyes, i'm willing to push back.
19:15:17brixenindeed
19:15:20binary42brixen: Fair enough but I can think of dozens of lame rails ivar names that killed me.
19:15:32brixenbinary42: I can imagine
19:18:14boyscoutFix a whole bunch of warnings in the OpenSSL extension - d53a96d - Dirkjan Bussink
19:21:27brixenheh interesting that english has such a rich vocab for "many": bunches, lots and lots, gobs, oodles, shitton, bucketloads...
19:24:30boyscoutCI: rubinius: d53a96d successful: 3037 files, 11971 examples, 36275 expectations, 0 failures, 0 errors
20:19:18kronos_vanoevan, Array#hash is pretty strange. I think we should rewrite it.
20:19:27evanyeah, it's weird
20:19:29evango for it.
20:37:35mxeyI am not sure if this issue qualifies for a ticket, so I am asking here first. I just compiled a fresh Git clone of Rubinius. When I start rbx, it spawns two threads, one of which loops on the nanosleep syscall all the time. This is the strace -f output: http://gist.github.com/raw/316124/553ef6174f182424cfbf8237a904916c2e5067e8/gistfile1
20:52:10evanmxey: it should be doing that.
20:52:14evanthat not a bug.
20:53:00mxeyevan: It should loop instead of sleep? that does sounds wasteful to me.
20:53:17evanit's a timer thread
20:53:21evanit's doing what it should
20:53:50kronos_vanoI have only one idea: http://gist.github.com/316118 . Any suggestions?
20:54:06mxeyevan: I thought nowadays people where trying to reduce CPU wakeups to increase battery life.
20:55:43mxeyrbx shows a significant number of wakeups in my powertop.
20:56:40evanmxey: we haven't done anything related to wakeups
20:57:05mxeyAre you planning to at some point?
20:57:11evanwe need the timer thread
20:57:15evanso not off hand, no.
20:57:19evani'm open to suggestions
20:57:31mxeyi see.
21:00:07evanmxey: MRI uses a timer thread as well
21:00:29mxeyi know. I thought I might have more luck with Rubinius, it all seemed more reasonable ;)
21:00:38mxeythey ignored my issue altogether.
21:00:55evanwell, we need the timer to do GIL release atm
21:01:08evanif you can help out with that, i'm happy to do it another way
21:01:12mxeyDo you need GIL release if there is only one thread?
21:01:13evantimer wise
21:01:21evanno, I suppose not
21:01:25evanwe could lazily start the timer thread
21:02:10mxeythat sounds good.
21:04:17mxeyevan: But no, I cannot help you. I have no idea at all about Rubinius internals or interpreter development in general.
21:11:15evanmxey: go ahead and open a ticket
21:11:22evanand reference this conversation
21:11:28evani might be able to do that later today
21:11:31evanit should be an easy fix
21:11:37mxeyevan: Lazy starting the thread?
21:11:44evanyah
21:11:48evanlazy starting of the timer thread
21:12:12mxeythanks :)
21:12:15evannp.
21:14:23evankronos_vano: why the mask?
21:14:29evanyou haven't really changed it
21:16:14mxeyevan: Any label I should add?
21:16:34kronos_vanoif array.size will be equal to Fixnum::MAX after =<< 1 we'll get Bignum
21:16:55mxeyhm, i cannot apply them anyway.
21:17:19kronos_vanomxey, only commiters can apply its
21:17:35kronos_vanoif you about labels in issues)
21:17:50mxeyi see.
21:19:03kronos_vanoMRI use h = (h << 1) | (h<0 ? 1 : 0); but << for ruby and C is diffrent
21:19:32kronos_vanoh is hash_value here
21:54:13evankronos_vano: ok
21:54:19evanwhy the << in there at all?
21:55:15DefilerHuh, I didn't know about these special names/commands you could pass to 'trap'
21:55:30Defilere.g. 'IGNORE' and 'DEFAULT'
21:55:36evanyeah
21:55:39evanweird huh.
21:55:47evanthere is a magical "EXIT" one too
21:55:55evanthats basically a very old form of at_exit
21:56:01DefilerOh, so I see
21:56:11DefilerI misread that part and assumed it was still talking about SIGEXIT
21:56:29Defileror signal 0 at least heh
22:01:45kronos_vanoevan, Because hash function for array should affects not only element, but also element's index. I try to reproduce MRI but I can't do "h = (h << 1) | (h<0 ? 1 : 0)" so I use & and <<. And, it is just idea :). but it pass all specs.
22:02:19evankronos_vano: just also do ^= idx
22:51:28evanwow
22:51:31evanDefiler: you'll love this bug.
22:51:53evanlet me know when you're around, i'll tell ya about it.
22:53:27Defilerhit me
22:53:51evanthe code looks something like this
22:54:12evanbegin; raise "whatever"; rescue Blah; puts "something"; end
22:54:29DefilerOK
22:54:30evanthe raise isn't going to match Blah
22:54:37evanBlah isn't a RuntimeError
22:54:51evanso it should get passed up to the caller
22:54:57evannormally no problem
22:54:58evanBUT
22:55:27evanif Blah triggers an autoload
22:55:30DefilerHhaahahah
22:55:33Defilerhahaa
22:55:38evan:D
22:55:39Defilerpeople autoload exception classes?
22:55:47evanrails does!
22:55:49DefilerThat is.. fantastic
22:56:04evanand thusly, the autoload wipes out the current exception
22:56:09Defilerand let me guess.. those files that get loaded are themselves full of rescue clauses
22:56:14evanand the reraise asserts
22:56:21evanactually in this case
22:56:28evanthe autoloaded file did a long return
22:56:33evanwhich wiped out the current exception
22:56:40BrianRice-workhuh
22:56:49Defilercircus_of_pain.rb
22:57:05evanhilarious.
22:57:06BrianRice-work*thinks* slate's autoload doesn't do that
22:57:35evanthankfully
22:57:42evanwe've dealt with this sort of thing so often
22:57:45DefilerYeah
22:57:45evanit's easy to fix
22:57:50evanDefiler: oh, i might not have seen
22:57:54DefilerI would have thought the existing 'exception stack manager' code would have handled this case
22:57:57evani while back I added stack locals
22:58:02evana while back, rather.
22:58:24evanthey're locals completely seperatly from ruby's concept of a local variable
22:58:31Defileraah, perfect for this then
22:58:34evanthey're extremely simple
22:58:40evanthey're just stored at the top of the stack
22:58:42Defilerone of the stack locals could be an array of $!s
22:58:46evaner, the bottom
22:59:20evan # Save the current exception into a stack local
22:59:20evan g.push_exception
22:59:21evan current_exc = g.new_stack_local
22:59:23evan g.set_stack_local current_exc
22:59:25evan g.pop
22:59:35evancompletely hidden from ruby's idea of a local
22:59:51evanit's a really nice feature
22:59:53Defilersweetness
23:00:04evanbecause it solves the "the value I need is on the stack, but I don't know how many values away"
23:00:06evanproblem
23:00:20evanstack locals let you address the stack directly
23:00:33evanit's basicaly like adding registers to the stack machine
23:01:00DefilerYeah, could get tricky as hell if anything complex were stored there
23:01:39evani added them because of things like break out of a begin
23:01:51evanwhere you need to reset the exception
23:01:56evanbut the break could be like
23:02:06DefilerI guess another way to say it is that when you add an escape hatch in order to handle some tricky semantics..
23:02:15evanbreak lots, of, things
23:02:21Defiler..you probably shouldn't use that hatch to build more semantics, because then it is going to need another hatch
23:02:32evanie, the stack distance to a saved exception isn't known at compile time