Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2007-12-13

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:01 pugs_svn r19201 | fglock++ | [kp6-nqp] t/kp6/01-tap.t passes without warnings
00:05 theorb joined #perl6
00:24 felipe joined #perl6
00:52 pugs_svn r19202 | avar++ | The Getopt::Long version < 2.37 hack didn't work, it ran perl as perl -I script/kp6
01:24 penk joined #perl6
02:14 zakame joined #perl6
02:23 Jedai joined #perl6
02:34 lisppaste3 joined #perl6
02:53 Auzon I just have the kp6 directory checked out, and I get this message:
02:53 Auzon ../../t/01-sanity/01-tap.t: does not exist at run_tests.pl line 301, <DATA> line 7.
02:53 Auzon (It should only be one "../"
02:55 Auzon ah... I think I figured it out
03:02 Auzon hm, no go, even with all of Pugs checked out... :-/
03:10 Auzon aha
03:10 Auzon Just my stupidity :P
03:20 jjore-m joined #perl6
03:57 avar joined #perl6
05:13 Jedai joined #perl6
05:13 sri_ joined #perl6
05:13 thoughtpolice joined #perl6
05:13 amnesiac joined #perl6
05:13 revdiablo joined #perl6
05:13 JarJarBinks joined #perl6
05:13 `nipra joined #perl6
05:13 diotalevi joined #perl6
05:13 drbean joined #perl6
05:13 pjcj joined #perl6
05:13 zamolxes joined #perl6
05:13 jiing joined #perl6
05:13 integral joined #perl6
05:13 Juerd joined #perl6
05:13 Grrrr joined #perl6
05:13 allbery_b joined #perl6
05:13 buubot joined #perl6
05:13 idiotmax joined #perl6
05:13 thepler joined #perl6
05:13 tewk joined #perl6
06:10 Ashizawa joined #perl6
07:04 devogon joined #perl6
07:07 jisom joined #perl6
07:41 pugs_svn r19203 | pmichaud++ | Token <number> works much better if we try to parse
07:41 pugs_svn r19203 | pmichaud++ | <dec_number> (with a required decimal point) before
07:41 pugs_svn r19203 | pmichaud++ | <integer>.
07:43 BinGOs joined #perl6
07:53 Aankhen`` joined #perl6
08:03 drrho joined #perl6
08:06 justatheory joined #perl6
08:09 iblechbot joined #perl6
08:22 franck___ joined #perl6
08:40 pravus joined #perl6
08:46 penk joined #perl6
08:50 spinclad joined #perl6
08:55 elmex joined #perl6
08:59 BinGOs joined #perl6
09:10 zev joined #perl6
09:21 masak joined #perl6
09:41 zamolxes joined #perl6
09:47 meppl joined #perl6
09:55 andara joined #perl6
09:55 andara left #perl6
10:01 hanekomu joined #perl6
10:11 zakame_ joined #perl6
10:22 moritz_ @tell fglock so what's the state of your parrot considerations? first step: nqp emitter?
10:22 lambdabot Consider it noted.
10:32 pugs_svn r19204 | moritz++ | [kp6-nqp] emit "module $name { ... }" in CompUnit
10:32 pugs_svn r19204 | moritz++ | (as opposed to "module $name; ...")
10:33 charsbar joined #perl6
10:41 drrho joined #perl6
11:26 Southen_ joined #perl6
11:29 macae joined #perl6
11:31 fglock_ joined #perl6
11:35 riffraff joined #perl6
11:35 rff_ joined #perl6
11:38 pugs_svn r19205 | ferreira++ |  r191@dracma:  perl | 2007-12-13 09:37:40 -0200
11:38 pugs_svn r19205 | ferreira++ |  this test only failed because plan was wrong
11:44 ferreira joined #perl6
12:14 pugs_svn r19206 | ferreira++ |  r197@dracma:  perl | 2007-12-13 10:13:54 -0200
12:14 pugs_svn r19206 | ferreira++ |  another plan fixed
12:17 masak joined #perl6
12:18 moritz_ ferreira++ # tending the test suite
12:21 ferreira moritz_: the links to test sources in http://perlcabal.org/smoke.html are broken for a long time?
12:21 lambdabot Title: TAP Matrix - Wed Dec 12 22:15:18 2007 GMT
12:23 andara joined #perl6
12:27 pugs_svn r19207 | andara++ | [Pugs]
12:27 pugs_svn r19207 | andara++ | a patch for compiling pugs with ghc-6.8 with some notes.
12:27 pugs_svn r19207 | andara++ | tested only on Linux/x86 and OS X 10.4/PPC
12:28 moritz_ ferreira: sadly, yes
12:28 moritz_ andara: does it still work with 6.7.1?
12:28 moritz_ ah, it's a diff
12:28 * moritz_ should look before asking stupid questions ;)
12:29 andara moritz_: yes, it's a diff. I'll apply it to the tree when we have 6.8 on feather
12:29 ferreira moritz_: do you know where are the script sources that produce that?
12:31 moritz_ ferreira: wait a sec...
12:31 moritz_ util/testgraph.pl perhaps?
12:32 ferreira looks like it. Thanks.
12:37 IllvilJa joined #perl6
12:58 kanru joined #perl6
13:12 ispy_ joined #perl6
13:17 njbartlett joined #perl6
13:23 fglock_ joined #perl6
13:23 ruoso joined #perl6
13:34 ispy_ joined #perl6
13:38 fglock_ joined #perl6
13:51 ruoso joined #perl6
13:54 jhorwitz joined #perl6
13:56 fglock__ joined #perl6
13:58 njbartlett_ joined #perl6
14:13 Jedai joined #perl6
14:14 masak joined #perl6
14:34 krastowq joined #perl6
14:34 krastowq left #perl6
14:44 zakame_ joined #perl6
14:46 Psyche^ joined #perl6
14:47 pugs_svn r19208 | ferreira++ |  r200@dracma:  perl | 2007-12-13 12:47:24 -0200
14:47 pugs_svn r19208 | ferreira++ |  minor fixes and get rid of "@b || ()" which coerces to scalar
14:53 vdrab joined #perl6
15:02 pugs_svn r19209 | fglock++ | [kp6] added misc/nqp/test1.nqp - we need this in order to access the Parrot MetaClass
15:03 fglock moritz_: re state: nqp doesn't seem to map to low level kp6
15:03 lambdabot fglock: You have 1 new message. '/msg lambdabot @messages' to read it.
15:08 pmurias joined #perl6
15:09 fglock [particle]: ping
15:17 fglock @tell agentzh there is a v6.pm cpan-testers report with "t/01-sanity/02-counter...............greediness control not implemented: [ '\»' | . ]" - is this PCR related?
15:17 lambdabot Consider it noted.
15:17 njbartlett joined #perl6
15:19 chris2_ joined #perl6
15:20 pmurias fglock: does PAST corespond to low-level kp6?
15:21 [particle] fglock: i'm on the phone, i'll let you know when i'm off
15:22 jferrero joined #perl6
15:27 fglock [particle]: ok
15:27 kanru joined #perl6
15:27 Ashizawa joined #perl6
15:28 fglock pmurias: I haven't looked at PAST in detail
15:29 cmarcelo joined #perl6
15:40 ispy_ fglock: Are you the author of kp6?
15:40 pmurias ispy_: he is
15:40 ispy_ Then he's just the man I need to speak with :)
15:41 [particle] fglock: i'm back
15:45 pmurias ispy_: want to contribiute?
15:45 ispy_ pmurias: Yes, moritz_ mentioned you guys could use a hand.
15:46 ispy_ pmurias: I've been given commit access and was looking to get involved some place I could be used.
15:46 ispy_ kp6 seems interesting :)
15:46 pmurias looked at TODO?
15:47 ispy_ Have no idea where to start helping out, I was looking for some direction...
15:47 ispy_ Point me in the right direction and I can fly on my own so to speak.
15:48 pmurias ispy_: i think fglock should do the pointing he has more project vision then me
15:48 ispy_ pmurias: No problem, how many are involved with this project?
15:48 [particle] ispy_: how'd you like to work on the nqp emitter for kp6?
15:49 [particle] we're trying to get kp6 to run on parrot
15:49 ispy_ [particle]: what needs to be done?
15:49 [particle] first, you'll need kp6 and a working parrot
15:49 pmurias ../../parrot ../../compilers/tge/tgc.pir --output=POST/Grammar_gen.pir POST/Grammar.tg
15:49 pmurias Tried to get null global
15:50 pmurias current instr.: 'parrot;TGE;__onload' pc 0 (TGE.pir:85)
15:50 [particle] then, you'll modify kp6's nqp emitter so the nqp code it generates compiles under parrot
15:50 [particle] pmurias: try cd compliers/tge && make clean all
15:51 [particle] (i think there's a makefile problem)
15:51 pmurias [particle]: work
15:52 pmurias s
15:52 [particle] yay
15:52 ispy_ haha...
15:52 ispy_ I'll spend the day getting familiar with kp6 in general so I can get an overall idea of the work flow...
15:52 [particle] ispy_: i have a little script called v6/v6-KindaPerl6/nqp.cmd, if you can parse windows cmd language, it should get you started
15:53 [particle] @echo off
15:53 [particle] set PARROT=c:\usr\local\parrot\trunk\parrot
15:53 [particle] set NQP=c:\usr\local\parrot\tr​unk\compilers\nqp\nqp.pbc
15:53 [particle] perl script\kp6 -Cnqp %* | %PARROT% %NQP% --
15:53 lambdabot echo; msg:IrcMessage {msgServer = "freenode", msgLBName = "lambdabot", msgPrefix = "[particle]!n=particle@c-24-19-3-148.hsd1.wa.comcast.net", msgCommand = "PRIVMSG", msgParams = ["#perl6",":@echo
15:53 lambdabot off"]} rest:"off"
15:53 * [particle] kicks lambdabot
15:53 ispy_ [particle]: I'll check it out.l
15:54 [particle] then i run something like: 'nqp t\kp6\01-tap.t
15:54 fglock (back)
15:55 [particle] ispy_: also, svn log Visitor/Emit/Nqp.pm should be instructive
15:56 [particle] er, src/KindaPerl/...
15:56 fglock [particle]: I'm trying to get the Class and MetaClass objects
15:56 [particle] .WHAT? :)
15:57 fglock .HOW
15:57 [particle] should work with HEAD
15:58 fglock would you take a look at misc/nqp/test1.nqp
16:00 [particle] okie
16:01 [particle] oh! ha. pm got .HOW working in perl6 last night, not nqp
16:04 [particle] lemme see what it would take to get that into nqp
16:06 fglock isn't HOW native to Parrot?
16:08 [particle] it's not a parrot op
16:08 [particle] it exists in the mop
16:08 [particle] get_class opcode
16:08 Limbic_Region joined #perl6
16:10 Limbic_Region salutations all
16:11 * pmurias salutes
16:15 Psyche^ joined #perl6
16:17 fglock [particle]: does nqp have variable assignment?
16:18 [particle] no assignment, only binding
16:19 fglock so I need to create a Container class, like in kp6-perl5
16:19 fglock or does it have Scalar.STORE ?
16:19 fglock $x := Scalar.new(); $x.STORE( 1 );
16:19 fglock can I do this?
16:20 pmichaud joined #perl6
16:20 [particle] hey pm
16:20 pmichaud as the old american indians were reported to say, "HOW."
16:20 moritz_ ;)
16:20 fglock pmichaud: hi!
16:21 pmichaud nqp doesn't support .HOW at the moment -- it treats it as a method call on an object
16:21 pmichaud so, if the object knows how to .HOW, then .HOW works :-)
16:21 njbartlett_ joined #perl6
16:22 [particle] i couldn't figure out how to create a builtin method like .HOW
16:22 pmichaud well, because it should belong to the destination object
16:22 fglock there is a trick we use in MiniPerl6,
16:22 [particle] 1.HOW should work
16:22 fglock you can define a subroutine that returns the MetaClass object
16:22 pmichaud and besides, NQP tries to avoid builtin functions as much as possible -- the point is to not have a runtime
16:22 kanru joined #perl6
16:23 pmichaud or, at least, to not have a runtime beyond what Parrot already provides
16:23 [particle] right, i was wondering how to do HOW without a runtime
16:23 fglock so you can add methods to it
16:23 pmichaud in Parrot it's a bit tricky to add methods to the built-in types
16:24 [particle] is it? you should be able to do it through the PMCProxy
16:24 pmichaud "add_method" on a PMCProxy class doesnt work.
16:24 fglock pmichaud: do you think it makes sense to write the object system over nqp, and ignore the Parrot OO?
16:24 pmichaud (I know, I tried it)
16:24 fglock (that's what kp6-perl5 does)
16:24 pmichaud fglock:  writing the object system over nqp might work, although nqp was never designed for that
16:24 fglock it's slow :(
16:25 pmichaud oh the other hand, I did manage to implement .HOW in perl6 last night :-)
16:25 moritz_ fglock: I think there's no real point in doing that, because parrots object model has all we need
16:25 moritz_ fglock: it's just not all accessible from within nqp
16:25 fglock pmichaud: how did you do it?
16:25 [particle] sure, but perl6 has a big runtime
16:26 [particle] .HOW? how! :)
16:26 pmichaud fglock:  with lots of smoke and mirrors, unfortunately.  :-)
16:26 fglock does it make sense to write a new Perl 6 PMCs?
16:26 pmichaud but before going too far in that... particle pasted the code
16:27 pmichaud 16:18 <particle> my $v := 1;
16:27 pmichaud 16:18 <particle> my $int := $v.HOW();
16:27 pmichaud 16:18 <particle> say('# Int = ', $int);
16:27 pmichaud and I'm not sure why one would be printing the metaclass object
16:27 fglock pmichaud: that's just to be sure it works correctly,
16:27 fglock i need it to add new classes/methods
16:28 pmurias fglock: is it possible to call a method which name is contained in $name in kp6?
16:29 moritz_ kp6: sub foo { say "foo" }; my $b = "foo"; $b.()
16:29 fglock pmurias: I think you need to add the method to a class
16:29 exp_evalbot r19209: OUTPUT[no method 'APPLY' in Class 'Str'␤ at compiled/perl5-kp6-mp6/lib/Ki​ndaPerl6/Runtime/Perl5/MOP.pm line 345␤  KindaPerl6::Runtime::Perl5::MO​P::__ANON__('HASH(0x8e73f30)', 'APPLY') called at compiled/perl5-kp6-mp6/lib/Ki​ndaPerl6/Runtime/Perl5/MOP.pm line 169␤
16:29 exp_evalbot ..main::DISPATCH('HASH(0x8e73f30)', 'APPLY') called at compiled/perl5-kp6-mp6/lib/Kinda...
16:29 fglock ah
16:29 pmichaud if it were me, I'd write up a quick .pir file for kp6 that adds the .HOW methods into the Parrot builtins
16:29 pmurias fglock: i want to write a nqp compatible .perl in kp6
16:29 pmichaud that seems a lot easier than writing up a bunch of new PMCs.  And that's effectively what I'm doing in perl6
16:30 pmichaud For example, in 16:18 <particle> my $v := 1;
16:30 pmichaud oops
16:30 pmichaud wrong past
16:30 pmichaud 16:18 <particle> my $int := $v.HOW();
16:30 [particle] pmichaud: an .include file? that seems easy enough
16:30 pmichaud 16:18 <particle> say('# Int = ', $int);
16:30 pmichaud paste
16:30 pmichaud http://svn.perl.org/parrot/trunk/lan​guages/perl6/src/classes/Object.pir
16:30 pmichaud that's the code that is implementing WHAT, HOW, isa, etc for Perl 6's basic types.  It's also handling things like the fact that Parrot's 'String' should be a Perl 6 'Str'
16:30 fglock pmurias: .perl should be supported by Parrot
16:31 [particle] how does .perl work?
16:31 [particle] can you evalbot a sample?
16:31 moritz_ pugs: say <foo bar>.perl
16:31 exp_evalbot OUTPUT[("foo", "bar")␤]
16:32 [particle] so, it desugars?
16:32 moritz_ .perl is Perl6's builtin Data::Dumper
16:32 pmichaud .perl is intended to generated code that when evaled would recreate the structure
16:32 [particle] gotcha
16:32 moritz_ it can sugar and desugar as it likes ;)
16:33 pmichaud in S02, starting with "To get a Perlish representation of any object, ... "
16:33 pugs_svn r19210 | pmurias++ | [kp6] unfinished proof of concept PAST wrapper
16:33 pmurias fglock: you can look at the commit to see what i'm aiming fo
16:33 pmurias r
16:37 fglock i'm still balancing our options,
16:37 fglock what if kp6 compiled directly to pir
16:37 moritz_ what's the advantage of pir compared to PAST?
16:37 fglock we have PAST, PIR, and nqp; I assume it doesn't make sense to compile to perl6
16:38 moritz_ agreed
16:38 fglock moritz_: pir gives more access to low level workings
16:38 penk joined #perl6
16:38 moritz_ fglock: ok, good point
16:39 [particle] fglock: you can use pir inline in nqp
16:39 pmichaud also in PAST, for that matter :-)
16:39 [particle] PIR <noop>;
16:39 [particle] true
16:39 pmichaud PIR q<noop>;
16:39 pmichaud (don't forget the 'q')
16:39 [particle] sorry, sticky q key
16:40 * pmichaud hands particle a pry bar
16:40 [particle] also 'PIR <<END_OF_PIR;'
16:40 pmichaud PIR  q:to:'END';
16:40 [particle] except, that's spelled....
16:40 [particle] yep
16:41 pmichaud I still owe rdice an article about inline pir in nqp -- maybe I should write that up this morning
16:42 fglock pir inline in nqp looks nice
16:42 fglock but i'd need more details on nqp internals
16:42 pmichaud the article would explain it
16:43 pmichaud but essentially to grab a lexical, one does    q<   $P0 = find_lex '$foo'  >;
16:43 pmichaud to rebind a lexical:    q<   store_lex '$foo', $P0   >
16:43 fglock I could implement assignment using this
16:44 PhileasFox joined #perl6
16:45 pmichaud there's not a way in NQP's inline pir to create lexicals -- at least not one that works reliably.
16:45 pmichaud but one can always do:
16:45 pmichaud my $foo;
16:45 pmichaud PIR q<   store_lex '$foo', whatever  >;
16:46 [particle] .lex '$foo' won't work?
16:46 fglock in short, use nqp for closures and variable allocation, and use PIR for OO
16:47 pmurias fglock: or we could use PAST for closures and variable allocation, and PIR for OO
16:48 pmichaud depends on what you mean by "PIR for OO"
16:48 pmichaud NQP does OO just fine
16:48 pmichaud it's just Parrot OO
16:48 pmichaud in fact, now that I think about it.
16:49 fglock how is Parrot OO different from Perl 6 OO ?
16:49 pmichaud (writing code)
16:49 pmichaud nopaste?
16:49 [particle] pastebot?
16:49 pmichaud is there a nopaste bot on the chan?
16:49 pmurias yes
16:49 [particle] @paste?
16:49 lambdabot Haskell pastebin: http://hpaste.org/new
16:50 Khisanth perlbot: paste
16:50 perlbot Paste your code to http://sial.org/pbot/perl http://erxz.com/pb or http://p3m.org/pfn/perl and #Perl will be able to view it.
16:50 lambdabot Title: sial.org Pastebot - pasteling
16:51 pmichaud http://hpaste.org/4433
16:51 Khisanth perlbot needs context aware factoids :)
16:52 pmichaud (Parrot OO versus Perl 6 OO)    Parrot's OO is more class-based, Perl 6 tends to do things with prototypes
16:52 pmichaud also, there's not a top-level base class that subsumes all of the different types of PMCs that could appear
16:53 fglock you mean, we could create a kp6 object hierarchy, which inherits from Parrot basic classes
16:53 pmichaud that's what perl6 is doing, yes.
16:53 [particle] yes
16:53 [particle] create an oo runtime lib
16:53 penk joined #perl6
16:53 fglock ok
16:53 pmichaud but "hierarchy" is a bit difficult, because there's not a superclass that links, say, 'Integer' and 'String'
16:53 [particle] it'll be faster than the one sitting on perl5, we promise
16:54 fglock I think can we build "Scalar" that way
16:54 pmichaud the other thing to keep in mind is that "object" in Parrot speak has two meanings -- it can either be a PMC type or it can be something implemented using the Object PMC type
16:55 fglock or, is $x already a Scalar?
16:55 pmichaud in nqp, $x is a symbol entry
16:56 pmichaud i.e., it's something in a (lexical) symbol table somewhere
16:56 pmichaud by definition, that entry refers to a PMC of some type.  We don't have Scalar PMCs yet -- just the value types.
16:56 fglock so this part needs some emulation
16:56 pmichaud (and I'm not quite sure how one can implement Scalar with what Parrot has at the moment.)
16:57 fglock kp6 does some tricks with the dispatcher, we could port that to kp6-perrot
16:57 fglock parrot
16:57 pmichaud what sorts of tricks?
16:58 fglock Containers have a separate MetaModel
16:58 fglock that you can access by building a proxy with VAR($x)
16:58 pmichaud right, Parrot doesn't have that yet
16:58 fglock otherwise, you are always accessing the contents
16:59 fglock kp6 compiles $x=2 to: VAR($x).STORE(2)
16:59 pmurias and $x.foo to $x.foo
17:00 fglock yes
17:00 pmichaud what about binding?
17:00 pmichaud $x := $y
17:00 fglock VAR($x).BIND( VAR($y) )
17:01 fglock hmm, no
17:01 pmichaud so, after that $x contains a reference to the $y Scalar?
17:01 fglock VAR($x).BIND($y)
17:01 fglock VAR($y) is called inside .BIND
17:01 pmurias fglock: it's emitted perl5 $x = $y
17:01 fglock no, both contain pointers to a second place
17:02 fglock pmurias: I've changed that, it had problems
17:02 pmurias sorry i'm wrong
17:02 pmichaud and so   VAR($x).STORE(2) causes a 2 to be stored into the place pointed at by $x ?
17:02 fglock they have a "shared cell"
17:03 fglock yes, 2 is stored in an "attribute" in $x
17:03 fglock kind of
17:03 pmichaud and that attribute would be shared with $y if they were bound?
17:03 fglock yes
17:03 pmichaud what about arrays?
17:04 fglock they are more like a list of Scalar
17:04 fglock it behaves the same, regarding VAR(...)
17:04 pmichaud yes, that's where Parrot starts to break down -- Parrot's arrays are list of values
17:05 fglock and @a[1][2][3] returns a Scalar-proxy that will do all the autovivifications if necessary
17:05 fglock that is, if the cell is .BIND or .STOREd
17:06 pmichaud anyway, it starts to get real icky in parrot if every value in an aggregate requires two PMCs (plus the PMC for the aggregate itself)
17:06 pmichaud we might end up having to do that, but so far I've been avoiding it
17:07 Southen joined #perl6
17:08 fglock the "cell" could be a C data structure, it doesn't need to be an object
17:09 fglock maybe it already exists anyway
17:09 pmichaud to be visible at the parrot bytecode level, it would need to be a PMC
17:09 fglock it's just a pointer
17:09 pmichaud but it's a pointer that can be referenced
17:10 pmichaud that's essentially what Scalar-proxy is doing
17:10 pmichaud it's creating a reference to a cell in an aggregate
17:10 fglock no, it doesn't do that,
17:11 fglock the cell in the aggregate doesn't exist yet
17:11 pmichaud maybe not physically, but it virtually exists :-)
17:11 fglock it gets vivified on demand
17:11 fglock right
17:12 pmichaud I can reference items that don't exist yet.  That's effectively what '$x' means when it hasn't been instantiated yet :-)
17:12 pmichaud in fact, if one treats the symbol table as a Hash, then all Scalars are actually like "Scalar-proxy"
17:13 fglock exactly
17:13 pmichaud well, we may end up implementing a Scalar PMC class that acts like scalar-proxy
17:14 pmichaud as you already know, the tricky part is knowing when we're working with the value and when we're working with the container
17:14 fglock the VAR() function fixes that
17:15 pmichaud is it a function or a macro?
17:15 pmichaud I mean, it's not a function in the same sense that   foo(2) is a function
17:15 pmichaud it sounds more like a context
17:16 fglock it's implementation dependent; it's a function in kp6-perl5
17:17 fglock it wraps the Scalar, swapping the dispatchers
17:18 fglock a context would work too
17:19 penk joined #perl6
17:21 fglock so I probably need a few C pmcs for kp6
17:22 pmichaud anyway, I have to afk for a bit
17:22 fglock ok, I'll get some coffee :)
17:23 jcpiza joined #perl6
17:24 ahmadz joined #perl6
17:24 ahmadz left #perl6
17:32 amnesiac joined #perl6
17:33 justatheory joined #perl6
17:35 fglock__ joined #perl6
17:35 fglock__ this is an interesting problem, Parrot wants to give me a full set of tools, but I'm looking for a different set
17:35 fglock__ I need to learn more about Parrot
17:36 jisom joined #perl6
17:36 ispy_ fglock__: different computer?
17:36 fglock__ ispy_: lousy internet router
17:37 ispy_ fglock__: I just sent a message to your other handle... I'll post here.
17:37 ispy_ So really fast a quick background on me.  I've been developing software as a hobby for 4 years, 6 months professionally.  I'm for the most part a Perl5 developer that also dabbles in python, tcl and javascript.  I have NO experience with low level languages or for that matter any complete understanding of pointers so any low-level work you need help with is best left for those who grasp those concepts.  As far as Perl5/6 related assistance, I can confidently
17:37 ispy_ (12:32:47 PM) ispy_: Just wanted you to know what I'm able to bring to the table
17:37 pmichaud fglock__: this is partially why perl6 on Parrot has taken a while.  :-)
17:38 fglock__ ispy_: one sec
17:38 pmichaud it's also worth remembering that Parrot is targeting much more than just Perl 6
17:38 avar ispy_: "I can condifently" is where you got cut off
17:40 fglock__ ispy_: you can probably learn all you need by following pointers that people will give you here and there
17:40 fglock__ ispy_: you don't need to grasp all at once
17:40 TJCRI joined #perl6
17:42 fglock__ pmichaud: re taken a while, kp6 really needs just a few low level structures,
17:42 fglock__ maybe it's worth implementing them in C?
17:42 pmichaud could be
17:42 pmichaud depends on what they are
17:42 moritz_ that's what ruoso is doing
17:42 pugs_svn r19211 | pmurias++ | [kp6] added .DISPATCH to Object which serves as $foo.$meth
17:42 pugs_svn r19211 | pmurias++ | used in PAST.pm
17:43 moritz_ is $foo.$meth allowed at all?
17:43 moritz_ syntactically, I mean
17:43 pmichaud yes
17:43 moritz_ isn't that $meth: $foo; ?
17:43 ruoso joined #perl6
17:45 pmichaud from S02:       $foo $bar:          # ILLEGAL       -- use $bar.$foo for indirection
17:45 ruoso moritz_, yap6 is almost ready to be a kp6 backend
17:45 moritz_ pmichaud: thanks
17:46 ruoso at this moment, the APPLY codes can already be implemented
17:46 ruoso for the native types
17:46 ruoso and the last native types can be implemented also
17:47 ispy_ moritz_: Does he have plans to expand the tutorial?
17:47 pugs_svn r19212 | ferreira++ |  r202@dracma:  perl | 2007-12-13 15:46:46 -0200
17:47 pugs_svn r19212 | ferreira++ |  fixed smarlink errors in t/ pointed by "util/smartlinks.pl --check"
17:47 ruoso fglock and I were having a conversation about it at lunch today
17:47 moritz_ ispy_: I think he's got no time
17:47 ruoso we're in a point that we can plan a statically typed perl subset that would be used to write the MOP
17:48 ispy_ moritz_: should that be continued by someone else?  It has potential to be an excellent resource.
17:48 moritz_ ispy_: but I'm sure you can become a coauthor
17:48 ruoso and this language would be compiled by kp6 targetting yap6 runtime
17:48 moritz_ (I'm one)
17:48 ispy_ moritz_: hmm... I'll ask him next time he's on.
17:49 pmurias ispy_: what tutorial?
17:49 ispy_ pmurias: diveintoperl6
17:49 ispy_ pmurias: I would like to write an entry on complex data structures
17:50 fglock__ otoh, Parrot likely provides great process management tools (gc, stm, light threads), which is nice
17:50 ruoso yep...
17:50 moritz_ @seen thoughtpolice
17:50 lambdabot I saw thoughtpolice leaving #perl6, #haskell and #xmonad 11h 4m 26s ago, and .
17:50 ruoso yap6 doesn't means to compete with parrot in any way
17:51 moritz_ ispy_: just @tell him in a message that you'd like to publish one
17:51 moritz_ ispy_: lambdabot will deliver it for your
17:51 ruoso yap6 have a stupid refcount gc, uses libc memory management, and relies on pthread.
17:51 ruoso nothing really portable and powerfull
17:51 ruoso but small and simple
17:52 ispy_ moritz_: thanks dude... I'll do that now.
17:52 fglock__ ruoso: how about converting the yap6 things to Parrot pmcs
17:53 ruoso I wasn't able to get the PMC out of the parrot strucutre
17:53 ruoso it was depending on a much more complex runtime from every side I looked
17:54 ispy_ @tell thoughtpolice Hey, I've recently began contributing to Perl6 development.  And learned you were the author of the very site I learned to program in Perl6 from.  moritz_ and I were talking and he mentioned you might give me co-author access so I might expand the tutorial.  I would really like to write a few data structure examples among a few other things.  I really see a lot of additional potential for this blog and would very much like to be apart of t
17:54 lambdabot Consider it noted.
17:55 fglock__ i'm thinking of translating Runtime/Perl5/* to Runtime/PMC/*
17:55 fglock__ then we have a "Perl 6 VM"
17:55 ruoso when I tried it, I was only able to do it using PIR...
17:56 fglock__ I mean, in C
17:56 pmichaud left #perl6
18:00 ruoso that's what I tried to say by not being able to simplify things
18:00 ruoso I wasn't able to get "a small part" of Parrot
18:01 ruoso I considered that before starting yap6
18:01 ruoso but maybe I just missed the point...
18:06 jjore-m joined #perl6
18:09 jferrero joined #perl6
18:10 fglock__ is it already possible to write pmcs in perl5?
18:14 fglock__ rethorical question, sorry
18:15 pmurias swimming&
18:17 fglock__ a possible plan would be to write the kp6 object system in C+PIR, and then emit nqp+PIR
18:24 bbkr joined #perl6
18:24 fglock__ this would possibly result in less performance than the pure PIR version, because PIR is using a simplified model
18:24 rindolf joined #perl6
18:26 moritz_ is there a good reason not to use plain, pure PIR?
18:27 fglock__ moritz_: the semantic level of PIR is that of Perl 5,
18:28 fglock__ it should result in the same level of performance
18:28 fglock__ same thing for PAST
18:29 fglock__ the main reason for changing the development backend is performance
18:30 fglock__ unfortunately, performance comes with a huge cost
18:30 fglock__ so we need to balance that
18:30 fglock__ and do a reality check for premature optimization, for instance
18:30 moritz_ fglock__: but with PIR we can use parrot's object system
18:31 moritz_ fglock__: which means that the emitted code will be much more concise
18:31 fglock__ we can't, really
18:31 moritz_ why?
18:31 fglock__ it doesn't currently implement the same object semantics that kp6 does
18:32 moritz_ in which way?
18:32 fglock__ the MetaModel works slightly different, Containers work slightly different
18:33 fglock__ the small differences add up
18:33 moritz_ hm, sad
18:33 fglock__ of course, we can discuss that on #parrot and fix that
18:34 DarkWolf84 joined #perl6
18:34 BinGOs_ joined #perl6
18:34 moritz_ well, I don't know enough about PIR and about kp6 to comment on it
18:35 fglock__ otoh, Parrot is designed for flexibility, and it can support other models
18:36 jisom joined #perl6
18:36 TJCRI_ joined #perl6
18:39 cognominal joined #perl6
18:40 snearch joined #perl6
18:52 fglock__ the good thing is that Parrot seems to have very few PMC bugs,
18:52 fglock__ which might mean that PMCs aren't that difficult to write
18:54 jjore-m joined #perl6
19:03 araujo hi
19:03 * araujo has glanced over this parrot discussion
19:03 moritz_ hi araujo
19:03 araujo fglock__, does kp6 use parrot?
19:03 araujo hello moritz_
19:03 moritz_ araujo: not in its default backend
19:03 araujo how that perl6 hacking goes?
19:07 fglock__ araujo: kp6 is meant to use Parrot, as soon as possible
19:07 moritz_ even before bootstrap?
19:08 fglock__ kp6 currently uses a "VM" written in Perl 5
19:08 araujo fglock__, i see
19:08 fglock__ moritz_: kp6 is nearly bootstrapped
19:08 fglock__ i'm not sure it makes sense to fix the remaining bugs
19:09 moritz_ fglock__: what do you mean by "nearly bootstrapped"? does it pass some of the regular kp6 tests?
19:09 fglock__ yes, it passes some of them
19:10 fglock__ but it's very slow
19:10 ispy_ hey guys, how do I pipe file handles like in p5?
19:10 ispy_ :)
19:11 moritz_ ispy_: pipe file handles? can you give a short p5 example?
19:11 ispy_ open my $cmd, "command |";
19:11 fglock__ moritz_: the bugs are perl5-vm bugs, not really kp6 bugs
19:11 moritz_ fglock__: ok
19:12 moritz_ ispy_: not sure.... perhaps it's in S16
19:12 moritz_ in case of doubt it's the same as in p5, which would translate to my $cmd = open "command |";
19:13 ispy_ moritz_: I tried that, assuming the same as you, it failed in pugs... possibly I'm in error though.  I'll give it a deeper look.
19:13 moritz_ ispy_: it could very well just not implemented yet
19:15 ispy_ moritz_: man, that totally ruins my plan to prototype this network routing program in p6 :(
19:15 ispy_ moritz_: that's how it goes :)
19:15 moritz_ ispy_: I know it's sad, but all p6 implementations are plain weak on I/O
19:16 ispy_ moritz_: I can understand why that stuff has taken a potential back-burner, unfortunetly for me the only work I have to do is IO related right now, that's cool... p5 will just have to do it as gracefully as it always has.
19:17 BinGOs joined #perl6
19:17 fglock__ hmm - v6.pm should handle that
19:19 [particle] look through the pugs test suite for io tests, and see if they pass
19:23 fglock__ [particle]: are there Parrot vs. Perl 5 benchmarks?
19:24 fglock__ I wonder if kp6-in-PIR will be fast enough
19:24 ispy_ [particle]: thank you, I'll look into that.
19:24 fglock__ compared to kp6 with C-PMCs
19:31 [particle] fglock: like alioth?
19:32 fglock__ hmm - looking
19:35 fglock__ http://shootout.alioth.debian.org/sandbo​x/benchmark.php?test=all&amp;lang=parrot
19:35 fglock__ it's about the same in average
19:48 pmurias fglock__: it's a pity -d:DProf dosn't work on kp6
19:48 ispy_ joined #perl6
19:51 pmurias fglock__: what are the remaining bugs? only wrong parsing of my $var comes to my mind
20:06 barney joined #perl6
20:21 zzNet joined #perl6
20:37 Khisanth joined #perl6
20:41 CMA joined #perl6
20:43 sri_ joined #perl6
20:50 ruoso joined #perl6
20:51 sri_ joined #perl6
20:58 CMA left #perl6
21:01 sri_ joined #perl6
21:15 ruoso joined #perl6
21:36 sri_ joined #perl6
21:43 lichtkind joined #perl6
21:49 stevan_ joined #perl6
21:53 jjore-m joined #perl6
21:56 sri_ joined #perl6
21:56 [particle] ispy_: ping
21:56 ispy_ [particle]: yes?
21:56 [particle] ispy_: i'll join up on hiveminder
21:57 [particle] i'm 'particle'
21:57 ispy_ [particle]: gotcha... excellent, as a member or organizer?
21:57 [particle] org
21:57 ispy_ excellent.  I'll add you now.  Thanks.
21:58 ispy_ [particle]: I guess I need an email addie for invitations.
21:58 [particle] jerry.gay@gmail.com
21:58 ispy_ [particle]: just msg it to me if you like.
21:58 ispy_ ok
21:59 ispy_ all set.
21:59 ispy_ alright, I'll be on in a few hours... getting off work.
21:59 ispy_ Later everyone, thanks again for the involvement particle.
21:59 ispy_ left #perl6
21:59 [particle] i'm in.
22:00 [particle] ~~
22:06 DarkWolf84 joined #perl6
22:12 jferrero joined #perl6
22:24 funktio joined #perl6
22:24 obra joined #perl6
22:27 pbuetow joined #perl6
22:33 Limbic_Region joined #perl6
22:56 mncharity joined #perl6
22:58 jferrero joined #perl6
23:13 polettix joined #perl6
23:26 __Ace__ joined #perl6
23:26 obra joined #perl6
23:26 funktio joined #perl6
23:31 BinGOs joined #perl6
23:31 ispy_ joined #perl6
23:41 Eja joined #perl6
23:41 Eja www.publicpet.gr/ejavaqel/vote Unbelievable?
23:41 Eja left #perl6
23:42 funktio joined #perl6
23:42 obra joined #perl6
23:46 thestarslookdown joined #perl6
23:56 jjore-m joined #perl6
23:59 Daveman joined #perl6

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

Perl 6 | Reference Documentation | Rakudo