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