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