Index

Show enters and exits. Hide enters and exits.

00:00:27evani'm not sure how jakedouglas's patch passed the return/break in Fiber specs
00:00:32evanbut they don't here
00:00:36evanso I retagged them.
00:00:57boyscoutCI: rubinius: df9f746 successful: 3498 files, 14389 examples, 42167 expectations, 0 failures, 0 errors
00:03:01brixenhmm, that would be the 2nd time
00:03:11brixenI just retagged them last night
00:03:18brixenI wonder what the issue is...
00:03:53brixenevan: that exception needs to be raised in the interpreter when it handles a break or return, right?
00:04:51evanyeah
00:04:55evanthats doable actually
00:06:14evanwe should check what #caller is supposed to be in a Fiber
00:06:22evanif it can just go as high as the current fiber's start
00:06:31evanthen we can pretty easily fix that, I think.
00:06:44evanoh actually.. hm..
00:07:00evani see
00:07:18evanthe interpreter is raising that exception probably
00:07:27evanbut it's being swallowed
00:07:37evanit has to be saved and raised when #resume is called
00:07:42evanthats probably true of all exceptions
00:07:43evanactually.
00:08:15evanjakedouglas's code implied that Fiber::value_ could be stored as 0
00:08:19evanwhich is totally invalid
00:08:26evanso I removed that
00:09:17evanit's possible thats what allowed that code to work
00:09:25evanbut it's an entirely invalid way to handle it.
00:09:47jakedouglashi
00:09:58evanhi hi
00:10:01jakedouglashow do those specs work on my machine and on CI but not on yours
00:10:16evanwell, try them again with my last change
00:10:19jakedouglasoh.
00:10:22evani might have made them not pass
00:10:31evanbut that would be only because they passed via invalid code.
00:11:00jakedouglasregarding Fiber::value_, i reasoned that GC couldn't run before I set it to Qnil. apparently you don't like that though. what would you rather i do?
00:11:31evanthe way I fixed it is the way it should be done.
00:11:35evan0 should never be assigned to the heap
00:11:38jakedouglasok. ill look at it.
00:11:39evaneven temporarily.
00:11:44jakedouglassure
00:11:49jakedouglasis that documented somewhere?
00:12:04evanno, it's like gravity
00:12:06evanwe just know it.
00:12:10evanand it's the law.
00:12:17jakedouglasok
00:12:26jakedouglasyou realize that new people dont know that, right?
00:12:51evanI could see that, sure
00:12:57evanthis rarely is seen by new people.
00:13:04jakedouglasits gravity to you but i had no idea
00:13:09jakedouglasor i mean
00:13:16evansure, we need to work on our docs
00:13:22jakedouglasi eventually understood it was causing crashes
00:13:23evanno need to get snippy :D
00:13:34jakedouglasbut i thought my way was totally reasonable
00:14:02evanwhich way?
00:14:06evanbefore I changed it?
00:14:14jakedouglasyea
00:14:19evanwell
00:14:26evanyour code didn't actually assign 0 to value_
00:14:33evanbut you had some code to check if value_ was 0
00:14:38jakedouglasif i didnt think it was reasonable i wouldn't have committed it to your codebase. im not trying to write malicious or mediocre code
00:14:51evansure sure
00:14:57evanyou're new, I gotcha
00:14:58evanit's no problem.
00:15:01jakedouglasright :)
00:15:12brixenbetter docs coming RSN! :)
00:16:20jakedouglasevan: i understand what you're doing now. however, "if(ret->nil_p()) return Qnil;" actually needs to return 0 instead of Qnil
00:16:34evanwell
00:16:35evanno.
00:16:47evannot without doing other stuff first
00:16:53jakedouglasok. then how do I tell it that there was an exception? that's what brixen indicated i should do
00:17:07evan0 is only valid if there is a current exceptional reason
00:17:29evanwhat you need to do likely is be saving the exception that is being raised in start_on_stack
00:17:42evanthen reraise it in resume
00:17:48jakedouglasok. how do i do that?
00:17:51evandon't just expect that it's still in the global.
00:19:02evanyou use state->thread_state()
00:19:07evanwhich is a ThreadState object
00:19:34evanif you'll want to do something like:
00:20:00evanif(state->thread_state()->raise_reason() == cException) {
00:20:18evan fib->exception(state, state->thread_state()->current_exception());
00:20:47jakedouglask
00:20:49jakedouglasill try that.
00:21:20evanand then in #resume
00:21:30evanif(!fib->exception()->nil_p()) {
00:22:02evan state->thread_state()->raise_exception(fib->exception());
00:22:07evan return 0
00:22:08evan;
00:22:08evan}
00:22:16jakedouglask
00:27:00evanjakedouglas: Fiber was an ambitious undertaking for a new dev
00:27:13evanyou've hit a lot of things that devs learn a bit at a time
00:27:25jakedouglaswhat better way?
00:27:35jakedouglasto get acquainted
00:27:58evanthere isn't necesarrily one
00:28:05evani'm only speaking of what has occured in the past
00:28:07DefilerYeah, just be prepared to hit some fun stuff
00:28:12evanI never set down a path
00:28:57jakedouglashitting 'fun stuff' is no problem, i dont expect to be able to implement without having to figure things out
00:29:12evanof course not
00:29:20jakedouglasif you have an open commit policy then you have to expect that people are going to commit things you disagree with
00:29:21evanthis is a learn process for all of us
00:29:33evanjakedouglas: right, and so we correct them
00:29:40evani didn't revert your stuff, just fixed it :)
00:29:42jakedouglasand please dont ever expect that stuff about a garbage collector is 'gravity' to anyone other than you :)
00:30:23jakedouglasif there was a 'learn to hack on rbx' class i would enroll
00:30:26jakedouglasthis is the next best thing
00:30:44evanjakedouglas: i was joking :)
00:30:57evanyou're new, you don't know my fun playful tone yet :)
00:31:01jakedouglasheh
00:31:23evana hacking rubinius class would be a lot of fun
00:31:29evani'd be happy to have a webinar or something
00:31:32jakedouglasjust saying, unwritten rules don't mean anything to new people like me
00:31:38evani know :)
00:31:41evanwe need to do better.
00:32:16jakedouglasi understood what writing 0 to a heap pointer did, i reasoned and tested that my solution didnt cause any problems, so i had no way to infer that unwritten rule
00:32:25DefilerHaving observed a ton of devs joining the project over the years, I'm not sure there is any one set of things you could say to them to really help
00:32:32DefilerIt's more of a back-and-forth conversation
00:32:51DefilerSometimes you learn by having your code improved after you push it
00:33:26DefilerThe list of 'yeah it's best to do this this way..' would be so massive that it would become a thing that needed maintenance in its own right
00:33:46evanjakedouglas: don't worry, you didn't know
00:33:47evanthus the back and forth
00:33:52evanand thats why I monitor new user commits.
00:34:56jakedouglas:)
00:37:07evanall right boys
00:37:08evani'm off
00:37:09evanlater!
00:37:20jakedouglascya.
01:57:32bakkdoorare there any ubuntu packages for rubinius yet?
01:58:11brixennot that I know of
01:59:24bakkdooralright. i can make one then :)
01:59:32DefilerThe big problem with success is that eventually people make a debian package out of you
01:59:42brixenhaha
01:59:55bakkdoorDefiler: ?
02:00:03bakkdooroO
02:00:20DefilerSorry, the debian package situation for ruby has been so hilariously bad for so many years, I can't help but smile
02:01:15DefilerAs long as you don't chop rbx up into rbx-essential rbx-llvm rbx-compiler librbx0 and rbx-dev it will all be fine
02:01:58slavaDefiler: hahahaha
02:01:59Defilermake sure to have one of the important packages not have the string 'rbx' in it as well
02:02:05Defilerso it doesn't show up in dpkg grep
02:02:22bakkdoorDefiler: i'd name it rubinius simply. and only one package
02:03:16dwaitebrixen so how did it go?
02:03:30brixendwaite: pretty good
02:03:51brixenthere were mostly glazed eyes, but I'm guessing the 'eureka' moment will hit any time now
02:04:17dwaiteI kinda want rbx-essential-dev
02:04:46dwaitewhy do java web frameworks suck so hard?
02:04:56dwaiteI seriously am considering just dropping this thing and going with straight JSP
02:05:30brixendwaite: that would probably be a step
02:05:32brixenup
02:05:33dwaitehell, straight servlets and responseStream.write
02:05:52dwaiteits just a component based framework for building web-based applications
02:06:12brixenI worked for a guy once who insisted I use PSP directly instead of Rails
02:06:20brixenI worked there for about 4 weeks longer
02:06:51dwaitecomponent-based meaning, you are not really dealing in terms of HTML, and web-based applications as in, looks like a GUI app, and all you have to give up on is REST, the back button, bookmarkability and the ability to edit your HTML without implementation knowledge of the framework
02:07:00dwaitekinda like ASP.Net, except you can't ignore the component aspects ;-)
02:07:24dwaitehe insisted you do development on a PSP?
02:07:57dwaiteseems you could have readily explained the productivity hit from having to type code on a DPAD rather than a full keyboard
02:08:29brixenpython server pages
02:08:30dwaitealso, as long as I'm complaining. Why do customers report non-production-down problems at 8 pm on a friday
02:08:55brixenbecause customers hate america and small kittens
02:09:37dwaiteI just don't get it
02:10:14dwaitemaybe our product is just so cool, people want to spend their friday nights tinkering with it, requesting licenses, etc.
03:12:20jakedouglasi cant get fibers to work again the way evan told me :(
03:38:14dwaiteso despite the additional fiber, rubinius is still behaving a bit .. irregular?
03:40:29Defilerhahaha
13:21:37boyscoutAdd Marshal.dump spec that results in a space at the end of the string - 6087ae2 - Dirkjan Bussink
13:21:38boyscoutDon't use rstrip, since that can result in accidently stripping valid white space - ccabb7a - Dirkjan Bussink
13:30:12boyscoutCI: rubinius: ccabb7a successful: 3498 files, 14391 examples, 42169 expectations, 0 failures, 0 errors
21:15:31jakedouglassup
21:20:21boyscoutre-implement fiber exception propagation per evan's suggestions, and remove tags for specs that pass again. - f078d72 - Jake Douglas
21:20:21boyscoutFix IO#write_nonblock to raise on an unwritable IO even if data to write is 0 bytes - d9f126e - Jake Douglas
21:20:21boyscoutRemove failing tags for IO#write_nonblock specs - 21b519e - Jake Douglas
21:20:21boyscoutIO#reopen fixes - 4865373 - Jake Douglas
21:20:21boyscoutRemove failing tag for IO#reopen - 3b1a582 - Jake Douglas
21:33:05boyscoutCI: rubinius: 3b1a582 successful: 3498 files, 14395 examples, 42175 expectations, 0 failures, 0 errors
22:08:19boyscoutThere have been a bunch of Thread#raise fixes and this doesn't seem to occur anymore - 3ed7b80 - Dirkjan Bussink
22:16:59boyscoutCI: rubinius: 3ed7b80 successful: 3498 files, 14400 examples, 42181 expectations, 0 failures, 0 errors
22:19:13jakedouglasanyone around?
23:56:31dwaitewaves