6.2.2 is airborne! | pugscode.org <Overview Journal Logs> | pugs.kwiki.org Set by autrijus on 1 May 2005. |
|||
mugwump | however, that should not actually work because it's breaking the "types=compile time" rule | 00:00 | |
stevan | how hard would it be to hack some kind of bless? | ||
I imagine namespaces are non-trivial | 00:01 | ||
multi sub foo (My::Class $self:) | 00:02 | ||
although if types=compile time then how would that work with inheritance? | |||
I didnt think Perl would do that much code analysis | 00:03 | ||
mugwump | not if you don't want it to it won't | 00:06 | |
but but inheritance is a simple case, it still works with 'compile time' classes, no matter how hazy that concept | 00:07 | ||
stevan | ok | ||
so would a bless, which creates a magic type which can be checked with MMD work for this? | 00:08 | ||
mugwump | I'm thinking a sub-type would be a nice way to do this, see t/oo/subtypes.t | 00:09 | |
and abstract the Instance Hack into a Hack::Instance module | |||
stevan | mugwump: ok | ||
oooh subtypes remind me of Ada | 00:10 | ||
ok, I am going to set up the directories in svn | 00:12 | ||
mugwump | nopaste? | 00:22 | |
bah, using svn instead :) | 00:23 | ||
stevan | mugwump: I just committed ext/Perl-MetaModel | ||
and associated file | |||
mugwump | cool | ||
jabbot | pugs - 2859 - adding skeleton for Perl-MetaClass | 00:24 | |
mugwump | ok, just put some code in Hack::Instances | 00:29 | |
don't know if it works :) | |||
mugwump oo's at that uber-pink bot announcer | 00:30 | ||
obra | svnbot6++ pretty | ||
autrijus | we have Rules support. | ||
r2859. | 00:31 | ||
er, r2861, I mean. | |||
obra blinks | |||
autrijus++ | |||
autrijus | pmichaud++ # doing all the real work | 00:32 | |
I just glued it, that's all | |||
stevan | autrijus: Pugs is asking for $ENV{PARROT_PATH}, is that the source, or the binary? | ||
autrijus | sourcc | ||
source | |||
stevan | ok | 00:33 | |
stevan crosses his fingers and trys again | |||
jabbot | pugs - 2860 - Idea of using sub-types to classify obje | 00:34 | |
pugs - 2861 - * real, honest-to-eris, Perl 6 Rules sup | |||
stevan | jabbot: you're too slow :P | ||
jabbot | stevan: Does it please you to believe I am too slow :P? | ||
stevan | jabbot: are you jealous of ingo's svnbot? | 00:35 | |
jabbot | stevan: What are your feelings now? | ||
stevan | :) Pugs.Embed.Parrot compiled without issue | 00:36 | |
autrijus: are we doing a release today/tonight/in-the-next-24-hours? | 00:44 | ||
mugwump | on a Monday? | 00:45 | |
stevan | sunday still for me | ||
mugwump: Hack::Instances looks cool, we just need subtypes :) | 00:47 | ||
mugwump | oh, I thought we had them, given the state of t/oo/subtypes.t | ||
stevan | mugwump: I dont think we have them | 00:48 | |
mugwump | those tests are still failing, then? | ||
stevan | they are all TODO | ||
mugwump re-builds pugs to check | |||
oh | |||
so they are. | 00:49 | ||
stevan | no matter what, I think we will need some new features to accomplish this | ||
autrijus | stevan: I don't know really... I _think_ in the next 24 hours, if you can do changelog meanwhile | ||
stevan | autrijus: I will start on it | ||
autrijus | danke | 00:51 | |
stevan | :) | 00:53 | |
Juerd | huh? | 00:54 | |
whoa | |||
autrijus++ | |||
A | |||
whoa | |||
autrijus++ | |||
autrijus++ | 00:55 | ||
(stupid Terminal.app can't handle rapid loop { up; enter; }) | |||
And of course | |||
pmichaud++ | 00:56 | ||
Tomorrow I'll try and convert my script-that-generates-a-64-kilobyte-regex-and-then-scans-/usr/share/dict/words-with-it-script | |||
s/-script// | |||
I converted it to Ruby already, but its regex engine wouldn't even accept the long regex | 00:57 | ||
So that comparison failed completely. | |||
obra | heh | 00:59 | |
Juerd | D src/pge | ||
svn: Failed to add directory 'src/pge': object of the same name already exists | |||
heh. | |||
autrijus | hm? | 01:01 | |
Juerd | Apparently, it doesn't really delete it | ||
The solution is obviously rm -rf src/pge and then svn up again | 01:02 | ||
Perhaps that's a useful note in your journal | |||
clkao | or use svk | ||
Juerd | I'm using svn 1.1.3 | ||
clkao: Company policy is to not run perl script :) | 01:03 | ||
clkao | oh, rewrite it to perl6 then | ||
Juerd | Perl6 ~~ Perl | ||
Juerd has no real good reason for not using svk | |||
Good night! | 01:04 | ||
autrijus | nite | 01:09 | |
jabbot | pugs - 2862 - Test for Hack::Instances | 01:14 | |
pugs - 2863 - minor syntax fixes for Perl-MetaClass | |||
mugwump | blast, my pugs-commit auto-mailer sends out svk property differences for commits I make :-} | 01:24 | |
jabbot | pugs - 2864 - Combine sub-type tests into t/data_types | 01:34 | |
meppl | gute nacht | 01:51 | |
stevan | autrijus: ChangeLog has been commited. As always, take a look and make sure I got it right | 01:53 | |
jabbot | pugs - 2865 - Alter make_instance API to accept object | 01:54 | |
pugs - 2866 - Add test for MMD on tuples | |||
pugs - 2867 - adding changelog details from svn log | |||
pugs - 2868 - adding ChangeLog for 6.2.3 | |||
stevan | good night all, I will be back in ~10 hours | ||
mugwump waves | |||
stevan | mugwump: I will read my Haskell book some more too, so as to better grok Class.hs | 01:55 | |
mugwump | considering I hardly know Haskell and wrote it, that shouldn't really be necessary ;) | ||
but go ahead by all means :)) | 01:56 | ||
jabbot | pugs - 2869 - Add mkType hack for instances ... still | 02:25 | |
mugwump & # meeting | 02:33 | ||
Khisanth | two bots for one repo? :) | 03:11 | |
03:26
TreyHarr1s is now known as TreyHarris
|
|||
autrijus | pmichaud: hey | 03:31 | |
pmichaud: you mind if I commit the Hs patch to compilers/pge for you to experiment with, and see if we can refactor it away? | 03:33 | ||
pmichaud: btw, eval_parrot, require_parrot are all support in Pugs now, even built without libparrot :) | |||
pmichaud: and full rx// support via the patched PGE is supported, too, with or without libparrot. | |||
pmichaud | hey, autrijus | 03:35 | |
did you get my email? | |||
autrijus | yes | ||
pmichaud | okay | ||
sure, no problem with committing -- we'll see about refactoring it a bit later then | 03:36 | ||
autrijus | Pugs now bundles a PGE.pbc | ||
pmichaud | It basically just adds the dump_hs method, yes? | ||
autrijus | just so that people with old (like, 0.2.0) version of parrot | ||
can still use latest PGE features | |||
yup | |||
pmichaud | yeah, we can put it in for now, but perhaps we should put big disclaimers around it that it may get taken out | 03:37 | |
autrijus | sure. let me do that | ||
done as r8016 | 03:40 | ||
it also adds a convenience "match" method that matches and dumps | 03:41 | ||
just so I can call it as a sub that returns a string | |||
sub match (Str $x, Str $pattern) returns Str | |||
pmichaud | ah, I see | 03:42 | |
makes sense | |||
I'm trying to decide how I want to add closures into PGE | |||
autrijus | *nod* | 03:43 | |
pmichaud | I'm fairly sure I'm just going to do a count-the-braces thing to extract the code, but I'm not sure how/when I want to pass it to the compiler | 03:44 | |
pmichaud does a parrot rebuild to check things out | 03:46 | ||
any suggestions for building the perl 6 expression parser? | |||
(i.e., the one that isn't in Haskell :) | 03:47 | ||
autrijus | maybe writing a parsec->rules compiler | 03:48 | |
pmichaud | perhaps, but I'd be worried about the code maintainability | 03:49 | |
autrijus | once we have a working rules we can refactor and tidy up | ||
but of course you can start with the Perl6.grammar too | 03:50 | ||
pmichaud | well, I tend to design bottom-up, so I'll want to be doing rules for the basic tokens | ||
then the tricky part becomes parsing out expressions and doing the operator precedence parser | |||
after that it's all pretty straightforward | 03:51 | ||
autrijus | right... so you want to write the prec parser in imc? | ||
or in p6 and let pugs compile it to imc? | |||
pmichaud | hadn't decided yet | ||
to get one working I'd go either way at this point | |||
I can translate from one to the other fairly easily :) | |||
autrijus | cool :) | 03:52 | |
by hand, I gather :) | |||
autrijus wonders if a imc->perl6 compiler is useful | |||
probably yes | |||
"disassemble" | |||
pmichaud | at this level it seems to be pretty easy to work in either language | 03:53 | |
autrijus | in that case, imc would probably be a faster choice | ||
in term of runtime speed | 03:54 | ||
pmichaud | ahhh, dump_hs just outputs offsets? | 03:55 | |
autrijus | right. | 03:56 | |
ingy | hi Shachaf | ||
autrijus | because you have the original string | ||
there's no need to use other information | |||
pmichaud | what happens for nested captures? | ||
ingy | autrijus: meet Shachaf, son of oren :) | ||
autrijus | greetings Shachaf-san. | ||
obra | heh | ||
autrijus | pmichaud: like perl5 | ||
ingy | er | ||
autrijus | counts the pos of left ( | ||
pmichaud: by-name captures needs another dump format | 03:57 | ||
pmichaud | hmmmm | ||
ingy | Shachaf lives near Seattle but is originally from .il | ||
I'm trying to make a pugs hacker of him | |||
pmichaud | quantified captures are likely to pose some difficulties | 03:58 | |
autrijus | ingy: cool | 03:59 | |
pmichaud: oh, and you got my mail that /()/ is broken? | |||
pmichaud | /()/ isn't a valid rule, and I don't have good error handling in place yet | ||
so, yes :) | 04:00 | ||
autrijus | it isn't a valid rule? | ||
pmichaud | nope. See S05 and A05. | ||
autrijus | oh. <null> | ||
pmichaud | right | ||
revdiablo | my brother is having a problem with an svk sync, getting "can't decode commit message as ascii" then "try --encoding"... anybody have any ideas? | ||
pmichaud | I haven't defined <null> yet | ||
autrijus | Name 'null' not found | ||
k | |||
pmichaud | and normally one would want <?null> anyway | ||
unless we *really* need to capture the nulls :-) | 04:01 | ||
although <null> may end up being special and non-capturing by default | |||
autrijus | so there's <?subrule> support? | ||
eek, exceptions | |||
pmichaud | no, there's no <?subrule> yet | ||
autrijus | k | ||
pmichaud | but it won't be hard to implement | ||
autrijus | but, yes, nested captures is a problem | ||
pmichaud | actually, I might just do that now | ||
autrijus | as p5 doesn't have that | ||
so ideally, in | 04:02 | ||
pmichaud | well, aliases will pose some difficulty for you too :) | ||
autrijus | 123 ~~ /(.)*/ | ||
we want | |||
Match [Match (0, 3), Nested [Match (0, 1), Match (0, 2), Match (0, 3)]] | 04:04 | ||
or some such | |||
what are aliases? | |||
er, I meant (1,2) and (2,3) of course | 04:05 | ||
pmichaud | rx/ H $7:=(.) llo (.) / | ||
captures into $7 and $8 instead of $1 and $2 | |||
autrijus | how does pge handle that? | ||
pmichaud | in what sense of "handle" ? ;-) | ||
autrijus | in the Match obj | ||
does it "remember" its supposed position? | 04:06 | ||
pmichaud | it puts the elements in @capt[7] and @capt[8] | ||
er, 6 and 7 | |||
autrijus | that's fine then | ||
pmichaud | but entries 0...5 are undef | ||
autrijus | I can deal | ||
k | |||
pmichaud | hey, tell ya what | 04:07 | |
rather than have just one PGE.pbc, how about a PGE.pbc and a PGE-hs.pbc ? | |||
autrijus | maybe all we need is a .perl method on the PerlArray.pmc :) | ||
pmichaud | both can be created by the makefile | ||
autrijus | that is fine by me | ||
but I need to doze a bit | 04:08 | ||
pmichaud | understandable :-) | ||
mugwump | autrijus: did you see `mkType'? I'm wondering if there's a way I can make a two-argument version that hangs the new type off the named type | ||
autrijus | "hangs"? | ||
mugwump | eg, mkType "Instance", "Hash" | ||
autrijus | .isa? | ||
mugwump | Makes a type "Instance" as if it was defined in initTree in Context.hs | ||
autrijus | sure, and that's why we need to refactor Context.hs | 04:09 | |
to use not a Tree | |||
but a full Graph | |||
mugwump | sure | ||
autrijus | as in Data.Graph.Inductive | ||
I can look into that after 6.2.3 | |||
mugwump | ok. I'll continue with the namespace-clobbering version then | ||
autrijus | k | ||
pmichaud | well, break/rest time for me as well, plus I need to chart my next steps to writing the parser :) | 04:11 | |
I'll be back online tomorrow, unless I wake up extra early somehow | 04:12 | ||
mugwump | Still, tree typing would be more than sufficient for the metamodel | 04:13 | |
So, I'll be using "Str" instead as the "magic" type for all classes, but with methods that hint at the type like clsAssocs | |||
*** Error: No compatible subroutine found: "&exists": NonTerm | 04:25 | ||
:-/ | |||
autrijus | mugwump: huh? | 04:33 | |
are you using | |||
%hash.exists<str> ? | |||
that is illegal | |||
it's like saying | |||
mugwump | Oh, I was trying to use %hash.exists() and it wasn't working for some reason | ||
autrijus | %hash.exists()<str> | ||
you want to say | 04:34 | ||
%hash.exists('str') | |||
instead | |||
mugwump | my PERL6LIB fooled me too, which didn't help | ||
mugwump & # wellington.pm.org meeting, home, etc | 05:43 | ||
ingy | mugwump: ping | 06:41 | |
gaal|work | mugwump: ping also | 06:57 | |
ingy, hi | |||
ingy | hi gaal|work | 07:01 | |
gaal|work | thanks for the notice :) | ||
ingy | the notice? | ||
gaal|work | about the yaml thing | ||
ingy | sure, thanks for the report | 07:02 | |
gaal|work | shouldn't mugwump's instance hack use a globally rising counter as part of the id? | 07:04 | |
rand isn't very safe | 07:05 | ||
of course a global coutner isn't thread-safe | |||
ingy | & | ||
gaal|work | & | 07:09 | |
07:23
chady_ is now known as chady
|
|||
bsb | Hi scook0, could you look over some haddock for me? | 08:08 | |
scook0 | bsb: sure | 08:15 | |
what have you got? | |||
11:26
chady is now known as chady_
|
|||
Limbic_Region | greetings and salutations all | 13:49 | |
elmex | ;) | 13:52 | |
:( | |||
Limbic_Region forgot today was "Emoticon Discovery Day" | 13:53 | ||
stevan | Limbic_Region: hey there | 14:17 | |
PerlJam reads about the new capture semantics | 14:21 | ||
Limbic_Region is S-O-R-E | 14:23 | ||
moving-- | |||
stevan | Limbic_Region: ouch, I know what you mean | ||
I helped my friend move out a of a 3rd floor walkup in Queens a few weeks ago | |||
pernod | Does anyone know what has happened to wagner.elixus.org/~autrijus/darcs/ ? | 14:24 | |
( wagner.elixus.org/~autrijus/darcs/pugs, even) | 14:25 | ||
Limbic_Region | stevan - where are you geographically? | ||
stevan | Limbic_Region: Connecticut | ||
Limbic_Region | anywhere near Dan? | 14:26 | |
stevan | Dan is in Hartford I think right? | ||
Limbic_Region | IIRC about 45 minutes away | 14:27 | |
stevan | hmm | ||
I may be very close then, since I am about 45 min away from hartford as well | |||
I am on the shoreline, a little east of New Haven | |||
Limbic_Region | I was at a wedding thing there last summer and was supposed to get together but time ran short | 14:30 | |
autrijus | pernod: darcs is currently offline. | ||
pernod: it will be restored at darcs.pugscode.org | |||
wagner as a whole is currently offline | 14:32 | ||
stevan | mugwump: ping? | 14:42 | |
cognominal | I see @Larry all over the place, should'not that be @*Larry :) | 14:45 | |
pmichaud | Oh, I suppose that there could be some scopes where @Larry != @*Larry :-) | 14:46 | |
autrijus | lol :) | ||
pmichaud: hey, is | |||
(xx)? | |||
the same as | |||
(xx)* | |||
when the code has no xx ? | 14:47 | ||
pmichaud | no | ||
autrijus | I mean, the str has no xx in it | ||
cognominal | but some lexically scoped @Larry will cause confusion some day | ||
autrijus | i.e. are both kind of matchfails the same? | ||
PerlJam | cognominal: that day could be today :) | ||
pmichaud | nope, (xx)? is a single match object, (xx)* is an (empty) array of match objects | ||
autrijus | so ? is not the same as {0,1} ? | 14:48 | |
pmichaud | the only quantifiers that produce arrays are *, +, and **{...} | ||
? is the same in the sense that it "matches zero or one times", but it's not the same as **{0..1} | |||
autrijus | ok. | ||
but the dump is the same in demo.pir | |||
$/: < @ 0> 1 | |||
both are that | |||
so, (xx)? will produce a matchfail | 14:49 | ||
pmichaud | yeah, I haven't got '?' entirely working for captures yet | ||
cognominal | btw, waht is the correct way to test identity instead of the pseudo code: @Larry != @*Larry | ||
autrijus | inside that $/[0] | ||
and (xx)* will produce a matchok | |||
inside that $/[0] ? | |||
I find it hard to understand | |||
i.e. if you test for $/[0] | |||
for truth | |||
will (xx)? fail and (xx)* succeed? | |||
PerlJam | cognominal: @Larry =:= @*Larry # you mean this? | ||
autrijus | if the scope has no @Larry | 14:50 | |
cognominal | PerlJam: probably | ||
pmichaud | no, both would fail | ||
autrijus | it fallbacks to @*Larry | ||
pmichaud: so how exactly is the match obj tree different? | |||
pmichaud | $/[0] is a single match object | ||
with (xx)? | |||
and $/[0] is an array with (xx)* | |||
autrijus | sure, I understand when they succeed | 14:51 | |
with (xx)* | |||
$/[0] will not be a Match obj | |||
but an Array obj | |||
is that the gist of it? | |||
or is it still a Match obj? | 14:52 | ||
PerlJam | autrijus: (xx)* generates an Array of Match always is my understanding. | ||
autrijus | so $/[0].does(Match) is false? | 14:53 | |
$1 is no longer a Match? | |||
pmichaud | it's an array of match | ||
(sorry, phone call took me away for a sec) | 14:54 | ||
(xx)? always produces a single match object | |||
that match object may succeed or fail, but it's always there | |||
osfameron | which is pretty cool | ||
pmichaud | (xx)* produces an array of match objects | ||
autrijus | ok. so if I test both for boolean | ||
pmichaud | that array may be empty | ||
autrijus | (xx)? fails because the match boolifies to false | ||
pmichaud | right | ||
autrijus | (xx)* fails because empty array numifies to 0, then boolifies to false | ||
pmichaud | exactly | 14:55 | |
autrijus | danke. | ||
I'll implement it right away. | |||
PerlJam | autrijus++ | ||
pmichaud | and again, I'm not sure if '?' is working in captures in PGE yet -- haven't tested that. With all of the funny things going on, I'm happy that captures "work" for just about any interpretation of the word :) | ||
autrijus | pmichaud: you know there's 7000 p6rule tests in pugs tree we can activate at any moment :) | 14:57 | |
pmichaud | I'll be glad to see them activated! | ||
autrijus | cool | ||
then when they fails miserably we can split the blame :) | |||
pmichaud | who gets the blame for the successes? ;-) | 14:58 | |
autrijus | no one notices successes ;) | ||
pmichaud | at this point I'm not counting failures, just successes :) | ||
PerlJam | pm: ask "svn blame" it'll tell you :) | ||
autrijus | PerlJam: you mean "svn praise" of course | ||
(they are aliases) | |||
iblech | autrijus: FYI, pugs -we 'say "abc" ~~ /abc/' segfaults for me (Linux, GHC 6.4, newest and fresh Parrot and Pugs) | 14:59 | |
PerlJam | autrijus: however you want to look at it ;) | ||
that [ (\w+) ]**{3..7} would generate an array in $/[0] is still bizarre to me. | 15:00 | ||
pmichaud | pj: what should it do? | ||
autrijus | iblech: try r2887 | ||
iblech: also try without embed parrot | 15:01 | ||
pmichaud | it turns out to be totally correct | ||
autrijus | (rm src/Pugs/Embed/Parrot.hs and .o if you want to try taht) | ||
iblech | autrijus: ok | ||
pmichaud | and no, it wasn't that way in Damian's original proposal -- I had to come up with examples as to why it should work that way | ||
autrijus | pmichaud++ # code! | ||
PerlJam | I don't have an answer to that yet, but it seems to me that you lose some of the advantages of the "static" nature of how to determine if you're going to get an Array of Match or a Match | ||
autrijus | but a match can always act as an array, no? | 15:02 | |
pmichaud | pj: / [ (\w+) ]**{0..7} / you can tell it's an array because it's in a quantified subpattern | ||
statically | |||
pj: here's the alternative | 15:03 | ||
PerlJam | It's another end-weight problem given that the ]**{...} may be a far lexical distance from the () that's bracketed within the [] | ||
iblech | autrijus: Still segfaults with PUGS_EMBED=parrot, will try w/o Parrot embedding now | ||
autrijus | iblech: fbsd works here | ||
pmichaud | pj: consider m:w / mv <file>+ / | ||
how do we get spaces between each pair of <file> invocations? | 15:04 | ||
i.e., with the :w ? | |||
Well, we can do: | |||
m:w / mv ( <file> )+ / | |||
jhorwitz | autrijus: see leo's changes for linking w/ parrot? | ||
pmichaud | but that gets kinda ugly, and we're building lots of extra capture objects as a result | ||
autrijus | jhorwitz: I already synced with him in #parrot | ||
jhorwitz | excellent | 15:05 | |
pmichaud | pj: so, the obvious thing to do is m:w / mv [ <file> ]+ / and have the '+' distribute to its inner captures | ||
it then becomes the same process for subpattern captures | |||
m:w / mv [ (\w+) ]+ / captures an array of space-separated names into $1 | 15:06 | ||
PerlJam | pm: sure, I understand the reasons *for* such a feature. That doesn't mean I'm completely comfortable with it yet. In my mind, it's another one of those features we'll have to implement and use before we really know what we should have done (or if what we did was the right thing) | ||
pmichaud | Well, I fairly well convinced myself that the other way isn't at all useful | ||
iblech | autrijus: W/o embedded Parrot: "pugs: user error (Cannot parse PGE: Just (PGE_Match 0 3 [] [])" | 15:07 | |
pmichaud | Believe me, I got approval from Damian/Larry *before* implementing it in PGE :-) | ||
autrijus | iblech: I'm pretty sure you have an old PGE.pbc | 15:08 | |
[not|autrijus]~/work/pugs/src/pge$ md5 PGE.pbc | |||
MD5 (PGE.pbc) = 203a20bb817cb3d9c2a35520ce468363 | |||
iblech | autrijus: same here | ||
autrijus | do you have pugs installed? try uninstall it | 15:09 | |
or install again | |||
also try | |||
[not|autrijus]~/work/pugs/src/pge$ parrot run_pge.pbc xx x | |||
PGE_Match 0 1 [] [] | |||
the "Just" is an old pbc | |||
gaal|work | misc_:ping | 15:10 | |
PerlJam | make | ||
oops | |||
iblech | autrijus: Gives "Just (PGE_Match 0 1 [] [])" here. | ||
autrijus: I'll try uninstalling Parrot and Pugs, then rebuilding Parrot, then rebuilding Pugs | |||
autrijus | iblech: weird. | 15:13 | |
I have this eerie feeling | |||
maybe it's loading the wrong .pbc file. | |||
misc_ | gaal|work: pong | 15:14 | |
autrijus | fixing. | ||
iblech | Indeed. Having rebuilt and reinstalled Parrot, I just built Pugs (with PUGS_EMBED=parrot). Running "parrot src/pge/run_pge.pbc xx x" gives again the Just (...) thing. | 15:15 | |
autrijus | ok. fixing | 15:16 | |
fixed. committing | 15:18 | ||
committed. r2889 | 15:19 | ||
try again? | |||
pmichaud | autrijus -- need me to make a similar change in the parrot trunk? | 15:21 | |
autrijus | pmichaud: did so already | ||
as for -Hs.pbc | |||
no | |||
pmichaud | yeah, I meant for -Hs.pbc | ||
with it automatically created via make | |||
autrijus | well, if you do that, I'd need to link against config_null.o | 15:22 | |
because otherwise the -Hs.pbc in parrot tree will clash with the one in pugs tree | |||
pmichaud | okay, I'll let you handle it then :-) | ||
iblech | Strange. pugs still segfaults, and "parrot src/pge/run_pge.pbc xx x" dies with "Parrot VM: Can't locate PGE-Hs.pbc, code 2.". Should I make clean? | ||
autrijus | I'll see what I can do :) | ||
iblech: there is no PGE-Hs.pbc in your dir? | |||
try cd into src/pge/ first | 15:23 | ||
then run parrot there | |||
PerlJam | iblech: segfaults out-of-the-box or when you do something specific? | ||
iblech | Ok. After the cd, the command work fine (outputs "PGE_Match 0 1 [] []") | ||
PerlJam: Segfaults when I do "pugs -we 'say "abc" ~~ /abc/'" | |||
autrijus | iblech: what about external? | 15:24 | |
PerlJam | My freshly built pugs says: pugs: user error (*** Running external 'parrot' failed: | ||
etc. | |||
autrijus | PerlJam: your parrot is not in PATH | 15:25 | |
I think. | |||
PerlJam | it is. | ||
autrijus | what's the err msg? | ||
PerlJam | PackFile_unpack: Bytecode not valid for this interpreter: version mismatch | 15:26 | |
Parrot VM: Can't unpack packfile run_pge.pbc. | |||
main: Packfile loading failed | |||
autrijus | oh wow wtf. :-/ | ||
0.2.0? | |||
pbc interop is broken in just one day? | |||
PerlJam | oh duh! I have and older parrot in my path | ||
autrijus | oh ;) | 15:27 | |
pmichaud | gotta keep up, pj :-) | ||
PerlJam | no, I just need to not leave old parrot builds lying around | 15:28 | |
iblech | autrijus: Works with external Parrot. | ||
autrijus | iblech: I have no idea then, unable to reproduce here. | ||
PerlJam does the "make clean" chant | |||
autrijus | iblech: however fork() is fast in linus | ||
er linux | |||
so external parrot is probably good enough | 15:29 | ||
pmichaud: hey. do you like $1.1 or not? | |||
iblech | :) -- Will rm -rf pugs and parrot and see if it works then, it's probably only some weird temporary bug depending on the phase of the moon :) | 15:30 | |
pmichaud | autrijus: I just wrote a message to p6l indicating I'd prefer we not add that | ||
or, at least, not yet | |||
autrijus | $1.1 is probably just people who want to count from 1 as base can keep doing that. | ||
which imho is a win -- but maybe a small win | 15:31 | ||
pmichaud | yeah, but I wonder about things like $1.$x.1 and $1[0].1 and the like... | ||
autrijus | well no, of course it must be literal | ||
I'll leave it to @Larry then | |||
iblech | autrijus: Ok, wiped Parrot and Pugs completely, installed both again, pugs still segfaults (if PUGS_EMBED=parrot) | 15:37 | |
autrijus | iblech: :-/ | ||
I'll probably refactor so it doesn't use unsafePerformIO anymore | |||
PerlJam | maybe I'm hypersensitive to these things but Damian's capturing semantics document reads like it has a lot of special cases. I wonder if we've just moved our foolish inconsistencies from perl-the-language into the subset known as rules? | 15:38 | |
pmichaud | pj: I think it's just the way the document is written | 15:40 | |
autrijus | 7 "except"s | ||
that's a pretty high rate :) | 15:41 | ||
pmichaud | well, many of those are actually flag-related | ||
well, at least two of them are | |||
autrijus | I just see one :) | ||
(:g and :x) | |||
pmichaud | oh, you're right | 15:42 | |
I misread | |||
autrijus | :) | ||
pmichaud | well, two of them are "except C<?> and C<??>" -- I actually wrote my version to avoid that | ||
autrijus | does PGE handle :g | ||
or does it properly belong in the upper (pugs) layer? | |||
pmichaud | Damian says that any quantifier except ? and ?? produce an array of matches; I write that +, *, and **{} produce arrays of matches | ||
autrijus | whilst :g may be handled quite easily, I wonder how :exhaustive works | 15:43 | |
pmichaud | :g will probably be handled above pugs | ||
autrijus | ok, that's what I'm doing currently | ||
just want to avoid duplication of work | |||
pmichaud | sorry, I meant "above PGE" | ||
autrijus | nod | ||
pmichaud | :exhaustive is going to be done by repeatedly calling the match objects "next" method and getting the next match | 15:44 | |
and then junctioning the results appropriately | |||
PerlJam | pmichaud: and :all ? :-) | ||
gaal|work | forum2.org/gaal/pugs/smoke-cygwin.html r2668 btw | 15:45 | |
2670 actuall | |||
y | |||
pmichaud | pj: ":all" ? | ||
PerlJam | Perhaps it's called :any The one that matches every possible match | 15:46 | |
pmichaud | I think that's :exhaustive | ||
PerlJam | oh I thought that was something different | ||
autrijus | there's :ov | 15:47 | |
PerlJam | :ov for :overlay? | ||
pmichaud | :overlap | ||
PerlJam | ah, that's the one I was thinking of! | ||
(after checking S05) | |||
pmichaud | it's still just repeated calls to the match object | 15:48 | |
PerlJam | yeah, I guess it's just :ex from the first char, then :ex from the second, and so forth until done | 15:49 | |
pmichaud | right, and PGE supports being able to anchor matches from specific offsets | ||
(it has to in order to support subrules) | |||
PerlJam | It's a good thing pugs is around and implementing all of this stuff. Looking over the synopses I see all sorts of things that I've forgotten. | 15:51 | |
autrijus | :) | 15:53 | |
15:55
Sniper{PaLa} is now known as Snip`
|
|||
autrijus | won't the same thing happen? | 15:56 | |
er, wrong window. | |||
iblech | m19s28.vlinux.de/iblech/pugs/smoke.html -- Linux, 4787 ok, 72 failed, 901 todo, 13 skipped and 2 unexpectedly succeeded | 16:08 | |
stevan | mugwump: ping? | 16:14 | |
16:15
misc_ is now known as misc
|
|||
pmichaud | okay, time to write a shift-reduce parser with operator precedence :) | 16:32 | |
wolverian | isn't that kind of reinventing the wheel? | 16:33 | |
pmichaud | do we have one in parrot? | ||
Corion | Oooo - r2891 gets one more program to compile and thus two more unexpected successes :) | 16:34 | |
wolverian | I don't know. isn't there on on CCAN? :/ | ||
s,on,one, | |||
Corion runs a second smoke to confirm ;) | |||
wolverian | (assuming you were going to write it in C.. okay, I'm just being silly.) | ||
pmichaud | :-) | ||
no, it's in parrot :) | |||
wolverian | ah, okay. can't you write it in perl6 then? :) | 16:35 | |
pmichaud | probably, but at the moment I'm more comfortable doing it in PIR. Besides, it won't be hard to write | ||
just a day or two (depending on interruptions) | |||
wolverian | ah, okay. :) | 16:37 | |
pmichaud | well, off I go. back later | ||
wolverian | cheers. have fun. | 16:38 | |
crysflame | hello notice | 17:20 | |
Corion | r2897 - datenzoo.de/pugs/win2k.html - 4781 ok, 78 failed | ||
Juerd | I personally think we should drop the entire Net:: prefix | 17:26 | |
Almost everything is concentrated around it nowadays | |||
WWW::, HTTP::, CGI:: all already escaped | |||
And IO::Socket::INET isn't in Net:: either | 17:27 | ||
Nor are P::C::S::* | |||
Corion | P::C::S ? | ||
Poe | |||
Ugh. | |||
Juerd | And it's time for "cute" names again. Project names | ||
IRC::Something | |||
Corion | Pugs should not get POE | ||
Juerd | So that there can be multiple IRC modules, of which none is preferred just because of the name. | ||
Corion: Agreed. | |||
Corion | Juerd: "cute" project names are useless as you can't search on them unless you already know what you are searching for | 17:28 | |
Juerd | Corion: IRC::Blah | ||
Corion | Juerd: Yeah, that would work | ||
Juerd | Corion: Rather than Net::IRC, as there can be only ONE OF EACH NAME | ||
Corion | Yeah | ||
Juerd | And too generic names should thus be forbidden | ||
Corion | "discouraged" :) | ||
Juerd | Do you know how many people want to use DBIx::Simple for their module and then find out it's taken? | ||
Corion | Juerd: You're a mean person! :) | ||
Juerd | And do you have any idea how surprised I was to find it wasn't already when I made mine? | 17:29 | |
Corion | Hmmm. pugs: user error (Cannot find the parrot executable in PATH) (for t/undef.t) | ||
Juerd | (And do you know how stupid in hindsight I think the name was?) | ||
Corion | ... it's true, but why does Pugs even try? | ||
Juerd: You're not alone - I also have a ::Simple module ... | |||
Juerd | Also, why the hell do people all recommend the horribly coded CGI.pm? | ||
Because the namespace is taken and no other module, no matter how well it was crafted, can ever take over! | 17:30 | ||
PerlJam | Juerd: so ... do you think that there should be some sort of community peer-review before a module gets an "official" name and place on CPAN? | ||
Juerd | PerlJam: Not exactly | ||
PerlJam: But yes, in order to get a generic name, I think peer review is needed. A place on CPAN should be available for all code in existence | 17:31 | ||
misc | wouldn't it be more efficient to change CGI.pm code ? | ||
Juerd | But perhaps (probably!) we should start prefixing PAUSE ids | ||
Corion | misc: Nobody will ever touch CGI.pm again :) | ||
Juerd | misc: Nah, its interface is wrong as well as its internals | ||
obra | Juerd: you're read larry's suggestions about module naming for perl6? | ||
Juerd | misc: Providing backwards compatibility means doing the same stupid things | ||
obra | and versioning, etc. | 17:32 | |
Juerd | obra: No? | ||
obra | Juerd: what's a _good_ CGI module this year. | ||
misc | call it CGI-ng, and that's it ? | ||
obra | oh. there's an apocalypse. | ||
before recommending a cpan overhaul, it's worth a read | |||
Corion | I just saw the four horsemen ride outside of the window | ||
Juerd | Then I read it. | ||
But I can't remember it. | |||
Juerd has all apocalypses printed out eve | |||
n | |||
obra nods | |||
PerlJam | obra: Are you referring to the Module-version-author thingy? | 17:33 | |
obra | yes. but pay attention to the fact that author is author+namespace | 17:34 | |
Juerd | Oh, but that's entirely the wrong way around, hierarchy-wise. | ||
obra | so there could be CPAN but also peer-review-pan | ||
PerlJam | obra: indeed. | ||
obra | Juerd: think of it as a triple, not a hierarchy | ||
Juerd | class Dog-1.2.1-cpan:JRANDOM; | ||
class CPAN::JRandom::Dog-1.2.1 | 17:35 | ||
I think it's important that it is actually part of the namespace itself | |||
obra | www.cpan.org | ||
org.cpan.www | |||
Juerd | Because you will want to load two. | ||
iblech | r2900! :) | ||
Juerd | BUT | ||
PerlJam | If everyone decides that CGI-0.1-Juerd is the best CGI module ever, how does it get the generic CGI name? Or does it? | ||
obra | there are no more generic names. | 17:36 | |
obra suspects you'll end up being able to order your namespace search path | |||
PerlJam | Then I can only see problems with few good solutions. | ||
Juerd | PerlJam: Well, there's "use approved;" | ||
PerlJam: That adds aliases | |||
(dreaming on) | |||
I don't like the triple idea AT ALL | 17:37 | ||
Well, I like the version part. | |||
And the namespace part | |||
obra | once I went back and read about how larry actually designed it all, I decided I liked it quite a bit | 17:38 | |
Juerd | But there simply shouldn't be two Net::IRCs, and there shouldn't be a single one without consensus | ||
I hated it the first time, I still do | |||
I just had forgotton about it | |||
obra | yes, but that's a matter of policy, not of technical enforcement | ||
note also that what happens if Net::IRC goes through a major API change? | 17:39 | ||
the new scheme can cope easily | |||
the old cpan scheme can not | |||
Juerd | Ah well, more cute names then. | ||
obra | and API versioning is isomorphic to independent authorship | ||
Juerd | It's the only possible solution. | ||
Top-level cuteness, I mean | |||
PerlJam | obra: Except that "use CGI" becomes almost meaningless. | ||
elmex | Net::IRC is ugly | 17:40 | |
Juerd | PerlJam: "use something that happens to be called CGI and let's hope it matches the interface I'll be assuming" | ||
PerlJam | Juerd: exactly | ||
osfameron | ick | ||
Juerd | The cute or author part must really be part of the namespace. | ||
The version can live outside | 17:41 | ||
(But TBH, I wouldn't mind it being part too, with aliasing for the versionless one. I've so often wanted to load two versions of the same module) | |||
Corion | Author is a bad idea, because authors change | ||
so "cute" names are all that remains ... | 17:42 | ||
Juerd | Corion: Then cute name. | ||
PerlJam | Corion: but the version will change with the author | ||
Corion | PerlJam: But I don't want to update all my scripts just because the author changed | ||
integral | What about when authors change their names? | ||
elmex | ./pugs -BParrot -e 'my ($i,$b); loop ($i = 0; $i < 1000; $i++) { $b += 3.37 } say $b' | ||
Juerd | integral: That doesn't happen, period :) | ||
integral | hmm, iirc japhy wanted to change his CPAN id | 17:43 | |
iblech | BTW -- is (for example) my $h = { say => {...} } valid, i.e. does it autoquote say? (because r2898 broke Net::IRC, because now there's ".to") | ||
PerlJam | integral: to "japhy"? | ||
integral | PerlJam: yeah | ||
Juerd | "Patrick++ for designing a nicely designed PGE API! | 17:44 | |
" | |||
integral | DNA fingerprints? | ||
Corion | Not everybody has the foresight to have his CPAN id the same as his primary nick :) | ||
Juerd | I agree | ||
PerlJam | integral: He should be happen with the name that his parents gave him! ;-) | ||
Juerd | But "nicely designing a nicely designed ..." would be funnier | ||
integral | plus how do you type names which are in Chinese? | 17:45 | |
Corion | pugs -e "delete %*ENV<FOO>" # whoops | ||
romanji 4 life, dawg! | |||
obra | right. but "use CGI/CPAN" has meaning | ||
Corion | Can somebody check if Pugs spins in an endless loop for them too? Especially on nonWin32 systems | 17:46 | |
Does svnbot6 evaluate Perl6 code already? Then I could take it for a spin :) | 17:47 | ||
mj41 | PUGS_EMBED=parrot. How I can fix "undefined reference" when linking? | ||
Corion | BTW, it doesn't matter if the environment variable exists or not - pugs -e "delete %*ENV<PATH>" # spins as well | 17:48 | |
PerlJam | integral: that's where the ability to use regular expressions as part of the module name come in. "use ThreeGorges-1.2-/\C[FUMANCHU]/" | ||
iblech | autrijus: P5 regexes do not capture correctly | ||
integral cringes | 17:49 | ||
iblech | autrijus: Try my $a = "a b c"; $a ~~ rx:P5/^(.) (.) (.)$/; and output $1, $2, and $3 | ||
Corion | iblech: Commit a test for it ? :)) | ||
iblech | Corion: t/rules/perl5.t :) | 17:50 | |
(fails badly) | |||
Corion | worksforme: | 17:51 | |
pugs -e "my$a = 'a b c'; $a ~~ rx:P5/^(.) (.) (.)$/; say for ($1,$2,$3)" | |||
(win32 shell syntax) | |||
outputs: a\nb\nc | |||
\n | |||
iblech | newest svn revision? | ||
Corion | r2899 | ||
Corion starts a fresh smoke | 17:52 | ||
PerlJam | Corion: I think that's broken anyway (the output you saw) | ||
Corion | PerlJam: Why? | ||
PerlJam | Because it should match <any><space><any><space><any> if it's a perl 5 RE | ||
blah, ignore me | |||
eating + thinking just isn't working for me right now. | 17:53 | ||
Juerd | Still? | ||
PerlJam | (I saw 'a b c' but my brain was obviously thinking 'abc' | ||
) | |||
Juerd | Practice some more | ||
PerlJam | Juerd: I have practiced many times, the outcome is always the same--a thinko | 17:54 | |
(oddly enough my ability to eat is never affected ;-) | |||
PerlJam finishes off the last of the left-over fajitas, bbq-baked-potatoes and spanish rice. | 17:55 | ||
iblech | Corion: r2901 (or r2900) gives me: "Failed 1/1 test scripts, 0.00% okay. 195/880 subtests failed, 77.84% okay." when I manually harness t/rules/perl5.t | 17:58 | |
Corion | iblech: Ow. :) rLatest is Just compiling, so I can check soonish :) | 17:59 | |
iblech | (make unoptimized)++ | 18:00 | |
Corion | iblech: Yeah - I only notice that after I've been already waiting 3 minutes, and then figure I could just wait until it's done ;) | 18:01 | |
iblech: # Looks like you failed 195 tests of 880 | 18:03 | ||
So I confirm, r2901 RE support is broken ;) | |||
autrijus | ...and r2902 is fixed. | ||
Corion | autrijus++ :) | ||
putter | hmm, rules... would it be useful to have the Perl6::Rules test cases ported? | 18:04 | |
iblech | autrijus++ # fast! | ||
PerlJam | putter: yes (didn't someonen do that already?) | ||
Corion | autrijus: Do you have any explanation on why pugs -e "delete %*ENV<FOO>" # spins in an endless loop? | ||
putter: Go for it! | |||
autrijus | Corion: because delete as a macro is not implemented | ||
pjcj | Ha! I wondered whether Damain knew that his draft zero would be implemented before he got to draft one. | ||
Corion | autrijus: "as a macro" ? | 18:05 | |
putter | PerlJam: grep'ed pugs for "rule" and didnt see much...? | ||
pjcj | autrijus++ # again | ||
autrijus | Corion: $ENV.delete('FOO') # normal form | ||
PerlJam | pjcj: I bet he did. | ||
autrijus | the way you write it needs a macro | ||
Corion | autrijus: Aaah - will try that one instead then! | ||
autrijus | and we don't yet have real macro | ||
I guess we can do it at parser level | |||
but will be ~messy | |||
Corion | autrijus: %*ENV.delete('FOO') # should work too, right? | 18:06 | |
autrijus | yes. | ||
Corion | autrijus: The test is for %*ENV, not for funky hash syntax, so I don't care if my code is ugly :) | ||
autrijus | ok :) | ||
iblech | Corion: yes, and %ENV.delete("FOO") (w/o the "*"), too, as $... falls back to $*... if needed | 18:07 | |
autrijus | putter: there's a rule test in t/rules/Disabled | ||
Corion | Yay. And suddenly, two more tests can be promoted from skip() to is() :) | 18:08 | |
autrijus | putter: however I have no idea if it's still uptodate or not | ||
Corion | Oh. And I think I should somehow mark getEnv() and my faked setEnv(), so that the sequence getEnv('X'), setEnv('X'), getEnv('X') -- actually works and returns the new value. | 18:09 | |
autrijus: How do we handle backpropagation into the GHC runtime library? I have a half-working setEnv for Win32, which GHC doesn't have (yet) ... | 18:10 | ||
... do we wait for them to pick it up? | |||
putter | ah, so there are two sources of tests. p5's re_tests, and p5's Perl6::Rules t/. The latter is much smaller, but exercises a few more p6 features (though it is still far from feature complete). | ||
the former (p5's re_tests) is the thing in Disabled. | 18:11 | ||
autrijus | Corion: you can submit to ghc mailing list | ||
Corion | autrijus: Ah - I'll look into that when I get it working :) | ||
Limbic_Region | autrijus - so I found 3 bugs (all in t/pugsbugs) when writing Config::Tiny | 18:14 | |
I think porting existing p5 code is a good thing ;-) | |||
autrijus | Limbic_Region++ | 18:15 | |
Limbic_Region would like to have more of this elusive thing called free time though | |||
Limbic_Region has given up trying to keep his karma neutral btw so upvote me all you want :P | |||
gaal_ | forum2.org/gaal/pugs/smoke-cygwin.html | ||
putter | I'm thinking of doing Perl6::Rules first. 40ish test files, 5000+ cases. search.cpan.org/src/DCONWAY/Perl6-Rules-0.03/t/ | 18:20 | |
stevan | jabbot: seem mugwump | 18:27 | |
jabbot | stevan: Tell me more about that. | ||
stevan | jabbot: seen mugwump | ||
jabbot | stevan: mugwump was seen 13 hours 53 minutes 4 seconds ago | ||
putter | Test organization esthetics question: Perl6::Rules has 40ish test files. These could become pugs t/rules files, and thus the initial organization of t/rules. Or they could be glomed together to keep the t/rules namespace clear for subsequent work. Most of the files are tiny, with a couple of big unicode test files. The small ones atleast could be glomed together. | 18:29 | |
Unless there is objection/disinclination, I'm inclined to keep the files separate. | 18:31 | ||
meppl | guten abend | 18:33 | |
stevan | putter: my suggestion is to do t/rules/perl6_rules/ and keep the test files seperate | 18:36 | |
we can always merge them together or move them around later (svn++) | |||
putter | stevan: good idea. tnx. | 18:39 | |
Corion | Hmmm. Where do I get liftIO from ? | 19:03 | |
(looks like I'll need it in Compat.hs :( ) | 19:04 | ||
autrijus | pmichaud: $x.$j.2 is $x[$j][2] of course... no? | 19:08 | |
pmichaud | autrijus: well, if $1.1 refers to $/[0][0], then... | 19:09 | |
Corion | Ewww. This is the first time I used =<< on intuition, and it seems to do what I think it does ... Weird | ||
autrijus | pmichaud: it's just a shorthand of array notation, no? | ||
Corion: you'll get used to it | |||
Corion | autrijus: I don't know. I hope Perl6 flies before that ;) | ||
autrijus | pmichaud: would probably need to use $1.0 for that. | ||
I may be completely offbase though | |||
pmichaud | autrijus: I'm (again) just asking questions -- I'm not advocating a particular interpretation. Actually, my (weakly held) position is that we don't want to do this just yet | 19:10 | |
Corion | BTW, I'm using the Wide variants of the Win32 API, in the spirit of Pugs using Unicode in all places ... | ||
pmichaud | autrijus: but it just seems weird that we'd use $1 as an alias for $/[0] but have $2.2.1 as an alias for $/[1][2][1] | 19:11 | |
If we're going to use . notation for subscripts, it seems to me our subpattern captures should be $0, $1, $2, ... | |||
autrijus | the $1 is a legacy :-/ | ||
but you can write | 19:12 | ||
$/.0.0.0 | |||
pmichaud | when it comes to p6l, I like to simply point out the ramifications of decisions and let others decide what the answer should be | ||
autrijus | not sure if it helps (prolly not) | ||
nod | |||
pmichaud | and yes, $/.0.0.0 is not bad at all | ||
I kinda like that | |||
autrijus | but I need to sleep. | 19:13 | |
see ya :) & | |||
autrijus waves | |||
pmichaud | later! great work on the pugs+rules stuff. I guess we can now say that "Pugs rules". :-) | ||
putter | pmichaud: do these perl6_rules-isms look plausible? tnx. $0<foo> $0{'@?chars'} ($0.keys == 1) @$0 %$0 $0<foo><bar>[3] | 19:23 | |
PerlJam | pm: what did you mean by "multiple @LOAD pragmas in a single compilation unit aren't well defined"? (from PGE.pir) | 19:24 | |
putter: what's $0 ? | |||
pmichaud | putter: do you mean if we used $0, $1, ... for subpattern matches, or something else for $0? | 19:25 | |
pj: If you load a .pir file that has multiple subs marked as @LOAD, it's not clear that all of them get executed, or the order in which they may be executed | |||
PerlJam | pm: I thought that @LOAD subs are analogous to BEGIN blocks. They're loaded as soon as fully parsed and in the order that parrot sees them. | 19:26 | |
putter | Hmm. Looks like $0 has been renamed to $/. So that should be $/ rather than $0. Sorry. | ||
pmichaud | pj: well, I thought that too, but there were a couple of platforms where it wasn't working | ||
pj: originally I had @LOAD subs in each of the PGE/*.pir files, but when they were combined into one via .include not all of the subs were being executed (on some platforms) | 19:27 | ||
putter: $/<foo> is okay, it's anything captured by the <foo> subrule | |||
PerlJam | pm: do you know which platforms? | 19:28 | |
pmichaud | $/{'@?chars'} would be anything captured by a <@?chars> rule (this could probably only be done via a $<@?chars>:= alias ) | ||
I dunno what @$0 and %$0 would be, but @{$0} and %{$0} are okay. | 19:29 | ||
sorry, @{$/} and %{$/} | |||
$/<foo><bar>[3] is the 4th subpattern capture of the <bar> subrule inside of the <foo> subrule of the last match | 19:30 | ||
pj: no, I don't remember exactly which platforms -- whatever "particle" on #parrot was using. Windows/cygwin, methinks | 19:31 | ||
putter | pmichaud: sounds good. thanks. | ||
pmichaud: re @?chars, a test is: ok(" a b\tc" ~~ rx/@?chars:=( \s+ \S+ )+/, 'Named simple array capture'); | 19:32 | ||
pmichaud | pj: but I know that leo said that it needed to be specced out further and better defined and implemented | 19:34 | |
putter: ohhhh, that | |||
putter: just a sec, I need to review the spec | |||
what's that ? after the @ ? | 19:35 | ||
PerlJam | I thought $?vars were for asking compile-time questions | 19:36 | |
putter | pmichaud: "Magical lexically scoped values live in variables with a C<?> secondary sigil." - sNN | 19:37 | |
pmichaud | ah, that captures into @?chars in the current lexical scope then. It doesn't appear in the match object | 19:38 | |
putter | Why it's used in the tests...??? I'm finding a number of p6 obselecences. | ||
PerlJam | putter: Welcome to the wonderful world of language evolution! :-) | 19:39 | |
pmichaud | probably because the capture syntax and semantics were totally redefined a couple of months ago, and whoever wrote the tests was working from the outdated A05 and S05 specs | ||
well, not totally redefined, but substantially redefined | |||
but I hadn't ever seen anything like @?chars | 19:40 | ||
putter sighs. | |||
pmichaud | heh | ||
Apparently I hurt larry (latest message to p6l) | |||
I have to switch machines -- bbiab | 19:41 | ||
PerlJam | pmichaud: Careful, he might make you put on the language-designer hat and go sit in a corner for a while. | ||
pmichaud | pj: you're right, I'd best be careful here. :-) | 19:42 | |
back in a sec | |||
Limbic_Region | pmichaud ping | 19:57 | |
pmichaud | pong | ||
Limbic_Region | I haven't been following p6.internals for sometime and perl6.compiler at all | 19:58 | |
I was suprised (but happy) about the recent move of PGE to PIR | |||
what is the SDL of PGE in a nutshell | |||
pmichaud | ...sdl? | 19:59 | |
Limbic_Region | system development lifecycle | ||
road map IOW | |||
pmichaud | oh. Well, I wanted to get PGE far enough along that we could reasonably be building and testing the p6 grammar | ||
that's basically done now | |||
PerlJam | pmichaud: you've implemented subrules? | 20:00 | |
pmichaud | pj: sure, you haven't been watching the announcements either, I guess? ;-) | ||
PerlJam | no, not really. :) | ||
pmichaud | subrules, aliases, <ws>, \b, \B, all work | ||
Corion | Yay ;) | 20:01 | |
pmichaud | www.nntp.perl.org/group/perl.perl6.compiler/685 | 20:02 | |
oh, wait, wrong message | |||
Limbic_Region | so is there anything that needs to be refactored or some sketchy spots awaiting further specifications? | ||
pmichaud | www.nntp.perl.org/group/perl.perl6.compiler/710 | ||
l_r: I don't think there's any real sketchy spots | 20:04 | ||
at the moment PGE has three parts -- a parser, an optimizer, a (PIR) code generator | |||
the parser is pretty rudimentary -- it's a good candidate for being rewritten when we have p6 far enough along to do that | |||
the code generator is also straightforward if a little convoluted. The best thing that can happen there is performance improvements | 20:05 | ||
same for the optimizer -- being able to adjust the rule expression tree | |||
i.e., the optimizer could look for things such as ..... and convert them to the equivalent of .**{5} which is much faster | 20:06 | ||
we don't completely have a handle on character classes yet | |||
putter | mmm, rule expression tree... putter looks forward to Grammer::Transform. | ||
pmichaud | well, the parser just converts a rule expression into an expression tree | 20:07 | |
then it's a fairly simple matter to walk the expression tree to generate the code for each component of the tree | 20:08 | ||
each expression "node" is an object; the class identifies the type of expression (e.g., group, dot, literal string, alt rule, etc), each object also carries attributes that identifies its quantifications and linkages to subexpressions | 20:09 | ||
putter looks forward to never again having to manually convert a grammar. $g2 = Grammar::Transform::to('right recursive','syntax variant bison')($g1). | 20:13 | ||
or something vaguely like that. p6 grammars should now be expressive enough that even if one cant actually run them on p6 (eg, left recursive?), they might serve as a lingua franca. | 20:14 | ||
pmichaud | yes, I expect that p6 grammars and PGE may become a new standard for specifying grammars. It's a bit more flexible than BNF | 20:16 | |
PerlJam | I've long expected that perl6 will become the new standard for specifying grammars the only problem that stands in the way is "Hey, that's great ... if only it wasn't perl" :) | 20:19 | |
pmichaud | it's not perl :) | ||
it's PGE | |||
it's Parrot | 20:20 | ||
PerlJam | That's tantamount to saying it's perl :) | 20:21 | |
pmichaud | with the exception of closures and external aliases, PGE could be run from any language that runs on parrot | ||
and we could even get closures to work in other languages | |||
Corion | Good night! | 20:22 | |
putter | pmichaud: are there any rule tests in the parrot source aside from parrot/t/library/pge.t and the 3 files in t/p6rules/ ? | 20:23 | |
putter tries to avoid duplicate/non-useful work. | 20:24 | ||
pmichaud | putter: no, there's not many rule tests. That's the biggest thing that PGE needs at the moment | 20:30 | |
putter | pmichaud: ok. I'll continue... puttering. | 20:31 | |
pmichaud | excellent | 20:33 | |
PerlJam | pm: read the first sentence to Larry's latest post on p6l :-) | 20:36 | |
pmichaud | pj: just a sec | ||
yeah, it'll be interesting to see if we switch from 1-based to 0-based vars. PGE's already set up so I can easily make that switch if need be :-) | 20:38 | ||
I wonder how loudly I'd be shouted down if I suggested that match objects deserve their own sigil? :-) :-) :-) | |||
PerlJam | Um ... are there any characters left that could be used as a sigil? | 20:39 | |
(excluding unicode of course) | |||
pmichaud | there's the full unicode range :) | ||
PerlJam | I wouldn't mind if they had a twigil of ~ though. | 20:40 | |
cognominal | hum, what is the meaning of => in Haskell? | ||
pmichaud | yeah, I was just thinking that | ||
PerlJam | cognominal: I think it's something like "is typed" but I haven't looked at haskell in a while. | 20:41 | |
integral | *cough*if we binned % and @ you could use those... | ||
pmichaud | anyway, this is why I leave such things to the language designers. Back to my engine | 20:42 | |
PerlJam | integral: not gonna happen in "standard perl 6" | ||
integral | pity :-) | ||
cognominal | autrijus was not supposed to release a second apocryph, btw? not that he is not busy. but I want to be sure I did not miss anything | 20:43 | |
PerlJam | cognominal: from www.haskell.org/tutorial/classes.html: (==) :: (Eq a) => a -> a -> Bool | ||
This should be read, "For every type a that is an instance of the class Eq, == has type a->a->Bool". | 20:44 | ||
cognominal | thx perljam | 20:45 | |
xinming | anyone here can give me a url where to find the grammer details for perl6? | 21:13 | |
mugwump | What exactly are you after? | ||
PerlJam | xinming: svn.perl.org/perl6/grammar | 21:14 | |
xinming | hmm... In fact, something which is about the differences between perl 5 and perl 6 | ||
thanks | |||
PerlJam | xinming: oh ... You want A05 | 21:15 | |
mugwump | Hmm, that Grammar seems rather ... incomplete ;) | ||
PerlJam | dev.perl.org/perl6/doc/design/apo/A05.html | ||
mugwump: you've got to start somewhere | |||
Corion | Nobody seems to have noticed that I (possibly) broke the build, so I can sleep well :) | 21:16 | |
xinming | I ever heard that the first rc of perl6 might be out this year, maybe in Sep,or Oct... | 21:17 | |
integral | sssh, don't jinx it ;-) | 21:18 | |
PerlJam | xinming: the first *alpha* release might be out then | ||
xinming: Though I guess that we have all the pieces in place now to do a full bootstrapping so it could happen sooner if we're lucky. | |||
mugwump | in a sense, the closest we've got to anything resembling a full grammar specification is the src/Pugs/Parser.hs and friends | 21:19 | |
integral | ah, yes, corion did break the build =) | 21:20 | |
PerlJam | mugwump: I want a way to autoconvert between src/Pugs/Parser.hs and Grammar.Perl6 :-) | ||
mugwump: then we're quite a bit closer to realizing a real perl6 | |||
mugwump | that could work, yes. dumping Perl 6 code from the Haskell sources would sure be a fast way to get to the self-hosting stage | 21:21 | |
I believe the introspection capabilities are there to do it, but it's getting into the realms of super-voodoo Haskell :) | 21:22 | ||
anyway. stevan, I see your extra work on Perl6::MetaClass... nice | 21:24 | ||
21:26
khisanth_ is now known as Khisanth
|
|||
integral | err, when I edit src/Pugs/Types/Hash.hs, ghc doesn't recompile it :-/ | 21:38 | |
hmm, and Pugs.Types.Hash isn't mentioned in the list of modules :-/ | 21:39 | ||
ah, Pugs.AST #includes it, fscking up ghc --make's dependencies. *grr* | 21:40 | ||
elmex | ./pugs -BParrot -e 'my ($i,$b); loop ($i = 0; $i < 1000; $i++) { $b += 3.37 } say $b' | ||
integral crosses his fingers | 21:42 | ||
yay, it typechecks | |||
integral unbreaks the build :-) | 21:48 | ||
hmm, the UTF-8 isn't making its way to irc (the chars should be a ā and ā, contrarespectively)) | 22:15 | ||
mugwump | It got mangled by my svn commit mailer too | 22:17 | |
"Change ?\226?\136?\131 to ?\226?\136?\128 ..." | |||
looks nice in the diff output though | |||
integral | it's very nice having those chars in the source :-) Much nicer than having to use LaTeX or something | 22:19 | |
stevan | mugwump: ping | 22:44 | |
mugwump | hi | ||
stevan | hey | ||
did you see my comments in the MetaClass source? | 22:45 | ||
mugwump | yes, I'm just "replying" to them | ||
stevan | BTW - what exactly is this "theory" stuff? set theory? category theory? or just plain meta-class stuff? | ||
stevan was a fine art painting major, they didnt even offer math as an elective at my school :) | 22:46 | ||
mugwump | I'm stating rules using maths operators because they are succinct and pretty | 22:47 | |
stevan | ok | ||
mugwump | note that these MetaClasses are not really intended to represent user classes... they are one level removed from that | 22:50 | |
stevan | yes | ||
mugwump | cool | ||
stevan | I considered using 'Class' and 'Roles' as examples, but I thought that might confuse the test | ||
mugwump | this is why I was using "Class" and "Role" in the examples rather than "Foo", "Foo::Bar" etc | 22:51 | |
stevan | whoops, that I shouldnt have changed | ||
mugwump | np | ||
the first real test case for the code is to get a set of classes suitable for implementing duck typing ... ie, like docs/class/ducktyping.png | 22:52 | ||
The Perl::MetaAssoc class represents one half of a relationship ... eg a UML relationship line/arrow on that diagram is a Perl::MetaAssoc on each end and the link between them is the "Pair" | 22:55 | ||
stevan | I am not sure I understand where the .png would be represented with Perl::MetaClass | ||
mugwump | Each box is a MetaClass | ||
stevan | however I am reading the kwid right now | ||
hmm, ok | |||
maybe it would help to understand what would be good names for the test t/10_MetaClass.t | 22:56 | ||
for instance do you see Roles as subclasses of Class? | 22:57 | ||
or vice-versa? | |||
mugwump | A Class is a sub-class of a role | ||
stevan | ok | 22:58 | |
and Role isa? | |||
mugwump | well, a role (and a module) are also both packages | 22:59 | |
stevan | ok | ||
and a package isa? Metaclass? are we at the base of the tree? | |||
mugwump | nothing in the Class Model can be a Class Meta-Model object | 23:00 | |
stevan | ok | ||
iheartcanada | perl6 is out? | ||
mugwump | (they are represented by Class Meta-Model objects, of course, so in a sense they *are* Meta-Model objects, but they don't link to them) | ||
iheartcanada | 6.2.2 <-? | 23:01 | |
obra | iheartcanada: yes. it's done. | ||
iheartcanada | obra: you guys are messing with me right? | ||
stevan | iheartcanada: been done for a long time now,... where you been? | ||
iheartcanada | wow | ||
mugwump | iheartcanada: we're still very pre-alpha, but it's moving quickly. objects for instance are still in the works | ||
iheartcanada | i thought it's in development | ||
stevan | iheartcanada: it is in dev, very active develeopment | ||
see autrijus's journal over the past 3 months for detailed info :) | 23:02 | ||
iheartcanada | *nod* | ||
i just use it to make the occational webpage | |||
but i'd love to use perl6 if it's stable enough and supported by mod_perl | |||
mugwump | well, my guess is it will probably be at least a year before Perl 6 is ready for wide scale use | 23:03 | |
iheartcanada | i look forward it that day :) | ||
*yawn* | |||
back to worrrk | |||
mugwump | you're probably better off for now making sure you're getting in line with what others are doing with Perl 5 | ||
eg, templating systems, frameworks, etc | 23:04 | ||
iheartcanada | *nod* | ||
mugwump | the skills will be transferrable | ||
iheartcanada | sweet | ||
mugwump | stevan: so, part of the challenge of implementing that duck typing model is to bridge the roles based and class based inheritance. | 23:07 | |
stevan | ok | 23:08 | |
mugwump | so, we've got a method which is defined by its method signature | 23:09 | |
ie, its name, its parameters and return values (which are all types) | |||
(er, the name is a symbol :)) | 23:10 | ||
a role is simply a group of these method signatures | |||
This is the core of duck typing. Properties are considered incidental | |||
stevan | mugwump: don't roles have properties as well? | 23:14 | |
mugwump | you can of course use properties in role declarations | 23:15 | |
and implementations | |||
those properties are being tacked onto the object/class that "does" the role | |||
stevan | ok | 23:16 | |
yeah I did a perl5 implementation of Traits, which didnt use it, they did not allow properties though | |||
only methods | |||
mugwump | sure. These things are a little harder in P5 :) | 23:17 | |
stevan | yup | ||
mugwump | As far as I can see, all a trait is is a property(as in characteristic, not data member) of something in the Class model | 23:18 | |
stevan | mugwump: so I am going to change the names in 10_MetaClass.t to be Package , Role, Class, etc | 23:21 | |
now that I have a better understanding of that | |||
mugwump | sure, change the names if you like, but don't worry about making them "complete" | 23:22 | |
the complete classes that describe the Perl 6 class model, we will want to put in modules :) | |||
stevan | yes | ||
what namespace should that be | 23:23 | ||
mugwump | Perl6::Class? | ||
etc? | |||
stevan | :) | ||
sounds good to me | |||
mugwump | having said that, they don't actually exist in a namespace per se, they're just data objects | 23:24 | |
stevan | yeah | ||
I looked at that part of Pugs/Class.hs, but I am ignoring it right now until I get my head around the rest | |||
mugwump | so maybe the 'main' Perl::MetaModel namespace | ||
stevan | Perl::ObjectModel? | 23:25 | |
mugwump | Perl::FoundationClasses? | ||
mugwump revolts at his own suggestion | |||
stevan | LOL | ||
ok commiting the better example names | 23:30 | ||
Shillo | Hullo, all. :) | 23:43 | |
cognominal | what is a ! in haskell | 23:48 | |
stevan | mugwump: any thoughts on next steps? or am I proceeding the right direction | 23:49 | |
mugwump | the next steps would be making basic Role/Class/Property/etc Perl::MetaClass objects | 23:52 | |
stevan | mugwump: I think I need to flesh out some corners first | ||
mugwump | I'm about to update MetaAssoc, hopefully that will shed some more light | ||
sure | |||
stevan | ok | ||
like Properties, where are we storing the visibility? | |||
mugwump | on the metamodel, it doesn't really matter that much, we don't care all that much. | 23:54 | |
er, sorry to repeat myself in the same sentence | 23:55 | ||
in the haskell it was written as the properties collection was a map from the label of the property to the visibility and the actual property definition, ie the visibility isn't a characteristic of the property, but more its definition. | |||
however that's somewhat obstruese | 23:56 | ||
Shillo | cognominal: I'm still Haskell-newbie, but I think it's a strictness marker. | ||
cognominal: Says that when you evaluate constructor, all its components much be initialised strictly. | |||
(i.e. non-lazily) | |||
stevan | mugwump: so maybe putting it in the MetaProperty makes sense? | 23:57 | |
mugwump | er, abstruse :) | ||
yes, that is fine | |||
cognominal | Shillo: so I can ignore it at first reading :) | ||
stevan | ok I will hack that in | ||
Shillo | cognominal: Yep. Mostly it's performance thing. | ||
Shillo heads to sleep. Laters. :) | 23:59 |