|
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. |
|||
| dalek | esop: 1461f5b | Whiteknight++ | t/harness: Use Rosella Include files instead of loading the .pbc directly. Cleans up some code |
00:22 | |
| esop: 5b668cf | Whiteknight++ | README (2 files): Change README to a markdown file |
|||
| esop: 5c213c6 | Whiteknight++ | README.md: Convert README syntax to markdown |
|||
| esop: af16632 | Whiteknight++ | js2wxst0.js: Add comments to the stage 0 driver |
|||
| esop: bf96751 | Whiteknight++ | stage0/js/wast.js: Fix code generation for empty array literals []. Fix a bug where a semicolon wasn't being generated in an if/then block. Fix some whitespace |
00:23 | ||
| esop: 4bdee65 | Whiteknight++ | / (2 files): If we use a global inside a closure in a function, make sure to declare the winxed var in the outer scope so it doesn't get lost. If it's a closure at the top-level, declare the global in the closure like normal |
|||
| esop: c9f1feb | Whiteknight++ | stage0/runtime/jsobject.winxed: Merge branch 'master' of github.com:Whiteknight/jaesop |
|||
| whiteknight | we can now convert the stage 0 driver to executable winxed, though the 'require' function isn't implemented yet | ||
| the milestones are getting more and more obscure | 00:25 | ||
|
00:35
dalek joined
01:14
kid51 joined
01:22
d4l3k_ joined
|
|||
| kid51 | msg alester src/platform/generic/dl.c now has many codingstd errors: c_arg_assert.t, c_function_docs.t. Can you fix? | 01:58 | |
| aloha | OK. I'll deliver the message. | ||
| kid51 | msg nine src/platform/generic/dl.c now has many codingstd errors: c_arg_assert.t, c_function_docs.t. Can you fix? | 02:00 | |
| aloha | OK. I'll deliver the message. | ||
|
02:02
jashwanth joined
|
|||
| jashwanth | whiteknight:hello | 02:02 | |
|
02:10
d4l3k_ joined
|
|||
| jashwanth | dukeleto:hello | 02:12 | |
| dalek | esop: de51ea7 | Whiteknight++ | stage0/js/wast.js: Fix whitespace in the __js_main__ |
02:30 | |
| esop: 7f1ea77 | Whiteknight++ | stage0/ (3 files): Add in a rough-draft of the require() mechanism. exports does not work with the store/fetch_global mechanism so is bound to cause confusion |
|||
|
02:56
d4l3k_ joined
03:03
jashwanth joined
|
|||
| jashwanth | dukeleto:hello | 03:03 | |
|
03:35
_mayank joined
03:42
jashwanth joined
03:43
dalek joined
04:06
nbezzala joined
04:30
dalek joined
05:00
fperrad joined
05:02
nbrown joined
05:17
d4l3k_ joined
06:04
d4l3k_ joined
|
|||
| dalek | rrot: 4800aef | petdance++ | frontend/pbc_merge/main.c: removed useless casts |
06:13 | |
| rrot/m0: 0fcefb6 | jimmy++ | src/m0/c/m0_ops.c: fixed bug in op print_i |
06:22 | ||
|
06:47
nbezzala joined
06:51
dalek joined
07:19
_mayank joined
07:39
dalek joined
07:47
nbezzala joined
08:25
d4l3k_ joined
08:52
pjcj joined
09:12
dalek joined
|
|||
| dalek | rrot/m0: e9087b5 | jimmy++ | src/m0/c/m0_ops.c: add op print_n |
09:39 | |
| rrot/m0: ca39ba1 | jimmy++ | src/m0/perl5/m0_assembler.pl: use double-precision float instead of single-precision float |
09:51 | ||
|
10:00
dalek joined
10:40
schmooster joined
10:49
d4l3k_ joined
|
|||
| nine | Hi, #parrot! | 11:04 | |
| tadzik | hi nine! | 11:05 | |
| . o O ( Hi five! ) | |||
| nine | In the next life, I'll get my nick name at five just to make this possible ;) | 11:06 | |
| I wonder why the GC itself is using indirections like Parrot_gc_free_pmc_attributes instead of calling its functions directly. It's not like one is going to change the GC in the middle of a mark & sweep run or something. | 11:09 | ||
| dalek | kudo/nom: 3218a72 | moritz++ | src/core/Rat.pm: ==-compare rats directly before we would go through Num, which made (1-0.5.FatRat**128) == 1 produce True, falsely |
11:13 | |
|
11:36
whiteknight joined
11:38
dalek joined
|
|||
| whiteknight | good morning, #parrot | 11:52 | |
| nine | Good morning, whiteknight | ||
| tadzik | hello whiteknight | ||
| whiteknight | good morning nine, tadzik | ||
| dalek | rrot/threads: 05965d9 | nine++ | / (2 files): Keep the GC blocked until the proxy for the result is created. We were blocking the GC while the call on the proxied PMC was running to prevent it from finding foreign PMCs on the stack. But even after the call, there's still the result! When creating the proxy for the result, the GC was already unblocked and every 100,000th proxied call or so it would start marking at this exact moment and find the result PMC. Fixed by simply unblocking the GC only after the proxy is created and the original being no longer on the stack. |
11:57 | |
| nine | If I'd had a closer look at the full backtrace, I'd have found this one much quicker... Just got distracted by it being always a NameSpace PMC which just happened to be what my test program was using. | 12:00 | |
|
12:02
PacoAir joined
12:26
dalek joined
12:52
kid51 joined
|
|||
| _mayank | good morning whiteknight | 13:03 | |
|
13:14
d4l3k_ joined
|
|||
| whiteknight | hello _mayank | 13:35 | |
|
13:54
jsut joined
13:58
jashwanth joined
14:01
dalek joined
|
|||
| jashwanth | whiteknight:hello | 14:07 | |
| whiteknight | hello jashwanth | ||
| I saw that you submitted the proposal. Very good | 14:08 | ||
| jashwanth | whiteknight:yes I did | ||
| whiteknight:I just came in to inform you | 14:09 | ||
| whiteknight | I get emails when people submit or make changes | ||
| jashwanth | whiteknight:oh | ||
| whiteknight:bye | 14:14 | ||
|
14:38
fperrad joined
|
|||
| dalek | rrot/m0: 5c7a75f | jimmy++ | src/m0/c/m0_ops.c: add op add_n and sub_n, and fix bug in op add_i and sub_i |
14:39 | |
| rrot/m0: 076d7e6 | jimmy++ | src/m0/c/m0_ops.c: forgot add sub_n to runloops |
14:44 | ||
|
14:48
d4l3k_ joined
14:55
lucian joined
15:34
JimmyZ joined
|
|||
| JimmyZ | cotto: ping | 15:35 | |
|
15:35
dalek joined
|
|||
| JimmyZ | aloha: tell | 15:47 | |
| aloha | (parrot/parrot) Issues opened : 752 (Fix m0 tests) by nbrown : github.com/parrot/parrot/issues/752 | 15:48 | |
| JimmyZ | aloha: msg otto I'd like make some changes to pdd32_m0.pod, most about M0_CallFrame | ||
| aloha | JimmyZ: OK. I'll deliver the message. | ||
|
16:02
fperrad joined
|
|||
| dalek | rrot/m0: 5246f7c | dukeleto++ | t/m0/integration/m0_ (6 files): Merge pull request #752 from nbrown/m0-tests Fix m0 tests |
16:12 | |
|
16:12
TonyC joined
|
|||
| aloha | (parrot/parrot) Issues closed : 752 (Fix m0 tests) by nbrown : github.com/parrot/parrot/issues/752 | 16:13 | |
|
16:18
fperrad joined
16:19
nopaste joined
16:23
dalek joined
16:25
mdupont joined
|
|||
| dalek | rrot: 8a3e561 | dukeleto++ | ChangeLog: [doc] Add a changelog section for 4.3.0 |
16:27 | |
|
17:11
dalek joined
|
|||
| dalek | rrot/threads: bf28faf | nine++ | / (8 files): Use a new thread safe GC block_mark_locked for blocking GC Parrot_block_GC_mark and Parrot_unblock_GC_mark are not thread safe. They contain a classical race condition when incrementing or decrementing the counter. Though taking the interp_lock helped in most cases against setting the block_mark while the accessed thread's GC was running, it did not help against the race condition in (un)block_GC_mark itself. So in very, very rare cases, the GC could still run from the wrong thread. Making Parrot_(un)block_GC_mark itself thread safe would be a performance problem since it's used in many places all over the code base. Instead this patch adds a second thread save block_mark_locked which is only used by threading code when accessing a foreign interp's PMCs. The counter is only tested by gc_gms_mark_and_sweep which is called comparatively rarely so it the test should not have any measurable performance cost. |
17:32 | |
| rrot/threads: c2b90c0 | nine++ | src/ (3 files): Move GC locking down from get_new_pmc_header into the GC With this change all GC lock handling is done at the same layer (the GC GMS implementation) which is the only way to keep the locking strategy (and the poor programmer trying to understand it) sane. While allocating new memory is a very straight forward operation, freeing memory unfortunatley is much more complicated since it can be done by a mark & sweep run (which naturally has to take the lock) but also manually through API calls. Therefore I need to tell gc_gms_free_pmc_attributes if it has to do the locking by itself or not using a gc_gms_free_pmc_attributes_locked function and the new "locked" GC variable. |
|||
| nine | YEAH YEAH YEAH YEAH YEAH! | ||
| whiteknight: moretasks.pir seems to have become useless to me. I cannot provoke any error anymore! Been running while ./parrot moretasks.pir ; do echo "yes!" ; done for quite a while and it just runs and runs | 17:34 | ||
| Lesson of today: with threading related bugs, don't look too closely at the symptoms, look at the situation in which they occur. | 17:36 | ||
| whiteknight | nine: oh darn, that's so disappointng :) | ||
| nine | Oh my, this just feels so great :) | ||
| benabik | o/ | 17:39 | |
|
17:59
d4l3k_ joined
|
|||
| whiteknight | let me tell you what: Getting JavaScript object model logic correct is hard | 18:10 | |
| nine | Oh I don't doubt that for a second | 18:12 | |
| whiteknight | ...but I think I've finally got it | 18:24 | |
| or, I've got it close enough | 18:35 | ||
| dalek | esop: b130983 | Whiteknight++ | / (11 files): Add in a stage0/modules directory and a sys.js. Implement require and exports. Add tests for require. A handful of fixes |
18:36 | |
| esop: 5d525be | Whiteknight++ | / (2 files): Add a shift method to Array |
|||
| esop: 885ffd2 | Whiteknight++ | / (2 files): A few fixes to the stage0 readme |
|||
| esop: 5eb97ff | Whiteknight++ | / (3 files): Significantly improve handling of prototypes. We can now do things like: Foo.prototype.bar = baz; var f = new Foo(); f.baz ... The code and the logic is MESSY and I expect it's not perfect, but it's far closer to spec than it was and will help us self-parse more of the stage0 files |
|||
|
18:47
dalek joined
19:02
nbrown joined
19:18
contingencyplan joined
19:34
d4l3k_ joined
19:39
Justin joined
|
|||
| dalek | kudo/nom: 984dc7c | moritz++ | src/core/Rat.pm: comperator ops for rats and rats and ints |
19:45 | |
|
19:54
nbrown joined
|
|||
| nbrown | hello, are there any m0 people around? I've been trying to develop some of the *_n ops and keep running into two issues: | 19:56 | |
| 1) How does deref know whether constant being loaded into an N register is a binary packed float or integer? | 19:57 | ||
| 2) When an m0 *_n op is executed, how does it know if the contents of the N register is a binary packed float or integer? | |||
| I have a decent first cut at making add_n, sub_n, etc. work, but it assumes that the constants are binary packed single precision floats | 19:59 | ||
| I know the specification says that they should be double precision, but the perl assembler stores single precision floats and I was trying to make the c implementation work with it | 20:01 | ||
| benabik | There's _i and _n, right? | 20:03 | |
| I think _n ops always deal with floats, they don't have to figure out between int and float. | |||
| (Mind you, I haven't actually looked into the current M0 design much.) | 20:04 | ||
| nbrown | benabik: yes, but the spec says that _n ops should treat the arguments as integer or floating-point values | ||
| benabik | That's odd. | ||
| nbrown | benabik: I agree with your thoughts. The other is too hard at this level | ||
| benabik: If you want to add a float and an integer, it should require that we use the convert ops and then do the add, sub, etc | 20:05 | ||
| benabik | nbrown: That would be my assumption. Ops are supposed to do minimal magic. | 20:06 | |
| Differet things should be different ops. | |||
| nbrown | I agree. Maybe I'll go propose a spec change | 20:07 | |
| that would cause both of my issues to go away | 20:09 | ||
| I'm an idiot, I think I just misread the spec | 20:22 | ||
| benabik | It happens. | 20:23 | |
|
20:23
dalek joined
|
|||
| nbrown | benabik: yeah, and it makes me glad because it simplifies the problem. | 20:26 | |
| benabik | M0 is supposed to be simple. :-) | 20:27 | |
| nbrown | :) | 20:28 | |
|
20:31
Justinlh joined,
Justinlh left
20:40
Justinlh joined
20:41
Justinlh left,
Justin joined
|
|||
| Justin | Good afternoon everyone. | 20:42 | |
| tadzik | hello Justin | 20:43 | |
| Justin | I finally managed to connect and say hello to everyone. I am an undergraduate in the Electrical Engineering Department from Temple University and I have expressed intrest in proposing a project to you and your team at the Parrot Foundation for the GSOC 2012. I myself do not have much experience in programming besides the mandatory minimum for graduation, but after a Temple alumni Mr. Whitworth | 21:01 | |
| contacted our department chair for possible candidates I wanted to participate. This seems like a great opportunity to gain real world experience and to meet and work with new people. The project I wanted to possibly write a proposal for is the protests titled: "Improve Web UI of app-parrot-create" and possibly "New Assembly Language". I would like to know what types of information to include. | |||
| I have read the blog post and I have a general idea of what to include, but for these two projects in particular what are some constrants that I as a student would come across in viability of these projects? | |||
| projects* | |||
| benabik | Justin: dukeleto is the main person for app-parrot-create, I think. | 21:02 | |
| Justin: whiteknight is probably who you should talk to about the assembly language, although I've been involved in a lot of it | 21:03 | ||
| The biggest limitation for the assembly language is that it's supposed to also create a library that can be used as the basis for a larger system called PACT. | |||
| Also, working on the assembler may require some work on the infrastructure in Parrot. It has some sharp edges. | 21:04 | ||
| Justin | Thank you, is there a way to contact dukeleto about his project outside of chat, such as email. @Benabik do you think it would require work on the infrastructure that someone with limited knowledge could preform with the help of an overseer. It seems like an interesting project | 21:08 | |
| benabik | Justin: you can either leave messages here via the bots: "tell <person> <message>" | 21:09 | |
| tell Justin like this | |||
| Oops. | |||
| that's phenny. | |||
| msg Justin like thist | |||
| aloha | OK. I'll deliver the message. | ||
| benabik | Justin: Or dukeleto is jonathan at leto dot net | 21:10 | |
| The infrastructure work can probably be done with supervision or direct assistance of whiteknight and myself. I'm currently writing a proposal to work on that as well, although there's plenty of work there for two. | 21:11 | ||
| Justin | @aloha: thank you and @benabik thank you. | 21:12 | |
| benabik | Familiarity with compiler backends is a definite bonus for working on PACT. It's part of my crusade to give parrot modern compiler techniques. | 21:13 | |
|
21:13
d4l3k_ joined
|
|||
| benabik | But as long as you know what an assembly language is, the rest can be learned. :-) | 21:13 | |
| Justin | @benabik, I took a class in assembly language a few years ago, but i'll be taking another assembly launguage class this fall semester. | 21:15 | |
| I am somewhat familiar with how it works | |||
| What type of work are you doing with the infrastructure @benabik? | 21:18 | ||
| benabik | Well, I'm currently writing up a proposal for the assembler. But if you work on that, I can do a higher level project involving control flow graphs. | ||
|
21:19
aloha joined
|
|||
| Justin | Oh will the control flow graphs run based off the assembly language project? | 21:21 | |
| benabik | The goal (in my mind) would be for the assembly language to also have an API that the higher levels can use. The language is mostly to give an immediately useful front end to the library. | 21:22 | |
| The CFG library would sort out the register allocations, instruction ordering, etc and use the assembly library to create packfiles. | 21:23 | ||
| Justin | Interesting | 21:26 | |
| benabik | PACT is a large project with a variety of layers, each providing a useful service. The assembler is the most direct representation of a PBC file. The CFG layer is do handle static analysis, allocations, and optimizations. Then the top layer will be a tree-like structure for ease of use. | 21:29 | |
| Justin | Ok its starting to make some more sense now | 21:31 | |
| benabik | Parrot also currently doesn't have anything that directly represents its bytecode. The assembler is supposed to be very simple to fill that niche. | ||
| Justin | and the assembler will allow your PBC file to be interchangeable with other HLLs? if I am understanding this correctly | 21:34 | |
| benabik | More or less... | 21:35 | |
| It's mostly useful as a debugging tool. Very few languages would directly work with it. | 21:36 | ||
| The goal would be that many languages could use it so any optimizations and improvements used can help all HLLs. | |||
| Justin | forgive me im slowly piecing this together but I understand it now | 21:37 | |
| benabik | No forgiveness necessary. I've been working on this for close to a year now. I have grand visions of it now. :-) | ||
| Justin | lol | ||
| This sounds is very interesting | 21:42 | ||
| it is very interesting | |||
| benabik | I really want Parrot to have modern compiler tools. There's no point in having a fancy register based VM if we ignore all the lessons that have been learned about compiling for register machines. :-D | ||
| Maybe I'll work on 6model if you work on the assembler. Would be easier if we don't have one GSoC project depending on the result of another. :-D | 21:44 | ||
| Justin | True. | 21:46 | |
| it would b a good project for prehaps next year after the assembler is done | |||
| be* | |||
| benabik | I'd selfishly suggest you work on app-parrot-create. I've been chomping at the bit to work on PACT. But there are other, equally valuable, projects I can do. And I'm more than willing to help you with it. :-) | 21:47 | |
| Justin | No by all means work on the assembler. It seemes like you have been working on the PACT projects for a while. The least I can do is make your interface better and easier to understand for people like me with limited knowledge lol | 21:50 | |
| benabik | Justin: There are many things I can work on. I don't want to discourage you from working on the assembler if it really interests you. | ||
| I don't want to send people away, I want to bring more people to Parrot! :-) | 21:51 | ||
| Justin | Oh its not sending me away, in fact it is driving me to want to understand it more. | 21:52 | |
| benabik | :-) | ||
| Justin | Honestly as you were throwing all these terms at me I was googling them to atleast try and follow what you were saying | ||
| benabik | Sorry. | ||
| Justin | not a problem | 21:53 | |
| benabik | The longer I've been in grad school, the harder I am to follow. | ||
| Justin | lol | ||
| benabik | Next year I'll be a PhD student and I'll barely be able to talk to anyone. | ||
| Justin | no it made me realize how little i know about computers and programming | ||
| benabik | My studies have been in compilers and languages, so this is kinda what I've been living and breathing for a few years. | 21:54 | |
| Talk to me about web services or GUIs and I'll get lost. :-) | |||
| Justin | I design circuits....lol I am in comepletely unfamiliar territory myself | 21:55 | |
| benabik | Oooh, hardware. | ||
| Justin | are there any pointers you could give me of how to approach improving the web interface design proposal? | 21:56 | |
| on* how | 21:57 | ||
| benabik | I don't know as much about it... Uhm. | ||
| Lemme take a look. | |||
| Justin | I assume you have written proposals before so what are somethings you add in your proposal? | ||
| benabik | If you go to the page to submit a proposal, it gives you a template to work with. | 21:58 | |
| Justin | oh ok | ||
| benabik | That's helpful. :-) | ||
| Justin | the GSOC page? | ||
| or parrots page | |||
| benabik | Yeah, on google-melange | ||
| www.google-melange.com/gsoc/proposa...012/parrot | 21:59 | ||
| (You'll have to be logged in and registered for GSoC 2012 before that page will work, I think.) | |||
| The best way to create a good proposal is to really think about the project. Showing understanding and thought makes a good proposal. :-) | 22:01 | ||
| Justin | I see. I am logged in but I dont have a profile so I will create one now. | ||
|
22:01
d4l3k_ joined
|
|||
| benabik | I tend to do a lot of research and tinkering on mine. The week-by-week timeline is a good way to really think about each step you'll have to do. | 22:01 | |
| Justin | oh so the timeline that is needed in the proposal comes from the profile we create? | 22:04 | |
| benabik | Creating a profile gives you access to the "submit proposal" page. That page has a template for the proposal which includes a place for a timeline. | 22:05 | |
| Justin | oh ok. thanks | 22:06 | |
| I have another question. Lets take your project for instance. How do you know what it is that you require to be done? Your thought process for attacking the problem? | 22:12 | ||
| benabik | Figure out the end result, useful features, documentation, etc. Then start slotting things into the timeline to determine how much I can actually do in a summer. | 22:13 | |
| I tend to leave a week or two open for slop. | |||
| slop = delays, etc | 22:15 | ||
| Justin | that sounds good. I'm trying to get into the mindset of a programmer | ||
|
22:16
whiteknight joined
22:38
tadzik joined,
dalek joined
|
|||
| whiteknight | good evening, #Parrot | 22:39 | |
|
22:40
Util joined
|
|||
| benabik | xkcd today is _mean_ It's time, location, and browser sensitive. | 22:40 | |
| aloha | Couldn't get comic | ||
| benabik | aloha: shush | ||
|
22:41
masak joined,
PerlJam joined
22:46
pmichaud joined,
Coke joined
22:51
jsut_ joined,
dalek joined
|
|||
| benabik | whiteknight: I was talking to Justin, who wanted to work on app-parrot-create or PACT. Hopefully my enthusiasm hasn't driven him away. | 22:53 | |
| Justin | nope im still here! | 22:54 | |
| whiteknight | yeah, I've been talking to him too | ||
| thanks for warming him up :) | |||
| benabik | Proposal 1 submitted. I guess I should work on my 6model one. Blah. | 22:59 | |
| whiteknight | You're proposing 6model too? | 23:03 | |
| benabik | Probably more useful to work on 6model if someone else is doing the assembly. | ||
| PACT is more my style, but I think I could do something useful with 6model. | |||
| whiteknight | Yeah, as attractive as it is to have you work on 6model all summer, PACT is probably where you're most needed and will be the most effective | 23:16 | |
| nbrown | I have another dumb m0 question. The spec says that " //frame->registers[ops[1]] = (uint64_t)0; | 23:21 | |
| oops, I meant to paste "By default, instructions which work with integer values will assume that I registers are unsigned." | |||
| what does that really mean? | 23:22 | ||
|
23:32
kid51 joined
|
|||
| benabik | dinner & | 23:39 | |
|
23:41
d4l3k_ joined
|
|||
| whiteknight | nbrown: that's a question for dukeleto or cotto. Neither appear to be here right ow | 23:42 | |
| now | |||
| nbrown: I would assume it has something to do with the way comparison and arithmetic operators treat integers | |||
| cotto, dukeleto: ping | 23:52 | ||
| msg cotto We've got a student interested in security sandboxing. I'd really love to hear some of your opinions on the subject. | 23:55 | ||
| aloha | OK. I'll deliver the message. | ||
| whiteknight | msg dukeleto We've got a student interested in security sandboxing. If you have any particular requirements, especially as they pertain to PL/Parrot or other projects, let me know | ||
| aloha | OK. I'll deliver the message. | ||
|
23:59
nbrown_ joined
|
|||