Camelia, the Perl 6 bug

IRC log for #parrot, 2012-04-06

Parrot | source cross referenced

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:02 araq_bnc though I guess the GCs can maintain a reference counter for shared objects
00:03 araq_bnc ok, I'll return and ask nine for all the details :-)
00:03 araq_bnc good night
00:05 whiteknight good night
00:05 araq_bnc left #parrot
00:05 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.
00:10 whiteknight wait, that's probably a false alarm
00:27 whiteknight 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 #parrot
01:05 benabik joined #parrot
01:27 particle joined #parrot
01:32 dalek Rosella: dd8e880 | Whiteknight++ | / (2 files):
01:32 dalek Rosella: [Xml] rewrite __parse_quoted to be more accurate. Add more tests and cleanup the test file
01:32 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/dd8e88066d
01:32 dalek Rosella: 632875c | Whiteknight++ | src/ (3 files):
01:32 dalek Rosella: [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
01:32 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/632875c826
01:33 benabik ~~
01:34 whiteknight hello benabik
01:47 whiteknight brrt: ping
01:48 whiteknight 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.
01:56 dalek Rosella: b43ea6c | Whiteknight++ | s (3 files):
01:56 dalek Rosella: [Json] Move parsing code into a separate file/namespace. Add position information to error messages
01:56 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/b43ea6cc00
01:57 whiteknight and with that, bed
01:57 whiteknight goodnight
01:57 benabik 'night
03:48 alester_ joined #parrot
03:52 jsut joined #parrot
04:51 brrt joined #parrot
06:36 Khisanth joined #parrot
06:51 nine Good morning, #parrot
06:52 kurahaupo joined #parrot
07:17 tadzik good morning nine
07:27 nine Ah, why can't I just skip $work and go directly to hacking on parrot?
07:34 tadzik oh, the cruel world
07:43 nine indeed
07:47 tadzik at least we can idle on the irc :)
07:58 moritz work? it's a holliday here
08:11 nine Ah yes, in Germany it is. Not in Austria though
08:18 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 #parrot
09:59 araq_bnc joined #parrot
10:00 araq_bnc ping nine
10:00 nine araq_bnc: pong
10:00 araq_bnc oh yay
10:00 araq_bnc how do the proxies work in detail?
10:00 araq_bnc (I'm talking about the GC and threading)
10:01 araq_bnc 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 http://niner.name/Hybrid_Th​reads_for_the_Parrot_VM.pdf
10:02 nine araq_bnc: proxies act as barrier for the GC. The GC does not follow the reference to the other thread's object.
10:02 nine araq_bnc: the proxies themselves are allocated on the thread that is using them
10:03 araq_bnc ok, but how is it ensured that the object is not free'd prematurately by the owning heap/GC?
10:06 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:07 nine 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:08 araq_bnc ok, so it only frees shared objects once the "foreign task" is done?
10:08 nine exactly
10:12 araq_bnc ok, nice solution
10:12 araq_bnc how is the foreign GC prevented from messing with the write barrier?
10:13 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:15 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:19 araq_bnc when is an object dirty? if one of its fields has been modified?
10:19 araq_bnc when exactly is the write barrier invoked? for each pointer assignment?
10:19 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
10:20 araq_bnc well it contains locks ...
10:22 nine araq_bnc: are you on the threads_playground branch?
10:23 araq_bnc I think so: https://github.com/parrot/parrot/tree/threads
10:24 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:25 nine araq_bnc: where do you see that lock?
10:32 araq_bnc hm, must have looked at the wrong file, can't find it anymore
10:33 araq_bnc so when is gc_gms_write_barrier() called?
10:34 nine araq_bnc: after any PMC attribute got changed.
10:34 nine It's basically moving the object back to the youngest generation
10:37 araq_bnc well in the threads_playground branch there is:
10:37 araq_bnc if (interp->thread_data)
10:37 araq_bnc LOCK(interp->thread_data->interp_lock);
10:38 araq_bnc so basically 'obj.field = x' triggers the write barrier, but not 'obj = x'?
10:44 moritz what is 'obj' in 'obj = x'?
10:46 araq_bnc a local variable
10:47 araq_bnc of type PMC* I guess
10:47 moritz no, that doesn't trigger a write barrier. And why should it?
10:47 nine if the local variable is a register, I think it actually does
10:48 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 moritz I mean, not a parrot register
10:48 nine in this case not
10:49 nine 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:52 araq_bnc so effectively the write barrier is not invoked for stack slots
10:52 nine araq_bnc: true
10:52 araq_bnc ok good
10:52 nine araq_bnc: it's just a neccessity because the GC is generational
10:52 araq_bnc I know ;-)
10:53 araq_bnc so why is "LOCK(interp->thread_data->interp_lock);" part of the write barrier?
10:57 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:58 nine 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
11:09 araq_bnc yeah but it's a principle problem
11:09 nine ?
11:10 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:11 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:14 araq_bnc ok, but what if I have an array of strings and want it to fill in parallel?
11:15 araq_bnc 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.
11:17 nine 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:29 araq_bnc I see; thanks for all this information
11:30 nine you're welcome
11:33 araq_bnc fyi I got rid of all the locks in nimrod's GC
11:33 araq_bnc but the price is a 2-way copy for passing a message
11:34 nine But it's good to know that there are ways.
11:34 araq_bnc and messages have to be deeply copied ... :-/
11:34 araq_bnc and once you do that immutability gains you nothing
11:35 nine Maybe you'll find away without that
11:38 nine 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:41 lucian joined #parrot
11:42 araq_bnc yeah well the idea to keep things alive until a task's completion is a good one
11:42 araq_bnc that should help already
11:43 araq_bnc however, your write barrier looks expensive
11:43 araq_bnc what do benchmarks say about it? :-)
11:45 moritz wow, nimrod looks interesting
11:46 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:47 tadzik Parrot 4.2.0 "Ornithopter". So 0/2 artifact creature, flying, 0/2
11:47 tadzik erm, s|0/2$|for 0 mana|
11:48 nine oh yeah....I have one of those :)
11:49 tadzik I must've sold mine
11:49 brrt joined #parrot
11:53 kid51 joined #parrot
11:53 nine So...off for the weekend
11:55 tadzik ah, lucky you
11:58 araq_bnc ok I have to go, see you
11:58 tadzik bye
11:58 araq_bnc left #parrot
12:12 PacoAir_ joined #parrot
12:21 whiteknight joined #parrot
12:23 whiteknight good morning, #parrot
12:29 tadzik good afternoon, whiteknight
12:30 whiteknight hello tadzik
12:30 schmooster joined #parrot
12:32 whiteknight Less than 6.5 hours remaining for proposals
12:35 nine Good morning, whiteknight
12:35 whiteknight hello nine
12:36 whiteknight nine: My impression is that it's some kind of GC issue, it appears that PMCs are being prematurely collected and reallocated
12:36 whiteknight 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
12:38 whiteknight 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
12:38 whiteknight yeah
12:39 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:40 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:43 nine It's a riddle. And a good one at that. It just has to be solved :)
12:44 _mayank good morning whiteknight
12:44 whiteknight _mayank: good morning! I saw your submission last night
12:45 whiteknight nine: We're going to have to pepper PARROT_ASSERT_INTERP calls everywhere
12:45 whiteknight gdb has been mostly useless in helping figure out where things are going wrong
12:45 _mayank ok, any feedback/changes required?
12:46 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:47 whiteknight _mayank: I haven't read it closely yet. I will do that now
12:47 whiteknight nine: That NameSpace.set_class assert failure is interesting to me. We can try to jam more of them into that codepath
12:47 nine whiteknight: will do
12:48 _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
12:48 whiteknight so memory layout changes can make GC corruption bugs appear to happen in different places
12:49 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
12:50 whiteknight 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
12:50 whiteknight ok,so a sharing issue
12:51 whiteknight _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 :)
12:51 whiteknight nine: have fun!
12:54 _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
12:54 _mayank ok
12:56 _mayank I had to dig out my compilers textbook and lecture slides to revise some of the concepts :)
13:09 whiteknight _mayank: I sent you an email with feedback
13:10 _mayank got it, going through it.
13:10 whiteknight Most of my feedback is about the timeline
13:17 benabik _mayank: What's your proposal?  (Just being nosy.)
13:18 _mayank benabik: Jaesop compiler
13:19 benabik _mayank: Very nice.
13:24 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:25 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?
13:25 whiteknight tadzik: it's on the google-melange site now. Are you signed up as a mentor?
13:27 tadzik whiteknight: I don't think so
13:27 tadzik and I don't think I'm suitable for a mentor either :)
13:27 * benabik should go to the gym.
13:27 whiteknight tadzik: you would certainly be suitable
13:28 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.
13:29 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 :)
13:29 whiteknight tadzik: I'm a little bummed that we don't have any ideas specifically dealing with Rakudo.
13:30 tadzik hmm
13:30 _mayank Here is the link : http://www.google-melange.com/gsoc/proposa​l/review/google/gsoc2012/mayankjuneja/6001
13:30 _mayank whiteknight: I'll send it to mailinglist after making changes
13:31 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
13:32 tadzik _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:33 whiteknight tadzik: The stage-0 compiler already has tests written in JS that use Rosella
13:34 tadzik oh, cool
13:34 _mayank yes, based on the stage0 tests, I chose Rosella
13:35 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
13:36 whiteknight tadzik: that's a good question. I'm not aware of any existing "official" JS spectests
13:37 tadzik whiteknight: oh, that rings a bell (turning into JSObject) (more)
13:37 whiteknight JSObject is like a really *really* ugly replacement for 6model
13:37 whiteknight Eventually I would like something a little bit less ugly
13:37 _mayank whiteknight: does jsunit falls into that category?
13:38 whiteknight _mayank: jsunit is a test library, not a test suite
13:38 whiteknight We can try to get jsunit running on the new compiler, when you are ready
13:38 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
13:38 whiteknight tadzik: oh that would be cool. I thought about something similar to wrap native Parrot objects in Jaesop
13:38 tadzik I'm wondering if that could work or make any sense, I stopped thinking about it once I got sober again
13:39 whiteknight I haven't gotten there yet, because I haven't figured out how to call "class Foo.Bar.Baz" in JavaScript
13:39 Timbus joined #parrot
13:39 whiteknight at least, not in a way that didn't stink
13:44 brrt joined #parrot
13:46 lucian joined #parrot
13:52 preflex joined #parrot
14:01 preflex joined #parrot
14:17 _mayank whiteknight: Uploaded the new version.
14:17 whiteknight I saw that. It looks better. Thanks
14:18 _mayank Do you get a notifcation for every edit?
14:18 whiteknight yes
14:18 _mayank I didn't know that, there must have been lots of notifications earlier today, I did many rounds of editing :)
14:18 whiteknight yes, it's okay. More is good
14:19 whiteknight Commit early, commit often
14:20 _mayank +1 to that
14:34 whiteknight ha! We just got a proposal submission that is a 100% copy+paste of our template
14:35 whiteknight with no user information added except a title
14:36 brrt wasn't me
14:36 whiteknight brrt!
14:36 brrt hahaha
14:36 brrt seriously wasn't me
14:36 whiteknight brrt: oh, I'm sure it wasn't
14:37 brrt but in fact, I'm kind of having trouble to write a proposal
14:37 whiteknight brrt: sure, what trouble are you having?
14:37 brrt i just feel like I know not nearly enough details to say what i want to do
14:38 brrt i have no real plan right now, just vague thought
14:38 whiteknight brrt: Okay, so you're doing ModParrot, right?
14:38 whiteknight (Just making sure that hasn't changed)
14:38 brrt yeah, that was the plan
14:39 brrt to be fair, i've also added a proposal for bioperl
14:39 whiteknight Oh, okay cool
14:39 whiteknight you can have many proposals
14:39 brrt to build bioperl6 - which would be related
14:39 brrt anyway
14:39 whiteknight Are you submitting that to Parrot or to the bioperl org?
14:39 brrt that one was to bioperl.org
14:39 whiteknight okay, that's fine. It's good to have many options
14:40 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
14:40 whiteknight Second step is to either rewrite ModParrot using the new embedding API or to write your own from scratch
14:41 brrt as a noob, what is the advantage of the embedding api over the 'old' one
14:42 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:43 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
14:44 brrt :-) so embedding is the way to go
14:44 whiteknight Right :)
14:44 brrt how does the 'load-language' opcodde work
14:44 whiteknight brrt: It searches in standard paths for something like /languages/Foo
14:45 whiteknight 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
14:45 whiteknight Right. It's simple but not very flexible
14:46 whiteknight 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:47 whiteknight 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
14:48 whiteknight brrt: It doesn't have to, I suppose. There are no technical rules enforcing that. Mostly just "best practices"
14:48 whiteknight 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
14:48 whiteknight Forth step would be having loadable handlers
14:49 whiteknight 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
14:50 whiteknight If you got even half that far, I think we would say the project was a success in general
14:50 brrt :-)
14:50 whiteknight Along the way obviously we need to think about how to test things so they don't silently break when nobody is looking
14:51 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
14:51 whiteknight 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
14:52 whiteknight 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
14:53 whiteknight yeah, it's inspired by JavaScript and C++ and the like, and is basically a "low-level" systems language for parrot
14:54 whiteknight 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:55 brrt ok
14:55 whiteknight if you spend even 30 seconds looking at PIR, you'll understand that Winxed is a wild improvement
14:55 tadzik :)
14:55 brrt PIR is basically a slightly prettified asm
14:55 whiteknight brrt: sort of. Minus the "prettified"
14:56 whiteknight brrt: If you like Perl, you can use NQP there instead. Same idea
14:56 whiteknight but NQP has a perl6-alike syntax, which might be more natural for you
14:56 brrt i've written a lot in both, i don't really care either way
14:56 whiteknight okay, it's up to you. I'm only pointing out your options
14:56 brrt well,not a lot in perl6
14:56 whiteknight (and giving you ideas to help flesh out your proposal)
14:57 brrt a lot of ideas!
14:57 brrt really, this is amazing :-)
14:57 hercynium joined #parrot
14:57 brrt unfortunately, i'm also really really very hungry
14:57 whiteknight good, I'm glad you're excited
14:57 brrt and I have to go get something to eat
14:57 brrt but really, this is good stuff
14:57 whiteknight please do! We don't want any hungry developers wondering around here, being grumpy at the code
14:59 brrt ok, i'll be going then, will be back though!
14:59 brrt left #parrot
15:06 nine whiteknight: pushed two commits
15:06 nine whiteknight: make that tree
15:07 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
15:08 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
15:09 dalek nqp: e49a91d | jnthn++ | src/ (2 files):
15:09 dalek nqp: Fix some arg_type allocation errors. Fixes a sometimes-segfaulty test; may help with the DBI crashes too.
15:09 dalek nqp: review: https://github.com/perl6/nqp/commit/e49a91d716
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.
15:09 nine So...off again.
15:10 whiteknight okay, thanks!
15:21 jsut joined #parrot
15:44 estrabd joined #parrot
15:49 estrabd joined #parrot
15:58 estrabd joined #parrot
16:01 brrt joined #parrot
16:01 brrt blood sugar levels have returned to reasonable values
16:05 PacoAir joined #parrot
16:13 whiteknight That reminds me, I need to go eat soon too
16:14 brrt what timezone are you in?
16:19 whiteknight Eastern. GMT-5 I think
16:20 whiteknight GMT-4
16:22 preflex joined #parrot
16:23 brrt GMT+2 for me
16:23 brrt so for you, its lunchtime :-)
16:24 whiteknight yessir
16:30 dukeleto joined #parrot
16:31 dukeleto ~~
16:36 dukeleto brrt: we hope that the top-most parts of Parrot are very high-level :)
16:37 whiteknight less than 2.5 hours remaining until the deadline
16:38 jashwanth joined #parrot
16:38 whiteknight I feel like the proposal period this year has been shorter than previous years
16:39 jashwanth whiteknight:hello
16:39 jashwanth dukeleto:hello
16:39 whiteknight hello jashwanth
16:39 whiteknight jashwanth: I read over your proposal again this morning. I have no complaints
16:40 jashwanth whiteknight:thanks for that thats a good sign for me
16:41 whiteknight We have 6 students applied so far. 3 of them do not look acceptable. I am expecting 2 more before the deadline
16:42 jashwanth :)
16:42 whiteknight 1 proposal didn't propose anything, and 1 proposal has nothing to do with Parrot
16:42 dukeleto jashwanth: hola
16:43 dukeleto whiteknight: sounds about right ;)
16:43 whiteknight actually, 2 proposals didn't propose anything
16:43 whiteknight one was just a request for a project, and the other was a copy+paste of our proposal template with no changes
16:47 dukeleto whiteknight: hey, can't blame them for trying :)
16:47 dukeleto whiteknight: perhaps something was lost in translation
16:47 jashwanth how many projects got selected last year?
16:48 brrt parrot is really rather high level
16:48 brrt (response to dukeleto, much earlier)]
16:48 whiteknight jashwanth: last year we got 10 slots and approved 7 projects
16:48 dukeleto brrt: "parrot" is a big term. Which parrot language are you talking about?
16:48 brrt the interpreter
16:49 dukeleto brrt: which interpreter? :)
16:49 brrt the one that goes into the mod_parrot module
16:50 brrt i'm refering to the embedding api, actually
16:50 dukeleto brrt: ah
16:50 dukeleto brrt: I have some battle scars from it :)
16:50 brrt how hard / easy would it be to bind pointers to native functions to an interpreter instance?
16:50 brrt i'm still clean :-)
16:51 whiteknight it's relatively easy, I just can't remember the sequence
16:51 Justin joined #parrot
16:51 Justin good afternoon
16:51 brrt who has written the original parrot actually?
16:51 whiteknight We have an NCI type that binds to native function pointers with a signature
16:51 dukeleto Justin: good localtime()
16:51 whiteknight Justin: about 2 hours until the deadline
16:51 whiteknight HURRYHURRYHURRY
16:51 dukeleto brrt: you want to read about our FFI (which we call Native Call Interface)
16:51 Justin @dueleto: 12:51pm here and im submitting now :)
16:51 dukeleto ffi = foreign function interface
16:51 whiteknight Justin++
16:52 _mayank whiteline: Which category my proposal falls in? :)
16:52 whiteknight _mayank: there are "acceptable" and "unacceptable". Yours is not bad.
16:52 Justin do you want me to copy and paste under each section of the template you provided on the proposal submission page?
16:52 whiteknight Justin: Just submit it as you have it, if you provide all the information we need
16:53 whiteknight You can add headings if you want to
16:53 Justin ok
16:53 brrt dukeleto: i would like to indeed
16:54 brrt 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
16:54 dukeleto brrt: just concentrate on your proposal for now
16:54 brrt i've seen, just a shame i started so danm late :-)
16:54 dukeleto brrt: try to add more details
16:54 Justin now to think up a cool short description
16:54 whiteknight "OMG T3H AW3S0M3S!"
16:55 dukeleto Justin: did you write the security proposal ?
16:55 Justin yes
16:55 * dukeleto is all mixed up due to being in the middle of moving and trying to close on a house
16:55 whiteknight dukeleto: don't worry, I'm on top of it
16:55 whiteknight dukeleto: for once, you don't need to stress at all
16:56 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 dukeleto while(1) { whiteknight++ }
16:56 whiteknight dukeleto: What does PL/Parrot need, specifically?
16:56 dukeleto whiteknight: removal of certain classes of opcodes (like network and disk IO)
16:56 Justin i have not submitted yet so I can add and delete more stuff
16:56 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 #parrot
16:57 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 whiteknight another way is to integrate permissions into the subsystems that the ops call
16:58 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
16:59 dukeleto whiteknight: https://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
16:59 Justin oh ok
16:59 dukeleto whiteknight: what about that? Is that ticket still feasible/viable/wanted?
16:59 dukeleto whiteknight: the opcodes need to be removed from the interp
16:59 whiteknight dukeleto: I *suspect* that ticket is the wrong solution to the problem
16:59 dukeleto whiteknight: then the PMC would point to non-existent ops.
17:00 whiteknight what PMC?
17:00 dukeleto whiteknight: FileHandle PMC mostly
17:00 whiteknight the ops call FileHandle methods, not the other way around
17:00 dukeleto whiteknight: my current trick to to lie to the parrot interp and overwrite the lookup table to find the FileHandle PMC
17:00 whiteknight and both ultimately lead to the IO API. which is where the restrictions will be implemented
17:00 dukeleto whiteknight: which works, kind of, but it not fool-proof
17:01 whiteknight dukeleto: Yes, and we can have a whitelist/blacklist of different PMC types to restrict creation of
17:01 whiteknight or a flag on the vtable, and check in Parrot_pmc_new
17:01 dukeleto whiteknight: i agree, the restrictions should be as low-level as possible. I am not against actually removing certain things at compile time
17:01 whiteknight brb
17:01 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
17:07 cotto ~~
17:09 dalek rakudo/nom: 790ca39 | jnthn++ | src/Perl6/World.pm:
17:09 dalek rakudo/nom: 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 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/790ca3957e
17:09 whiteknight hello cotto
17:12 jashwanth dukeleto:bye
17:12 cotto 'morning, whiteknight
17:13 dukeleto cotto: hola
17:19 cotto hi dukeleto
17:20 dukeleto cotto: how goes it?
17:21 brrt it should be noted that I'm lousy in breaking things up by week
17:21 dukeleto brrt: aren't we all :)
17:21 Justin i agree
17:22 Justin i wish i could throw the I am a freshmen excuse at you but I've used that all up
17:23 dukeleto Justin: :)
17:23 dukeleto 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
17:23 dukeleto Justin: just do your best :)
17:23 whiteknight If put your proposals on google-melange.com we can look at them and make suggestions
17:26 contingencyplan joined #parrot
17:26 Justin once i upload the porposal on google I can go back an alter it?
17:27 dukeleto Justin: before the deadline, yes. After, I don't think so.
17:27 dukeleto Justin: but you can "update" it by emailing updates to it to parrot-dev
17:27 dukeleto Justin: :)
17:27 dukeleto 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
17:27 Justin ok
17:28 cotto dukeleto: crazy times
17:28 dukeleto cotto: how crayz?
17:28 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
17:28 dukeleto Cray-Z actually should be how the word is spelled.
17:29 Justin for now i will submit the proposal so it is atleast up
17:31 Justin submitted
17:31 dukeleto Justin++
17:31 dukeleto cotto: i am trying to close on a house, back up my current house and write a book by next week. What about you?
17:32 benabik whiteknight: Posted a reply to your comment, but left the proposal as is.
17:34 whiteknight benabik++
17:34 whiteknight Justin: the proposal itself probably can't be edited, but there's a commenting section on the page where we can converse
17:35 whiteknight Justin: and comment we will
17:41 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
17:41 benabik (Of course and the deadline is in an hour and change.)
17:41 whiteknight have fun
17:41 benabik whiteknight: I do have the advantage of having spent 10 or some months thinking about it.  :-D
17:42 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
17:42 whiteknight Then spend the rest of the summer pretending to work and playing with a baby instead
17:42 benabik ...  That would be a head of a running start.
17:42 benabik *heck
17:43 whiteknight benabik: you have the benefit of not needing the whole "community bonding" period. You could start writing your code tomorrow
17:43 whiteknight I'll just look the other way
17:43 Justin lol
17:43 benabik hah
17:43 whiteknight Justin: benabik did GSOC with us last year too. He's a good friend
17:43 Justin i like how you operate
17:43 Justin i heard
17:44 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
17:44 Justin as a novice any idea you come up with will automatically receive a nod of approval @whiteknight.
17:45 benabik Yeah, agreeing with the resident curmudgeon^W^W GSoC admin is a good plan.  :-D
17:46 Justin I cannot see the comments you guys posted on my proposal?
17:47 benabik Justin: I think there are public and private comments.
17:48 benabik Also I think the comments are just starting to get done.  :-)
17:50 cotto dukeleto: going to help start a startup
17:50 Justin oh ok that makes sense.
17:50 Justin plus i can still edit my proposal online even though its submitted
17:51 kurahaupo joined #parrot
17:52 whiteknight Justin: yes, you can still edit it now. I don't know if you can edit after the deadline
17:52 whiteknight Also, some comments are private. The ones where we say curse words are usually private
17:53 Justin lol
17:53 Justin understandable
17:55 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.
17:56 whiteknight PerlJam: It's the fun section of the city
18:00 Justin lol
18:00 Justin I live in chestnut Hill but I visit centery city and Penns Landing all the time
18:03 brrt submitted
18:04 whiteknight Justin: I work down at 3rd and Market. We should meet up sometime
18:04 whiteknight brrt++
18:05 GodFather joined #parrot
18:07 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.
18:07 cotto nope.  We're all over the place.
18:07 whiteknight Justin: no, Parrot's based in WA because some of the former board members lived there when the paperwork was set up
18:08 Justin THat is good to hear
18:08 whiteknight yes, we don't need you to move out west or anything
18:09 * benabik is in upstate NY.
18:09 * brrt is in groningen, the netherlands
18:09 * moritz is a downstream user
18:10 Justin nice and cool
18:10 Justin i was thinking, this security project would be nice to continue even after this program, assuming I make it lol
18:10 whiteknight Justin: I should come up to campus and visit some time too. It would warm professor Silage's heart, I'm sure
18:12 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
18:12 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
18:12 benabik I think it's one of the reasons Google runs it.
18:12 brrt my motivation for this year was to find something that was awesome even w/o gsoc
18:13 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
18:13 Justin wow
18:13 brrt when was that? :-)
18:14 moritz dunno
18:14 moritz I just remember that his project wasn't too successful
18:14 whiteknight I did GSOC in 2008
18:14 Justin lol
18:14 moritz (it was something to do with the garbage collector, which was increadibly hard to hack on back in the days)
18:14 whiteknight moritz: it was sort of successful. Back then GC was a complete and utter mess
18:15 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
18:16 brrt i did gsoc in 2008, as well, but not on parrot
18:16 whiteknight oh really? For who?
18:16 brrt the dirac video project
18:16 whiteknight oh awesome
18:16 brrt written a java-based decoder
18:16 brrt well it would've been
18:16 moritz hey, I just remembered that I'm also still enrolled as a student
18:17 brrt but it was just far too slow
18:17 brrt sourcecode is probably still online
18:17 moritz I could resign as a mentor, and apply as a student :-)
18:18 brrt you stil have 40 minutes left :-)
18:18 moritz that could be enough :-)
18:18 moritz but I'm not really serious; too much other stuff going on (like, uhm, family)
18:19 whiteknight moritz: DO IT DO IT DO IT
18:19 Justin so could you accept yourself into the program @moritz
18:19 moritz I just wouldn't be able to work 25h/week on it
18:19 brrt lol
18:19 whiteknight Yeah, that's a bear
18:19 brrt http://repo.or.cz/w/jirac.git btw :-)
18:20 brrt although the timestamps seem very wrong
18:20 whiteknight What was your project about?
18:20 brrt writing a video decoder for the dirac video specification in java
18:20 brrt dirac was and is kind of ambitious in terms of compression efficiency
18:21 brrt 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
18:21 brrt :-)
18:22 moritz brrt: does it parallelize? :-)
18:22 moritz if yes, I have a nifty 24core machine at $work
18:22 brrt ... actually it did
18:22 brrt but lousily
18:23 brrt and I believe that HEAD is stuck in a branch between a refactoring
18:24 lucian joined #parrot
18:30 Justin 31 mins left until deadline. anymore suggestions?
18:31 whiteknight Justin:  I don't see anything obvious that should be changed before the deadline.
18:32 brrt andrew = whiteknight?
18:32 jsut_ joined #parrot
18:32 Justin i tried adding more detail last night, but the old man in me made me fall asleep about 12:30 :(
18:33 brrt as for the comment, I will get back on it later today, or tomorrow if that is okay
18:33 Justin sure
18:34 whiteknight brrt: Yes, now there is no hurry
18:34 whiteknight brrt: yes, I'm Andrew
18:35 brrt :-) good to know
18:35 brrt thanks for your comment though
18:36 brrt I'm going to go now, get away from my computer
18:36 whiteknight brrt: see you later
18:37 brrt bye!
18:37 brrt left #parrot
18:41 whiteknight 19 minutes left
18:43 particle1 joined #parrot
18:46 Justin are you getting alot of last minute proposals like you said you normally get?
18:59 _mayank good night!
19:12 whiteknight Justin: only a few this year
19:12 whiteknight One proposal we got was just a copy+paste of our proposal template with nothing filled in
19:12 whiteknight one "proposal" was just like a letter from a guy saying he wanted to work with parrot but had no idea what to do
19:15 moritz and one was somebody who wanted to work on a Perl project, with no relation to parrot whatsoever
19:16 whiteknight again, I say that doesn't really matter
19:17 whiteknight Considering how TPF has given us slots in the past, I don't mind using a slot or two for good perl projects
19:22 araq_bnc joined #parrot
19:22 preflex joined #parrot
19:26 preflex joined #parrot
19:40 Justin joined #parrot
19:41 Justin deadline is pass ^.^
19:44 whiteknight yep.
19:50 kurahaupo joined #parrot
19:55 dukeleto underwriters--
20:06 whiteknight dukeleto: srsly
20:06 whiteknight The damn underwriters for my mortgage were like vampires, sucking up all our documents
20:07 whiteknight I was waiting for news that they needed urine or blood samples
20:07 whiteknight And then requesting more samples, because they drank the first batch
20:09 whiteknight And none of it really mattered, because in less than a week our mortgage was sold to a different bank anyway
20:10 dalek Heuristic branch merge: pushed 20 commits to nqp/qbootstrap by jnthn
20:16 kurahaupo joined #parrot
20:44 lucian joined #parrot
21:18 perlite joined #parrot
21:19 dalek nqp/qbootstrap: 62d7bf3 | jnthn++ | src/NQPQ/World.pm:
21:19 dalek nqp/qbootstrap: Sync NQPQ's World with BS changes.
21:19 dalek nqp/qbootstrap: review: https://github.com/perl6/nqp/commit/62d7bf30c1
21:19 dalek nqp/qbootstrap: f15decd | jnthn++ | src/NQPQ/Actions.pm:
21:19 dalek nqp/qbootstrap: Update NQPQ's Actions.pm with BS-related changes.
21:19 dalek nqp/qbootstrap: review: https://github.com/perl6/nqp/commit/f15decd964
21:19 dalek nqp/qbootstrap: 4489e47 | jnthn++ | src/NQPQ/Grammar.pm:
21:19 dalek nqp/qbootstrap: 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.
21:19 dalek nqp/qbootstrap: review: https://github.com/perl6/nqp/commit/4489e4702c
21:24 dalek nqp/qbootstrap: bb5f766 | jnthn++ | src/QHLL/World.pm:
21:24 dalek nqp/qbootstrap: Update QHLL's World with latest changes. Gets things a little further towards working again.
21:24 dalek nqp/qbootstrap: review: https://github.com/perl6/nqp/commit/bb5f766419
21:34 dalek nqp/qbootstrap: cdf955e | jnthn++ | src/core/NQPRoutine.pm:
21:34 dalek nqp/qbootstrap: 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 dalek nqp/qbootstrap: review: https://github.com/perl6/nqp/commit/cdf955ebcc
21:57 whiteknight joined #parrot
21:58 whiteknight good afternoon, #parrot
21:59 araq_bnc hi whiteknight
22:01 sorear o/ araq_bnc
22:01 sorear o/ whiteknight
22:01 sorear opbots trust araq_bnc
22:01 slavorg Ok
22:04 whiteknight hello araq_bnc, sorear
22:08 whiteknight http://morepypy.blogspot.com/20​12/04/py3k-status-update-3.html
23:43 lucian joined #parrot

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

Parrot | source cross referenced