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