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