Show enters and exits. Hide enters and exits.
| 00:00:27 | evan | i'm not sure how jakedouglas's patch passed the return/break in Fiber specs |
| 00:00:32 | evan | but they don't here |
| 00:00:36 | evan | so I retagged them. |
| 00:00:57 | boyscout | CI: rubinius: df9f746 successful: 3498 files, 14389 examples, 42167 expectations, 0 failures, 0 errors |
| 00:03:01 | brixen | hmm, that would be the 2nd time |
| 00:03:11 | brixen | I just retagged them last night |
| 00:03:18 | brixen | I wonder what the issue is... |
| 00:03:53 | brixen | evan: that exception needs to be raised in the interpreter when it handles a break or return, right? |
| 00:04:51 | evan | yeah |
| 00:04:55 | evan | thats doable actually |
| 00:06:14 | evan | we should check what #caller is supposed to be in a Fiber |
| 00:06:22 | evan | if it can just go as high as the current fiber's start |
| 00:06:31 | evan | then we can pretty easily fix that, I think. |
| 00:06:44 | evan | oh actually.. hm.. |
| 00:07:00 | evan | i see |
| 00:07:18 | evan | the interpreter is raising that exception probably |
| 00:07:27 | evan | but it's being swallowed |
| 00:07:37 | evan | it has to be saved and raised when #resume is called |
| 00:07:42 | evan | thats probably true of all exceptions |
| 00:07:43 | evan | actually. |
| 00:08:15 | evan | jakedouglas's code implied that Fiber::value_ could be stored as 0 |
| 00:08:19 | evan | which is totally invalid |
| 00:08:26 | evan | so I removed that |
| 00:09:17 | evan | it's possible thats what allowed that code to work |
| 00:09:25 | evan | but it's an entirely invalid way to handle it. |
| 00:09:47 | jakedouglas | hi |
| 00:09:58 | evan | hi hi |
| 00:10:01 | jakedouglas | how do those specs work on my machine and on CI but not on yours |
| 00:10:16 | evan | well, try them again with my last change |
| 00:10:19 | jakedouglas | oh. |
| 00:10:22 | evan | i might have made them not pass |
| 00:10:31 | evan | but that would be only because they passed via invalid code. |
| 00:11:00 | jakedouglas | regarding 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:31 | evan | the way I fixed it is the way it should be done. |
| 00:11:35 | evan | 0 should never be assigned to the heap |
| 00:11:38 | jakedouglas | ok. ill look at it. |
| 00:11:39 | evan | even temporarily. |
| 00:11:44 | jakedouglas | sure |
| 00:11:49 | jakedouglas | is that documented somewhere? |
| 00:12:04 | evan | no, it's like gravity |
| 00:12:06 | evan | we just know it. |
| 00:12:10 | evan | and it's the law. |
| 00:12:17 | jakedouglas | ok |
| 00:12:26 | jakedouglas | you realize that new people dont know that, right? |
| 00:12:51 | evan | I could see that, sure |
| 00:12:57 | evan | this rarely is seen by new people. |
| 00:13:04 | jakedouglas | its gravity to you but i had no idea |
| 00:13:09 | jakedouglas | or i mean |
| 00:13:16 | evan | sure, we need to work on our docs |
| 00:13:22 | jakedouglas | i eventually understood it was causing crashes |
| 00:13:23 | evan | no need to get snippy :D |
| 00:13:34 | jakedouglas | but i thought my way was totally reasonable |
| 00:14:02 | evan | which way? |
| 00:14:06 | evan | before I changed it? |
| 00:14:14 | jakedouglas | yea |
| 00:14:19 | evan | well |
| 00:14:26 | evan | your code didn't actually assign 0 to value_ |
| 00:14:33 | evan | but you had some code to check if value_ was 0 |
| 00:14:38 | jakedouglas | if 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:51 | evan | sure sure |
| 00:14:57 | evan | you're new, I gotcha |
| 00:14:58 | evan | it's no problem. |
| 00:15:01 | jakedouglas | right :) |
| 00:15:12 | brixen | better docs coming RSN! :) |
| 00:16:20 | jakedouglas | evan: i understand what you're doing now. however, "if(ret->nil_p()) return Qnil;" actually needs to return 0 instead of Qnil |
| 00:16:34 | evan | well |
| 00:16:35 | evan | no. |
| 00:16:47 | evan | not without doing other stuff first |
| 00:16:53 | jakedouglas | ok. then how do I tell it that there was an exception? that's what brixen indicated i should do |
| 00:17:07 | evan | 0 is only valid if there is a current exceptional reason |
| 00:17:29 | evan | what you need to do likely is be saving the exception that is being raised in start_on_stack |
| 00:17:42 | evan | then reraise it in resume |
| 00:17:48 | jakedouglas | ok. how do i do that? |
| 00:17:51 | evan | don't just expect that it's still in the global. |
| 00:19:02 | evan | you use state->thread_state() |
| 00:19:07 | evan | which is a ThreadState object |
| 00:19:34 | evan | if you'll want to do something like: |
| 00:20:00 | evan | if(state->thread_state()->raise_reason() == cException) { |
| 00:20:18 | evan | fib->exception(state, state->thread_state()->current_exception()); |
| 00:20:47 | jakedouglas | k |
| 00:20:49 | jakedouglas | ill try that. |
| 00:21:20 | evan | and then in #resume |
| 00:21:30 | evan | if(!fib->exception()->nil_p()) { |
| 00:22:02 | evan | state->thread_state()->raise_exception(fib->exception()); |
| 00:22:07 | evan | return 0 |
| 00:22:08 | evan | ; |
| 00:22:08 | evan | } |
| 00:22:16 | jakedouglas | k |
| 00:27:00 | evan | jakedouglas: Fiber was an ambitious undertaking for a new dev |
| 00:27:13 | evan | you've hit a lot of things that devs learn a bit at a time |
| 00:27:25 | jakedouglas | what better way? |
| 00:27:35 | jakedouglas | to get acquainted |
| 00:27:58 | evan | there isn't necesarrily one |
| 00:28:05 | evan | i'm only speaking of what has occured in the past |
| 00:28:07 | Defiler | Yeah, just be prepared to hit some fun stuff |
| 00:28:12 | evan | I never set down a path |
| 00:28:57 | jakedouglas | hitting 'fun stuff' is no problem, i dont expect to be able to implement without having to figure things out |
| 00:29:12 | evan | of course not |
| 00:29:20 | jakedouglas | if you have an open commit policy then you have to expect that people are going to commit things you disagree with |
| 00:29:21 | evan | this is a learn process for all of us |
| 00:29:33 | evan | jakedouglas: right, and so we correct them |
| 00:29:40 | evan | i didn't revert your stuff, just fixed it :) |
| 00:29:42 | jakedouglas | and please dont ever expect that stuff about a garbage collector is 'gravity' to anyone other than you :) |
| 00:30:23 | jakedouglas | if there was a 'learn to hack on rbx' class i would enroll |
| 00:30:26 | jakedouglas | this is the next best thing |
| 00:30:44 | evan | jakedouglas: i was joking :) |
| 00:30:57 | evan | you're new, you don't know my fun playful tone yet :) |
| 00:31:01 | jakedouglas | heh |
| 00:31:23 | evan | a hacking rubinius class would be a lot of fun |
| 00:31:29 | evan | i'd be happy to have a webinar or something |
| 00:31:32 | jakedouglas | just saying, unwritten rules don't mean anything to new people like me |
| 00:31:38 | evan | i know :) |
| 00:31:41 | evan | we need to do better. |
| 00:32:16 | jakedouglas | i 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:25 | Defiler | Having 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:32 | Defiler | It's more of a back-and-forth conversation |
| 00:32:51 | Defiler | Sometimes you learn by having your code improved after you push it |
| 00:33:26 | Defiler | The 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:46 | evan | jakedouglas: don't worry, you didn't know |
| 00:33:47 | evan | thus the back and forth |
| 00:33:52 | evan | and thats why I monitor new user commits. |
| 00:34:56 | jakedouglas | :) |
| 00:37:07 | evan | all right boys |
| 00:37:08 | evan | i'm off |
| 00:37:09 | evan | later! |
| 00:37:20 | jakedouglas | cya. |
| 01:57:32 | bakkdoor | are there any ubuntu packages for rubinius yet? |
| 01:58:11 | brixen | not that I know of |
| 01:59:24 | bakkdoor | alright. i can make one then :) |
| 01:59:32 | Defiler | The big problem with success is that eventually people make a debian package out of you |
| 01:59:42 | brixen | haha |
| 01:59:55 | bakkdoor | Defiler: ? |
| 02:00:03 | bakkdoor | oO |
| 02:00:20 | Defiler | Sorry, the debian package situation for ruby has been so hilariously bad for so many years, I can't help but smile |
| 02:01:15 | Defiler | As 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:58 | slava | Defiler: hahahaha |
| 02:01:59 | Defiler | make sure to have one of the important packages not have the string 'rbx' in it as well |
| 02:02:05 | Defiler | so it doesn't show up in dpkg grep |
| 02:02:22 | bakkdoor | Defiler: i'd name it rubinius simply. and only one package |
| 02:03:16 | dwaite | brixen so how did it go? |
| 02:03:30 | brixen | dwaite: pretty good |
| 02:03:51 | brixen | there were mostly glazed eyes, but I'm guessing the 'eureka' moment will hit any time now |
| 02:04:17 | dwaite | I kinda want rbx-essential-dev |
| 02:04:46 | dwaite | why do java web frameworks suck so hard? |
| 02:04:56 | dwaite | I seriously am considering just dropping this thing and going with straight JSP |
| 02:05:30 | brixen | dwaite: that would probably be a step |
| 02:05:32 | brixen | up |
| 02:05:33 | dwaite | hell, straight servlets and responseStream.write |
| 02:05:52 | dwaite | its just a component based framework for building web-based applications |
| 02:06:12 | brixen | I worked for a guy once who insisted I use PSP directly instead of Rails |
| 02:06:20 | brixen | I worked there for about 4 weeks longer |
| 02:06:51 | dwaite | component-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:00 | dwaite | kinda like ASP.Net, except you can't ignore the component aspects ;-) |
| 02:07:24 | dwaite | he insisted you do development on a PSP? |
| 02:07:57 | dwaite | seems you could have readily explained the productivity hit from having to type code on a DPAD rather than a full keyboard |
| 02:08:29 | brixen | python server pages |
| 02:08:30 | dwaite | also, as long as I'm complaining. Why do customers report non-production-down problems at 8 pm on a friday |
| 02:08:55 | brixen | because customers hate america and small kittens |
| 02:09:37 | dwaite | I just don't get it |
| 02:10:14 | dwaite | maybe our product is just so cool, people want to spend their friday nights tinkering with it, requesting licenses, etc. |
| 03:12:20 | jakedouglas | i cant get fibers to work again the way evan told me :( |
| 03:38:14 | dwaite | so despite the additional fiber, rubinius is still behaving a bit .. irregular? |
| 03:40:29 | Defiler | hahaha |
| 13:21:37 | boyscout | Add Marshal.dump spec that results in a space at the end of the string - 6087ae2 - Dirkjan Bussink |
| 13:21:38 | boyscout | Don't use rstrip, since that can result in accidently stripping valid white space - ccabb7a - Dirkjan Bussink |
| 13:30:12 | boyscout | CI: rubinius: ccabb7a successful: 3498 files, 14391 examples, 42169 expectations, 0 failures, 0 errors |
| 21:15:31 | jakedouglas | sup |
| 21:20:21 | boyscout | re-implement fiber exception propagation per evan's suggestions, and remove tags for specs that pass again. - f078d72 - Jake Douglas |
| 21:20:21 | boyscout | Fix IO#write_nonblock to raise on an unwritable IO even if data to write is 0 bytes - d9f126e - Jake Douglas |
| 21:20:21 | boyscout | Remove failing tags for IO#write_nonblock specs - 21b519e - Jake Douglas |
| 21:20:21 | boyscout | IO#reopen fixes - 4865373 - Jake Douglas |
| 21:20:21 | boyscout | Remove failing tag for IO#reopen - 3b1a582 - Jake Douglas |
| 21:33:05 | boyscout | CI: rubinius: 3b1a582 successful: 3498 files, 14395 examples, 42175 expectations, 0 failures, 0 errors |
| 22:08:19 | boyscout | There have been a bunch of Thread#raise fixes and this doesn't seem to occur anymore - 3ed7b80 - Dirkjan Bussink |
| 22:16:59 | boyscout | CI: rubinius: 3ed7b80 successful: 3498 files, 14400 examples, 42181 expectations, 0 failures, 0 errors |
| 22:19:13 | jakedouglas | anyone around? |
| 23:56:31 | dwaite | waves |