|
Parrot 4.2.0 "Ornithopter" | parrot.org | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC Set by moderator on 21 March 2012. |
|||
| araq_bnc | though I guess the GCs can maintain a reference counter for shared objects | 00:02 | |
| ok, I'll return and ask nine for all the details :-) | 00:03 | ||
| good night | |||
| whiteknight | good night | 00:05 | |
|
00:05
araq_bnc left
|
|||
| whiteknight | msg nine if I call PARROT_ASSERT_INTERP at src/threads.c:250, the assertion fails in alloc_more.pir | 00:05 | |
| aloha | OK. I'll deliver the message. | ||
| whiteknight | wait, that's probably a false alarm | 00:10 | |
| msg nine that last one was a false alarm. However, I am seeing occasional assertion failures in src/pmc/namespace.pmc:set_class() | 00:27 | ||
| aloha | OK. I'll deliver the message. | ||
|
00:44
kid51 joined
01:05
benabik joined
01:27
particle joined
|
|||
| dalek | sella: dd8e880 | Whiteknight++ | / (2 files): [Xml] rewrite __parse_quoted to be more accurate. Add more tests and cleanup the test file |
01:32 | |
| sella: 632875c | Whiteknight++ | src/ (3 files): [Xml] Use a feature from StringIterator to write an inline for current string position. Use it to add position information to Tag and children, and to improve error messages |
|||
| benabik | ~~ | 01:33 | |
| whiteknight | hello benabik | 01:34 | |
| brrt: ping | 01:47 | ||
| msg brrt we're running out of time for GSOC. As soon as you can, please upload your proposal at google-melange.com. Create an account, submit it to the Parrot organization. We can do review and feedback on there. | 01:48 | ||
| aloha | OK. I'll deliver the message. | ||
| dalek | sella: b43ea6c | Whiteknight++ | s (3 files): [Json] Move parsing code into a separate file/namespace. Add position information to error messages |
01:56 | |
| whiteknight | and with that, bed | 01:57 | |
| goodnight | |||
| benabik | 'night | ||
|
03:48
alester_ joined
03:52
jsut joined
04:51
brrt joined
06:36
Khisanth joined
|
|||
| nine | Good morning, #parrot | 06:51 | |
|
06:52
kurahaupo joined
|
|||
| tadzik | good morning nine | 07:17 | |
| nine | Ah, why can't I just skip $work and go directly to hacking on parrot? | 07:27 | |
| tadzik | oh, the cruel world | 07:34 | |
| nine | indeed | 07:43 | |
| tadzik | at least we can idle on the irc :) | 07:47 | |
| moritz | work? it's a holliday here | 07:58 | |
| nine | Ah yes, in Germany it is. Not in Austria though | 08:11 | |
| tadzik | it's holiday-ish in Poland. Buses go with the holiday schedule, but most people work I think. Monday is free though | 08:18 | |
| nine | (Easter Monday)++ | ||
|
08:31
PacoAir joined
09:59
araq_bnc joined
|
|||
| araq_bnc | ping nine | 10:00 | |
| nine | araq_bnc: pong | ||
| araq_bnc | oh yay | ||
| how do the proxies work in detail? | |||
| (I'm talking about the GC and threading) | |||
| I saw that the GC's write barrier needs to care about these shared objects, is that right? | 10:01 | ||
| nine | araq_bnc: you might want to have a look at niner.name/Hybrid_Threads_for_the_Parrot_VM.pdf | ||
| araq_bnc: proxies act as barrier for the GC. The GC does not follow the reference to the other thread's object. | 10:02 | ||
| araq_bnc: the proxies themselves are allocated on the thread that is using them | |||
| araq_bnc | ok, but how is it ensured that the object is not free'd prematurately by the owning heap/GC? | 10:03 | |
| nine | araq_bnc: when a thread is scheduling a task on another thread, a copy of the task is created locally on this other thread. Prior all objects shared with the tasks have to be pushed onto the task's shared list. When the local copy of the task is created, proxies are created for all these shared objects. So the originating thread has the original task object containing references to all shared objects while the thread executing the task holds the reference to the | 10:06 | |
| araq_bnc: so in short: the thread creating the task is responsible for keeping the references to shared objects. But this is done in the interpreter itself (a thread's scheduler contains a list of all its tasks running on other threads) | 10:07 | ||
| araq_bnc | ok, so it only frees shared objects once the "foreign task" is done? | 10:08 | |
| nine | exactly | ||
| araq_bnc | ok, nice solution | 10:12 | |
| how is the foreign GC prevented from messing with the write barrier? | |||
| nine | The Proxy object has the custom_mark flag set, so it's itself responsible for marking its data. And it simply does nothing in its mark method. | 10:13 | |
| araq_bnc | ok, how does the write barrier work exactly? I saw it's code, but there is "dirty" check in a macro which I don't entirely get yet | 10:15 | |
| when is an object dirty? if one of its fields has been modified? | 10:19 | ||
| when exactly is the write barrier invoked? for each pointer assignment? | |||
| nine | araq_bnc: the write barrier in the GC is not threading related. It's just a way to tell the GC that an object got new references so these have to be checked in the next GC run | ||
| araq_bnc | well it contains locks ... | 10:20 | |
| nine | araq_bnc: are you on the threads_playground branch? | 10:22 | |
| araq_bnc | I think so: github.com/parrot/parrot/tree/threads | 10:23 | |
| nine | araq_bnc: no that's the threads branch containing all stuff where I know it's useful. Strange because I only have the write barrier lock in the threads_playground branch where I'm just trying stuff | 10:24 | |
| araq_bnc: where do you see that lock? | 10:25 | ||
| araq_bnc | hm, must have looked at the wrong file, can't find it anymore | 10:32 | |
| so when is gc_gms_write_barrier() called? | 10:33 | ||
| nine | araq_bnc: after any PMC attribute got changed. | 10:34 | |
| It's basically moving the object back to the youngest generation | |||
| araq_bnc | well in the threads_playground branch there is: | 10:37 | |
| if (interp->thread_data) | |||
| LOCK(interp->thread_data->interp_lock); | |||
| so basically 'obj.field = x' triggers the write barrier, but not 'obj = x'? | 10:38 | ||
| moritz | what is 'obj' in 'obj = x'? | 10:44 | |
| araq_bnc | a local variable | 10:46 | |
| of type PMC* I guess | 10:47 | ||
| moritz | no, that doesn't trigger a write barrier. And why should it? | ||
| nine | if the local variable is a register, I think it actually does | ||
| moritz | that's why I asked what it is. If it's a local variable in C, it's not a register, is it? | 10:48 | |
| I mean, not a parrot register | |||
| nine | in this case not | ||
| To be precise, 'obj.field = x' in C does not trigger a write barrier either. But in this case it's mandatory for the programmer to do it. | 10:49 | ||
| araq_bnc | so effectively the write barrier is not invoked for stack slots | 10:52 | |
| nine | araq_bnc: true | ||
| araq_bnc | ok good | ||
| nine | araq_bnc: it's just a neccessity because the GC is generational | ||
| araq_bnc | I know ;-) | ||
| so why is "LOCK(interp->thread_data->interp_lock);" part of the write barrier? | 10:53 | ||
| nine | araq_bnc: the reason for all the locks in the GC is that I have to allocate proxies somewhere. In some cases I have to do it from another thread and without the locks this would lead to all sorts of concurrency issues in the GC. | 10:57 | |
| I hope to get rid of them in the long run (for example by pre-allocating proxies) but for now it seemed like the simplest way to get things working and reach a stable base from wich to further optimize | 10:58 | ||
| araq_bnc | yeah but it's a principle problem | 11:09 | |
| nine | ? | ||
| araq_bnc | if thread B creates part of data structure for thread A, it has to use A's allocator/GC, or you need an ownership transfer | 11:10 | |
| nine | Exactly. But since all I have to allocate are proxies, I can just keep a pool of pre-allocated proxies for each thread which other threads can use and therefore avoid allocating alltogether | 11:11 | |
| araq_bnc | ok, but what if I have an array of strings and want it to fill in parallel? | 11:14 | |
| that's not supported, right? | 11:15 | ||
| nine | araq_bnc: that's a situation where our threading architecture just sucks :) Since writes to shared data are only allowed on the thread owning the data, one cannot write in parallel to a single object. | ||
| That's I think the biggest performance problem with my threaded matrix multiplication benchmark. Calculations are very fast, but the results have to be copied back to the results vector by the main thread | 11:17 | ||
| araq_bnc | I see; thanks for all this information | 11:29 | |
| nine | you're welcome | 11:30 | |
| araq_bnc | fyi I got rid of all the locks in nimrod's GC | 11:33 | |
| but the price is a 2-way copy for passing a message | |||
| nine | But it's good to know that there are ways. | 11:34 | |
| araq_bnc | and messages have to be deeply copied ... :-/ | ||
| and once you do that immutability gains you nothing | |||
| nine | Maybe you'll find away without that | 11:35 | |
| Even if I keep the lock in write_barrier for now I can reduce its impact. I just have to add a second concurrency safe dirty_list like I did it with block_mark. This way a single threaded program would not even have to check for interp->thread_data (though this should not even be expensive) | 11:38 | ||
|
11:41
lucian joined
|
|||
| araq_bnc | yeah well the idea to keep things alive until a task's completion is a good one | 11:42 | |
| that should help already | |||
| however, your write barrier looks expensive | 11:43 | ||
| what do benchmarks say about it? :-) | |||
| moritz | wow, nimrod looks interesting | 11:45 | |
| nine | I don't have numbers on this yet since it's only a test for now. And I'll get rid of it anyway. | 11:46 | |
| tadzik | Parrot 4.2.0 "Ornithopter". So 0/2 artifact creature, flying, 0/2 | 11:47 | |
| erm, s|0/2$|for 0 mana| | |||
| nine | oh yeah....I have one of those :) | 11:48 | |
| tadzik | I must've sold mine | 11:49 | |
|
11:49
brrt joined
11:53
kid51 joined
|
|||
| nine | So...off for the weekend | 11:53 | |
| tadzik | ah, lucky you | 11:55 | |
| araq_bnc | ok I have to go, see you | 11:58 | |
| tadzik | bye | ||
|
11:58
araq_bnc left
12:12
PacoAir_ joined
12:21
whiteknight joined
|
|||
| whiteknight | good morning, #parrot | 12:23 | |
| tadzik | good afternoon, whiteknight | 12:29 | |
| whiteknight | hello tadzik | 12:30 | |
|
12:30
schmooster joined
|
|||
| whiteknight | Less than 6.5 hours remaining for proposals | 12:32 | |
| nine | Good morning, whiteknight | 12:35 | |
| whiteknight | hello nine | ||
| nine: My impression is that it's some kind of GC issue, it appears that PMCs are being prematurely collected and reallocated | 12:36 | ||
| nine: Of course, that doesn't make a whole lot of sense if the PMC isn't in the pool from which the thread GC allocates PMCs in the first place | |||
| nine: in short, I have no idea what is happening | 12:38 | ||
| nine | whiteknight: yeah. What makes me a bit suspicious is that it only happens if the main thread is executing code. Sounds to me like there was still something shared between the main thread and its children | ||
| whiteknight | yeah | ||
| nine | whiteknight: of course it could only be incidental. But I'll follow this lead on the train to the weekend vacation my girlfriend thankfulle forced me on ;) | 12:39 | |
| whiteknight | I'm probably busy much of the weekend myself, but I'll spend a little bit of time looking at your branch again | 12:40 | |
| nine | It's a riddle. And a good one at that. It just has to be solved :) | 12:43 | |
| _mayank | good morning whiteknight | 12:44 | |
| whiteknight | _mayank: good morning! I saw your submission last night | ||
| nine: We're going to have to pepper PARROT_ASSERT_INTERP calls everywhere | 12:45 | ||
| gdb has been mostly useless in helping figure out where things are going wrong | |||
| _mayank | ok, any feedback/changes required? | ||
| nine | whiteknight: yes. It's just that I pretty much ran out of ideas of where to put them. they are already everywhere in the GC and on each attribute accessor and many other places | 12:46 | |
| whiteknight | _mayank: I haven't read it closely yet. I will do that now | 12:47 | |
| nine: That NameSpace.set_class assert failure is interesting to me. We can try to jam more of them into that codepath | |||
| nine | whiteknight: will do | ||
| _mayank | oh ok! I know it is quite late, but let me know if any specific changes are required. I will be online till the deadline. | 12:48 | |
| whiteknight | nine: That's the thing that makes me suspicious of GC problems, because it is showing up in that other place on my machine, and happens about 25%-50% of the time | ||
| so memory layout changes can make GC corruption bugs appear to happen in different places | |||
| nine | Like I said: a very good riddle :) | 12:49 | |
| whiteknight | nine: One thing I didn't check was whether the ->orig_interp of the faulty PMC was even a valid interpreter. If it's a real interpreter, it's a sharing issue. If it's just a random memory address it's probably some other kind of memory bounds corruption thing | ||
| maybe cachegrind or valgrind would help narrow things down in the second case | 12:50 | ||
| nine | whiteknight: AFAICS it's indeed a valid interp. Just not the one it's supposed to be | ||
| whiteknight | ok,so a sharing issue | ||
| _mayank: Deadline is in about 6 hours | 12:51 | ||
| nine | whiteknight: ok, have to catch the train now. Wish you a nice weekend in any case :) | ||
| whiteknight | nine: have fun! | ||
| _mayank | whiteknight: I am aware :) I am not sure if any changes are required or not. In case it is required, I can do it. | 12:54 | |
| whiteknight | changes will be required. I'm writing some now | ||
| _mayank | ok | ||
| I had to dig out my compilers textbook and lecture slides to revise some of the concepts :) | 12:56 | ||
| whiteknight | _mayank: I sent you an email with feedback | 13:09 | |
| _mayank | got it, going through it. | 13:10 | |
| whiteknight | Most of my feedback is about the timeline | ||
| benabik | _mayank: What's your proposal? (Just being nosy.) | 13:17 | |
| _mayank | benabik: Jaesop compiler | 13:18 | |
| benabik | _mayank: Very nice. | 13:19 | |
| whiteknight | _mayank: benabik is proposing a new library for building compilers. Some of his work may eventually help with Jaesop too, probably after the summer | 13:24 | |
| benabik | I'd imagine a year or so. :-/ It'll take a while to build back up to a user-friendly level. | 13:25 | |
| tadzik | _mayank: is your proposal published somewhere? | ||
| whiteknight | tadzik: it's on the google-melange site now. Are you signed up as a mentor? | ||
| tadzik | whiteknight: I don't think so | 13:27 | |
| and I don't think I'm suitable for a mentor either :) | |||
| benabik should go to the gym. | |||
| whiteknight | tadzik: you would certainly be suitable | ||
| tadzik | whiteknight: if I can help in any way I'm all for it | 13:28 | |
| _mayank | tadzik: It's not published. I can make it public. | ||
| whiteknight | _mayank: you can send a copy to the parrot-dev mailing list too, if you get changes done in time | 13:29 | |
| tadzik | whiteknight: I have far less Parrot hacking experience than I'd like to :) | ||
| whiteknight | tadzik: I'm a little bummed that we don't have any ideas specifically dealing with Rakudo. | ||
| tadzik | hmm | 13:30 | |
| _mayank | Here is the link : www.google-melange.com/gsoc/proposa...uneja/6001 | ||
| whiteknight: I'll send it to mailinglist after making changes | |||
| PerlJam | tadzik: mentoring is less about technical knowledge and more about guiding the student and connecting him/her with people that do have the technical knowledge | 13:31 | |
| tadzik | hmm, maybe | ||
| _mayank: when you say "Unit testing tools : Rosella", you mean that Rosella will be available in the JS implementation, and the tests will be JS, right? | 13:32 | ||
| whiteknight | tadzik: The stage-0 compiler already has tests written in JS that use Rosella | 13:33 | |
| tadzik | oh, cool | 13:34 | |
| _mayank | yes, based on the stage0 tests, I chose Rosella | ||
| tadzik | right. Are there any official JS spectests, or maybe there are some to borrow from the existing implementations? | 13:35 | |
| whiteknight | tadzik: I use a really ugly wrapper that loops over the test object, gets all the test methods, and turns them into method/attributes on a JSObject | ||
| tadzik: that's a good question. I'm not aware of any existing "official" JS spectests | 13:36 | ||
| tadzik | whiteknight: oh, that rings a bell (turning into JSObject) (more) | 13:37 | |
| whiteknight | JSObject is like a really *really* ugly replacement for 6model | ||
| Eventually I would like something a little bit less ugly | |||
| _mayank | whiteknight: does jsunit falls into that category? | ||
| whiteknight | _mayank: jsunit is a test library, not a test suite | 13:38 | |
| We can try to get jsunit running on the new compiler, when you are ready | |||
| tadzik | I once had a crazy idea for a Rakudo-Parrot interop: as turning every Parrot object passed into a P6Object will be quite costly, I though about having an alternate ClassHOW for those, which will lazily add things like methods and attrs etc only when needed | ||
| whiteknight | tadzik: oh that would be cool. I thought about something similar to wrap native Parrot objects in Jaesop | ||
| tadzik | I'm wondering if that could work or make any sense, I stopped thinking about it once I got sober again | ||
| whiteknight | I haven't gotten there yet, because I haven't figured out how to call "class Foo.Bar.Baz" in JavaScript | 13:39 | |
|
13:39
Timbus joined
|
|||
| whiteknight | at least, not in a way that didn't stink | 13:39 | |
|
13:44
brrt joined
13:46
lucian joined
13:52
preflex joined
14:01
preflex joined
|
|||
| _mayank | whiteknight: Uploaded the new version. | 14:17 | |
| whiteknight | I saw that. It looks better. Thanks | ||
| _mayank | Do you get a notifcation for every edit? | 14:18 | |
| whiteknight | yes | ||
| _mayank | I didn't know that, there must have been lots of notifications earlier today, I did many rounds of editing :) | ||
| whiteknight | yes, it's okay. More is good | ||
| Commit early, commit often | 14:19 | ||
| _mayank | +1 to that | 14:20 | |
| whiteknight | ha! We just got a proposal submission that is a 100% copy+paste of our template | 14:34 | |
| with no user information added except a title | 14:35 | ||
| brrt | wasn't me | 14:36 | |
| whiteknight | brrt! | ||
| brrt | hahaha | ||
| seriously wasn't me | |||
| whiteknight | brrt: oh, I'm sure it wasn't | ||
| brrt | but in fact, I'm kind of having trouble to write a proposal | 14:37 | |
| whiteknight | brrt: sure, what trouble are you having? | ||
| brrt | i just feel like I know not nearly enough details to say what i want to do | ||
| i have no real plan right now, just vague thought | 14:38 | ||
| whiteknight | brrt: Okay, so you're doing ModParrot, right? | ||
| (Just making sure that hasn't changed) | |||
| brrt | yeah, that was the plan | ||
| to be fair, i've also added a proposal for bioperl | 14:39 | ||
| whiteknight | Oh, okay cool | ||
| you can have many proposals | |||
| brrt | to build bioperl6 - which would be related | ||
| anyway | |||
| whiteknight | Are you submitting that to Parrot or to the bioperl org? | ||
| brrt | that one was to bioperl.org | ||
| whiteknight | okay, that's fine. It's good to have many options | ||
| brrt | yes, and its kind of in the same corner | 14:40 | |
| whiteknight | First step is to evaluate the existing ModParrot and find out what it needs and what is broken, etc | ||
| Second step is to either rewrite ModParrot using the new embedding API or to write your own from scratch | |||
| brrt | as a noob, what is the advantage of the embedding api over the 'old' one | 14:41 | |
| whiteknight | the embedding API deals with things like unhandled exceptions. It hides ugly details behind various abstractions. It also sets up GC stack boundaries | 14:42 | |
| brrt | that is an advantage | 14:43 | |
| whiteknight | Yes, the "old" API wasn't an API at all, people were using Parrot's internal functions in external applications, breaking all sorts of rules and creating all sorts of bad dependencies | ||
| brrt | :-) so embedding is the way to go | 14:44 | |
| whiteknight | Right :) | ||
| brrt | how does the 'load-language' opcodde work | ||
| whiteknight | brrt: It searches in standard paths for something like /languages/Foo | ||
| brrt: And there would be /languages/Foo.pbc which is the main bytecode, and /languages/Foo/library which would be the search path for modules loaded by that compiler | 14:45 | ||
| brrt | right... so in that architecture | ||
| whiteknight | Right. It's simple but not very flexible | ||
| so load_language loads the bytecode and adds the new search paths to the interpreter. The bytecode probably registers a compiler object under the same name | 14:46 | ||
| It's basically the same as any other bytecode loading mechanism except it also adds the search paths | 14:47 | ||
| brrt | does it always have to return a compiler (or interpreter) object | ||
| whiteknight | brrt: It doesn't have to, I suppose. There are no technical rules enforcing that. Mostly just "best practices" | 14:48 | |
| Third step (continuing my train of thought from above) would be to write a driver program in PIR or Winxed that would read data from Apache about the request and package it into a nice form for a handler to use | |||
| Forth step would be having loadable handlers | |||
| Fifth step is probably a config file that lets you associate certain handlers with certain compilers, and being able to write scripts in any language with a loadable compiler | 14:49 | ||
| brrt | right.. i'm thinking real hard right now | ||
| whiteknight | If you got even half that far, I think we would say the project was a success in general | 14:50 | |
| brrt | :-) | ||
| whiteknight | Along the way obviously we need to think about how to test things so they don't silently break when nobody is looking | ||
| brrt | that.. is actually something i know how to do | 14:51 | |
| whiteknight | If you have a copy of the Parrot repo handy, you can take a look at frontend/parrot2/main.c and frontend/parrot2/prt0.winxed | ||
| The first is the driver program for the parrot.exe executable written in C with the embedding API. The second is the driver program (in Winxed) which sets up and executes the scripts | |||
| The faster control flow moves from C to Winxed, the better the performance is, generally | 14:52 | ||
| brrt | winxed is a javascript-a-like, right | ||
| whiteknight | yeah, it's inspired by JavaScript and C++ and the like, and is basically a "low-level" systems language for parrot | 14:53 | |
| The old ModParrot used the old C interface and probably some PIR code (Parrot assembly) for the rest. You would be using the new embedding API and Winxed instead. | 14:54 | ||
| brrt | ok | 14:55 | |
| whiteknight | if you spend even 30 seconds looking at PIR, you'll understand that Winxed is a wild improvement | ||
| tadzik | :) | ||
| brrt | PIR is basically a slightly prettified asm | ||
| whiteknight | brrt: sort of. Minus the "prettified" | ||
| brrt: If you like Perl, you can use NQP there instead. Same idea | 14:56 | ||
| but NQP has a perl6-alike syntax, which might be more natural for you | |||
| brrt | i've written a lot in both, i don't really care either way | ||
| whiteknight | okay, it's up to you. I'm only pointing out your options | ||
| brrt | well,not a lot in perl6 | ||
| whiteknight | (and giving you ideas to help flesh out your proposal) | ||
| brrt | a lot of ideas! | 14:57 | |
| really, this is amazing :-) | |||
|
14:57
hercynium joined
|
|||
| brrt | unfortunately, i'm also really really very hungry | 14:57 | |
| whiteknight | good, I'm glad you're excited | ||
| brrt | and I have to go get something to eat | ||
| but really, this is good stuff | |||
| whiteknight | please do! We don't want any hungry developers wondering around here, being grumpy at the code | ||
| brrt | ok, i'll be going then, will be back though! | 14:59 | |
|
14:59
brrt left
|
|||
| nine | whiteknight: pushed two commits | 15:06 | |
| whiteknight: make that tree | |||
| whiteknight | nine: Magical fixes? | 15:07 | |
| nine | whiteknight: the NameSpace.set_class thing is a red herring. It's a known limitation that a thread may only create PMCs of classes which have previously been used on the main thread. It's because on first use the class stuff gets initialized which may not be done from a child thread as it's writing global data | ||
| whiteknight | gotcha | 15:08 | |
| nine | whiteknight: this is the third time this has bitten me... but I'm getting quicker to realize that it's just this problem again | ||
| dalek | p: e49a91d | jnthn++ | src/ (2 files): Fix some arg_type allocation errors. Fixes a sometimes-segfaulty test; may help with the DBI crashes too. |
15:09 | |
| nine | whiteknight: had a look at child interp creation and GC initialization again. It just looks sane to me. Except for that I'm not sure if my stacktop and lo_var_ptr handling is correct. But even if not the result usually is just a segfault. | ||
| So...off again. | |||
| whiteknight | okay, thanks! | 15:10 | |
|
15:21
jsut joined
15:44
estrabd joined
15:49
estrabd joined
15:58
estrabd joined
16:01
brrt joined
|
|||
| brrt | blood sugar levels have returned to reasonable values | 16:01 | |
|
16:05
PacoAir joined
|
|||
| whiteknight | That reminds me, I need to go eat soon too | 16:13 | |
| brrt | what timezone are you in? | 16:14 | |
| whiteknight | Eastern. GMT-5 I think | 16:19 | |
| GMT-4 | 16:20 | ||
|
16:22
preflex joined
|
|||
| brrt | GMT+2 for me | 16:23 | |
| so for you, its lunchtime :-) | |||
| whiteknight | yessir | 16:24 | |
|
16:30
dukeleto joined
|
|||
| dukeleto | ~~ | 16:31 | |
| brrt: we hope that the top-most parts of Parrot are very high-level :) | 16:36 | ||
| whiteknight | less than 2.5 hours remaining until the deadline | 16:37 | |
|
16:38
jashwanth joined
|
|||
| whiteknight | I feel like the proposal period this year has been shorter than previous years | 16:38 | |
| jashwanth | whiteknight:hello | 16:39 | |
| dukeleto:hello | |||
| whiteknight | hello jashwanth | ||
| jashwanth: I read over your proposal again this morning. I have no complaints | |||
| jashwanth | whiteknight:thanks for that thats a good sign for me | 16:40 | |
| whiteknight | We have 6 students applied so far. 3 of them do not look acceptable. I am expecting 2 more before the deadline | 16:41 | |
| jashwanth | :) | 16:42 | |
| whiteknight | 1 proposal didn't propose anything, and 1 proposal has nothing to do with Parrot | ||
| dukeleto | jashwanth: hola | ||
| whiteknight: sounds about right ;) | 16:43 | ||
| whiteknight | actually, 2 proposals didn't propose anything | ||
| one was just a request for a project, and the other was a copy+paste of our proposal template with no changes | |||
| dukeleto | whiteknight: hey, can't blame them for trying :) | 16:47 | |
| whiteknight: perhaps something was lost in translation | |||
| jashwanth | how many projects got selected last year? | ||
| brrt | parrot is really rather high level | 16:48 | |
| (response to dukeleto, much earlier)] | |||
| whiteknight | jashwanth: last year we got 10 slots and approved 7 projects | ||
| dukeleto | brrt: "parrot" is a big term. Which parrot language are you talking about? | ||
| brrt | the interpreter | ||
| dukeleto | brrt: which interpreter? :) | 16:49 | |
| brrt | the one that goes into the mod_parrot module | ||
| i'm refering to the embedding api, actually | 16:50 | ||
| dukeleto | brrt: ah | ||
| brrt: I have some battle scars from it :) | |||
| brrt | how hard / easy would it be to bind pointers to native functions to an interpreter instance? | ||
| i'm still clean :-) | |||
| whiteknight | it's relatively easy, I just can't remember the sequence | 16:51 | |
|
16:51
Justin joined
|
|||
| Justin | good afternoon | 16:51 | |
| brrt | who has written the original parrot actually? | ||
| whiteknight | We have an NCI type that binds to native function pointers with a signature | ||
| dukeleto | Justin: good localtime() | ||
| whiteknight | Justin: about 2 hours until the deadline | ||
| HURRYHURRYHURRY | |||
| dukeleto | brrt: you want to read about our FFI (which we call Native Call Interface) | ||
| Justin | @dueleto: 12:51pm here and im submitting now :) | ||
| dukeleto | ffi = foreign function interface | ||
| whiteknight | Justin++ | ||
| _mayank | whiteline: Which category my proposal falls in? :) | 16:52 | |
| whiteknight | _mayank: there are "acceptable" and "unacceptable". Yours is not bad. | ||
| Justin | do you want me to copy and paste under each section of the template you provided on the proposal submission page? | ||
| whiteknight | Justin: Just submit it as you have it, if you provide all the information we need | ||
| You can add headings if you want to | 16:53 | ||
| Justin | ok | ||
| brrt | dukeleto: i would like to indeed | ||
| but i won't be able to read all the docs in two hours | 16:54 | ||
| dukeleto | brrt: we have lots of good stuff in the docs/ dir | ||
| brrt: just concentrate on your proposal for now | |||
| brrt | i've seen, just a shame i started so danm late :-) | ||
| dukeleto | brrt: try to add more details | ||
| Justin | now to think up a cool short description | ||
| whiteknight | "OMG T3H AW3S0M3S!" | ||
| dukeleto | Justin: did you write the security proposal ? | 16:55 | |
| Justin | yes | ||
| dukeleto is all mixed up due to being in the middle of moving and trying to close on a house | |||
| whiteknight | dukeleto: don't worry, I'm on top of it | ||
| dukeleto: for once, you don't need to stress at all | |||
| dukeleto | Justin: my suggestion is to modify your proposal to have a goal of providing small but useful security/sandbox features which can be used by PL/Parrot, mod_parrot and other embedded apps | 16:56 | |
| while(1) { whiteknight++ } | |||
| whiteknight | dukeleto: What does PL/Parrot need, specifically? | ||
| dukeleto | whiteknight: removal of certain classes of opcodes (like network and disk IO) | ||
| Justin | i have not submitted yet so I can add and delete more stuff | ||
| dukeleto | whiteknight: i have a very hacky way of removing them that I am not proud of, which is also not foolproof. | ||
|
16:57
schmooster joined
|
|||
| whiteknight | dukeleto: We have two options there: One is modify IMCC to detect and error-out when we try to compile a bad opcode (which leaves pre-compiled pbcs as a vector) | 16:57 | |
| another way is to integrate permissions into the subsystems that the ops call | |||
| Justin | isnt removal of certain classes of opcodes fall under whitelisting/blacklisting paths? | 16:58 | |
| whiteknight | Because some behaviors can be performed through ops AND through PMC methods, so just restricting opcodes is pointless | ||
| dukeleto | whiteknight: github.com/parrot/parrot/issues/650 | 16:59 | |
| whiteknight | Justin: There are opcode libraries which are loaded from paths, and then there are the individual opcodes | ||
| Justin | oh ok | ||
| dukeleto | whiteknight: what about that? Is that ticket still feasible/viable/wanted? | ||
| whiteknight: the opcodes need to be removed from the interp | |||
| whiteknight | dukeleto: I *suspect* that ticket is the wrong solution to the problem | ||
| dukeleto | whiteknight: then the PMC would point to non-existent ops. | ||
| whiteknight | what PMC? | 17:00 | |
| dukeleto | whiteknight: FileHandle PMC mostly | ||
| whiteknight | the ops call FileHandle methods, not the other way around | ||
| dukeleto | whiteknight: my current trick to to lie to the parrot interp and overwrite the lookup table to find the FileHandle PMC | ||
| whiteknight | and both ultimately lead to the IO API. which is where the restrictions will be implemented | ||
| dukeleto | whiteknight: which works, kind of, but it not fool-proof | ||
| whiteknight | dukeleto: Yes, and we can have a whitelist/blacklist of different PMC types to restrict creation of | 17:01 | |
| or a flag on the vtable, and check in Parrot_pmc_new | |||
| dukeleto | whiteknight: i agree, the restrictions should be as low-level as possible. I am not against actually removing certain things at compile time | ||
| whiteknight | brb | ||
| dukeleto | whiteknight: for instance, an untrusted PL/Parrot parrot interp should never, EVER, be able to write directly to disk or open connections to remote servers | ||
| cotto | ~~ | 17:07 | |
| dalek | kudo/nom: 790ca39 | jnthn++ | src/Perl6/World.pm: Remove accidentally left pre-bs deserialization code for setting $!do in Code objects. This not only meant we did some work we didn't need to at startup, but in module pre-comp tripped the SC write barrier needlessly, causing us to reserialize vast swathes of stuff. For example, HTTP::Status previously serialized to 399KB, now just 58KB. Basically, ~ 300KB less deserialization data per pre-compiled module. |
17:09 | |
| whiteknight | hello cotto | ||
| jashwanth | dukeleto:bye | 17:12 | |
| cotto | 'morning, whiteknight | ||
| dukeleto | cotto: hola | 17:13 | |
| cotto | hi dukeleto | 17:19 | |
| dukeleto | cotto: how goes it? | 17:20 | |
| brrt | it should be noted that I'm lousy in breaking things up by week | 17:21 | |
| dukeleto | brrt: aren't we all :) | ||
| Justin | i agree | ||
| i wish i could throw the I am a freshmen excuse at you but I've used that all up | 17:22 | ||
| dukeleto | Justin: :) | 17:23 | |
| Justin: just make sure to submit an updated proposal and keep in contact with us here. We realized that your best ideas won't get into the proposal, it is a living document | |||
| Justin: just do your best :) | |||
| whiteknight | If put your proposals on google-melange.com we can look at them and make suggestions | ||
|
17:26
contingencyplan joined
|
|||
| Justin | once i upload the porposal on google I can go back an alter it? | 17:26 | |
| dukeleto | Justin: before the deadline, yes. After, I don't think so. | 17:27 | |
| Justin: but you can "update" it by emailing updates to it to parrot-dev | |||
| Justin: :) | |||
| Justin: google has to draw a line in the sand somewhere, but we still get a week or two to decide on the proposals, iirc | |||
| Justin | ok | ||
| cotto | dukeleto: crazy times | 17:28 | |
| dukeleto | cotto: how crayz? | ||
| Justin | i saw in the timeline that there is an interm period where you can request more information on a particular proposal if there isn't enough | ||
| dukeleto | Cray-Z actually should be how the word is spelled. | ||
| Justin | for now i will submit the proposal so it is atleast up | 17:29 | |
| submitted | 17:31 | ||
| dukeleto | Justin++ | ||
| cotto: i am trying to close on a house, back up my current house and write a book by next week. What about you? | |||
| benabik | whiteknight: Posted a reply to your comment, but left the proposal as is. | 17:32 | |
| whiteknight | benabik++ | 17:34 | |
| Justin: the proposal itself probably can't be edited, but there's a commenting section on the page where we can converse | |||
| Justin: and comment we will | 17:35 | ||
| benabik | whiteknight: If you have any further comments, now would be a good time. I'm likely to be incommunicado for most of the weekend. | 17:41 | |
| whiteknight | benabik: I struggled to come up with that one. You're good | ||
| benabik | (Of course and the deadline is in an hour and change.) | ||
| whiteknight | have fun | ||
| benabik | whiteknight: I do have the advantage of having spent 10 or some months thinking about it. :-D | ||
| whiteknight | benabik: yeah, if you hit the ground running fast enough, you can be done the whole thing in a week and a half | 17:42 | |
| Justin | sorry i had went mia fr a quick sec | ||
| whiteknight | Then spend the rest of the summer pretending to work and playing with a baby instead | ||
| benabik | ... That would be a head of a running start. | ||
| *heck | |||
| whiteknight | benabik: you have the benefit of not needing the whole "community bonding" period. You could start writing your code tomorrow | 17:43 | |
| I'll just look the other way | |||
| Justin | lol | ||
| benabik | hah | ||
| whiteknight | Justin: benabik did GSOC with us last year too. He's a good friend | ||
| Justin | i like how you operate | ||
| i heard | |||
| whiteknight | and he doesn't immediately think that most of my ideas are bullshit, so that makes me happy :) | 17:44 | |
| Justin | that is why i let go of the web UI idea cause he really wanted it lol | ||
| as a novice any idea you come up with will automatically receive a nod of approval @whiteknight. | |||
| benabik | Yeah, agreeing with the resident curmudgeon^W^W GSoC admin is a good plan. :-D | 17:45 | |
| Justin | I cannot see the comments you guys posted on my proposal? | 17:46 | |
| benabik | Justin: I think there are public and private comments. | 17:47 | |
| Also I think the comments are just starting to get done. :-) | 17:48 | ||
| cotto | dukeleto: going to help start a startup | 17:50 | |
| Justin | oh ok that makes sense. | ||
| plus i can still edit my proposal online even though its submitted | |||
|
17:51
kurahaupo joined
|
|||
| whiteknight | Justin: yes, you can still edit it now. I don't know if you can edit after the deadline | 17:52 | |
| Also, some comments are private. The ones where we say curse words are usually private | |||
| Justin | lol | 17:53 | |
| understandable | |||
| whiteknight | Justin: Whereabouts in the city are you? Do you ever make it down to center city or the Penns Landing area? | 17:55 | |
| PerlJam read "Penis Landing area" and wondered what kind of place whiteknight lives. | |||
| whiteknight | PerlJam: It's the fun section of the city | 17:56 | |
| Justin | lol | 18:00 | |
| I live in chestnut Hill but I visit centery city and Penns Landing all the time | |||
| brrt | submitted | 18:03 | |
| whiteknight | Justin: I work down at 3rd and Market. We should meet up sometime | 18:04 | |
| brrt++ | |||
|
18:05
GodFather joined
|
|||
| Justin | oh really!? i assumed since parrot was in washington state that everyone in PArrot was there. I should have asked | 18:07 | |
| benabik | There's people all over. | ||
| cotto | nope. We're all over the place. | ||
| whiteknight | Justin: no, Parrot's based in WA because some of the former board members lived there when the paperwork was set up | ||
| Justin | THat is good to hear | 18:08 | |
| whiteknight | yes, we don't need you to move out west or anything | ||
| benabik is in upstate NY. | 18:09 | ||
| brrt is in groningen, the netherlands | |||
| moritz is a downstream user | |||
| Justin | nice and cool | 18:10 | |
| i was thinking, this security project would be nice to continue even after this program, assuming I make it lol | |||
| whiteknight | Justin: I should come up to campus and visit some time too. It would warm professor Silage's heart, I'm sure | ||
| moritz | Justin: in all honesty, developers staying around after GSoC are the main reason we participate in GSoC | 18:12 | |
| Justin | ha i have not had him for any classes | ||
| moritz | Justin: the projects might be nice, but many of them don't reach production quality during the summer; they are secondary to acquiring new contributors | ||
| benabik | I think it's one of the reasons Google runs it. | ||
| brrt | my motivation for this year was to find something that was awesome even w/o gsoc | ||
| moritz | for example whiteknight started to work on parrot as a gsoc student | 18:13 | |
| Justin | a light bulb recently went off and my head and i started like programming | ||
| wow | |||
| brrt | when was that? :-) | ||
| moritz | dunno | 18:14 | |
| I just remember that his project wasn't too successful | |||
| whiteknight | I did GSOC in 2008 | ||
| Justin | lol | ||
| moritz | (it was something to do with the garbage collector, which was increadibly hard to hack on back in the days) | ||
| whiteknight | moritz: it was sort of successful. Back then GC was a complete and utter mess | ||
| moritz | whiteknight: but not successful in the sense of having a tricolor GC in parrot/master, which was the original plan, right? | 18:15 | |
| whiteknight | moritz: no, that's true | ||
| brrt | i did gsoc in 2008, as well, but not on parrot | 18:16 | |
| whiteknight | oh really? For who? | ||
| brrt | the dirac video project | ||
| whiteknight | oh awesome | ||
| brrt | written a java-based decoder | ||
| well it would've been | |||
| moritz | hey, I just remembered that I'm also still enrolled as a student | ||
| brrt | but it was just far too slow | 18:17 | |
| sourcecode is probably still online | |||
| moritz | I could resign as a mentor, and apply as a student :-) | ||
| brrt | you stil have 40 minutes left :-) | 18:18 | |
| moritz | that could be enough :-) | ||
| but I'm not really serious; too much other stuff going on (like, uhm, family) | |||
| whiteknight | moritz: DO IT DO IT DO IT | 18:19 | |
| Justin | so could you accept yourself into the program @moritz | ||
| moritz | I just wouldn't be able to work 25h/week on it | ||
| brrt | lol | ||
| whiteknight | Yeah, that's a bear | ||
| brrt | repo.or.cz/w/jirac.git btw :-) | ||
| although the timestamps seem very wrong | 18:20 | ||
| whiteknight | What was your project about? | ||
| brrt | writing a video decoder for the dirac video specification in java | ||
| dirac was and is kind of ambitious in terms of compression efficiency | |||
| I'm wondering if there is anyone now who can run my code at decent speeds | 18:21 | ||
| whiteknight | oh, okay. It started with J so I should have assumed it was Java | ||
| brrt | :-) | ||
| moritz | brrt: does it parallelize? :-) | 18:22 | |
| if yes, I have a nifty 24core machine at $work | |||
| brrt | ... actually it did | ||
| but lousily | |||
| and I believe that HEAD is stuck in a branch between a refactoring | 18:23 | ||
|
18:24
lucian joined
|
|||
| Justin | 31 mins left until deadline. anymore suggestions? | 18:30 | |
| whiteknight | Justin: I don't see anything obvious that should be changed before the deadline. | 18:31 | |
| brrt | andrew = whiteknight? | 18:32 | |
|
18:32
jsut_ joined
|
|||
| Justin | i tried adding more detail last night, but the old man in me made me fall asleep about 12:30 :( | 18:32 | |
| brrt | as for the comment, I will get back on it later today, or tomorrow if that is okay | 18:33 | |
| Justin | sure | ||
| whiteknight | brrt: Yes, now there is no hurry | 18:34 | |
| brrt: yes, I'm Andrew | |||
| brrt | :-) good to know | 18:35 | |
| thanks for your comment though | |||
| I'm going to go now, get away from my computer | 18:36 | ||
| whiteknight | brrt: see you later | ||
| brrt | bye! | 18:37 | |
|
18:37
brrt left
|
|||
| whiteknight | 19 minutes left | 18:41 | |
|
18:43
particle1 joined
|
|||
| Justin | are you getting alot of last minute proposals like you said you normally get? | 18:46 | |
| _mayank | good night! | 18:59 | |
| whiteknight | Justin: only a few this year | 19:12 | |
| One proposal we got was just a copy+paste of our proposal template with nothing filled in | |||
| one "proposal" was just like a letter from a guy saying he wanted to work with parrot but had no idea what to do | |||
| moritz | and one was somebody who wanted to work on a Perl project, with no relation to parrot whatsoever | 19:15 | |
| whiteknight | again, I say that doesn't really matter | 19:16 | |
| Considering how TPF has given us slots in the past, I don't mind using a slot or two for good perl projects | 19:17 | ||
|
19:22
araq_bnc joined,
preflex joined
19:26
preflex joined
19:40
Justin joined
|
|||
| Justin | deadline is pass ^.^ | 19:41 | |
| whiteknight | yep. | 19:44 | |
|
19:50
kurahaupo joined
|
|||
| dukeleto | underwriters-- | 19:55 | |
| whiteknight | dukeleto: srsly | 20:06 | |
| The damn underwriters for my mortgage were like vampires, sucking up all our documents | |||
| I was waiting for news that they needed urine or blood samples | 20:07 | ||
| And then requesting more samples, because they drank the first batch | |||
| And none of it really mattered, because in less than a week our mortgage was sold to a different bank anyway | 20:09 | ||
| dalek | Heuristic branch merge: pushed 20 commits to nqp/qbootstrap by jnthn | 20:10 | |
|
20:16
kurahaupo joined
20:44
lucian joined
21:18
perlite joined
|
|||
| dalek | p/qbootstrap: 62d7bf3 | jnthn++ | src/NQPQ/World.pm: Sync NQPQ's World with BS changes. |
21:19 | |
| p/qbootstrap: f15decd | jnthn++ | src/NQPQ/Actions.pm: Update NQPQ's Actions.pm with BS-related changes. |
|||
| p/qbootstrap: 4489e47 | jnthn++ | src/NQPQ/Grammar.pm: Sync NQPQ's Grammar.pm up with BS changes; we now get through the build in this branch again, though the resulting nqp executable doesn't work again yet. |
|||
| p/qbootstrap: bb5f766 | jnthn++ | src/QHLL/World.pm: Update QHLL's World with latest changes. Gets things a little further towards working again. |
21:24 | ||
| p/qbootstrap: cdf955e | jnthn++ | src/core/NQPRoutine.pm: Make nqpattr work on the NQPRoutine code objects. Note that we can now probably kill off the PIR hack, though it's not pressing to do so. This appears to get qbootstrap back to passing the set of tests it did before bs happened, anyway, so now work on it can continue. |
21:34 | ||
|
21:57
whiteknight joined
|
|||
| whiteknight | good afternoon, #parrot | 21:58 | |
| araq_bnc | hi whiteknight | 21:59 | |
| sorear | o/ araq_bnc | 22:01 | |
| o/ whiteknight | |||
| opbots trust araq_bnc | |||
| slavorg | Ok | ||
| whiteknight | hello araq_bnc, sorear | 22:04 | |
| morepypy.blogspot.com/2012/04/py3k-...ate-3.html | 22:08 | ||
|
23:43
lucian joined
|
|||