|
Parrot 3.7.0 "Wanda" | parrot.org | Log: irclog.perlgeek.de/parrot/today | #parrotsketch meeting Tuesday 19:30 UTC Set by moderator on 17 August 2011. |
|||
| coke_ | looks like most of the files are coming from rakudo's usage of the smoke server. | 00:04 | |
|
00:15
davidfetter joined
|
|||
| coke_ | disk crisis on parrotvm temporarily averted. If we can just throw more disk at the situation, Im happy to chip in. I will also take a look at hacking on smolder to see what we can do there. | 00:17 | |
| whiteknight | coke++ | ||
| coke_ | I'll see about setting up a temporary server on feather to play around with. but not tonight. | ||
| night. | |||
| benabik | Compiling Rakduo is a nice test to make sure I haven't goofed anything in nqp_pct, but it takes quite a while to discover errors! | 00:46 | |
| But I discovered that it wasn't that try was broken for PBC gen… I had just managed to break it. *sigh* | 00:47 | ||
|
00:58
soh_cah_toa joined
|
|||
| nopaste | Someone at 192.168.1.3 pasted "doors1011171t.txt;1;1" (1 line) at nopaste.snit.ch/73048 | 01:07 | |
| benabik | That's… odd. | 01:10 | |
| soh_cah_toa | yeah, i know :\\ | 01:11 | |
| benabik | soh_cah_toa: Was that yours? | ||
| soh_cah_toa | it was just the same text as the title | ||
| benabik | Awesome. Infinite loop compiling nom's setting. | 01:16 | |
| dalek | nxed/complex_namespace: 2bc6225 | Whiteknight++ | winxedst1.winxed: The using <ns>.<func> statement can now take strings for complicated non-identifier namespace names |
01:42 | |
| nxed/complex_namespace: 7680c6f | Whiteknight++ | t/advanced/10namespace.t: +tests for namespaces-as-strings syntax |
|||
| whiteknight | msg Eclesia take a look at the test I added to winxed in github.com/Whiteknight/winxed/commit/7680c6faa1 . This is in my fork. Hopefully we can get it pulled to master soon | 01:43 | |
| aloha | OK. I'll deliver the message. | ||
| dalek | rrot/nqp_pct: 6d53132 | benabik++ | compilers/pct/src/POST/Compiler.p (2 files): POST::Compiler - fix file annotations I hadn't noticed that the %0 inside inline PIR got ate. Use %% so that the format gets all the way through to the generated PIR. |
01:51 | |
| rrot/nqp_pct: 1c5b14d | benabik++ | compilers/pct/src/PAST/Compiler.p (2 files): PAST::Compiler - fix unicode escaping It used to miss a \\u sequence at the beginning of the string. |
|||
| rrot/nqp_pct: 2632666 | benabik++ | compilers/pct/src/PAST/ (4 files): [pct]: Add 'signature' attribute to PAST::Node to explicitly request a particular signature for evaluating children. From:\tc89970666355580f44775200daa23bff948d1175 Author:\tpmichaud <pmichaud@pobox.com> |
|||
| rrot/nqp_pct: 82a740d | benabik++ | compilers/pct/src/PAST/Compiler.p (2 files): PAST::Compiler.chain - fix typo Need to use .new on a class in order to create a new object. |
|||
| rrot/nqp_pct: af5d09f | benabik++ | compilers/pct/src/PAST/Compiler.p (2 files): PAST::Compiler.try - fix typo Nobody knows what a POST::Lable is. |
|||
| benabik | I now get to a point where nom spins seemingly forever trying to compile the setting. *sigh* Better than not doing anything. | 01:53 | |
| whiteknight | awesome | 01:56 | |
| nobody ever said this would be easy | |||
| benabik | fsvo awesome | ||
| This is just PIR generation, not bytecode. | |||
| whiteknight | in fact, I remember saying it would be hard | ||
| benabik | Turns out some of the conversions aren't working as well as they seemed to at first go. | 01:57 | |
| whiteknight | I'm heading to bed now. I can take a look at it tomorrow morning if you want | ||
| msg me some details, and I'll see them when I wake up | |||
| aloha | OK. I'll deliver the message. | ||
| whiteknight | damnit aloha | ||
| me | how many messages do I have? | ||
| benabik | Just the one. | ||
| whiteknight | it's late. All my smarts have gone to bed already | 01:58 | |
| benabik | Fair enough. Sleep well. | ||
| whiteknight | goodnight | ||
| benabik | msg whiteknight I've been toying around with various constructs trying to get a decent list of "what doesn't work". After a while, I decided the list was "many things" and just wrote up docs/pct/bytecode.pod to document how to use what's there. | 01:59 | |
| aloha | OK. I'll deliver the message. | ||
| benabik | msg whiteknight Then I decided to try out nom after a summer of not using it and noticed some weird errors. Finally I realized I had installed my branch and started tracking down issues with PIR generation. That's mostly where the commits from today have come from. | 02:00 | |
| aloha | OK. I'll deliver the message. | ||
| benabik | msg whiteknight At the moment I've dealt with all the obvious (crashing) issues, but it seems to get stuck forever in PAST::Compiler when working through CORE.setting in nom. | 02:01 | |
| aloha | OK. I'll deliver the message. | ||
|
02:11
rfw joined
03:06
simcop2387 joined
03:23
theory joined
|
|||
| dalek | website: soh_cah_toa++ | And So Ends the Flight of the Honey Bee | 03:35 | |
| website: www.parrot.org/content/and-so-ends-...-honey-bee | |||
|
03:36
bubaflub joined
03:46
soh_cah_toa joined
|
|||
| bubaflub | ping NotFound | 03:50 | |
| unping NotFound | 04:14 | ||
| dalek | rrot-gmp: 4fbcbe4 | bubaflub++ | bin/benchmark.winxed: add basic benchmark script, Eclesia++ |
04:16 | |
|
04:18
Kulag joined
04:29
logie joined
04:37
cotto joined
04:59
jsut joined
|
|||
| cotto | ~~ | 05:37 | |
| tadzik | ~~ | 07:15 | |
|
07:23
fperrad joined
07:55
redicaps joined
08:42
jsut_ joined
09:15
mj41 joined
09:50
lucian joined
09:53
redicaps left
10:07
Eclesia joined
|
|||
| Eclesia | hi | 10:07 | |
|
10:27
Kulag joined,
whiteknight joined
|
|||
| Eclesia | hi whiteknight | 10:32 | |
| whiteknight | good morning, Eclesia | ||
| Eclesia | good afternoon | ||
| nine | whiteknight: Hello. Seems like we should talk a little :) | 10:33 | |
| whiteknight | nine: yes, so I've been told! | ||
| nine | whiteknight: so can you tell me something about the state of threading in Parrot? | 10:35 | |
| whiteknight | nine: the state of threading is currently poor. | 10:36 | |
|
10:36
Kulag joined
|
|||
| whiteknight | src/threads.c is the majority of the current implementation. It basically contains some wrappers to make threading look the same between systems, and most of the logic for running parrot on threads | 10:36 | |
| the current design is that each OS thread gets its own interp structure, which means that when we create a thread, we have to do a deep clone of the entire interp structure | 10:37 | ||
| nine | whiteknight: sounds expensive | ||
| whiteknight | it is, and buggy | 10:38 | |
| nine | so you would like to get rid of that? | ||
| whiteknight | We definitely want to replace the current system in whole or in part. yes | ||
| nine | are there any ideas floating around on how to do it better? | ||
| whiteknight | I've been thinking about a hybrid approach. Greenlets dispatched to a pool of worker threads | ||
| I had written a lot of stuff about it on my blog a while back, if you're interested in reading that | 10:39 | ||
| or, if you want to write up what your ideas are, we could definitely review them | |||
| nine | whiteknight: I'd definitely would like to have a look at your stuff. | 10:40 | |
| whiteknight | whiteknight.github.com/2011/04/23/v...rency.html | 10:41 | |
| I have written a lot about it, but that post is the main proposal | |||
| nine | My personal goal is to shape out concurrency features for Perl 6 for my bachelor paper. It would seem like the same problems and ideas would mirror in Parrot. So if we fix them here, I could just do the same in Rakudo and spec it for Perl 6 | 10:42 | |
| whiteknight | yeah, that's what I hope | 10:43 | |
| I definitely believe that Rakudo is going to want greenlets of some variety for autothreading. They're much less expensive than spawning OS threads | 10:44 | ||
|
10:46
rfw joined
|
|||
| nine | This is definitely not the first time I've read about these thoughts, no. FYI I'm collecting my findings at perl6.niner.name | 10:47 | |
| whiteknight | ok | ||
|
10:59
woosley joined
|
|||
| nine | the Mailbox would be used just for posting updates to data stored in other threads? Then I don't see a reason for every Task to have one, since the data ultimately belongs to the thread. | 11:01 | |
| Eclesia | nine: you should also have a look at the fortress language project. en.wikipedia.org/wiki/Fortress_(pro..._language) , labs.oracle.com/projects/plrg/Publi....0beta.pdf . you should fine some interesting docs on thin grain memory mangement for parallale tasks. as far as i know fortress is the only language which 'for' loops are parallal by default | 11:02 | |
| nine | Eclesia: thanks, I'll have a look at it | 11:04 | |
| whiteknight | nine: I see the mailbox as being one of the few necessary synchronization mechanisms. The mailbox is basically a queue with thread-safe locks | 11:15 | |
| and you're right, a task doesn't need one unless it is receiving messages. We can create it lazilly | |||
| lazily | |||
| dalek | kudo/nom: eee43c6 | moritz++ | / (2 files): implement &dir |
11:22 | |
| nine | In any case this very much reminds me of Perl 5's ithreads. It would probably work equally well using processes instead of posix threads. | 11:23 | |
| What I don't yet know is why Perl 6 people want to go back from ithreads to real threads. Everyone seems to agree that threads are pain :) | 11:25 | ||
| whiteknight | threads are a pain, which is why I want to have a robust abstraction layer over them | 11:26 | |
| nine | Where do tasks and threads come from? In other words: who decides to create a posix thread? | 11:28 | |
|
11:33
ligne joined
11:47
JimmyZ joined
|
|||
| JimmyZ | good evening, #parrot | 11:56 | |
| moritz | nine: ithreads are also a pain | 12:03 | |
| whiteknight | nine: The user would create tasks, explicitly or implicitly. The VM would figure out an optimal number of worker threads to dispatch them onto | 12:22 | |
| maybe with a limit setting somewhere | |||
|
12:24
Kulag joined
12:30
Drossel joined
|
|||
| whiteknight | any details about actual OS threads should be hidden from the user, because you can take a bytecode compiled on a multithreaded machine and run it on a machine without threads | 12:30 | |
| the user creates tasks, the VM dispatches them | |||
| maybe the user can hint, if she knows two tasks need to share a lot of data they can be dispatched on the same OS thread | |||
| or, vice-versa | 12:31 | ||
| of course, I suspect an HLL should be able to subclass the task dispatcher. So if you want a 1:1 system like normal posix threads, you can do that | 12:34 | ||
|
12:36
redicaps joined
12:40
JimmyZ joined
12:44
Kulag joined
13:04
Drossel joined
13:07
lucian joined
13:16
Kulag joined
|
|||
| Coke | ~~ | 13:18 | |
|
13:25
kid51 joined
|
|||
| kid51 | msg Util Util++ for parrot-users post and taking the time to install Cygwin and try our Parrot on it! | 13:27 | |
| aloha | OK. I'll deliver the message. | ||
| Coke | kid51: ah, good. I was going to get to that at some point in the next week. ;) (cygwin) | 13:29 | |
| Coke forks smolder | |||
| kid51 | I really like both what Util did and how he wrote up that post. That's a great example of how to respond to a user's concerns. | 13:36 | |
|
13:38
Kulag joined
13:59
alester joined
|
|||
| dalek | rrot: 9b021e6 | coke++ | / (2 files): Ignore and clean some files on windows |
14:18 | |
|
14:18
bubaflub joined
14:20
lucian joined
14:42
lucian joined
14:43
rohitnsit08 joined
|
|||
| dalek | rrot: e0bc614 | coke++ | config/gen/makefiles/root.in: Remove untrue OS discrimination |
14:49 | |
|
14:51
whiteknight joined
14:57
mj41 joined
|
|||
| Coke | I don't think I saw util's answer. | 15:07 | |
|
15:08
bubaflub joined
|
|||
| Coke | ah, finally found it. | 15:10 | |
| nine | moritz: what's the problem with ithreads? | 15:16 | |
|
15:36
JimmyZ joined
|
|||
| cotto | ~~ | 15:46 | |
|
15:59
not_gerd joined
16:15
mj41 joined
16:42
contingencyplan joined
|
|||
| moritz | nine: I don't know what the deeper problem is, but they simply don't work well | 16:49 | |
| nine: go to perlmonks and look at threading questions; people usually recommend using processes or async IO instead | |||
| nine: everything I tried to do with ithreads ended in cryptic error messages | 16:50 | ||
| nine: one problem is that you can't share nested data structures (just scalars), but I don't know if that's the root cause | |||
| benabik | o/ | 16:53 | |
|
16:58
plobsing joined
17:11
Eclesia joined
|
|||
| Eclesia back | 17:11 | ||
| nine | moritz: ok, scalars only should be enough of a drawback to question ithreads' use... | 17:12 | |
| moritz | nine: though I don't know if that's jsut a feature of the p5 implementation, or a general restriction | 17:20 | |
| plobsing | msg whiteknight (re: rethrow) the problem isn't just about the very noisy backtraces (which are indeed a problem). the exception acts like an exception that was thrown from the last throwing handler, which is *wrong*. for example, the resume point should be the original throw point. also programatic analysis of the backtrace (like what rakudo does) either sees only the last rethrow or needs to become more complicated. | 17:23 | |
| aloha | OK. I'll deliver the message. | ||
| nine | moritz: I'd guess it's an implementation problem. If the model is to just use OS processes and use messages for writing to shared data, there shouldn't be any restriction on the kind of data. | 17:31 | |
| plobsing | nine: if the model is just OS processes and OS messaging, that is already available. why duplicate it with something calling itself threads? | 18:05 | |
|
18:28
rohitnsit08 joined
18:53
bubaflub joined
|
|||
| Eclesia | question : how do I declare an abstract method in pir ? | 18:57 | |
| plobsing | .sub 'abstract-method' :method\\n die "abstract method not implemented, but called"\\n .end | 18:59 | |
| Eclesia | ??? no special keyword to identify then ? | 19:00 | |
| plobsing | why does every behaviour anyone would ever want deserve its own declerative syntax? | 19:01 | |
| that mentality is what made IMCC/PIR the monster it is today | 19:02 | ||
| Eclesia | plobsing: let's say it another way, using reflexion I can obtan a class PMC, yet can't find if a given method is virtual or not | 19:04 | |
| plobsing: am I right ? | |||
| plobsing | we have no mechanism to implement that at the moment | ||
| abstract methods aren't particularly useful to a dynamic type system, which differs slightly in purpose to a static type system | 19:05 | ||
| Eclesia | ^^ I already noticed several troubles of implementing my static type language on parrot | 19:06 | |
| plobsing | you could subclass Sub, and implement the abstract method with :instanceof (which declares what class implements the current sub) | 19:09 | |
| .sub 'asdf' :method :instanceof('AbstractMethod') | |||
| cotto | Heh. Someone asked about that in the Perl 6 workshop that jnthn gave. He gave almost the same answer (submethod that dies). | 19:10 | |
| Eclesia is just going to store a property with this information, and the compiler check will do the job | 19:11 | ||
| nine | plobsing: true, true | 19:29 | |
|
19:38
bubaflub joined
19:40
whiteknight joined
|
|||
| whiteknight | good afternoon, #parrot | 19:49 | |
|
19:52
ewilhelm joined
|
|||
| dalek | kudo/nom: a638825 | moritz++ | / (2 files): implement &first, run tests |
20:07 | |
| benabik | o/ whiteknight | 20:24 | |
| whiteknight | hello benabik | 20:26 | |
|
20:38
mj41 joined
21:00
bluescreen joined
|
|||
| benabik | Hm. Looks like PIR generation isn't broken on my branch, just slower. By something like a factor of two. | 21:02 | |
| whiteknight | benabik: that's to be expected | 21:04 | |
| NQP has certain performance characteristics in comparison to hand-edited PIR code | |||
| benabik | That's… poor. | 21:05 | |
| Yes. Pretty much exactly a 100% slowdown in POST and PIR phases. (PAST::Compiler and POST::Compiler) | 21:10 | ||
| Well, at least it's not broken like I thought. | 21:11 | ||
| Does winxed have working multis yet? | 21:14 | ||
| whiteknight | a basic form of them, yes | 21:17 | |
| it can dispatch NISP, but not classes | 21:18 | ||
| benabik | Well, if it learns classes, I might investigate PCT in winxed instead of NQP. | 21:19 | |
| whiteknight | The only real roadblock between us and class-based MMD is a syntax to do it | 21:20 | |
| For instance, "function x(Foo.Bar bar)" tells us that the type of the first arg should be a Foo.Bar which we can use for dispatching | |||
| but if the function isn't a multi, do we have to insert type-checks? | |||
| or, if we have type information, do we always autopromote to multi, and take the (non-obvious) performance hit? | 21:21 | ||
| benabik | Not using the "multi x(Foo bar)" syntax? | 21:25 | |
| whiteknight | we could definitely do that too. It is obvious | 21:26 | |
| but we are doing multis right now implicitly, with the function keyword | |||
| so do we roll that out, and stop "functions" from automatically turning into "multi" by magic? | |||
|
21:29
soh_cah_toa joined
|
|||
| benabik | hmmm... | 21:31 | |
| I'd like winxed to grow multi… I'm considering refactoring/re-re-writing PCT. Hopefully winxed will be easier to read than PIR but without the 2x loss of speed. | 21:48 | ||
| tadzik | hello #parrot | 21:55 | |
| benabik | o/ tadzik | 21:56 | |
| whiteknight | hello tadzik | 22:04 | |
| tadzik | hello folks | ||
| whiteknight | benabik: put together a list of specific features you need. We'll try to make sure winxed has them | ||
| I'll gladly help rewrite PCT in Winxed. That sounds like an excellent project | |||
| if we have to, we can write our own dispatcher type to fake it | 22:05 | ||
| soh_cah_toa | debug data format is also a pretty cool project ;) | ||
| benabik | whiteknight: To do a as-is replacement for PCT, I'd need to be able to extend P6object and class multi. I think that's it. | ||
| soh_cah_toa: Oh, yes, I know. I'll def be behind you on that one. | 22:06 | ||
| soh_cah_toa | :) | ||
| benabik should do a blog post about his thoughts on the Parrot Alternate Compiler Toolkit. | |||
| whiteknight | soh_cah_toa: I am going to be working on that too | ||
| benabik: yes, please do | |||
| soh_cah_toa | ok great | ||
| whiteknight | I have a relatively short attention span, and I jump back and forth between projects a lot | 22:07 | |
| soh_cah_toa | wrote a blog about it, if you're interested | 22:08 | |
| again ;) | |||
| whiteknight | a new blog post | ||
| ? | |||
| soh_cah_toa | yeah | ||
| yesterday | |||
|
23:33
Psyche^ joined
23:39
eternaleye__ joined
|
|||
| dalek | kudo/nom: b729151 | Coke++ | t/spectest.data: track failure mode |
23:59 | |