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