Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2008-08-11

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

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

Perl 6 | Reference Documentation | Rakudo