Camelia, the Perl 6 bug

IRC log for #parrot, 2011-08-21

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:04 coke_ looks like most of the files are coming from rakudo's usage of the smoke server.
00:15 davidfetter joined #parrot
00:17 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++
00:17 coke_ I'll see about setting up a temporary server on feather to play around with. but not tonight.
00:17 coke_ night.
00:46 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:47 benabik But I discovered that it wasn't that try was broken for PBC gen…  I had just managed to break it.  *sigh*
00:58 soh_cah_toa joined #parrot
01:07 nopaste Someone at 192.168.1.3 pasted "doors1011171t.txt;1;1" (1 line) at http://nopaste.snit.ch/73048
01:10 benabik That's… odd.
01:11 soh_cah_toa yeah, i know :\
01:11 benabik soh_cah_toa: Was that yours?
01:11 soh_cah_toa it was just the same text as the title
01:16 benabik Awesome.  Infinite loop compiling nom's setting.
01:42 dalek winxed/complex_namespace: 2bc6225 | Whiteknight++ | winxedst1.winxed:
01:42 dalek winxed/complex_namespace: The using <ns>.<func> statement can now take strings for complicated non-identifier namespace names
01:42 dalek winxed/complex_namespace: review: https://github.com/Whiteknig​ht/winxed/commit/2bc6225596
01:42 dalek winxed/complex_namespace: 7680c6f | Whiteknight++ | t/advanced/10namespace.t:
01:42 dalek winxed/complex_namespace: +tests for namespaces-as-strings syntax
01:42 dalek winxed/complex_namespace: review: https://github.com/Whiteknig​ht/winxed/commit/7680c6faa1
01:43 whiteknight msg Eclesia take a look at the test I added to winxed in https://github.com/Whiteknig​ht/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.
01:51 dalek parrot/nqp_pct: 6d53132 | benabik++ | compilers/pct/src/POST/Compiler.p (2 files):
01:51 dalek parrot/nqp_pct: POST::Compiler - fix file annotations
01:51 dalek parrot/nqp_pct:
01:51 dalek parrot/nqp_pct: I hadn't noticed that the %0 inside inline PIR got ate.  Use %% so
01:51 dalek parrot/nqp_pct: that the format gets all the way through to the generated PIR.
01:51 dalek parrot/nqp_pct: review: https://github.com/parrot/parrot/commit/6d5313233d
01:51 dalek parrot/nqp_pct: 1c5b14d | benabik++ | compilers/pct/src/PAST/Compiler.p (2 files):
01:51 dalek parrot/nqp_pct: PAST::Compiler - fix unicode escaping
01:51 dalek parrot/nqp_pct:
01:51 dalek parrot/nqp_pct: It used to miss a \u sequence at the beginning of the string.
01:51 dalek parrot/nqp_pct: review: https://github.com/parrot/parrot/commit/1c5b14d9fa
01:51 dalek parrot/nqp_pct: 2632666 | benabik++ | compilers/pct/src/PAST/ (4 files):
01:51 dalek parrot/nqp_pct: [pct]:  Add 'signature' attribute to PAST::Node
01:51 dalek parrot/nqp_pct:
01:51 dalek parrot/nqp_pct: to explicitly request a particular signature for evaluating children.
01:51 dalek parrot/nqp_pct:
01:51 dalek parrot/nqp_pct: From:c89970666355580f44775200daa23bff948d1175
01:51 dalek parrot/nqp_pct: Author:pmichaud <pmichaud@pobox.com>
01:51 dalek parrot/nqp_pct: review: https://github.com/parrot/parrot/commit/263266610c
01:51 dalek parrot/nqp_pct: 82a740d | benabik++ | compilers/pct/src/PAST/Compiler.p (2 files):
01:51 dalek parrot/nqp_pct: PAST::Compiler.chain - fix typo
01:51 dalek parrot/nqp_pct:
01:51 dalek parrot/nqp_pct: Need to use .new on a class in order to create a new object.
01:51 dalek parrot/nqp_pct: review: https://github.com/parrot/parrot/commit/82a740db07
01:51 dalek parrot/nqp_pct: af5d09f | benabik++ | compilers/pct/src/PAST/Compiler.p (2 files):
01:52 dalek parrot/nqp_pct: PAST::Compiler.try - fix typo
01:52 dalek parrot/nqp_pct:
01:52 dalek parrot/nqp_pct: Nobody knows what a POST::Lable is.
01:52 dalek parrot/nqp_pct: review: https://github.com/parrot/parrot/commit/af5d09f7b1
01:53 benabik I now get to a point where nom spins seemingly forever trying to compile the setting.  *sigh*  Better than not doing anything.
01:56 whiteknight awesome
01:56 whiteknight nobody ever said this would be easy
01:56 benabik fsvo awesome
01:56 benabik This is just PIR generation, not bytecode.
01:56 whiteknight in fact, I remember saying it would be hard
01:57 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
01:57 whiteknight msg me some details, and I'll see them when I wake up
01:57 aloha OK. I'll deliver the message.
01:57 whiteknight damnit aloha
01:57 me how many messages do I have?
01:57 benabik Just the one.
01:58 whiteknight it's late. All my smarts have gone to bed already
01:58 benabik Fair enough.  Sleep well.
01:58 whiteknight goodnight
01:59 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.
02:00 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.
02:01 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 #parrot
03:06 simcop2387 joined #parrot
03:23 theory joined #parrot
03:35 dalek website: soh_cah_toa++ | And So Ends the Flight of the Honey Bee
03:35 dalek website: http://www.parrot.org/content​/and-so-ends-flight-honey-bee
03:36 bubaflub joined #parrot
03:46 soh_cah_toa joined #parrot
03:50 bubaflub ping NotFound
04:14 bubaflub unping NotFound
04:16 dalek parrot-gmp: 4fbcbe4 | bubaflub++ | bin/benchmark.winxed:
04:16 dalek parrot-gmp: add basic benchmark script, Eclesia++
04:16 dalek parrot-gmp: review: https://github.com/bubaflub/​parrot-gmp/commit/4fbcbe40e6
04:18 Kulag joined #parrot
04:29 logie joined #parrot
04:37 cotto joined #parrot
04:59 jsut joined #parrot
05:37 cotto ~~
07:15 tadzik ~~
07:23 fperrad joined #parrot
07:55 redicaps joined #parrot
08:42 jsut_ joined #parrot
09:15 mj41 joined #parrot
09:50 lucian joined #parrot
09:53 redicaps left #parrot
10:07 Eclesia joined #parrot
10:07 Eclesia hi
10:27 Kulag joined #parrot
10:27 whiteknight joined #parrot
10:32 Eclesia hi whiteknight
10:32 whiteknight good morning, Eclesia
10:32 Eclesia good afternoon
10:33 nine whiteknight: Hello. Seems like we should talk a little :)
10:33 whiteknight nine: yes, so I've been told!
10:35 nine whiteknight: so can you tell me something about the state of threading in Parrot?
10:36 whiteknight nine: the state of threading is currently poor.
10:36 Kulag joined #parrot
10:36 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:37 whiteknight 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
10:38 whiteknight it is, and buggy
10:38 nine so you would like to get rid of that?
10:38 whiteknight We definitely want to replace the current system in whole or in part. yes
10:38 nine are there any ideas floating around on how to do it better?
10:38 whiteknight I've been thinking about a hybrid approach. Greenlets dispatched to a pool of worker threads
10:39 whiteknight I had written a lot of stuff about it on my blog a while back, if you're interested in reading that
10:39 whiteknight or, if you want to write up what your ideas are, we could definitely review them
10:40 nine whiteknight: I'd definitely would like to have a look at your stuff.
10:41 whiteknight http://whiteknight.github.com/2011/0​4/23/vision_parrot_concurrency.html
10:41 whiteknight I have written a lot about it, but that post is the main proposal
10:42 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:43 whiteknight yeah, that's what I hope
10:44 whiteknight 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:46 rfw joined #parrot
10:47 nine This is definitely not the first time I've read about these thoughts, no. FYI I'm collecting my findings at http://perl6.niner.name
10:47 whiteknight ok
10:59 woosley joined #parrot
11:01 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:02 Eclesia nine: you should also have a look at the fortress language project. http://en.wikipedia.org/wiki/F​ortress_(programming_language)  , http://labs.oracle.com/projects/plr​g/Publications/fortress1.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:04 nine Eclesia: thanks, I'll have a look at it
11:15 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 whiteknight and you're right, a task doesn't need one unless it is receiving messages. We can create it lazilly
11:15 whiteknight lazily
11:22 dalek rakudo/nom: eee43c6 | moritz++ | / (2 files):
11:22 dalek rakudo/nom: implement &dir
11:22 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/eee43c606c
11:23 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:25 nine 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:26 whiteknight threads are a pain, which is why I want to have a robust abstraction layer over them
11:28 nine Where do tasks and threads come from? In other words: who decides to create a posix thread?
11:33 ligne joined #parrot
11:47 JimmyZ joined #parrot
11:56 JimmyZ good evening, #parrot
12:03 moritz nine: ithreads are also a pain
12:22 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 whiteknight maybe with a limit setting somewhere
12:24 Kulag joined #parrot
12:30 Drossel joined #parrot
12:30 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 whiteknight the user creates tasks, the VM dispatches them
12:30 whiteknight 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
12:31 whiteknight or, vice-versa
12:34 whiteknight 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:36 redicaps joined #parrot
12:40 JimmyZ joined #parrot
12:44 Kulag joined #parrot
13:04 Drossel joined #parrot
13:07 lucian joined #parrot
13:16 Kulag joined #parrot
13:18 Coke ~~
13:25 kid51 joined #parrot
13:27 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.
13:29 Coke kid51: ah, good. I was going to get to that at some point in the next week. ;) (cygwin)
13:29 * Coke forks smolder
13:36 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:38 Kulag joined #parrot
13:59 alester joined #parrot
14:18 dalek parrot: 9b021e6 | coke++ | / (2 files):
14:18 dalek parrot: Ignore and clean some files on windows
14:18 dalek parrot: review: https://github.com/parrot/parrot/commit/9b021e61ce
14:18 bubaflub joined #parrot
14:20 lucian joined #parrot
14:42 lucian joined #parrot
14:43 rohitnsit08 joined #parrot
14:49 dalek parrot: e0bc614 | coke++ | config/gen/makefiles/root.in:
14:49 dalek parrot: Remove untrue OS discrimination
14:49 dalek parrot: review: https://github.com/parrot/parrot/commit/e0bc614a27
14:51 whiteknight joined #parrot
14:57 mj41 joined #parrot
15:07 Coke I don't think I saw util's answer.
15:08 bubaflub joined #parrot
15:10 Coke ah, finally found it.
15:16 nine moritz: what's the problem with ithreads?
15:36 JimmyZ joined #parrot
15:46 cotto ~~
15:59 not_gerd joined #parrot
16:15 mj41 joined #parrot
16:42 contingencyplan joined #parrot
16:49 moritz nine: I don't know what the deeper problem is, but they simply don't work well
16:49 moritz nine: go to perlmonks and look at threading questions; people usually recommend using processes or async IO instead
16:50 moritz nine: everything I tried to do with ithreads ended in cryptic error messages
16:50 moritz 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
16:53 benabik o/
16:58 plobsing joined #parrot
17:11 Eclesia joined #parrot
17:11 * Eclesia back
17:12 nine moritz: ok, scalars only should be enough of a drawback to question ithreads' use...
17:20 moritz nine: though I don't know if that's jsut a feature of the p5 implementation, or a general restriction
17:23 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.
17:31 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.
18:05 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:28 rohitnsit08 joined #parrot
18:53 bubaflub joined #parrot
18:57 Eclesia question : how do I declare an abstract method in pir ?
18:59 plobsing .sub 'abstract-method' :method\n die "abstract method not implemented, but called"\n .end
19:00 Eclesia ??? no special keyword to identify then ?
19:01 plobsing why does every behaviour anyone would ever want deserve its own declerative syntax?
19:02 plobsing that mentality is what made IMCC/PIR the monster it is today
19:04 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 Eclesia plobsing: am I right ?
19:04 plobsing we have no mechanism to implement that at the moment
19:05 plobsing abstract methods aren't particularly useful to a dynamic type system, which differs slightly in purpose to a static type system
19:06 Eclesia ^^ I already noticed several troubles of implementing my static type language on parrot
19:09 plobsing you could subclass Sub, and implement the abstract method with :instanceof (which declares what class implements the current sub)
19:09 plobsing .sub 'asdf' :method :instanceof('AbstractMethod')
19:10 cotto Heh.  Someone asked about that in the Perl 6 workshop that jnthn gave.  He gave almost the same answer (submethod that dies).
19:11 * Eclesia is just going to store a property with this information, and the compiler check will do the job
19:29 nine plobsing: true, true
19:38 bubaflub joined #parrot
19:40 whiteknight joined #parrot
19:49 whiteknight good afternoon, #parrot
19:52 ewilhelm joined #parrot
20:07 dalek rakudo/nom: a638825 | moritz++ | / (2 files):
20:07 dalek rakudo/nom: implement &first, run tests
20:07 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/a638825162
20:24 benabik o/ whiteknight
20:26 whiteknight hello benabik
20:38 mj41 joined #parrot
21:00 bluescreen joined #parrot
21:02 benabik Hm.  Looks like PIR generation isn't broken on my branch, just slower.  By something like a factor of two.
21:04 whiteknight benabik: that's to be expected
21:04 whiteknight NQP has certain performance characteristics in comparison to hand-edited PIR code
21:05 benabik That's… poor.
21:10 benabik Yes.  Pretty much exactly a 100% slowdown in POST and PIR phases.  (PAST::Compiler and POST::Compiler)
21:11 benabik Well, at least it's not broken like I thought.
21:14 benabik Does winxed have working multis yet?
21:17 whiteknight a basic form of them, yes
21:18 whiteknight it can dispatch NISP, but not classes
21:19 benabik Well, if it learns classes, I might investigate PCT in winxed instead of NQP.
21:20 whiteknight The only real roadblock between us and class-based MMD is a syntax to do it
21:20 whiteknight 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
21:20 whiteknight but if the function isn't a multi, do we have to insert type-checks?
21:21 whiteknight or, if we have type information, do we always autopromote to multi, and take the (non-obvious) performance hit?
21:25 benabik Not using the "multi x(Foo bar)" syntax?
21:26 whiteknight we could definitely do that too. It is obvious
21:26 whiteknight but we are doing multis right now implicitly, with the function keyword
21:26 whiteknight so do we roll that out, and stop "functions" from automatically turning into "multi" by magic?
21:29 soh_cah_toa joined #parrot
21:31 benabik hmmm...
21:48 benabik 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:55 tadzik hello #parrot
21:56 benabik o/ tadzik
22:04 whiteknight hello tadzik
22:04 tadzik hello folks
22:04 whiteknight benabik: put together a list of specific features you need. We'll try to make sure winxed has them
22:04 whiteknight I'll gladly help rewrite PCT in Winxed. That sounds like an excellent project
22:05 whiteknight 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 ;)
22:05 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.
22:06 benabik soh_cah_toa: Oh, yes, I know.  I'll def be behind you on that one.
22:06 soh_cah_toa :)
22:06 * benabik should do a blog post about his thoughts on the Parrot Alternate Compiler Toolkit.
22:06 whiteknight soh_cah_toa: I am going to be working on that too
22:06 whiteknight benabik: yes, please do
22:06 soh_cah_toa ok great
22:07 whiteknight I have a relatively short attention span, and I jump back and forth between projects a lot
22:08 soh_cah_toa wrote a blog about it, if you're interested
22:08 soh_cah_toa again ;)
22:08 whiteknight a new blog post
22:08 whiteknight ?
22:08 soh_cah_toa yeah
22:08 soh_cah_toa yesterday
23:33 Psyche^ joined #parrot
23:39 eternaleye__ joined #parrot
23:59 dalek rakudo/nom: b729151 | Coke++ | t/spectest.data:
23:59 dalek rakudo/nom: track failure mode
23:59 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/b729151a2e

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

Parrot | source cross referenced