pugscode.org/ | nopaste: sial.org/pbot/perl6 | pugs: [~] <m oo se> (or rakudo:, kp6:, elf: etc.) (or perl6: for all) | irclog: irc.pugscode.org/ Set by Tene on 29 July 2008. |
|||
00:00
wknight8111 joined,
rindolf left
00:05
ruoso joined
00:09
alester left
00:11
bacek joined
00:26
alester joined
00:39
meppl left
00:40
alester left
00:43
Limbic_Region left
00:44
meppl joined
00:56
meteorjay joined
01:01
jferrero left
01:15
nipotaway is now known as nipotan
01:16
hcchien joined
|
|||
meppl | good night | 01:25 | |
01:29
meppl left
01:32
kanru left
01:37
Alias__ joined
01:39
r0bby left,
r0bby joined
01:43
alester joined
01:50
justatheory joined
01:55
Alias_ left
02:07
kanru joined
02:19
pugs_svn left
02:20
pugs_svn joined
02:39
[particle]1 joined
02:45
wknight8111 left
02:49
luqui joined
02:57
[particle] left
02:59
justatheory left
03:50
justatheory joined
04:01
justatheory left
04:16
baest left,
baest joined
04:36
preflex left
04:39
preflex joined
04:49
preflex left
05:02
luqui left
05:11
luqui joined
05:40
Psyche^ joined
05:43
sri_work joined
05:54
Patterner left,
Psyche^ is now known as Patterner
05:59
Schwern left
06:08
Schwern joined
06:13
Schwern left
06:32
ashizawa joined
06:52
barney joined
07:14
alester left
07:45
fridim_ joined,
pmurias joined
07:49
cosimo joined
07:58
pmurias_ joined
|
|||
pmurias_ | ruoso: would you like to look at my slides www.yourcargo.org/SMOP.pdf, they are far from finished, but I would like to see if you have any comments? | 08:07 | |
08:27
elmex joined
08:28
iblechbot joined
08:46
iblechbot_ joined
08:55
zamolxes joined
09:00
iblechbot left
09:04
iblechbot_ left,
iblechbot joined
09:05
bacek left,
barney left
09:14
zamolxes left
09:16
jferrero joined
09:19
zamolxes joined
09:22
charsbar_ left
09:24
zamolxes left
09:28
meppl joined
09:32
charsbar joined
09:35
rindolf joined
09:36
revdiablo left,
revdiablo joined,
iblechbot left
09:39
pbuetow joined
|
|||
ruoso | pmurias, the slides are cool... you have some typos.... but I think they're really cool... | 09:44 | |
ruoso wonders if yapc::eu will have streaming for the talks... | |||
09:46
revdiablo left,
revdiablo joined
|
|||
ruoso | pmurias, just be carefull with one thing... the repr and the ri are most of the time the same thing... the ri will intercept the repr calls (at least that's how it's planned). | 09:48 | |
but "repr object" looks like if there was another object.. which is not the case... | 09:49 | ||
09:49
araujo left
09:51
meppl left
09:52
revdiablo left
09:53
revdiablo joined
10:00
revdiablo left
|
|||
ruoso work & | 10:00 | ||
10:01
ruoso left,
revdiablo joined
10:09
revdiablo left,
revdiablo joined
10:15
revdiablo left,
elmex left,
revdiablo joined
10:17
mj41 joined
10:21
ludan left
10:22
ludan joined
11:04
wknight8111 joined
11:08
fridim_ left
11:17
Schwern joined
11:18
meppl joined
11:26
iblechbot joined
11:36
sri_work_ joined,
Schwern left
11:44
sri_work left
11:57
zamolxes joined
11:58
iblechbot left
12:07
nipotan is now known as nipotaway
12:21
ludan left
12:25
ludan joined
12:34
ludan left
12:43
wknight8111 left
12:47
ron_ joined
|
|||
ron_ | perl6: class goo {}; my $goo = goo.new(); | 12:48 | |
p6eval | pugs: RESULT[\goo.new(()] | ||
..elf 21880: OUTPUT[Undefined subroutine &GLOBAL::goo called at (eval 117) line 8.ā¤ at ./elf_f line 3861ā¤] | |||
..rakudo 29834: OUTPUT[invoke() not implemented in class 'goo'ā¤current instr.: '_block11' pc 20 (EVAL_11:13)ā¤] | |||
ron_ | perl6: class Foo {}; my $foo = Foo.new(); | ||
p6eval | elf 21880: RESULT[Foo.new(!!!)ā¤] | 12:49 | |
..rakudo 29834: OUTPUT[get_bool() not implemented in class 'Foo'ā¤current instr.: 'parrot;PCT::HLLCompiler;command_line' pc 1311 (src/PCT/HLLCompiler.pir:711)ā¤] | |||
..pugs: RESULT[\Foo.new(()] | |||
ron_ | rakudo looks case sensitive here. Should it be? | 12:50 | |
12:58
wknight8111 joined,
ruoso joined
|
|||
pmurias_ | ruoso: thanks for the comments, totally forgot that the RI and the repr can be the same thing | 13:01 | |
ruoso | :) | ||
pmurias_ | did i need to install anything special on my laptop before the talk? | 13:02 | |
13:04
a-jing joined,
a-jing left
|
|||
pmurias_ | to have the projector work? | 13:06 | |
13:09
jferrero left
13:10
ashizawa left
|
|||
ruoso | pmurias_, if you're laptop is correctly configured it should work out-of-the-box... but you can always save the pdf in a cd or something to get it read in someone else's computer just in case... | 13:12 | |
13:14
pmurias_ left,
pmurias left,
pmurias joined
|
|||
pmurias | ruoso: do we need a mold debugger, or is a perl6 compiler targeting m0ld the next thing? | 13:20 | |
ruoso | I think that's s1p... yes... and I think we're almost ready for it... | ||
13:21
cmarcelo joined
|
|||
pugs_svn | r21881 | ruoso++ | [smop] remove named arguments from attribute.new for now... | 13:21 | |
ruoso | pmurias, do you have any idea of why test/24 prefix each line of its output with a space? | 13:22 | |
13:22
rindolf left
|
|||
pmurias | checking... | 13:23 | |
m0ld bug | 13:28 | ||
ron_ | perl6: class goo {}; my $goo = 'goo'.new(); | 13:29 | |
p6eval | rakudo 29834: OUTPUT[get_bool() not implemented in class 'goo'ā¤current instr.: 'parrot;PCT::HLLCompiler;command_line' pc 1311 (src/PCT/HLLCompiler.pir:711)ā¤] | ||
..elf 21881: RESULT[goo.new(!!!)ā¤] | |||
..pugs: RESULT[\Str.new(()] | |||
13:29
cmarcelo left
|
|||
pmurias | ruoso: S1P strings and constant identifers aren't supposed to have a trailing null? | 13:30 | |
ruoso | C strings are... | 13:31 | |
13:31
pbuetow left
|
|||
ruoso | pmurias, I'd like to fix the leaks in lexicalscope... but I think it will be much easier to solve if we move the mold creation to smop_init time... | 13:32 | |
do we have how to set registers already? and how to ask for them by number? | |||
ron_ | perl6: class goo {method squeak () {say 'gooey'} }; my $goo = 'goo'.new(); $goo.squeak; | 13:35 | |
p6eval | elf 21881, rakudo 29834: OUTPUT[gooeyā¤] | ||
..pugs: OUTPUT[*** No such method in class Str: "&squeak"ā¤ at /tmp/MgOxF5Bw9d line 1, column 69-80ā¤] | |||
pmurias | just an empty my $param; at top of the block and use mold_set_reg | ||
pugs_svn | r21882 | pmurias++ | [smop] corrected mold_set_reg | 13:37 | |
13:42
Jedai joined
|
|||
pugs_svn | r21883 | pmurias++ | [smop] fixed bug in identifier printing and creation from m0ld | 13:43 | |
ruoso | the registers declared as 'my $foo;' begin at 3, right? | 13:45 | |
pmurias | they begin at 4+number_of_the_ones_with_a_default_value | 13:46 | |
ruoso | so they are counted in a second pass, is it? | 13:47 | |
pmurias | yes | ||
as they aren't initalised | |||
(except by calloc) | 13:48 | ||
ruoso | would it be possible to invert it? considering this will be usefull as the "parameters" for that frame/ | ||
pmurias | but mold_set_reg is supposed just take numbers add the 4+number_of_constants | ||
s/add/and add/ | |||
s/supposed/supposed to | |||
ruoso | ok... | 13:49 | |
so... | |||
if i have { use m0ld;\n my $foo; ... | |||
the register for $foo depends on the code that appears after that... | |||
pmurias | yes | 13:50 | |
ruoso | would it be too hard to change it so that this registers take priority? | ||
pmurias | no | 13:51 | |
ruoso | would you mind changing it ;) | 13:52 | |
? | |||
pmurias | if you only use mold_set_reg and mold_get_reg it wouldn't matter | 13:53 | |
ruoso | but I'm using m0ld | ||
13:53
TJCRI joined,
rindolf joined
|
|||
pugs_svn | r21884 | ruoso++ | [smop] incomplete transition to singleton mold code | 13:53 | |
ruoso | pmurias, take a look at the current state of smop_s1p_lexicalscope.sm0p | ||
13:55
revdiablo left
|
|||
ruoso | pmurias, which numbers should I use in that case to set the three registers I declared in the beginning of the block? | 13:56 | |
pmurias | 0,1,2 | ||
i'm doing it | |||
ggoebel | pmurias: regarding www.yourcargo.org/SMOP.pdf | 14:01 | |
slide 12: entires -> entrees | |||
slide: 14: desides -> decides | 14:03 | ||
ruoso | pmurias, doing what? changing to use the low numbers? or implementing that in lexicalscope? | 14:04 | |
;) | |||
ggoebel | slide 15: desides -> decides | 14:05 | |
slide 19: we runtime -> with runtimes | 14:06 | ||
pmurias | ggoebel: thanks | 14:07 | |
ruoso: i'm implementing that in lexicalscope | 14:08 | ||
ruoso | alright... please try to commit early... even if it's still not working.. so I can help you out... | ||
ggoebel | slide 21: optimiser -> optimizer | 14:11 | |
slide 22: talk -> talks | 14:12 | ||
slide 30: build -> builds | 14:14 | ||
pmurias: that's all I found. nice talk. | 14:17 | ||
14:21
kanru left
14:22
alester joined
14:28
Exodist joined
14:30
ron_ left,
ron_ joined
|
|||
pugs_svn | r21885 | pmurias++ | [smop] mod_reg_set fixed | 14:34 | |
14:38
ron_ left
14:40
charsbar left
14:41
jferrero joined
14:43
charsbar joined
14:45
kanru joined,
ludan joined
|
|||
pugs_svn | r21886 | ruoso++ | [smop] lexicalscope test pass with no smop leaks... there are still some low-level leaks in mold according to valgrind... | 14:46 | |
ruoso | pmurias, there are some values leaking in mold and mold frame.. take a look at the valgrind output of test/25 | ||
btw... these values are not smop objects... but lowlevel structures inside mold and mold frame | 14:47 | ||
pmurias, one way or another... pmurias++... mold is working just fine, and now we have a use case of a singleton mold code that is reused by several frames | 14:49 | ||
pmurias | looking... | 14:52 | |
pugs_svn | r21887 | pmurias++ | [mold] fixed lowlevel leak from frames | 14:57 | |
r21888 | pmurias++ | [smop] fixed more leaks | 15:01 | ||
ruoso | pmurias++ # valgrind-clean again ;) | 15:02 | |
pmurias, I think it's time to port Code to use mold | 15:06 | ||
now that we have lexicalscope | |||
and we can set $_ | |||
which makes me think that lexicalscope is a more usefull fixed register than capture... | 15:07 | ||
since Code is the one that will do the binding | |||
ruoso lunch & | 15:08 | ||
15:17
fridim_ joined
15:18
cathyal joined
15:24
cathyal left
|
|||
pmurias put the link to his (update) slides on the wiki | 15:30 | ||
helping moving furniture& | 15:33 | ||
pugs_svn | r21889 | Auzon++ | [gsoc_spectest] added tests for stub subroutines in S06 (added 9 tests) | 15:39 | |
15:45
hercynium joined
|
|||
pugs_svn | r21890 | Auzon++ | [gsoc_spectest] added one more test in the area (added 1 test) | 15:45 | |
15:50
pbuetow joined
15:52
redicaps joined
15:58
jhorwitz joined
16:09
zamolxes left
16:16
cathyal joined,
meppl left
16:17
iblechbot joined
16:22
jferrero left
16:27
cognominal_ left
16:28
jferrero joined
16:29
cognominal_ joined
16:35
ilogger2 joined
16:43
iblechbot_ joined
16:46
justatheory joined
16:53
kane_ joined
|
|||
pmurias | ruoso: re fixed register i'm doing away with the 0-3 reserved registers | 16:59 | |
17:01
iblechbot joined
|
|||
pugs_svn | r21891 | pmurias++ | [smop] got rid of the 0-3 reserved registers in mold, removed two failing tests from the test suit | 17:12 | |
17:15
iblechbot_ left
|
|||
ruoso | pmurias, the slides are cool ;) | 17:18 | |
17:20
iblechbot_ joined
|
|||
ruoso | pmurias, test/23 started complaining about null register... | 17:28 | |
pmurias | ruoso: fixing | 17:32 | |
17:34
iblechbot left
|
|||
ruoso | I was thinking about lexical scope and Code... and it actually is not that simple... | 17:35 | |
we need to create a prototype for each code block... | |||
and this prototype has a new instance every time the parent frame is initialized, and recursing down to initialize a new instance of all code blocks | 17:36 | ||
because every block is a closure | |||
so, when { ... }() happens | 17:37 | ||
it needs to initialize the closure instances recursively for every code 'protoobject' | |||
to give the current lexical scope as the outer scope for that block | |||
it actually is even more complicated... | 17:38 | ||
{ outerblock; sub_that_calls_multiple_times { inner_block } } | 17:39 | ||
17:39
iblechbot joined
|
|||
pugs_svn | r21892 | pmurias++ | [smop] removed the redundant with test 24 test case | 17:39 | |
ruoso | you have three states... | 17:40 | |
1) code instance with only a reference to the mold code (and eventually to a global lexical scope (file scope)) | 17:41 | ||
2) closure that has the outer scope set (short-living), but is still uninitialized | 17:42 | ||
3) closure with an initialized frame | |||
at start, a code object holds a reference to several sub-codes in state 1 | 17:43 | ||
when .() is called, it clones that sub-codes and saves them in the new frame, while initializing the outer scope pointing to its scope | 17:45 | ||
when the time comes, that code in the state 2 receives the .() call and it repeats the last step for its children sub-codes.. | 17:46 | ||
pmurias | why do we need the subcalls at all, can't we just have a sub create all the subcalls at .() time? | 17:47 | |
ruoso | because a inner block might need a new frame several times depending on how it is invoked as a closure by some other code... | 17:48 | |
pmurias | and? | 17:49 | |
ruoso | sorry... I think I didn't get your question | ||
which subcalls? | |||
pmurias | subcodes, sorry | ||
ruoso | if we can infer that they're not acting as closures... we might optimize it | 17:50 | |
but if we don't know if they might be acting as a closure, we need to initializing it with that execution scope as the outer scope... | 17:51 | ||
pmurias | can't we just create all the inner codes each time the enclosing code is called? | 17:52 | |
instead of precreating them at compilation time? | |||
ruoso | no, because that inner code might be executed several times because it is a closure parameter to a sub... and it needs a new frame every time | ||
17:52
iblechbot_ left
|
|||
ruoso | pmurias, actually | 17:52 | |
17:53
barney joined
|
|||
ruoso | re-reading what you've written | 17:53 | |
I think I got it... | |||
you mean not having the Code object that simply points to the mold code | |||
Patterner | by Jove, he got it! | ||
pmurias | ruoso: yes | 17:54 | |
ruoso | alright... that should solve it... | 17:55 | |
17:55
meppl joined
|
|||
ruoso | so at invocation time, the Code object initializes all the sub-code objects, referencing directly to the mold... | 17:56 | |
and to their outer scope (the current lexical scope) | |||
pmurias | yes | ||
ruoso | which means that the mold code will hold constants pointing to other molds... but that's just fine,... | 17:57 | |
but in fact... | |||
it only needs to initialize them as they need to be called | |||
so the code for a "else" doesn't need to be initialized if the condition is true... | 17:58 | ||
pmurias | Code object creation is really cheap, so i don't think it's worth using thunks here | 17:59 | |
ruoso | so... class Code { has $.mold; has $.outer; method postcircumfix:<()> { ... } } | 18:00 | |
pmurias | yes | ||
18:01
iblechbot_ joined
18:02
Chillance joined,
Lorn joined
|
|||
pmurias | buying some candy bars& | 18:03 | |
ruoso | I think we're about to have a sample "compiled" s1p code... | 18:04 | |
18:06
barney left
18:11
iblechbot left
|
|||
pmurias | ruoso: what should be the syntax for nested molds? | 18:18 | |
ruoso | you mean syntax sugar? | ||
I think we don't need them | |||
18:19
iblechbot_ left
18:20
iblechbot joined
|
|||
ruoso | we could initialize all the molds as C local variables and use them as constants in the other molds recursively... | 18:20 | |
ruoso dayjob& | 18:21 | ||
pmurias | i'll go for mold {...}, not mixing m0ld with C allows better haskell support for m0ld in the future (via quasiquote) and we can skip the slow C compile step ones m0ld bootstraps | 18:29 | |
18:34
cognominal_ joined
18:38
iblechbot left
18:49
mj41_ joined
18:51
meppl left
|
|||
ruoso | pmurias, you mean mold {...} for storing a mold as a constant value inside another mold? like in my $submold = mold {...} ? | 18:54 | |
18:58
araujo joined
19:11
hercynium joined
19:28
Schwern joined
|
|||
pugs_svn | r21893 | fglock++ | [misc/pX/fglock/nfa-perl.pl] a perl5 implementation of swtch.com/~rsc/regexp/regexp1.html | 19:29 | |
r21893 | fglock++ | [misc/pX/fglock/Pugs-Compiler-Rule] "star" reimplementation | |||
19:34
meppl joined
19:42
ludan joined
|
|||
ludan | hi | 19:43 | |
ruoso | hi ludan | 19:44 | |
19:51
jferrero joined
19:52
justatheory left
|
|||
pmurias | ruoso: yes | 19:54 | |
ruoso | pmurias, that seems ok... then you generate a C code doing what I said first... | ||
20:09
justatheory joined
|
|||
pmurias | ruoso: yes | 20:09 | |
ruoso | that looks just fine | 20:10 | |
pmurias | it wouldn't use locals just pass them as arguments to the Mold create | 20:11 | |
ruoso | you could even have it as a whole file that would generate a boilerplate that would be some standard init and destr functions | ||
pmurias | shower& | 20:13 | |
20:16
jferrero left
20:17
jferrero joined
|
|||
pmurias | ruoso: why is smop not a VM? | 20:27 | |
ruoso | pmurias, because it doesn't bootstraps the runtime... meaning... you don't need a specific API to call something outside the interpreter... you don't need a native call interface, because everything *is* native... | 20:30 | |
it's just a runtime library that provides a lot of tools | |||
including an interpreter, or two | |||
pmurias | we will need a native call interface | 20:31 | |
ruoso | not "a" NCI... but "several"... "as many as people implement" | ||
meaning... SMOP doesn't really know when people goes "native" | |||
it doesn't have any kind of barrier from the interpreted code to the native code | 20:32 | ||
pmurias | i don't think parrot difference much here from a technical standpoint | ||
* differs | |||
ruoso | in fact... the VM concept is very much debatable ... | 20:33 | |
if you call p5 a vm, then smop is a vm... | |||
SMOP is the same thing p5 is | |||
;) | |||
which some people tend to differentiate from what parrot i | |||
is | |||
pmurias | one could write a SMOP PMC | ||
ruoso | as well as one could write a Parrot RI | 20:34 | |
pmurias | which would just call RI methods | ||
i think the too are pretty eqivalent | |||
ruoso | they are... indeed... but some people don't like calling perl5 a VM | ||
this same people won't like calling SMOP a VM | |||
I think the major difference is in at which extent the runtime abstracts the native environment | 20:35 | ||
and in this case, Parrot and SMOP are very much different... | |||
but I don't really know the parrot internals... | 20:37 | ||
so i might be saying non-sense... | |||
pmurias | llvm is a VM | 20:38 | |
;) | |||
20:39
preflex joined
|
|||
pmurias | and it doesn't abstract very much | 20:39 | |
ruoso | well... as I said... the concept is debatable... | 20:41 | |
wikipedia lists perl as a VM | |||
so... the short answer is "Is perl 5 a VM?" | |||
20:42
armagad joined
20:43
armagad left
|
|||
pmurias | i should be packing my laptop and going to sleep as i'm getting up early tommorow& | 20:45 | |
20:50
mj41__ joined,
mj41__ is now known as mj41
20:54
mj41__ joined,
meppl left
|
|||
ruoso home & | 20:59 | ||
20:59
[particle] joined
21:03
mtrimpe joined
21:08
mj41_ left
21:12
mj41 left
21:19
Chillance left
22:02
meppl joined
22:09
Limbic_Region joined
22:11
mbtrimpe joined
22:15
luqui joined
22:16
mbtrimpe left
22:21
jan_ joined
22:27
eternaleye joined
22:28
mtrimpe left
22:47
ruoso joined
22:53
barney joined
22:54
malouin joined
22:57
justatheory left
22:58
barney left,
barney joined
|
|||
Limbic_Region | salutations all | 23:03 | |
23:07
Schwern left
|
|||
ruoso | Hello Limbic_Region | 23:11 | |
23:12
justatheory joined
|
|||
Limbic_Region | how goes it? | 23:12 | |
23:18
barney left
23:21
ryanc joined
23:57
bacek joined
23:58
cotto-work joined
|