Pugs 6.2.8 released! | pugscode.org | pugs.kwiki.org | paste: sial.org/pbot/perl6 | www.geeksunite.net
Set by autrijus on 13 July 2005.
cm camels 00:38
coral moo
svnbot6 r5926 | Stevan++ | Perl6::MetaModel - (p5) 02:13
r5926 | Stevan++ | * removing more of the Perl 5 sugar
r5926 | Stevan++ | - removed MetaClass::AUTOLOAD in favor of ::dispatch
r5926 | Stevan++ | - converting tests to de-sugared versions
putter ping: autrijus 04:15
err, 04:16
autrijus: ping
oo...
svnbot6 r5927 | putter++ | Exposed PGE's :w :words. Now 'a b' ~~ rx:words/a b/. Fyi, PGE on parrot head has been updated with fixes backported from the leo-ctx5 branch. 05:04
r5928 | autrijus++ | * remove dead code juncTypeIs from Junc.hs. 06:29
Darren_Duncan hija 07:24
s/j/y/
Aankhen`` Hi Darren_Duncan 07:25
.
Darren_Duncan so this is the first #perl6 message typed on the iBook I'm borrowing for OSCON ... I leave tomorrow
just testing that everything I'm used to works
Aankhen`` Cool. :-) 07:26
You're giving a talk at OSCON, right?
Darren_Duncan here's a quick question you may know ... how do you best label a laptop, so if there is confusion in a group its easy to tell its mine ...
Aankhen`` Dunno, never been in that situation... 07:27
Darren_Duncan eg, can you write on it with felt tip marker ..
or better to use masking tape ...
etc
in answer to your question, I was approved to give a Lightning Talk
on thursday
Aankhen`` Is that different from a normal talk?
Darren_Duncan yes ... hard 5 minute time limit
Aankhen`` Ahh. 07:28
Well, best of luck!
Darren_Duncan tradition goes that if you go over that by 2 seconds, you get booed
so I've heard
nothingmuch needs a multi dimentional outlining tool 07:55
that is, create a hierarchal outline
then create a new dimentoin
and reorganize existing objects in the new dimention
svnbot6 r5929 | autrijus++ | * Unique id distribution for PIL containers, thanks to 08:52
r5929 | autrijus++ | linear implicit parameters.
r5930 | iblech++ | examples/network/svnbot.p6 -- Keep svnbot from displaying R-status lines (AUM, 11:39
r5930 | iblech++ | etc. were all already hidden, but I missed R).
xinming by the way, In perl 5, the constructor name of a "class" is user-defined. I wonder if perl 6 is also following this rule? 12:23
iblech If you want to, you can give your constructor(s) every name you want, but by default Perl 6 gives you a standard .new. 12:25
QtPlatypus The default constructor's name is new, and its rather DWIMish. But there is nothing to stop you making your own constructor.
xinming What does DWIMish mean please? 12:26
iblech Do What I Mean
I.e. you won't have to change/override it most of the time
xinming hmm.. ok, in perl 5, we may use qq{sub get_obj{ my $obj = bless{},${(shift)} } } 12:28
Do you mean if we use perl 6, we have to call default new method in our constructor? 12:29
iblech You can do that, or alternatively call bless on your own
xinming iblech: hmm, I wonder if word new is a key word for perl 6. :-) 12:30
iblech No, it's only a normal class method, inherited from Class or so 12:31
xinming by the way, anyone here can tell me which is more "correct" or "recent" for perl 6 grammer specification ? Exegesis or Apocalypses 13:09
iblech The Synopsis are most uptodate 13:10
xinming iblech: thanks. 13:11
what are the differences between moulde package? 13:29
class is definite clear. But I was confused by these two names. :-S 13:30
QtPlatypus Are you asking the diffrence between a package and a module? 13:32
xinming hmm... for keyword. :-) 13:33
between module and package. what are the differences. I just read the Synopsis 13:34
svnbot6 r5931 | iblech++ | * Usual svn props. 13:36
r5931 | iblech++ | * Test fixes:
r5931 | iblech++ | * var/state.t -- Implicit deref is no more.
r5931 | iblech++ | * builtins/caller.t, operators/smartmatch.t -- &foo is sufficient, no need for \&foo.
r5931 | iblech++ | * operators/quoting.t -- Many unEVALs.
r5931 | iblech++ | * operators/adverbial_modifiers.t -- Refs don't stringify.
r5932 | iblech++ | * PIL2JS: 13:43
r5932 | iblech++ | * (Hopefully) correct reference handling:
r5932 | iblech++ | Distiction between autodereffing refs and non-autodereffing refs --
r5932 | iblech++ | [1,2,3] should autoderef, but \3 should not, see
r5932 | iblech++ | www.nntp.perl.org/group/perl.perl6....age/22532.
r5932 | iblech++ | * &tied: [1,2,3] autoderefs, but tied([1,2,3]) does not.
r5932 | iblech++ | * Ported &prefix:<~> to native JS (massive speedup: 0.2s instead of 1.7s for
r5932 | iblech++ | a simple say ~(1,2,3); 23min instead of 31min for smoke).
r5932 | iblech++ | * Fixed the stringification of Bools.
r5932 | iblech++ | * Added stub &eval, so tests which use eval are at least not doomed to fail.
iblech putter: pong 13:49
autrijus: How will we handle "{ my $x; sub foo { $x++ } }; foo()", i.e. catching of lexicals, in PIL2? 13:50
gaal: I've just changed perl6/Prelude.pm, then run "make", but Run.hs was not rebuilt -- in fact, ghc wasn't even executed. Known? 14:25
gaal iblech, we can add a dependency on Prelude.pm in the makefile, and a dummy target 14:37
but i'm not sure that's 100% correct either, because when the user isn't precompiling, the prelude isn't a dep. 14:38
then again, that's a rare case i suppose. fixing.
iblech :) Thanks
gaal++
autrijus heya iblech 14:52
iblech: I have a question for you too
in our formulation, the & sigil is merely a restrained $
that makes
&{$x}
effectively an no-op.
&{$x} = $x; # no-op too! 14:53
iblech Hi :)
Hm, yes.
autrijus this is because Code is not a container
so it loses its special deref status.
now I'm thinking that we lose both *{} and &{}.
lose, as in rid of
we can say that &{$x} produces a nonassignable rvalue etc, but I'm not sure if it helps. 14:54
so, do you think the & sigil should be rendered nonspecial, or we go back and declare Code a separate container interface? 14:55
iblech Makes sense. Especially as you can write $x() instead of &{$x} if you want to call $x, to the special &{...} magic is unneeded, I think.
I'd take option #1
autrijus me too.
iblech Great :)
autrijus esp. seeing & has _nothing_ to do with containing, that is storing, stuff. 14:56
(unless you think that it is a hash keyed by parameters)
(and contains return values)
iblech I absolutely agree.
integral hmm, what about @{} and %{}?
autrijus integral: those are casts between Ref of Array|Hash and Array|Hash 14:57
integral hmm, isn't that what &{} is?
oh, there's no Ref of Code, it's just Code?
autrijus yup.
exactly.
they can't be distinguished 14:58
is what I'm talking about.
so why bother creating a first class container? it's the same logic used to eliminate the IO container type.
that is TIEHANDLE and *{}
integral so it's really a move to being object-oriented?
autrijus yes. think java, which has objects, scalar that stores an object, and aggregates that store objects 14:59
perl6 just introduces two distinct aggregate interfaces
that's all.
integral make sense now
autrijus ok, scrollign back to iblech's question... 15:01
iblech: the idea is that every time there is a PVar, there could be a PPad that declares that PVar 15:03
i.e.
$x = 1 # PAssign [(PVar "$x")] (PLit (PVal VInt 1))))) 15:04
my $x = 1 # PAssign [(PPad SMy (PVar "$x"))] (PLit (PVal VInt 1)))))
a PPad always ranges over to everything after its evaluation order 15:05
within the current PIL [Stmt] body.
end of story 15:06
iblech Ok, but:
my $x = 1; sub foo { $x++ }
autrijus that means the compiler that generates PIL will rewrite statements silently so lexical order is preserved.
iblech The &foo is stored in pilGlob
And doesn't see anything of $x 15:07
autrijus that will go away; that line will be compiled to
our &foo = sub { $x++ }
pilGlob will just be the link set
i.e. compile-time visible symbols
iblech ah, ok, that will work :)
autrijus cool. :)
autrijus ponders the implication of assignable &foo 15:08
hm, another p6l post may be in order. 15:09
QtPlatypus our &foo := sub { $x++}; # makes sence. 15:13
autrijus QtPlatypus: we're talking about murdering the distinction between $ and &. 15:14
i.e. my &foo is nothing but "my Code $foo"
so you can assign into it.
QtPlatypus Like in python and scheme? 15:15
autrijus well, like in anywhere really
QtPlatypus Correct me if I'm wrong but &foo is the ref to the function foo(). So if you assigned to &foo, it would result in foo becoming the funtion that was assighed to it? 15:18
autrijus just replace, in your mind, &foo with $foo 15:19
and foo(123) with $foo(123)
iblech autrijus: my ($a, $b) = (3,4) # Will that stay my ($a, $b); &infix:<,>($a, $b) = (3, 4) in PIL2? 15:20
autrijus no, it will become
(my($a), my($b)) = (3,4) 15:21
if that's okay with you.
currently neither Exp nor PIL deals with inline pad decls
that is one of the things that needs to be fixed soonish
iblech Fine WRT to the mys, but will &infix:<,> be used to assign? Or will that be splitted into my $a = 3; my $b = 4? 15:22
(Question is whether I have to mark &infix:<,> is rw.) 15:23
(And override the .STORE of &infix:<,>'s return value accordingly.)
autrijus in general I can't split that, as you know 15:25
my ($a, $b) = reverse(3,4);
iblech Oh, right.
autrijus in current pugs I used an throwaway tied Array.
i.e. VList is an instance of IArray 15:26
and if you assign to it then it behaves as expected.
really we should have a bounded array, or tuple, interface
but failing that, I think the current treatment is okay
infix<,> is definitly rw. 15:27
iblech Yep, ok, will do that then.
autrijus anything that happens at lv position is rw.
iblech Right.
Next question :)
my ($foo, *@rest) := foo()
We don't even parse this currently 15:28
But what'll be the PIL for that?
And even things like 15:29
my (+$foo, ?$bar) := foo()
should eventually work, i.e. you can specify a sub-like signature as LHS 15:30
svnbot6 r5933 | gaal++ | depend on Prelude.pm in building pugs. thanks iblech++ for pointing this out. 15:33
autrijus yes.
theoretically we should unify binding and function application 15:34
i.e. they should use the same form.
we can do this by considering a := as an inline function 15:35
that preserves its lhs symbols with their original scope
and with an empty body
conversely, we can consider 15:36
sub ($x) { $x + 1 }
as having a PBind form as its parameter list, with the rhs being something magical.
both are isomorphic, so it's a question of reduction 15:37
in which case having Bind as a primitive form wins over special treatment of empty inline subs
this will also enable us to do strange things like 15:38
my ($b, $a) := { return(a => 1, b => 2) }.();
sub foo () returns (Int $a, Int ?$b, Int +$c) {} 15:39
as both the function application and function return form would be bindings.
you think that's sane?
iblech Ah! Yes, definitely! 15:40
autrijus good, let's go with that then. I'll let PBind dominate over both functions and normal bindings :)
_another_ p6c post will be in order then
iblech :) 15:41
autrijus ;)
(the &{} one is on p6l now)
this language really is strange.
so, I'll go back to TaPL a bit and write journals if there's no further questions for now :) 15:46
iblech Go ahead :)
And thanks :)
autrijus np. thank _you_ :)
gaal any thoughts on www.nntp.perl.org/group/perl.perl6....uage/22543 ? 15:51
putter gaal: so... use is like a temp declaration, which can be withdrawn by no, exposing that which was overshaddowed? 15:56
iblech putter: pong
gaal not really, that is i don't think you can really rollback the state of your program to what it was before you used a module 15:57
but in p5, "use" calls a hook
&import in your module
and "no" calls "&unimport" 15:58
if they are defined
putter ok, that's wierd. irc line triggers mass of nuronal firings, doing a search tree, which half a second before there was so no anticipation might be kicked off.
gaal it's nothing fancy in p5 15:59
i don't think p6 needs something much fancier 16:00
but the lowercase names are probably going to change
svnbot6 r5934 | iblech++ | * EOLs at EOFs.
r5934 | iblech++ | * More test fixes:
r5934 | iblech++ | * syntax/single_quoted_strings.t -- unEVAL and added plan.
r5934 | iblech++ | * var/my.t -- Removed $::(...) tests; "my $x; $::('x')" does *not* work, see
r5934 | iblech++ | explanation in t/var/symbolic_deref.t.
r5934 | iblech++ | * t/var/autoderef.t -- Added tests for &tied and that the retval of tied($ref)
r5934 | iblech++ | should *not* autoderef.
r5934 | iblech++ | * t/data_types/subscripts_and_context.t -- Added more tests.
r5934 | iblech++ | * t/operators/inc.t -- &postfix:<++> should evaluate the expr it's ++ing only once.
putter iblech: I fuzzily think the ping was to ask for a hand with a Parser.hs puzzle - getting rz:foo/bar/ working. But I think for now I'm going to leave the haskell parsing in place, and just insert a p6 function between that and the creation of a rx PIL. So I think I'm all set... My thanks. :)
iblech putter: :) 16:01
putter autrijus: ping? 16:02
gaal: ah. so the semantics are clear, its just a matter of what names to use...? (still isnt clear to me from note... ;) (if there is more to it, note adverbs are one option for passing extra info...) 16:05
putter thought $::('x') was ok... going to read t/var/symbolic_deref.t...
iblech putter: $::("x") will only find our $x, not my $x 16:06
You've to use $::("MY::x") to get to my $x 16:07
See symbolic_deref.t:50
putter ah. does my $x end up in %:: ? or just in %MY:: ?
iblech Only %MY::, I think. 16:08
svnbot6 r5935 | iblech++ | * PIL2JS:
r5935 | iblech++ | * PIL2JS.js: $foo.isa("Any") is now true.
r5935 | iblech++ | * PIL2JS.js: undef.ref does not longer die.
r5935 | iblech++ | * Prelude::JS::Bool: Fixed booleanification of refs.
r5935 | iblech++ | * Prelude::JS::Operators: Made $foo.abs, $foo.int, etc. work.
r5935 | iblech++ | * We're at 54.14% test passes last time I checked (+10% compared with yesterday) :)
r5935 | iblech++ | * Missed some more EOLs at EOFs in r5934, fixed.
putter hmm. at times like this I'm tempted to write a small language reference doc just so I can keep it all straight. 16:09
iblech docs/quickref/ :)
putter yeah. :) I was just thinking, but wait, I _did_. docs/quickref/namespace. but I never described its interaction with my/our/temp/etc. I'm not even sure there is an "etc"... rev2... 16:11
iblech There's state and let 16:12
my $x = 20; { let $x = 3; 0 }; # $x restored to 20
my $x = 20; { let $x = 3; 1 }; # $x stays 3
putter ah, yes. key in regexps. 16:13
iblech sub foo { state $x; say ++$x }; foo(); foo(); foo(); # 1,2,3
putter it was never entirely clear to me what state's claim to fame is. (other than getting storage in objects working for the first time.) hmm, maybe I'll try a pithy one line on each... "declaration flavor"?... describing its behavior and most important uses. 16:15
iblech sub foo { state $initialized; unless $initialized { ...; $initialized++ }; ... } 16:17
(but FWIW, this is better written as sub foo { FIRST {...} })
putter iblech: btw, I've now used the PIL / JS backend combo a couple of times as an example of what can happen when you have insightful design and notably good people. most impressive. just thought I'd mention it. 16:18
iblech :)
putter re state/FIRST, ah, ok.
svnbot6 r5936 | putter++ | It's still largely unfilled it, but now there's a my/our/temp/etc vs symbol tables affected table in docs/quickref/namespace. 16:34
r5937 | putter++ | A few more empty rows in the new docs/quickref/namespace table.
iblech putter++ # will certainly be helpful
putter :) 16:37
iblech putter: state will create a new lexical var, exactly like my. 16:38
temp and let only work with already declared vars, I think.
putter k 16:40
svnbot6 r5938 | putter++ | Added empty my/our/temp/let/state vs meaning-and-common-use table in docs/quickref/namespace table. Attention lurkers... here is a chance to read a clear section of the docs, learn an important bit of perl, and contribute... :)
xinming what is the differences between the "package" which is defined using keyword "module" and "package" please? :-S
putter see docs/quickref/namespace ... there's a nice table :) :) 16:41
more helpfully... modules add export/import, version to package's namespace, traits, autoload 16:43
xinming putter: so, this means that their differences are, package defined by keyword "package" may only be used for specified program. and module is used for upload to CPAN. Or act as lib, right? 16:44
putter a good question. a module isa package. but a module can be declared with version info (eg, Net::IRC-0.05) where a package would be just Net::IRC . My quite fuzzy understanding is you can still "use Foo;" to get Foo.pm with a package Foo;, but you dont get the versioning magic, and I suspect you wont "is export" stuff wont work. But I'm really not quite sure. 16:50
in general, perl5 ways of doing things will continue to work, and p6 introduces new nice ways of doing things which are otherwise painful in p5. 16:52
so you can probably continue to use "package" on CPAN... but you likely wont want to... :)
xinming putter: in fact, After I read synopses, I got this question. Class is sure to be different from package. as people don't wish to mix sub routine{ } with sub method{ } 16:53
But there is already a key word package. So I think module might be the thing as I guessed. :-) 16:54
putter err, class isa package. a class-flavored package can have both methods and subs ("sub foo(){} method bar(){}"). a simple just-a-package package can have subs. 17:11
I don't _think_ Test.pm is doing something really weird... but I have a " {} " in a _comment_ causing a parsefail... ?!?! 17:12
gaal what's the code? 17:13
iblech putter: "{ your code here }"
"{...}" interpolates
oh 17:14
in a comment, not a string
ignore me please :)
gaal ?eval say "moose" # works {}
evalbot6 moose bool::true 17:15
putter iblech: distilling now...
iblech putter: Do you use <> to access a hash somewhere? Pugs once had a parsing bug that caused $a < 3 to be parsed as $a<3[error: no closing >]
putter oh, booorrrinng. It's just an odd variant on \} in rules causing Parser problems. semi-minimal case is: 17:18
rule block { \{ \} }
#ok('sub () {}' ~~ /^<anonsub>$/,"Anon subs parsing");
this, and the full file version with lots of tests, works fine without the comment (I assume Parser backtracks and finds something reasonable), but with the comment, parsefail. workaround is to use <'}'> rather than \} in rules. 17:19
iblech: thank you. minimal case: 17:23
rule foo { \{ } #}'
about to become pugsbug/ 17:24
iblech Great :) 17:25
putter++
iblech got my ($a, undef, $b) = (...) and returning 0 or 1-elem arrays in PIL2JS working :) 17:27
food &
putter &
autrijus iblech: ping 17:31
oh well, I'll post to p6c. 17:32
putter: pong... if not too late
gaal i see src/Pugs/CodeGen/PIR.hs uses EvalResultModule in its eval style
that doesn't mean anything yet
but i think it's might be a good place to put in "run init hooks please"? 17:33
autrijus nod.
gaal oh, maybe not:
because there's also the distinction of "honor 'is export'" 17:34
between require/use
ResultModule was originally intended to mean "return a Module object"
bah!
this confuses me :( 17:35
autrijus sub f ($x) { my $x }; 17:38
error? noop? new decl?
putter late? oh, "&" is ambiguous. waving goodbye to someone else, vs for oneself.... perhaps we should use .& and ./& ? ;)
autrijus lol
gaal autrijus, looks like a new decl to me.. surely sub f ($x) { { my $x } } is no error 17:39
autrijus but!
{ my $x; my $x }
is error or noop but never new decl
I'm thinking about hoisting _all_ lexical decls to the top of body along with params
gaal in p5 it's just a warning 17:40
and a new decl i think.
s/just // 17:41
autrijus nod. but my point is that
sub f ($x) { ... }
corresponds to p5
sub f { $x = shift ... }
instead of the p5
sub f { $x = shift; { ... } }
gaal i agree
autrijus at least in my mind
ingy hi autrijus
autrijus heya.
gaal but i still think it should be a warning, not an error, for the same reasons :)
autrijus a warning + noop 17:44
or a warning + newdecl.
gaal in p5, it's a new decl: 17:47
perl -lwe 'my $x = 5; print \$x; my $x = 8; print \$x; print \$x'
"my" variable $x masks earlier declaration in same scope at -e line 1.
SCALAR(0x804d630) / SCALAR(0x804d660) / SCALAR(0x804d660)
autrijus I know that. :) I think larry wants it to be warning+noop 17:48
gaal it'd be an error in any other language that had decls :)
probably
iblech autrijus: pong
autrijus iblech: floating all my() and our() decl to beginning of block. sane? 17:49
I suspect it will greatly simplify your life.
as you can alloc it along with params. 17:50
iblech Right, it would be easier for PIL2JS. But then { say $a; my $a } would be legal, right?
autrijus why? if there is an outer $a that compiles
{my$a | say $OUTER::a }
if not then error
the floating is PIL
not pre-PIL
so we already guarded against bogus ref 17:51
iblech ah, ok. I'm fine with that then :)
autrijus ok, the only requirement is you need to handle nested $OUTER::
but I suspect you already do that :)
iblech No, I don't do that yet, and it's probably tricky... 17:52
(But doable -- basically I'd have to rewrite { my $a; { my $a } } to { my $a__0; { my $a__1 } }
integral PIL.hs uses the ST monad, shouldn't this be the STM monad so that things like bind are threadsafe? 17:53
autrijus integral: unsafePerformSTM instead of runST?
integral autrijus: don't they get used from inside Eval? 17:54
autrijus hm.
integral or a runST that returns a STM monad
autrijus I don't know, metamonads feel awkward 17:55
and the semantic is wrong anyway
you want TVar not STRef
so yeah, maybe TVar it and go unsafe
the thing about runST is just that it's easier to quickcheck
I mean, safer
but maybe it doesn't matter. 17:56
xinming how to type "?" in keyboard please?
Khisanth a question mark?
integral hmm, quickchecking is good
xinming It seems not a perl 6 question. In fact. It is.
Khisanth: No.
or the "zipper" operator to interleave them:
for @a ? @b ? @c -> $a, $b, $c { print "[$a, $b, $c]\n" }
integral xinming: your irc client isn't sending in utf-8
autrijus integral: nah, unsafePerformIO . atomically is livable
Khisanth oh the yen symbol
autrijus integral: with suitable NOINLINE
Khisanth just use Y
integral autrijus: scary for use lesser mortals though 8-) 17:57
Khisanth Ā„
autrijus integral: so, please feel free to change them to TVar
integral *us
autrijus integral: heh... in the awkward squad paper spj gave precise definition of how to make unsafePerformIO safe
Khisanth ctrl+shift+a5 if you are using something built with GTK :)
autrijus just evaluate each situation with those metrics :)
xinming Ā„
integral hmm, I'll have to read those 17:58
gaal xinming: see also docs/quickref/unicode
Khisanth: add that to the doc?
Khisanth hrm? 17:59
gaal the GTK binding.
Khisanth you can use ctrl+shift+hex
that is how I have been typing the Ā« and Ā» :)
gaal good :) could you add that to docs/quickref/unicode please? :) 18:00
xinming Khisanth: hmm... In fact, I wonder why perl 6 will use other chars as operator which can't be typed from standard keyboard. :-S
Khisanth xinming: only if you choose to 18:01
instead of Ā„ you could just use Y
instead of Ā« you can use <<
hmm 18:02
can't display the Set.pm operators
gaal svn.openfoundry.org/pugs/docs/quickref/unicode
Khisanth I mean in my terminal with vim :)
gaal your browser probably has better fonts than your editor :)
Khisanth moz vs. gnome-terminal 18:03
svnbot6 r5939 | autark++ | * add test for function interpolation gobbling up trailing whitespace 18:07
r5940 | iblech++ | * Pugs.Compile -- Don't emit [Noop] for the empty arrayref literal ([]).
r5940 | iblech++ | * t/var/symbolic_deref.t -- Fixed one test.
r5940 | iblech++ | * PIL2JS:
r5940 | iblech++ | * Finally, returning 0- or 1-elem arrays works correctly, causing many tests
r5940 | iblech++ | to pass, currently resmoking...
r5940 | iblech++ | * Removed the now unneeded [...] hacks.
r5940 | iblech++ | * my ($a, undef, $b) = ... works now.
autrijus iblech: how do you resmoke? 18:10
I don't see a "make jssmoke"
iblech Right. The naive solution would be to simply use runjs.pl as HARNESS_PUGS, but that will work extremely slow, as Test.pm is then compiled again and again. 18:11
Instead, I use a 10 line script as HARNESS_PUGS which reads the input .t and s/use Test//
(Test.pm ist precompiled and always linked in.)
autrijus please check it in somewhere :) 18:12
in README if must
I mean perl5/PIL2JS/
iblech I tried pugs -MMarkTestPMAsLoaded -CPIL ...normal options here..., with MMarkTestPMAsLoaded.pm containing %*INC<Test.pm>++, but then pugs refuses to work ("can't open file") 18:13
Khisanth gaal: another column in that would go over 80 chars
autrijus iblech: how long does it take for your to jssmoke? 18:14
gaal iblech, the precompilation mechanism prevents modules from being reloaded
in normal pugs at least
Khisanth: that was bound to happen sometime... either creatively decrease column width, or start another row 18:15
iblech Will do.
re. Sorry, my IPv6 tunnelbroker lagged... 18:17
autrijus: ~~20min, but using -j1
autrijus iblech: ok. post the new smoke as reply to my journal? :)
the new one is up: use.perl.org/~autrijus/journal/25991
I need to sleep a bit now
see ya!
iblech Ok 18:18
Night :)
autrijus (and the my() hoisting is on p6c now)
&
18:47 marksto1 is now known as markstos_
markstos_ I just tried using the p5 to p6 converter utility on CGI::Application's "Application.pm". The result was much shorter. 18:47
But I was hoping there would be more of a result than what I found: if ref($class) { # No copy constructor yet! $class = ref($class); } 18:48
Any tips on how to make the conversion script more effective?
iblech markstos_: Do you refer to util/p5_to_p6.pl? This is only a helper for *manual* porting. 18:51
markstos_ I understand.
iblech Larry is working on a "real" P5 -> P6 translater, but he hasn't released it yet.
markstos_ I don't see how reducing the module to that line of code helped me with a manual port, though. 18:52
iblech Right, util/p5_to_p6.pl isn't finished, IIRC 18:53
markstos_ Ok. 18:54
maybe I can patch it.
iblech markstos_: Great! :) Are you a committer yet? 18:56
markstos_ Not yet, but I prefer darcs, so I do 'darcs send'.
but I could use svn if it's easier for those would have to process my patches.
Khisanth well you can use darcs too and commit bits are given freely :) 18:58
svnbot6 r5941 | putter++ | Added t/pugsbugs/parsing_braces_in_rules.t. Parsing curly braces in rules isnt quite working. For now, always match a \{ (escape-open-curly) with a <'}'> (close-curly literal).
r5942 | iblech++ | PIL2JS: New file pugs-smokejs.pl: Use that as HARNESS_PUGS if you want to jssmoke.
iblech Right :) markstos_: Give me your mail address please, so I can make you a committer? :)
markstos_: Invitation sent, welcome aboard :) Please add yourself to AUTHORS :) 19:01
markstos_ Thanks iblech.
svnbot6 r5943 | putter++ | docs/quickref/namespace: Added some notes/examples. iblech++ 19:03
markstos_ If I want to create a test for p5_to_p6.pl, where I should I put it? I don't see a precedent there for testing a utility script. util/t ? t/util ? 19:05
coral t/script/ 19:06
coral has no preference, merely observing possible name
markstos_ I'm not sure we want to put in the main test directory, because it depends on p5's Regexp::Common, which normally isn't needed. I'll just make something up, and someone can revise it later, if they don' t like it, right. :) 19:07
gaal markstos_: while you're at it, take a look at t/examples and t/pugsrun, and see if you can factor the running-an-extra-pugs bit into Test.pm 19:08
if you have the tuits.
markstos_ We'll see. I was hoping porting CGI::Application would be a lazy-Sunday-afternoon project, but it has already turned it something larger... 19:09
Aankhen`` gaal: Running an extra Pugs? 19:16
What do you mean?
gaal spawning an external process
Aankhen`` Ah.
gaal sorry, still got that fever :(
and, am going to bed.
Aankhen`` Sleep well. 19:17
Get well soon!
gaal bye... :)
thanks!
iblech Night :) 19:18
gaal & 19:19
Aankhen`` To get a pipe, do I have to call &Pipe::open explicitly, since there's a &File::open as well? 19:20
iblech I think so, but not 100% sure. 19:21
Aankhen`` :-o
You're not using IPv6?
Or an IPv6 tunneler, as the case may be...
Or a tunnel, even. :- 19:22
p
Jeez, my typing is messed up.
svnbot6 r5944 | iblech++ | docs/quickref/namespace: Section about binding, and removed question marks from 19:23
r5944 | iblech++ | things I know for sure :)
r5944 | iblech++ | docs/quickref/control: Section about closure traits (FIRST {...}, etc.).
iblech Right, normally I do, but my tunnelbroker lagged extremely a bit ago
Aankhen`` OK.
iblech_ Welcome from the IPv6 world :)
19:23 iblech_ is now known as iblech
Aankhen`` Eek! 19:23
Ah well, back to seeing a bunch of useless stuff before every line... 19:24
iblech :D
irssi++ # good client
Aankhen`` mIRC-- # piece of junk
iblech irssi++ # does not show a bunch of useless stuff before every line :) 19:25
Aankhen`` mIRC-- # piece of junk
Khisanth eh? what is it showing before every line? 19:26
Aankhen`` Here's a normal line:
[00:51:25] <iblech> I think so, but not 100% sure.
Here's what it looks like now?
s/\?$// 19:27
[00:54:39] <iblech> 8e0:abcd:14d:2e0:7dff:fee5:bff PRIVMSG #perl6 :irssi++ # good client
Khisanth oO
heh looks like it screwed up with the parsing
Aankhen`` Yup.
Khisanth hmm 19:29
Aankhen``: so can you see the unicode chars? :)
Aankhen`` Sorta. Some of them. 19:30
They seem to be interpreted as two characters, so I see a weird "A" followed by the actual character.
Khisanth hmm no, don't think that is displaying the correct character when you see the A with the circle above it 19:31
Aankhen`` It is, sometimes.
Sometimes it's totally off.
svnbot6 r5945 | iblech++ | docs/talks/Anatomie_eines_Compilers_am_Beispiel_von_Pugs.latex: 19:36
r5945 | iblech++ | Skeleton of my talk "Anatomy of a Compiler using Pugs as example" (German,
r5945 | iblech++ | work-in-progress) I'll hold 2005-08-04.
Aankhen`` Wouldn't it make sense to shift everything possible from Pugs.Prim to the Prelude so that new backends have less to implement? New prims should preferably go in the Prelude, I know, but I'm talking about the ones already there...
integral that's not happening atm? 19:38
iblech Generally yes. But: Currently, the main Prelude isn't used in the compilation to other backends (unless explicitly demanded using some env var).
Aankhen`` iblech: Ah, I see.
In that case, I will withdraw my suggestion for the moment. :-)
iblech And then, we probably don't want to write some often used prims (if, map, etc.) in Perl 6 (speed)
Aankhen`` I thought the whole point of Prelude was to implement all the prims possible so that the runtime has to implement only the bare minimum? 19:39
autrijus right, but the runtime can also elect to optimize beyond the bare minimum.
Aankhen`` OK.
iblech For example, &infix:<+> is currently a real method call in PIL2JS -- slow 19:40
err, s/method/sub/
autrijus can't quite sleep... so might as well start some releng
iblech :)
autrijus $y = \@x; # $y is "tied"? wtf? 19:41
(yes, I know that lwall said that. I just can't quire comprehend) 19:42
$y the container should have _nothing_ to do with this
tied concerns interception of further assignment
which this definitely does not do
iblech agrees completely 19:43
autrijus I'm rejecting line 62 onwards of autoderef.t until further clarification :) 19:44
iblech Probably he just meant get_real_no_autodereffing_ref_out_of_autodereffing_ref($a) instead of tied($a) :)
autrijus yes.
that's your thread
can you reply to him?
iblech Will do.
autrijus tied() can't be used this way. it's insane
svnbot6 r5946 | autrijus++ | * mark most of autoderef.t as TODO -- more unexpected success 19:48
r5946 | autrijus++ | for PIL2JS. :-)
r5946 | autrijus++ | * also remove the sanity-challenged (or, "differently sane")
r5946 | autrijus++ | use of tied() in tests.
Aankhen`` Strange. 19:53
HTTP::Header parses on its own, but when pulled in via `use`, it parsefails.
svnbot6 r5947 | putter++ | Uncommented parts of modules/Grammar/Perl6.pm which now parse. But some still dont.
r5948 | autrijus++ | * castfail is now captured by try{}, so drop eval"" in favour of try{}.
r5949 | autrijus++ | * some QuickCheck for PIL.hs
Aankhen`` `require` has the same effect. 19:54
autrijus Aankhen``: hm. try reducing it a bit? 19:57
Aankhen`` One sec.
Ah. 19:58
I think the parser was confused by myriad ./foo() calls.
Replacing them with `$?SELF.foo()` fixed it.
svnbot6 r5950 | autrijus++ | * -Inf now stringifies as "-Inf", not "-Infinity".
r5950 | autrijus++ | * TODOed fglock's infinite.t test for int(Inf).
r5951 | autrijus++ | * move infinite.t form Recurrence to toplevel t/ because it
r5951 | autrijus++ | does not use Recurrence.pm.
Aankhen`` To use a class in your code, do you need to `use` it? Can it just be `require`d? 19:59
autrijus require DBI; ::DBI.connect(); 20:01
use DBI; DBI.connect()
Aankhen`` What about: require DBI; DBI.connect();
autrijus I don't think that can work.
barewords are banned in general
Aankhen`` Dang.
autrijus and strings no longer pun for packages.
both are imho good things :) 20:02
Aankhen`` True. 20:04
svnbot6 r5952 | autrijus++ | * correct (:foo => 1) syntax in DateTime's Date.pm into (foo => 1).
brentdax Wow, someone was confused.
Aankhen`` But then what about the example you gave of `use DBI; DBI.connect()`?
autrijus nod.
Aankhen``: in compile time if either ::DBI or &DBI is bound then bareword take that meaning. 20:05
Aankhen`` Ah.
autrijus if both are bound, ::DBI takes prec.
alternatively we can take the very cynical view and say ::DBI automagically create a &DBI that returns the package object.
not sure we want to go there though. 20:06
Aankhen`` Heh.
Hrm. 20:07
This would apply to stuff like .isa() as well?
autrijus aye. tho currently I let .does and .isa take strings 20:08
Aankhen`` require Foo; my $foo = ::Foo.new(); ok($foo.isa(::Foo));
autrijus and do a runtime lookup
as in .isa('Foo')
just to make people happier
Aankhen`` Right.
Will that change? As in, is it incorrect behaviour? Or unspecced behaviour?
autrijus it has the same semantics as ::::('Foo');
ooh ::::.
Aankhen``: that is unspecced. 20:09
svnbot6 r5953 | Aankhen++ | * HTTP::Headers: fixed typo.
r5954 | autrijus++ | * add a Makefile.PL for URI.pm so it can be tested.
r5955 | Aankhen++ | * HTTP::Headers: added explicit invocant wherever required.
Aankhen`` I see.
autrijus if you'd like to canonize it, please p6l it
indeed the string treatment is ambiguous 20:10
because the ::Foo lookup could mean the inner ::Foo or the global *Foo (when looked up inside the prim)
iblech IIRC Larry said once it's ok, and stressed that it doesn't do a global lookup, but a normal one, exactly as if you had dropped the quotes. 20:11
autrijus good. that does mean some very strange ::CALLER foo then
::::('CALLER::Foo')
Aankhen`` Anyone got enough knowhow to make the Proxy class actually act as a proxy? 20:17
autrijus you mean in the current runcore? 20:18
that needs a tie() implementation
and a new IScalar instance
Aankhen`` OK... 20:20
autrijus if you can wait, the new runcore supports that natively 20:21
svnbot6 r5956 | Aankhen++ | r5981@tef-base: Aankhen | 2005-08-01 01:50:21 +051800
r5956 | Aankhen++ | * ported a few tests for HTTP::Headers.
Aankhen`` Sure.
autrijus otherwise maybe try js first :)
Aankhen`` Bleh.
Aankhen`` adds --verbatim mentally.
autrijus that's fine, it's a badge of pride that says "I'm using svk and I'm not afraid of let the world know" 20:22
clkao grins
Aankhen`` Heh. 20:23
I'd be happy to do it every time ;-), but as it is, people think that I'm "karma whoring" since I usually write fairly detailed commit messages, and add a header line indicating the relevant files if it's multi-line... 20:24
s/files/files or modules or whatever/
autrijus I don't think people care about that at all :) 20:25
Aankhen`` shrugs. 20:26
I'm just trying not to be a pain.
autrijus ponders "I'm a Karma Courtesan and I'm proud of it"
svnbot6 r5957 | autrijus++ | * elems() should only work on Arrays, so it's an array method now.
r5958 | putter++ | modules/Grammars/Perl6.pm: rule block { <[{]> ... <[}]> } works. Some comments temporarily removed from rules. I noticed two unresolved issues (PGE bugs?). Some comments in rules cause PGE parse failures. And <foo>? is matching things [<foo>]? doesnt.
Aankhen`` Do you have any idea of how long it'll be before the new runcore is up and, um, runcore-ing? 20:29
autrijus I have no idea.
depending on how demanding $work is, about a month probably 20:30
Aankhen`` OK. 20:31
Was just looking for a general timeframe.
autrijus nod. 20:32
svnbot6 r5959 | autrijus++ | * move infinity.t again to builtins/math/.
autrijus I'm also shooting for soundness and completeness instead of speed this time
Aankhen`` Is this new runcore the implementation of docs/notes/plan?
autrijus it's the haskell evaluator for PIL2 20:33
yes
Aankhen`` Kewl
.
Welp, it sounds great to me.
autrijus to me too :)
Aankhen`` Especially if it has Proxy support builtin. ;-)
autrijus sure ;)
is there a failing proxy.t?
clkao Aankhen``: newer svk will have command/path option matching hooks. so you can say for //pugs i want --verbatim in push
Aankhen`` autrijus: A TODO'd failing proxy.t, yes. 20:34
autrijus good
Aankhen`` clkao: Sweet!
clkao but it doesn't exist yet, wanna help? :)
Aankhen`` Heh.
I wish I could atleast build it on Windows.
autrijus if not for iblech's amazing work, I'd be aiming to use compile-to-perl5 as the reference compiler (while the haskell runcore being the reference interpreter) 20:35
clkao how much tests are passing now in js?
autrijus clkao: over 50%!
iblech clkao: 57.07%
:)
Aankhen`` clkao: I would like to help, but not sure I will be able to.
I'm not sure, even. 20:36
clkao crazy folks
autrijus but now it's even better; if js/p5 codegen does duplicated post processing then we know it should be pushed back to PIL level
e.g. lexical hoisting 20:37
Aankhen`` Neat.
iblech++
autrijus iblech++
iblech Pugs++ # does most of the work (parsing and emitting PIL) :) 20:38
autrijus life++ # lots of fun 20:39
autrijus goes fixing $CALLER::_... should be <50 failures after that
it's amazing how hundreds of failing tests gets produced every week or so.
Aankhen`` goes to sleep. 20:41
G'night.
autrijus 'nite Aankhen``
hm 20:42
sub{ say $CALLER::z }.() for 1
svnbot6 r5960 | iblech++ | * Usual svn props, including proper svn:ignore for docs/talks.
r5960 | iblech++ | * More work on talks/Anatomie_eines_Compilers_am_Beispiel_von_Pugs.latex.
autrijus instant infinite loop
iblech: 20:44
Umwandlung des Sourcecode in einen Abstract Syntax Tree
I'd use Parse Tree for that
AST is very overloaded... everything is AST :)
iblech You can read German? :)
Good catch.
autrijus yes, I stayed in .de for a year
I can read most of your slides :)
iblech :)
autrijus so I laughed at 'als Ɯbung' :)
iblech :D 20:45
clkao Ich spreche kein Deutsch! 20:50
autrijus hahi buhuhi jihana nanigani! 20:51
svnbot6 r5961 | iblech++ | * t/operators/repeat.t -- unEVAL.
r5961 | iblech++ | * PIL2JS: Prelude::JS::Operators: Implemented &infix:<x> and &infix:<xx>, which
r5961 | iblech++ | gives one additional unexpected success to PIL2JS. :)
r5961 | iblech++ | * docs/talks/Anatomie_eines_Compilers_am_Beispiel_von_Pugs.latex:
r5961 | iblech++ | s/AST/Parse Tree/, autrijus++ for catching.
r5961 | iblech++ | * docs/talks/README: Added entry for ^.
r5962 | iblech++ | * t/operators/short_circuit.t: Minor cleanup. 21:00
r5962 | iblech++ | * PIL2JS: Prelude::JS::Operators: Implemented &infix:<^^> and &infix:<xor>,
r5962 | iblech++ | short_circuit.t passes now (+30 successful tests (with 1 :todoed)).
r5963 | autrijus++ | * Trying to make unsafePerformIO safer with -fno-full-laziness 21:17
r5963 | autrijus++ | -fno-cse and NOINLINE. It feels almost like Scheme now!
r5964 | iblech++ | * util/gen_prelude.pl: Added autrijus's change of r5963 to gen_prelude.pl. 21:29
r5964 | iblech++ | * New test: t/builtins/io/exit.t, primarily used for PIL2JS.
r5964 | iblech++ | * Re-fixed t/operators/quoting.t (but normal runcore Pugs didn't bother).
r5964 | iblech++ | * PIL2JS:
r5964 | iblech++ | * PIL2JS.js: Implemented &exit.
r5964 | iblech++ | * Moved some operators from Prelude::JS::Operators to more appropriate
r5964 | iblech++ | Prelude::JS::Str and Prelude::JS::Bool.
r5964 | iblech++ | * Prelude::JS::Bool: Added &infix:<?|>.
r5964 | iblech++ | * Prelude::JS: Added &infix:<=>.
autrijus bbl & 21:31
iblech Should $pair[0] and $pair[1] work? 21:50
t/data_types/pair.t suggests this
brentdax Does 'trusts' work yet? 22:09
iblech Probably not. But probably real privacy isn't there either, i.e. all classes trust all other classes. 22:10
svnbot6 r5965 | iblech++ | * Test fixes:
r5965 | iblech++ | * magicals/subname.t, data_types/anon_block.t: unEVAL.
r5965 | iblech++ | * data_types/pair.t: Test description fix.
r5965 | iblech++ | * data_types/flattening.t: 3[0] should not work, but (3,)[0] should.
r5965 | iblech++ | * PIL2JS:
r5965 | iblech++ | * PIL::Nodes, PIL2JS.js: $?SUBNAME.
r5965 | iblech++ | * PIL2JS.js: Hacks: ::Num eq "Num", etc.
r5965 | iblech++ | * PIL::Nodes, PIL::Parser: Accept macros as Codes.
r5965 | iblech++ | * Prelude::JS:: Added .perl stub.
r5965 | iblech++ | * Prelude::JS::Pair: Moved &infix:?\194?\171=>?\194?\187 here and added support for lvalue pairs.
brentdax Nope... No compatible subroutine found: "&:foo" 22:12
Guess I'll just use underscores instead of colons and put in a comment to change it later.
iblech Also, have you read Larry's recent post on p6l about changing :foo to _foo and other things? 22:13
brentdax Yeah, but I don't like it, and I'm writing this to run on Pugs anyway. 22:14
(That is, I'm not going to make my code *not* express the correct semantics on a current Pugs when I'm hoping the ruling will change anyway. And I haven't been touching the Pugs core anyway.) 22:15
iblech m19s28.vlinux.de/iblech/stuff/not_p...smoke.html # Yay, 5% more tests passing, we're not at 62.03% :) 22:43
s/not/now/
svnbot6 r5966 | iblech++ | t/builtins/io/time.t: unEVAL. 22:44
iblech Night all :) 22:54
23:42 mugwump_ is now known as mugwump