Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2008-01-07

Perl 6 | Reference Documentation | Rakudo

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

All times shown according to UTC.

Time Nick Message
00:35 meppuru good night
00:38 ispy_ joined #perl6
01:02 bsb joined #perl6
01:12 cnhackTNT joined #perl6
01:59 [particle1 joined #perl6
02:03 jjore-m left #perl6
02:15 japhb joined #perl6
02:16 japhb Is Perl6-on-Parrot mostly discussed here or on #parrot@irc.perl.org?
02:17 allbery_b the latter, mostly
02:18 spacechicken joined #perl6
02:18 japhb allbery_b: OK, thank you
02:19 spacechicken left #perl6
02:20 dvorak left #perl6
02:20 Andrew__ joined #perl6
02:26 kanru joined #perl6
02:37 Limbic_Region joined #perl6
03:05 lyokato_ joined #perl6
03:20 alester joined #perl6
03:27 sjansen joined #perl6
03:28 sjansen left #perl6
03:59 Psyche^ joined #perl6
04:07 fridim_ joined #perl6
04:33 alc joined #perl6
04:47 drbean joined #perl6
05:33 stevan_ joined #perl6
05:35 lyokato_ joined #perl6
05:44 drbean joined #perl6
05:51 Auzon joined #perl6
06:07 lyokato_ joined #perl6
06:09 Alias_ joined #perl6
06:40 xinming joined #perl6
06:42 pugs_svn r19353 | rhr++ | [Unicode.pm] process PVA, implement most of the is* and in* tokens
06:50 jjore joined #perl6
07:09 stevan_ joined #perl6
07:13 devogon joined #perl6
07:18 pugs_svn r19354 | Darren_Duncan++ | ext/Muldis-DB/ : in SeeAlso.pod, added new prospective item MuldisX::DB::Simple, high priority
07:21 iblechbot joined #perl6
07:23 zgh joined #perl6
07:28 jjore left #perl6
07:35 drbean joined #perl6
07:52 Schwern joined #perl6
08:14 franck___ joined #perl6
08:14 Jamtech joined #perl6
08:20 Jamtech joined #perl6
08:31 IllvilJa joined #perl6
08:58 drbean joined #perl6
09:05 lyokato_ joined #perl6
09:17 rindolf joined #perl6
09:22 penk joined #perl6
09:36 Aankhen`` joined #perl6
09:42 Jamtech joined #perl6
10:01 pen1 joined #perl6
10:04 ebassi joined #perl6
10:23 drbean_ joined #perl6
10:23 drbean__ joined #perl6
10:30 drbean__ left #perl6
11:12 masak joined #perl6
11:23 luqui joined #perl6
11:34 ruoso joined #perl6
12:20 Limbic_Region joined #perl6
12:28 IllvilJa joined #perl6
12:32 ispy_ joined #perl6
12:35 lorn joined #perl6
13:06 thoughtpolice joined #perl6
13:10 meppuru joined #perl6
13:14 cmarcelo joined #perl6
13:18 ruoso I think I have it clear now... I still need to write it down, but I'll design YAP6 using the concepts from the Stackless project.
13:19 ruoso YAP6 will hold a "current frame" object that will be passed through all around
13:19 ruoso the "current frame" is the call stack
13:19 ruoso the last node of the call stack, actually
13:20 avar is this in a state where it can be used with kp6?
13:20 Daveman joined #perl6
13:20 ruoso avar, I've gone into a major refactoring in YAP6
13:21 ruoso but implementing the frame stack in YAP6 would put it into position of being a kp6 backend
13:21 ruoso take a look at the include/yap6*.h
13:21 ruoso but continuing...
13:22 ruoso the current frame would contain the reference to which message should be sent to which object
13:22 ruoso and two references
13:22 ruoso the outer frame
13:22 ruoso and the continuation frame
13:23 ruoso then yap6 would have a simple loop where the top-most frame would be executed
13:23 ruoso and popped
13:23 ruoso while putting the continuation frame (if any) as the top-most frame
13:23 ruoso and going again
13:23 ruoso when something wants to call another code
13:24 ruoso it would just add another frame on the top and return
13:24 ruoso and that's it
13:24 ruoso avar, btw... take a look at the NOTES_BOOTSTRAP.txt file
13:24 ruoso it explains a lot
13:28 iblechbot joined #perl6
13:29 stevan_ joined #perl6
13:38 dlocaus joined #perl6
13:44 xyxu joined #perl6
13:46 xyxu left #perl6
13:47 pugs_svn r19355 | dlo++ | [kp6] Added YAML to the PREREQ_PM
13:50 pugs_svn r19356 | dlo++ | [kp6] minor typo correction
14:02 aindilis joined #perl6
14:06 pugs_svn r19357 | ruoso++ | [yap6] NOTES_STACKLESS.txt on how to implement YAP6 without being bitten by the C stack.
14:08 rindolf joined #perl6
14:08 ruoso @tell fglock please take a look at http://svn.pugscode.org/pugs​/v6/yap6/NOTES_STACKLESS.txt
14:08 lambdabot Consider it noted.
14:17 ruoso TimToady, if you have some time, could you please take a look at http://svn.pugscode.org/pugs/​v6/yap6/NOTES_STACKLESS.txt? I think this solves the C stack problem...
14:24 jhorwitz joined #perl6
14:33 drbean joined #perl6
14:39 chacha_chaudhry joined #perl6
14:51 chacha_chaudhry left #perl6
14:59 alester joined #perl6
15:02 ivas joined #perl6
15:06 pugs_svn r19358 | dlo++ | [kp6] Added Perl5V6 to kp6-mp6-OBJ for Win32 systems
15:07 TJCRI joined #perl6
15:08 chris2 joined #perl6
15:09 pugs_svn r19359 | dlo++ | [kp6] Bottomed out some code, improved code clarity a tiny bit :)
15:16 alc joined #perl6
15:30 thoughtp1lice joined #perl6
15:39 jferrero joined #perl6
15:43 IllvilJa joined #perl6
15:44 ferreira joined #perl6
15:44 mj41 joined #perl6
15:55 pugs_svn r19360 | ruoso++ | [yap6] some advances in defining the stack.
15:58 rhc left #perl6
16:07 Aankhen`` joined #perl6
16:19 schmalbe joined #perl6
16:23 Psyche^ joined #perl6
16:45 pugs_svn r19361 | ruoso++ | [yap6] the YAP6 stack now seems ok. See NOTES_STACKLESS.txt to see how it will work.
16:49 pugs_svn r19362 | ruoso++ | [yap6] The "outer" reference is kept only on the currently selected node.
16:54 ozy` joined #perl6
17:01 pugs_svn r19363 | ruoso++ | [yap6] Note about return values.
17:35 araujo joined #perl6
17:46 DaGo joined #perl6
17:53 pugs_svn r19364 | ruoso++ | [yap6] Defines how to use the result from past nodes on other calls.
17:55 ruoso home &
17:56 jjore joined #perl6
18:06 tobeya joined #perl6
18:11 rdice joined #perl6
18:12 kane_ joined #perl6
18:16 bwisti joined #perl6
18:29 TimToady @tell ruoso you seem to be assuming the stack is unwound to a fixed jail while propagating exceptions; p6 requires the stack to stay there while the exception handlers decide dynamically which one to unroll to (if any).  at most a static jail flag can tell you that an exception handler *might* handle it
18:29 lambdabot Consider it noted.
18:35 kane__ joined #perl6
18:46 fridim joined #perl6
18:50 Muixirt joined #perl6
18:54 hexmode joined #perl6
19:01 Botje joined #perl6
19:17 barney joined #perl6
19:18 polettix joined #perl6
19:19 Auzon joined #perl6
19:24 TJCRI joined #perl6
19:26 amnesiac joined #perl6
19:29 dlocaus left #perl6
19:29 dlocaus joined #perl6
19:37 jferrero joined #perl6
19:37 Botje Hello everyone, I'm trying to get pugs to build on GHC 6.8
19:42 tobeya joined #perl6
19:43 marmic joined #perl6
19:44 pmurias joined #perl6
19:44 pmurias Botje: lots of people try and fail...
19:46 Botje apparently :(
19:46 Botje I'm currently figuring out a way to hack out the parrot embedding
19:46 jisom joined #perl6
19:49 ruoso joined #perl6
19:51 * ruoso back
19:51 lambdabot ruoso: You have 1 new message. '/msg lambdabot @messages' to read it.
19:53 ruoso TimToady, re dynamic jail: This means that what I've called "jail" is not a flag, but a value to which the exception can ask something to decide if it stops there or continues unwinding...
19:56 Botje how do I tell pugs not to build the embedded parrot interpreter?
19:56 ruoso Interesting is that the exception would manipulate the stack to be able to call the jail check and continue afterwards...
20:03 ruoso hmm... svn seems down...
20:03 ruoso pmurias, are you following YAP6 last developments?
20:04 Khisanth Botje: remove parrot from your $ENV{PUGS_EMBED}
20:06 pmurias ruoso: i read NOTES_STACKLESS, haven't looked at the code
20:06 Maddingue joined #perl6
20:08 TimToady ruoso: you say "or continues unwinding", but it's not unwinding while it's deciding where to unwind to.  unwinding is a separate operation afterward
20:09 pjcj joined #perl6
20:09 TimToady (assuming by "unwinding" you mean deallocating frames)
20:09 pugs_svn r19365 | ruoso++ | [yap6] low-level operations will actually be methods in some special metaclasses and available to the high-level. Changing the "jail" description as suggested by TimToady++
20:10 ruoso TimToady, yes... actually the exception is the one that manipulates the stack anyway
20:10 TimToady but maybe unwinding is rather more nebulous in the presence of continuations anyway
20:10 ruoso it can decide how to do it
20:11 Muixirt joined #perl6
20:11 BinGOs joined #perl6
20:11 ruoso the stack only have few operations
20:11 TimToady it's just easy for warnings to be implemented in terms of continuations if we can most of the time just do a return from the thrower
20:11 TimToady assuming that's more efficient than resurrecting a continuation, which it probably isn't when we have real continuations
20:12 ruoso I'm not sure I got what you mean
20:13 TimToady nevermind, with real CPS it probably doesn't matter
20:13 ruoso CPS?
20:13 TimToady continuation passing style
20:13 ruoso hm
20:14 TimToady if unwinding is really just letting the GC harvest no longer referenced frames, and not something active, than it's already going to run the exception handlers before unwinding
20:15 TimToady assuming anything that wants the possibility of resuming like a warning has taken a continuation to the resumption
20:16 ruoso hmmm... now I got it...
20:16 TimToady throwing an exception without a resumable contination still wants to be done in the context of the error so that we can harvest any debug info from the call stack before unwinding
20:17 TimToady unlike p5 where we unwind before running handlers, so that info is gone
20:17 TimToady p6 does it more like Lisp
20:19 ruoso looking at the ascii art in the NOTES_STACKLESS, the warning case would be something like: 1 -> 2 -> 3 (frame saved as an argument to warning instead of being destroyed, then the frame is dropped, a new frame is created to invoke warning, which instead of dropping to the original frame, replaces the saved frame and the execution continues..) -> 4 -> 5
20:20 pmurias ruoso: will yap6 be a stack based or a register based vm?
20:21 ruoso pmurias, well... I'm not sure how to call it...
20:21 pugs_svn r19366 | dlo++ | [kp6] Added copyright information
20:21 ruoso it doesn't seem to be neighter one of them in the canonical sense
20:21 ruoso I mean...
20:21 ruoso it's stack based
20:21 ruoso but not in the same sense as p5
20:22 tobeya joined #perl6
20:22 pmurias ruoso: why isn't struct frame {frame* prev;...}; enough? i don't fully understand what do you need the stack for
20:23 ruoso pmurias, the stack is necessary so you can freely manipulate the stack
20:23 ruoso if you just received the pointer to the frame, you wouldn't be able to manipulate
20:24 pugs_svn r19367 | dlo++ | [kp6] Added some documentation
20:24 ruoso the stack defines which one is the "currently selected" node
20:24 pmurias ruoso: i would be a single linked list
20:25 japhb joined #perl6
20:25 pmurias so i would be able to navigate it using the prev pointer
20:25 ruoso but how would you add a frame on top?
20:25 pmurias prev being outer
20:26 pmurias ruoso: is it possible to navigate from the outer frame to the inner one?
20:26 ruoso no, but an inner frame may have been saved before
20:26 ruoso and you may want to restore it
20:27 ruoso I mean...
20:27 ruoso a frame** would probably be sufficient
20:27 ruoso instead of a plain frame*
20:27 ruoso but that's what the stack is
20:27 pmurias why frame**?
20:27 ruoso because you need to know which one is the current active frame
20:28 ruoso and you need to be able to change that
20:28 ruoso without counting on the C stack
20:28 pmurias where do you keep the active frame?
20:28 ruoso in the stack
20:28 pmurias and the stack?
20:28 ruoso the stack is in the C stack
20:29 ruoso but the C stack doesn't recurse
20:29 ruoso you keep returning in every call
20:29 pmurias the stack is in the current thread?
20:29 ruoso the yap6 stack isn't even a global
20:29 ruoso in the case of a new thread
20:29 ruoso it would be possible to create a new stack
20:29 ruoso that wouldn't return to the current context
20:30 ruoso async { } #for intance
20:30 pmurias async creates a new thread
20:30 ruoso and a new stack
20:30 ruoso which is not connected to the current stack
20:31 * ruoso notes that the lexical scopes continues to be conected...
20:31 ruoso even if the stack isn't
20:32 ruoso and when the stack is empty, the interpreter just finish doing its job
20:32 ruoso and in the async case, the thread would exit
20:32 pmurias ruoso: i think the frame** would be better
20:32 ruoso but with the stack, I can expose it to the high-level
20:33 ruoso and I then can have a AST->StackNodes transformer written in P6
20:33 ruoso The Code implementation would point to AST,
20:33 ruoso and when called, create a new stack frame and transform the first level of ast to stack nodes
20:33 pmurias ruoso: can't the high-level use frames?
20:34 ruoso but frame** is not an object
20:34 ruoso while stack is
20:34 pmurias frame could be an object
20:34 ruoso frame is an object
20:34 ruoso but frame** wouldn't be
20:35 ruoso in yap6 *everything* is an object
20:35 ferreira left #perl6
20:35 pmurias you can use a wraper around frame**
20:35 ruoso that's precisely what stack is
20:37 * ruoso is very happy because the concept seems to be bullet-proof so far...
20:39 pmurias i think it would work, i don't like it at all but it's your choice
20:40 ruoso pmurias, what you don't like about it
20:40 ruoso ?
20:41 pmurias it's over complicated
20:42 ruoso I'm honestly open for suggestions...
20:42 ruoso please, explain :)
20:45 pmurias trying to figure why the python folks do it that way
20:46 dlocaus @tell fglock I have looked at the Makefile.PL, I was able to factor some code out into a YAML file, which reduced the "intimidation" factor of the Makefile.PL by quite a bit.  I also made a few other "misc" changes, that improved the file.  However, I was unable to find any way to fix any of the "FIXME"s in the file.  In regards to the "all :: " setting, it seams that the way it was done in there is the only way to do it.
20:46 lambdabot Consider it noted.
20:47 ruoso pmurias, python mainstream didn't adopt the stackless thing
20:47 ruoso it seems that they didn't like the idea of having coroutines and continuations in python
20:47 ruoso too "guru" thing
20:47 ruoso (as saw in an article somewhere that I don't recall)
20:48 pmurias the push the function on the stack,and execute it in the next loop iternation thing dosn't seem logical to me
20:49 ruoso pmurias, take a look at http://www.stackless.com/stackless.htm . It might help
20:49 lambdabot Title: stackless
20:50 pmurias looking at it
20:51 pmurias i think the do it for internals comability
20:51 pmurias * compability
20:51 pmurias ruoso: have you looked at parrot internals?
20:52 ruoso pmurias, I've tried to... but wasn't able to really understand much
20:54 pmurias i haven't looked at it much myself, but from the "Playing With Bird Guts" talk at the yap6 i remember it is also stackless
20:55 ruoso pmurias, oh yeah... parrot is register-based
20:55 ruoso but it's register based on the high-level
20:55 ruoso yap6 is only stackless in the C level
20:55 ruoso and just that
20:55 ruoso it's stack based for the high-level
20:56 ruoso btw... funny to notice that yap6 is a good name :) being used in the place for yapc ;)
20:56 ruoso and parrot is a real vm
20:57 ruoso while yap6 is just a runtime library...
20:57 ruoso this puts everything in different perspective
20:58 pmurias ruoso: i got an impression from stackless.html that python wasn't a real vm either
20:58 pmurias ;)
20:59 pmurias ruoso: i don't know how the high-level stuff will look like in yap6
21:01 pmurias i have a vague idea how to do it with registers and computed goto's
21:04 pmurias ruoso: is it ok for you to use a computed goto(it would be possible to fake it with switch)
21:04 ruoso pmurias, search for STACK__Stack__Init in the NOTES_STACKLESS
21:04 ruoso pmurias, got would manipulate the stack to put some other node as the selected one
21:04 ruoso s/got/goto/
21:05 [particle1 computed goto is gcc only, no?
21:05 pugs_svn r19368 | dlo++ | [kp6] Added documentation to the Makefile.PL & perltidy'd it.
21:05 ruoso [particle], I think pmurias was talking about it in the high-level
21:06 [particle] ah, well, fine then
21:07 pmurias [particle]: yes
21:08 pugs_svn r19369 | ruoso++ | [yap6] adding an example of stack manipulation for continuation passing style.
21:08 pmurias ruoso: if yap6 is a runtime library the high level is c code
21:08 ruoso pmurias, but if you mean in the low-level... why would I need it?
21:08 ruoso pmurias, not really
21:08 ruoso the high-level is a mix of C code and a lot of objects
21:09 ruoso I mean...
21:09 ruoso not necessarly code generation
21:09 ruoso we may have a plain interpreter
21:09 ruoso that parses the code, gets an AST and transform the AST to stack frame and run it in the interpreter loop
21:10 ruoso Like if you took B::Generate to feed the Perl interpreter with the operators
21:11 ruoso but in yap6, even the operators are object oriented
21:11 pmurias ruoso: wan't it be a bit slow?
21:12 ruoso maybe, but there's room for optimizations
21:13 pmurias i thought about generating stackless c
21:13 ruoso well... generating stackless C means generating the code that builds a data structure
21:13 ruoso there's no point in doing that
21:14 ruoso better to generate the data structure and serialize it
21:15 pugs_svn r19370 | dlo++ | [kp6] Added more documentation to the Makefile.PL
21:15 pmurias ruoso: i'm tired know i'll code an example of what i mean tomorrow
21:15 pmurias &
21:15 ruoso seeya
21:15 pmurias * now
21:15 pmurias seeya
21:18 pugs_svn r19371 | dlo++ | [kp6] updated the MANIFEST file
21:18 ruoso @tell pmurias actually there's a point in generating the code that builds the AST and Stack, it makes the build process easier...
21:18 lambdabot Consider it noted.
21:18 ruoso and the interpreter boot too, actually
21:19 F left #perl6
21:31 Schwern joined #perl6
21:39 Squern joined #perl6
21:39 pugs_svn r19372 | ruoso++ | [yap6] declaring the low-level operator modules as proto-object-metaclasses,
21:49 pugs_svn r19373 | ruoso++ | [yap6] new ROADMAP...
21:52 pugs_svn r19374 | ruoso++ | [yap6] item missing in ROADMAP.
22:22 TreyHarris I asked an aside question in my earlier post to p6-l: could you create a two-arg sub that ignored its args?  -> (undef, undef) { ... } or -> (Any, Any) or -> (*, *) or somesuch?
22:23 TreyHarris or do you have to name them, even if you're just going to never use the names?
22:23 zgh joined #perl6
22:24 rhr I think you can use a sigil without a name ($, $)
22:25 TreyHarris hmm.
22:25 TreyHarris ok
22:29 jferrero joined #perl6
22:47 ebassi joined #perl6
22:56 dlocaus left #perl6
23:15 cmarcelo joined #perl6
23:35 TimToady yes, you can even name them without giving variable names: (:foo($),:bar($))
23:35 TimToady (I dunno if pugs supports that though)
23:36 mncharity joined #perl6
23:40 TimToady hmm, looks like I botched STD so it doesn't handle :foo(:bar($baz))
23:42 [particle] how about (:$) ? is that an anonymous named variable? is that then the same as an optional unnamed?
23:47 TimToady :$ isn't allowed, I don't think
23:48 TimToady it's certainly disallowed as an rvlaue, and I don't see much use for it in a declaration
23:50 [particle] no, i don't see much use. i do see much confusion. same for $! for example, which shouldn't be allowed to mean a required anonymous non-named parameter
23:52 TimToady well, bare $ is already required
23:53 TimToady $? wouldn't be though
23:53 TimToady (if allowed)
23:55 TimToady can always force $ ! and $ ?
23:56 [particle] right. with non-named, ! is default, and with named, ? is default. that's not to say you can't use it to be explicit, though.
23:57 [particle] it's only a problem when defining sigs without names, so those are ambiguities that are in the current spec.
23:59 TimToady anyway, currently :foo($bar) invokes <param_var> to parse $bar, and needs something recursive to allow nested :()

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

Perl 6 | Reference Documentation | Rakudo