Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2006-03-14

Perl 6 | Reference Documentation | Rakudo

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

All times shown according to UTC.

Time Nick Message
00:01 * Limbic_Region just isn't a purse person
00:02 * eric256 posts more p6 to perlmonks.  
00:02 eric256 figured if there wasn't enough for my tastes...i would add some ;)
00:02 ayrnieu eric - yay!
00:02 audreyt so, to support cleaner transfer of control from .pmc<->.pm or something like that
00:02 audreyt crackheads at #p5p are thinking about goto *FH
00:03 obra *blink*
00:03 audreyt I am impressed by the collective crackness.
00:03 obra that's impressive
00:03 Juerd eric256++
00:03 diotalevi_ Well... #perl6 also comes off as pretty cracked too, fwiw.
00:03 Juerd Wait a second. Is crack positive or negative? :)
00:03 audreyt diotalevi_: yeah. that's more like, "look, we are not the only one"
00:03 eric256 hehe...err i planned badly and will probably be away from the computer for the rest of the night, jsut after posting, so if some of you can keep an eye on it i'd appreciate it. ;) cheers and good night
00:04 audreyt seek DATA, 0; goto *DATA; # look, reexec
00:04 Juerd And goto *FH seems like FUN
00:04 audreyt $_ = "some code"; open _; goto *_; # look, never goes back
00:04 audreyt er, I mean
00:04 audreyt open _, '<', \$_;
00:04 eric256 left perl6
00:04 Juerd eval_exec :)
00:04 audreyt yup, exactly that
00:04 obra goto *STDIN?
00:05 audreyt obra++
00:05 obra . O { In an HTTP environment }
00:05 obra You want executable verbs? We'll give you executable verbs!
00:05 audreyt obra++ # that just hit "clinical insanity"
00:05 obra I WIN!
00:06 obra Sorry. I'm at a customer site today. I'm getting a little punchy
00:07 putter Arathorn: re spike, yes, basically an exploratory development project, emphasizing speed, intended to clarify something.  like whether something is possible, or some architecture works, etc.
00:07 nothingmuch . o O ( Data::Dump::Streamer + goto *FH == slightly serializable continuations? )
00:07 * Arathorn has read http://xp.c2.com/SpikeSolution.html and feels vaguely clueful now :)
00:09 diotalevi_ nothingmuch: are you on p5p? So there's this guy going "That's can't possibly work!" and demq and I are going "O really?"
00:09 audreyt nothingmuch: it's not continuation until you can send a value across it
00:09 diotalevi_ It's funny.
00:09 putter Arathorn: re pX, basically a couple of weeks ago we were feeling stuckish, and were discussing what to do.  there was a strawman proposal for a complete p6 written in uncontrained p6 (followed by a bootstrap), with a target date of Apr1.  the pX directory was created to illustrate the collaborative environment described in the strawman.  the name pX
00:09 nothingmuch audreyt: doesn't goto() imply that @_ is carried over?
00:10 audreyt diotalevi_: you are doing core coros?
00:10 diotalevi_ nope, audreyt.
00:10 putter to clarify that it wasnt p6, there being insufficient time to get everything unspeced speced, and thus some stuff would have to be made up.
00:10 diotalevi_ It it serializes closures and their captured lexicals.
00:10 * Arathorn nods
00:11 diotalevi_ So eval(Dump(sub{ my $x = 0; sub { ++$x }->() )) is sane.
00:12 audreyt this is D::D::S?
00:12 diotalevi_ Yes, DDS.
00:12 diotalevi_ Sounds like a dental thing.
00:12 audreyt ok, I need to steal^Wadapt it to YAML::Syck
00:12 audreyt been looking for that
00:12 audreyt that'd mean I can target p5 using the same lexinfo structure as the parrot target
00:13 nothingmuch audreyt: it's actually pretty easy
00:13 audreyt and shuffle closures between p6 and p5 land
00:13 nothingmuch PadWalker has an undocumented function to give you all the captured vars in a closure
00:13 audreyt what?
00:13 audreyt what!?
00:13 Arathorn goto typeglob isn't explained in perldoc -f goto :'( - unless this is some form of the goto EXPR syntax, where EXPR doesn't actually return a label name
00:14 diotalevi_ robin was adding that so the DDS closure inspecting code could be moved out of DDS.
00:14 putter The strawman lasted for all of a day, before the focus shifted to bootstrapping on p5.  First as a p5 regexp and parser spike (p5 rule syntax, non-self hosting) which showed it could be done.  And then another project which developed into PCR.  So the collaborative layout has outlasted the strawman for which it was an illustration, and "pX" now refers to the p6 on p5 effort. ;)
00:14 audreyt Arathorn: this is future-tense, perl 5.10-maybe, not-yet-implemented, technology
00:14 audreyt diotalevi_: ooh ok. another cpan module?
00:14 Arathorn oh, right!
00:14 nothingmuch audreyt: and then you just recursively dump that coirrectly, and any closures therein have to do that too
00:14 nothingmuch it should really be B::Deparse logic
00:14 audreyt nothingmuch: yeah, I got that bit.
00:15 nothingmuch with a callback
00:15 diotalevi_ The closure-inspecting part of PadWalker is supposed to work by may because that's when Perl Hacks is supposed to come out and a hack uses it....
00:15 diotalevi_ hope... hope...
00:15 audreyt just didn't know about the capture-var-list thing.
00:15 audreyt well, it's undocumented, so I can hardly blame myself.
00:15 diotalevi_ Actually, DDS does that work *today* and has for a year now.
00:15 diotalevi_ It's just better code organization to move that out of DDS and into PadWalker.
00:19 diotalevi_ Oh say, audreyt if you're mentioning M::C, best not to do it coincident w/ Switch. I mean, bleadperl already has the switch() feature. Why would *anyone* want to touch Switch.pm anymore?
00:20 audreyt diotalevi_: *sigh* I thought about that.
00:20 audreyt I initially mentioned Toolkit
00:20 audreyt but it's (while I think pretty cool) not as popular
00:20 audreyt so I replaced it with Switch
00:20 audreyt in hindsight maybe Spiffy is better ;)
00:21 * diotalevi_ chokes a little.
00:21 audreyt Smart::Comment? ;)
00:21 audreyt how come it's either ingy or damian?
00:21 audreyt oh and Inline.
00:22 diotalevi_ No comment.
00:22 * Arathorn vaguely recalls seeing Indented mentioned somewhere?
00:23 audreyt Indented is part of M::C's test suite
00:23 audreyt but not a module of its own
00:23 Arathorn ah.
00:23 TimToady I hope P5's switch is going to be marked as Highly Experimental and subject to semantic shift as we get more experience with P6's switch...
00:23 svnbot6 r9552 | chromatic++ | Fixed an apparent test typo.
00:23 diotalevi_ Smart::Comment isn't great to cache since you do want to turn it off at some point.
00:24 ruoso joined perl6
00:24 audreyt verily.
00:24 audreyt Inline is definitely great to cache
00:24 audreyt as is v6
00:24 audreyt because both effectively swap the language out
00:25 audreyt Spiffy is... well, spiffy.
00:25 diotalevi_ Spiffy eats my soul.
00:25 audreyt mind-flayer
00:25 audreyt wait, that just eats brains.
00:26 audreyt or maybe they eat souls, and zombies eat brains
00:26 diotalevi_ It's the kind of thing that makes me never, ever, ever, want to see anything like it again.
00:26 diotalevi_ That and anything written using it.
00:27 audreyt I think Spiffy is what Perl 6 could have become if not for this huge RFC+Parrot process.
00:27 diotalevi_ Trying to debug Spork, a Spiffy client, is absolutely deadly.
00:27 * ruoso realized that the compiler will have to compile and load recursively all the modules used or required by the module being compiled. It seems the only way to support rules and macros
00:27 audreyt _not_ that I think that'd be a good thing.
00:27 audreyt ruoso: yup. then you'll want to write a linker. :)
00:28 diotalevi_ So that's how I know Spiffy, because it's a source of agony when you're debugging code that uses it.
00:28 audreyt but if you have the desugared form in .pmc, that may make debugging considerably easier
00:28 audreyt but we'll see.
00:28 ruoso audreyt, it's not how ordinary linkers work... it can change compilation rules...
00:28 diotalevi_ Desugared forms might have helped alot. There were no such things when I was looking at it.
00:29 ruoso audreyt, the compiler needs to actually load the modules...
00:29 audreyt diotalevi_: that's what Module::Compile offers beyond Filter::Simple
00:29 ruoso audreyt, not just point somewhere...
00:29 diotalevi_ It's like sub foo { $self->bar } ... where does $self come from? Well months later I find out it that it's a source filter.
00:30 audreyt ruoso: er, right, yes. the compiler needs to have an evaluation space.
00:30 diotalevi_ Y'know, I'm reading p5 code and it ought to look like and behave like p5 code. Not some alien thing.
00:30 audreyt diotalevi_: nod, and with .pmc, you can look at that line and see a my $self=shift
00:30 diotalevi_ aye. ;-)
00:30 audreyt that will likely save people's sanity :)
00:30 audreyt and load them without losing lexical thoughts
00:31 ruoso audreyt, should I compile and load recursively or just load recursively?
00:31 ruoso audreyt, letting Makefile to do the rest
00:31 audreyt ruoso: compile separately and load recursively, is the p6 doctrine, and is easier to manage
00:31 ruoso audreyt, great... it's easier to do also... ;)
00:31 audreyt right ;)
00:32 Arathorn is automating my $self = shift; appending 1; and use strict & warnings; the only source filtering that spiffy does?
00:32 audreyt interleaved compilation+loading is a lot of fun (especially with goto *FH !)
00:32 audreyt but not really easier to reason about.
00:33 audreyt Arathorn: my sub foo
00:33 ruoso audreyt, but if I just loads, is just a matter of intercepting the "require" and "use" to actually load them..
00:33 ruoso audreyt, while generating the AST
00:33 audreyt ruoso: yes.
00:33 audreyt actually just "use"
00:33 audreyt you can analyze "require" also to create the neccessary symbols
00:34 audreyt but for now probably just use "use", unless there is a critical need for require
00:34 ruoso audreyt, require can define "rules"
00:34 audreyt ruoso: I understand, but why are they used instead of use?
00:34 audreyt if it's just because somethings are in .pl form, maybe they should be .pm
00:34 audreyt like in perl5/Pugs-Compiler-Rule
00:35 ruoso audreyt, I already did it...
00:35 audreyt oh
00:35 audreyt right, you got a new tree
00:35 audreyt I'm still in the old one. sorry
00:35 ruoso see lrep-compiler
00:35 audreyt yup
00:35 * audreyt got temporarily disoriented
00:35 ruoso fglock asked me to keep a copy, as p6compiler wouldn't work anymore
00:35 TimToady  Europe will do that to you occidentally.
00:36 putter groan
00:36 audreyt ruoso: so. if you change
00:36 audreyt require Grammar::Perl6Init;
00:36 audreyt to
00:36 audreyt use Grammar::Perl6Init;
00:36 audreyt in eg. prim
00:36 audreyt will anything break?
00:36 ruoso I don't think so
00:37 audreyt then keeping the use form allows more hygeine (just one filter on use), plus you don't have to worry about extra runtime symbols
00:37 * ruoso likes to require
00:37 audreyt well, sure, then analyze both then :)
00:37 audreyt timtowtdi
00:37 ruoso audreyt, :)
00:37 ruoso audreyt, I don't think it will be much different
00:38 audreyt *nod*
00:38 ruoso audreyt, the compiler will have both at parse time...
00:38 ruoso no BEGIN block effective
00:38 audreyt yes, I see that. :)
00:38 * audreyt needs to 1)journal 2)sleep
00:42 diotalevi_ Is that the same one that hasn't been updated since January?
00:42 diotalevi_ I followed the link from your perlmonks node.
00:42 audreyt what same one?
00:42 audreyt http://pugs.blogs.com/ ?
00:42 audreyt I thought I said "302 moved" :)
00:43 audreyt there's been... a lot of updates since january.
00:43 diotalevi_ http://pugs.blogs.com/audrey/
00:43 audreyt oh, the private blog.
00:43 audreyt the .tw media was translating each entry and their comments and republish them to newspapers
00:43 audreyt so I froze it for a while.
00:43 audreyt not sure when/whether to resume.
00:43 diotalevi_ Oh. Well there's the one link you 'know?
00:44 diotalevi_ Republished in newspapers? Uffda!
00:44 * ruoso going to sleep
00:44 penk joined perl6
00:45 audreyt diotalevi_: well, "Pugs" links to the first journal
00:45 diotalevi_ So what's this C<use v6-pugs;> syntax? Isn't that invalid in p5?
00:46 audreyt diotalevi_: try it.
00:46 audreyt diotalevi_: you'll be surprised!
00:46 audreyt also try "use v6 -pugs", "use v6 pugs" and "use v6 Pugs".
00:46 diotalevi_ It can't load v6. So... It's really use v6 '-pugs'?
00:46 audreyt there's no discernable rule whatsoever
00:47 diotalevi_ Argh. ETooMuchSugar.
00:47 audreyt er no
00:47 audreyt use v6 '-pugs'; # this doesn't work
00:47 audreyt the only form that works is v6-pugs.
00:47 diotalevi_ I just want some nice, sugar free, brain rotting phenylfoofooberries.
00:47 audreyt so this is not sugar but more like, well, incantation.
00:48 Arathorn . o O ( syntactic saccharine )
00:48 audreyt Arathorn++
00:48 slurpee *~O_o~*
00:49 diotalevi_ I'm just completely confused what it does then.
00:49 diotalevi_ BEGIN{require v6; v6->import( '-pugs' )}?
00:50 frederico_ joined perl6
00:51 Arathorn v6.pm itself is just a source filter which pulls in Inline Pugs atm... does use just pass everything .*?(-.*)$ to the module being used somewhere?
00:51 Arathorn 'cos if so, v6.pm seems to ignore it..
00:53 diotalevi_ Arathorn: I expect that p5 is still completely in control up til the semi-colon. The source filter probably can't run til it's parsed that far, mocked up the BEGIN, then entered it.
00:53 diotalevi_ From there... yeah.
00:54 diotalevi_ This stuff would be much nicer if it didn't spend so much time looking like magic.
00:54 diotalevi_ "nicer" when trying to understand it, etc.
00:54 Arathorn v6.pm is pretty damn cryptic, for all of its 10 lines of code
00:55 Arathorn (although i don't think i've ever looked at a source filter's source before, apart from Spiffy about 10 minutes ago :)
00:58 audreyt Arathorn: it doesn't use Module::Compile yet, thought
00:58 audreyt both Inline::Pugs and v6.pm will switch to M::C
00:58 audreyt but not today :)
00:58 audreyt diotalevi_: BEGIN { require "v6.pm" }
00:59 audreyt but otherwise yes
00:59 Arathorn and the -pugs just gets dropped into the void?
00:59 audreyt the eventual plan is for the -pugs to fire up v6::pugs as the handler, and allow other plugins
01:00 audreyt like v6-lrep
01:00 audreyt or v6-via-js-then-translated-to-p5
01:00 audreyt or something like that.
01:00 diotalevi_ audreyt: huh? Where's that documented?
01:00 audreyt diotalevi_: it's not documented because it's not implemented :)
01:00 audreyt diotalevi_: just today we sorted out M::C; then it needs M::I support, and ingy is working on converting Inline to it
01:00 diotalevi_ I meant, the behavior in p5 of C<use v6-pugs>
01:00 Arathorn i think diotalevi's confusion (or mine, at any rate) is where the use foo-bar syntax is documented for '-bar' being an option, and what happens to the -bar within such a module where it's used.
01:01 diotalevi_ I mean, that part has to be completely valid perl5.
01:01 audreyt ok. the foo-bar syntax is not documented anywhere.
01:01 diotalevi_ Right?
01:01 audreyt though there is mentioning of -bar being '-bar' autoquoting in general
01:01 audreyt but not after 'use', and certainly not after v6.
01:02 putter audreyt: hmm, so what time zone are you in?
01:02 audreyt the module (v6.pm in question) has complete control over its import option
01:02 audreyt putter: it's 2am now, I really should sleep.
01:02 putter ;)
01:02 diotalevi_ audreyt: so at what character can the non-p5 stuff happen?
01:02 diotalevi_ I would have thought immediately *after* the semicolon ending the use().
01:03 Arathorn diotalevi: i don't think that the -pugs suffix gets processed by the filter, though :/
01:03 audreyt diotalevi_: and you would have thought correct.
01:03 audreyt the -pugs suffix is fed as the import option.
01:03 diotalevi_ When p5 documents that use Foo::Bar; becomes BEGIN { require Foo::Bar; Foo::Bar->import(...) } this isn't really optional.
01:03 audreyt anything after the semicolon is M::C fodder.
01:03 Arathorn presumably use p6-pugs is equivalent to use p6 -pugs, where -pugs is the LIST for use Module LIST syntax
01:04 diotalevi_ Oh! Well you just told me the opposite a moment ago!
01:04 audreyt yup.
01:04 audreyt did I?
01:04 Arathorn [00:47] <audreyt> use v6 '-pugs'; # this doesn't work
01:04 Arathorn ^ source of confusion, i think
01:04 audreyt sigh. ok
01:04 audreyt use p6 '-pugs'; # this does work
01:04 audreyt use v6 '-pugs'; # this doesn't
01:04 Arathorn aah :D
01:04 audreyt sorry for the confusion.
01:05 diotalevi_ Because... vstrings are still in my version of perl, probably.
01:05 jisom joined perl6
01:05 diotalevi_ So /^v\d/ is special then.
01:05 audreyt yes.
01:05 TimToady The problem with vstrings isn't so much the syntax as the semantics...
01:06 avar joined perl6
01:06 TimToady Though the autoquoting rules interfere a bit there in P5.
01:06 diotalevi_ The bigger problem with vstrings is that there's been nothing consistent from version to version of perl.
01:06 TimToady Anyway, v6 will still mean "version 6" in Perl 6--it just won't be
01:06 TimToady a stirng.
01:06 TimToady *string.
01:07 TimToady Well, the syntax has been fairly consistent, but sure, the semantics have been waving all over the place.
01:08 TimToady And the interaction of v-syntax with 'use' versions is interesting, to say the least, as witnessed by 'v6-pugs'.
01:08 Arathorn well, the magick all makes sense now :)
01:09 TimToady Not entirely...
01:09 TimToady In theory, Perl 5 oughta just blow up the moment it sees a 'use v6', saying "I'm not version 6..."
01:10 diotalevi_ So since vstring implementation wobbles all over the place through various perl versions, why does C<use v6-pugs> work and does it work in all 5.6+?
01:10 * Arathorn was assuming that perl 5 feels itself unqualified to comment on future major revisions of itself, which might conceivably be implemented by crazy developers as p5 modules :)
01:10 TimToady But there's chicanery in the lexer to rearrange module versions, such that the parser sees the version first, and that's getting fooled by 'v6-pugs' into thinking it's a module version when the parser thinks otherwise.
01:11 diotalevi_ btw, TimToady, madprops to you. I've been meaning to try that out but real life happens, etc.
01:11 Arathorn does anyone mind if I slap a note in the POD for v6.pm spelling out that its invocation syntax relies on it appearing to be a vstring (even though it's a module)?
01:11 diotalevi_ Arathorn: do whatever makes sense. There's lots of magic, good docs should follow.
01:11 diotalevi_ maybe just put it in comments though since users don't care about that
01:11 TimToady Eh, well, life happens.  And I still need to clean up a few of the things Nick punted on before it's terribly usable.
01:12 jisom would V6 be interpreted differently than v6?
01:12 TimToady Yes, it's be an ordinary Module, I believe.
01:12 audreyt Arathorn: please commit
01:13 audreyt Arathorn: pod is fine
01:13 f0rth joined perl6
01:13 TimToady But it's possible that someone has a pet V6 module somewhere already.
01:13 Arathorn audreyt: thanks
01:13 TimToady It's rather less likely that someone has an existing v6 module.
01:13 jisom and if you're on osx and have v6.pm and V6.pm, it comes down to the first found
01:14 TimToady if you're on osx it comes down to a lot of things.
01:15 Khisanth joined perl6
01:15 TimToady That's one thing we've got to keep straight in P6--module names should allow case distinction and Unicode distinction even if the underlying filesystem doesn't...
01:16 jisom and is Foo.pm required to have a "package Foo;"?
01:16 TimToady In Perl 6?  It's required to *not* have 'package foo;'.
01:17 jisom implicit?
01:17 audreyt "module Foo;" or "class Foo;"
01:17 TimToady It'd be 'class Foo' or 'module Foo'
01:17 jisom oh
01:17 audreyt "package Foo" goes back to p5land.
01:17 diotalevi_ s/p5land/candyland/
01:17 diotalevi_ cuz it's true.
01:17 TimToady in any event, the declared name is what needs to show up in the library when a module is installed.
01:18 * ayrnieu finally notices http://www.perlcast.com/audio/Perlcast_Interview_023_svk.mp3
01:18 TimToady that's pretty easy to manage for officially installed files, but new files added to a user's directory will need some kind of processing pass to 'semi-install' them.
01:19 TimToady In any case, if none of the directories in the path have changed, you
01:19 TimToady can just load files by scanning for the names in your (flat file?) database.
01:19 TimToady none of the multiple-calls-to-stat() business...
01:19 wilx`` joined perl6
01:21 TimToady That approach solves the case problem, the unicode problem, and the efficiency problem all in one.
01:22 TimToady At worst, you just rebuild your candidate file list once on every invocation, even if you have nowhere to cache it.
01:22 TimToady (assuming the library doesn't change in mid-invocation...)
01:23 TimToady Having the candidate list also makes for easy pattern matching when you don't specify exactly which version you want.
01:24 * audreyt thinks we should just bundle sqlite.
01:24 jisom sounds really complicated, but dwim
01:24 TimToady And the sitelib can have its part of the candidate list presorted based on site preferences.
01:25 audreyt (for the file-list management part, not to replace the discovery algorithm)
01:25 * TimToady thinks anything more complicated than flat files is asking for trouble...
01:26 TimToady Does sqlite do flat files?
01:26 audreyt not quite sure what flat files mean here
01:26 mugwump no, it is binary only
01:26 audreyt it's just a modern version of the SDBM perl5 used to bundle :)
01:26 audreyt oh, as in text file. no.
01:26 audreyt so, good point. back to yaml perhaps.
01:27 TimToady Something "human" "readable".
01:27 audreyt *nod*
01:27 TimToady with implicit ordering.  SDBMish things would have to be sorted.
01:28 audreyt well, implicit ordering on sqlite is "create unique index"
01:28 audreyt but yeah, I agree transparency is more imporatnt
01:28 mugwump http://xrl.us/kezv  # de-warnock?  for TaPL OCAML->P6 example conversion
01:28 TimToady Especially if recalculation is rare compared with usage.  Much better to just slurp an ordered lists of yaml or some such.
01:29 TimToady Sort of MMD writ large.
01:29 audreyt mugwump: yesterday's backlog has me shoe-horning this into roles
01:29 audreyt mugwump: search for gaal and "data Moose"
01:30 audreyt constructors into classes, data types into roles, constructor args into "has $.x"
01:30 audreyt mugwump: gaal was starting to write a DrIFT rule for it, so we can convert all Pug sinternal structs into p6
01:30 mugwump audreyt: ok, will do.  I'd really love to get restarted on that project.  I kind of stopped doing much pugs/p6 stuff when I changed jobs
01:30 audreyt mugwump: as for sugar, any sugar is fine as long as the final desugar form is well understood
01:31 * audreyt summons the "then you can write is as a ~V~ macro" argument
01:31 audreyt (where the ~V~ is, again, the handwaving operator)
01:31 mugwump I'm just looking to translate the examples, I don't care about making it as terse as Haskell :)
01:32 audreyt very well :)
01:32 diotalevi_ Say, just a note, YAML is nicely human readable but dang it all if I've never been able to *write* YAML. It's just not human writable. Measuring by my ability, of course.
01:32 mugwump perl6.does(ML), not perl6.is(ML) ;-)
01:32 * diotalevi_ will be leaving RSN tho.
01:32 TimToady dotalevi_: maybe that's a feature in this case.
01:33 mugwump diotalevi_: you get used to it.  it even gets nice once you get familiar with the alternate forms
01:34 audreyt it's human-tweakable
01:34 diotalevi_ I just get tripped up on how immensely picky it is about which whitespace characters go where and I never seem to get error message that are helpful.
01:34 diotalevi_ I mean, just speaking as someone who has occasionally tried to write a document in YAML.
01:36 audreyt error messages?
01:36 K joined perl6
01:36 audreyt YAML::Syck seems to give me okay feedback so far
01:36 audreyt but ymmv. :)
01:36 diotalevi_ Yah, like "you did this. Maybe you meant this. But here's where it died."
01:37 * diotalevi_ hasn't seen this ::Syck thing yet because it lives under YAML* and like he said, YAML.pm is a source of pain.
01:37 audreyt diotalevi_: YAML::Syck solves all that pain. try it :)
01:37 audreyt it's also 20x-50x faster and ruby compliant
01:37 diotalevi_ Oh that's nice.
01:37 diotalevi_ That's very nice.
01:38 diotalevi_ So YAML.pm is getting um... aliased to YAML::Syck RSN?
01:38 * audreyt curtsies
01:38 audreyt well no, I don't think so, but who knows. havn't really discussed this with ingy.
01:39 diotalevi_ So here's a problem that really got to me when I had a Windows computer handy. perl -MYAML -e "print Dump(...)" > foo.yml.
01:40 diotalevi_ I couldn't use LoadFile on the result because it had Windows line endings. If I said DumpFile (or whatever it's called) I'd get UNIX line endings ... but I was on a Windows computer.
01:40 putter 2am + 30min... ;)
01:40 diotalevi_ ::Syck makes that nice?
01:40 TimToady putter: 40
01:40 audreyt diotalevi_: yes.
01:40 audreyt diotalevi_: it transparently handles crlf.
01:41 TimToady audreyt: aren't you up past your bedtime, young lady?
01:41 * diotalevi_ literally does a jig.
01:41 audreyt well, yes. and I just posted my journal
01:41 audreyt so I have no excuses
01:41 * mugwump finds audreyt's reference at http://xrl.us/kez7
01:41 audreyt adieu, folks :)
01:41 * audreyt waves &
01:41 TimToady sweet dreams.
01:42 diotalevi_ /^(?:pas de basque){5,5}(?:plain caper){2,2}$/
01:43 * diotalevi_ thanks audreyt muchly.
01:46 donatoaz joined perl6
01:47 donatoaz left perl6
01:51 Arathorn hm, is the svnbot wedged atm?
01:51 svnbot6 r9553 | arathorn++ | explanation of why use v6-pugs works from $Larry
01:51 * Arathorn wonders if he committed into the wrong repo
01:51 jisom no
01:51 Arathorn ah, there we go
01:51 Arathorn TimToady: hope you don't mind me using your name & verbiage in vain there
01:52 * Arathorn will amend as necessary
01:56 * Arathorn will check logs tomorrow, either way
02:02 slurpee s/oady/owdy/
02:02 slurpee actually wrong too :)
02:03 * slurpee goes back to admiring the big data snafu at work
02:07 amnesiac joined perl6
02:09 svnbot6 r9554 | autrijus++ | * v6.pm: slight nit in Arathorn++'s POD - "no whitespace neccessary"
02:09 svnbot6 r9554 | autrijus++ |   should be "lack of whitespace is neccessary".
02:09 svnbot6 r9554 | autrijus++ |   (yes, I'm sleeping soundly already.)
02:12 putter lol
02:35 DesreveR joined perl6
02:45 mako132_ joined perl6
02:45 FurnaceBoy audreyt, also, necessary is spelled "necessary"
02:51 justatheory joined perl6
02:51 FurnaceBoy hi j.a.t.
02:55 ayrnieu http://www.perlmonks.org/?node_id=536453 # re eric256
03:09 ueater joined perl6
03:28 Alias_ audreyt: FIRST_MAKEFILE? Not having any idea what you are talking about :)
03:40 Alias_ oh wait, there was a bug report
03:41 Alias_ TimToady: Won't a flat file list of library to filename mapping get pretty slow?
03:42 Alias_ TimToady: It would mean that the more modules you install, the longer it's going to take to find a module
03:43 spinclad Alias_: why? slurp the whole list into a hash at perl startup...
03:44 Alias_ spinclad: How much memory do you want to spend to do that?
03:44 Alias_ not to mention load time
03:44 Alias_ And locking issues
03:45 spinclad there's only twice as much text there at most as your directory scans have to scan through...
03:45 TimToady I'm just following the dictum, when in doubt, use brute force...
03:46 Alias_ TimToady: So it will only apply on filesystems without such support?
03:46 Alias_ (which would seem reasonable... maybe)
03:46 spinclad ENOBRUTEFORCE, falling back
03:46 TimToady Can always optimize it later.  But I'd just like to see a simple design first.
03:47 * Alias_ as usual, is nervous of change
03:47 revdiablo Berkeley DB! SQLite! Embedded mysql!
03:47 revdiablo *snicker*
03:47 Alias_ SQLite is bloody tempting
03:48 revdiablo Maybe hooks to plug in your own module lookup system
03:48 wilx joined perl6
03:48 Alias_ ugh
03:48 revdiablo Though this probably doesn't count as a simple design ;)
03:48 Alias_ There's such a thing as too much infrastructure. Ask Java
03:49 TimToady Basically, the API has to be able to emulate a sane naming structure on architectures that support it poorly.
03:49 TimToady Additional complications are mostly optimizations.
03:50 Alias_ Well, and varying complications of "poorly"
03:50 Alias_ Would it mean you can no longer just copy in .pm files on Win32
03:50 Alias_ etc etc
03:50 Alias_ Ugly real life practices that work now and people appreciate
03:51 TimToady Could emulate by recognizing which .pm filenames *might* match and looking inside to see if they do, but that doesn't solve the problem of multiple Perl identifiers mapping to the same filename.
03:51 dduncan joined perl6
03:51 Alias_ indeed
03:51 Alias_ Just pointing out the potential baby and bathwater problem
03:52 TimToady Can certainly look at name-mangling that rewards babies more than bathwater.
03:54 * Alias_ tries to imagine unicode-escaped file names
03:54 Alias_ (and what they might look like when we only have _ and - to work with
03:54 ayrnieu - can be zero, _ can 1.
03:55 Alias_ I was thinking Acme/WINGDING-CHARACTER-SMILEY-FACE.pm
03:56 TimToady The other approach is that you name them anything you jolly well please, and the library system just maps whatever inside name to outside, and just hope colliding filenames are in different subdirs.
04:02 TimToady Basically, as I was saying before, anytime anything new pops up in one of the @INC directories, you just process it into the lib database (sitelib or your personal lib) immediately.
04:02 revdiablo joined perl6
04:03 Alias_ And if @INC isn't static?
04:03 Alias_ They already move around quite a bit
04:03 lypanov joined perl6
04:03 Alias_ (not trying to be difficult, just trying to point out how difficult it will be to abstract over the top of real life in this case)
04:04 TimToady Doesn't matter if we dup a little of that information, I think.
04:04 stennie joined perl6
04:05 Alias_ What if you change the casing of a class name, but it remains in the same file name
04:05 Alias_ and so on, and so forth
04:05 Alias_ But this is just talk
04:05 TimToady Yeah, that's potentially a problem.
04:06 Alias_ Once you've created a prototype I'll check in tests that break it in more ways than you can possibly imagine
04:06 Alias_ :)
04:06 Alias_ other problems... NFS indexing :/
04:06 Alias_ ouch
04:07 Alias_ NFS people already bitch about things like .pmc and Class::Autouse adding an extra stat per module
04:07 Alias_ Then there's filesystems without the ability to handle lists
04:07 Alias_ Thing HTTP
04:07 Alias_ Think
04:07 Alias_ And the crazy things do with CODE refs in @INC (Which I'm not sure we are keeping)
04:08 TimToady hopefully we can get rid of some of those stats with a sane db, but yes, notification of change is a big issue.
04:09 TimToady network cache coherency is always a big problem...
04:11 TimToady I think we could go as far as to demand some kind of user attention for real name changes.  As long as the names don't change we can just read the files we think we ought to read from the last name cataloging.
04:12 TimToady (assuming directory change catches most of the file creation/deletion events)
04:13 mako132_ joined perl6
04:13 TimToady \
04:13 TimToady s/darncat//
04:19 Alias_ I'd also hate to see a situation in which we starting acting for the lowest common demoninator
04:19 Alias_ So that you'd need a library database even on filesystems that were case sensitive and unicode
04:19 Alias_ And of course then people would start hacking functionality into the library system
04:20 Alias_ Much as Ilya (ab)uses the current system to hide away readline as Term::ReadLine::readline so that nobody other than him will load it
04:22 TimToady but you could still save the stats even on a smart filesystem.
04:22 Alias_ Would it be worth loading a database of 1000 module to load 2? :)
04:23 Alias_ And dealing with all the other issues of getting further away from real life
04:23 TimToady you could even go as far as to memoize a particular module's dependencies if you know it hasn't changed.
04:24 * Alias_ votes for the least possible infrastructure
04:24 Alias_ :)
04:24 TimToady s/least/slowest/???
04:25 Alias_ s/slowest/most uniform performance across all workloads/
04:25 Alias_ Playing favourites is tricky
04:26 TimToady Sure, and that's what's hokey about JITs...
04:26 Alias_ TimToady: On video.google.com there's a talk by Hans Reiser to the guys at Google you might find interesting (assuming you haven't seen one of his more recent Reiser 4 talks somewhere else)
04:26 ueater left perl6
04:27 Alias_ In fact, as someone that doesn't get to conferences anywhere near as often as I'd like, that entire set of Computer Museum and Google talks are really great
04:28 * TimToady refrains from pointing out that he lives within a mile of both of those...
04:28 Alias_ :)
04:49 FurnaceBoy oh cool ! Reiser.
04:49 FurnaceBoy thx
04:49 FurnaceBoy http://video.google.com/videoplay?docid=6866770590245111825&amp;q=reiser+google
04:49 Alias_ Well, I'll warn you now he's a REALLY boring speaker in style
04:49 FurnaceBoy hehe
04:49 FurnaceBoy I love him for his ,... MIND
04:49 Alias_ But do try and stick with it, because he has some great points when it comes to performance
04:50 FurnaceBoy yeah. I expect he does.
04:50 FurnaceBoy will watch later, just imbibing series 1 ep 3 of BSG
05:05 diotalevi So can you distill those points out?
05:58 FurnaceBoy some of them probably exist in material on namesys.com
05:58 * FurnaceBoy hasn't watched the video yet
06:09 putter joined perl6
06:13 putter audreyt: suggest delaying any cpanning of re::override.  "example" code got added showing a possible approach to lexical scoping, using eval_pv.  turns out the mere using of eval_pv in regcomp under a split() is delayed segfault level undesirable.  I should have an hour or few tomorrow, and think I'll focus on moving re::override dev entirely into pugs svn.  so others can share in the fun.
06:13 putter &
06:43 beppu joined perl6
06:53 KingDiamond joined perl6
07:00 GeJ joined perl6
07:16 dduncan left perl6
07:25 xinming joined perl6
07:29 iblechbot joined perl6
07:57 Aankhen`` joined perl6
08:00 ghenry joined perl6
08:03 Alias_ ouch, McAfee accidentally nukes Excel in it's latest update
08:04 Alias_ (already disabled now though)
08:04 Alias_ left perl6
08:08 drrho joined perl6
08:10 kane_ joined perl6
08:22 gaal morning
08:24 GeJ morning gaal
08:25 gaal so much cheerful insanity
08:31 pdcawley joined perl6
08:37 * lypanov bounces
09:00 nothingmuch joined perl6
09:06 f joined perl6
09:13 nothingmuch joined perl6
09:21 * Supaplex dribbles lypanov around the court
09:22 * ingy dribbles on his pillow
09:22 Supaplex heh
09:22 Supaplex speaking of pillow
09:22 lypanov boingyboingyboingyboingy
09:22 * Supaplex crashes for the night *plunk*
09:23 * lypanov grows hands and waves!
09:23 Supaplex hehe night' :)
09:24 Alias_ joined perl6
09:24 Alias_ TimToady: Ping?
09:26 GeJ Alias_ ?
09:27 Alias_ GeJ: Wanted to talk licensing
09:27 GeJ may I request your wisdom in a /query?
09:27 Alias_ hmm?
09:27 * GeJ ain't no TimToady
09:27 GeJ I tried to contact you yesterday, but didn't get any answer
09:28 Alias_ via what channel? :)
09:28 Alias_ (generic sense of the word)
09:28 GeJ through a query
09:28 Alias_ ah
09:28 Alias_ Don't think I got it
09:28 Alias_ What can I do for you
09:29 GeJ I noticed yesterday that in your TODO list there was an item that said : contact M. Schwern to ask him <hum... I forgot that part>
09:30 Alias_ Oh yeah, Schwern needs to approve ExtUtils::Install to be split off from ExtUtils::MakeMaker
09:30 GeJ Basically, I'm trying to achieve the same goal and wanted to know how to do so... I sent him a couple of email, but no answer.
09:30 Alias_ He's lost in the MMORPG Eve Online or something
09:31 Alias_ I would try contacting Curtis Poe, which last time I checked is his roommate
09:31 Alias_ Who should at least know what the situation is
09:31 GeJ ok
09:32 GeJ I'll try again, and then fall back to the ovid option
09:32 GeJ thanks
09:32 Alias_ Alternatively, Masque or ua might know
09:33 Alias_ if they are around
09:33 Alias_ But ovid first
09:33 GeJ thanks
09:33 GeJ I'll do that
09:36 GeJ do you know if he has some preferences? Like if it is a bug and/or feature request it has to go through RT otherwise it will feed his /dev/null ?
09:37 Alias_ Dunno, I think he only needs to twiddle some PAUSE permissions
09:37 Alias_ If he was an AWOL author I would have done it by now myself
09:45 xern joined perl6
09:45 mako132__ joined perl6
09:46 * nothingmuch pets ingy
09:50 * Alias_ swears at the sesame seed stuck in his teeth, and goes to buy any entire packet of floss for one seed, muttering darkly
09:50 ingy *purr*
09:56 slurpee joined perl6
09:59 * ingy attempts to add .pmc support to M::C by using orz.pm in YAML.pm :)
10:00 ingy s/::C/::I/
10:01 Alias_ s/c/x/
10:01 * Alias_ runs
10:01 rafl joined perl6
10:01 ingy .pmx?
10:02 Alias_ see audrey's most recent P5P post
10:03 * Alias_ votes pmx +1
10:12 ingy Alias_: explain it. I don't quite understand it.
10:12 Alias_ ingy: It's the "create a new Perl caching mechanism, instead of using the internal one"
10:13 ingy in the Perl core?
10:13 Alias_ ingy: Otherwise identically implemented. But we can remove .pmc altogether which will be much better for NFS people, and avoid the mtime situation by having the filter do whatever integrity testing it wants, rather than have Perl blindly load the pmc
10:13 Alias_ yeah
10:14 ingy and drop support for perl 5.8?
10:14 Alias_ yep
10:14 Alias_ um
10:14 Alias_ And remove .pmc from maint and blead I believe, yes
10:14 ingy so how will that work on older perls?
10:15 Alias_ Because the caching is done Perl-side, we can implement it all the way back to perl 5.004 if we want
10:16 ingy where is the caching check triggered?
10:16 Alias_ wherever you want, but presumably inside v6.pm
10:16 Alias_ well, not wherever you want... if you want pmc's "ignore what's in the .pm" checking
10:16 Alias_ :)
10:17 Alias_ But it gives the pm more control over how the checking is done
10:17 ingy you are totally high
10:17 ingy say Foo.pm uses v6
10:17 ingy and v6 checks for Foo.pmx
10:17 ingy is that what you are saying...?
10:18 Alias_ yep
10:18 Alias_ Well, that's what I believe Audrey and Robert are saying
10:18 ingy you've just lost all the benefit of caching
10:19 ingy you can't stop the load of Foo.pm
10:19 ingy it's 100 billion times slower than a stat
10:19 Alias_ 50 stats
10:19 svnbot6 r9555 | Darren_Duncan++ |  r3107@darren-duncans-power-mac-g4:  darrenduncan | 2006-03-14 02:17:33 -0800
10:19 svnbot6 r9555 | Darren_Duncan++ |  ext/Rosetta/ : continued rewrite of Language.pod
10:19 Alias_ or whatever
10:19 ingy and will probably cause internal problems with the loading of Foo.pmx
10:19 Alias_ but I could be misinterpreting
10:20 ingy it's completely bogus idea as I understand it
10:20 ingy unless your real goal is that nobody but rogue misfits ever use caching
10:21 Alias_ ask them
10:22 ingy and for the upstanding citizens who use NFS and never want a cached module, they can sleep at night knowing that extra stats are not performed
10:22 Alias_ um... and the extra hit is done ONCE, not every module
10:22 Alias_ So faster for everybody
10:23 Alias_ But read audrey's email and interpret independantly
10:23 ingy why are you harping on a microopt that we have already had for 7 years
10:23 Alias_ I could be wrong about what it means
10:24 Alias_ Because I seem to keep getting a lot of patches to modules that remove extra stats
10:24 Alias_ Every few months or so
10:24 Alias_ So obviously there's some userbase that cares a lot
10:25 Alias_ plus we don't have any benchmarks to suggest how MUCH of an optimisation it is, and I'd like to see
10:25 ingy actually just using .pmc more will lower the stats automatically
10:25 Alias_ The idea of only paying it for each module that uses it is attractive
10:26 Alias_ similar to the regex vars that are bad because every regex has to pay for them
10:27 ingy but .pmc modules use less modules at runtime
10:27 ingy so automatically there are less stats
10:27 Alias_ that doesn't follow
10:27 ingy excuse me?
10:28 ingy If Foo.pm uses Switch.pm, Foo.pmc doesn't use it
10:28 Alias_ If a program loads 30 modules, and 3 are using .pmc, then using .pmc methods you'd do (30 - 3) * 2 + 3
10:29 Alias_ Using .pmx (with pmc compiled out) you'd use (30 - 3) + 3 * 3
10:29 Alias_ There's probably a tipping point
10:29 Alias_ A third maybe
10:29 Alias_ or a quarter
10:29 ingy But the cost of doing the runtime check will blow the stats out of the water
10:30 Alias_ And in exchange potentially more control and correctness and compatibility
10:30 Alias_ (to be established)
10:30 ingy plus how do you keep Foo.pm from actually needing v6 on the user's machine
10:30 cnhackTNT joined perl6
10:31 Alias_ As I understand it, that they'll need anyway
10:31 Alias_ Or anything out there without pmc support will just crash
10:32 ingy Alias_: I'm wasting too many stats talking about this with you, iykwim. I'll take it up with audreyt.
10:32 Alias_ and also crash if something accidentally updates a .pm mtime
10:32 Alias_ sure
10:34 Alias_ iykwim?
10:34 Alias_ ah, know
10:35 ingy aittyd
10:39 audreyt ingy: hi
10:39 ingy hi audreyt
10:39 ingy what's up?
10:39 audreyt ingy: .pmx is the idea of having a common validation metadata stored inside the cache and verified by the interpreter
10:39 audreyt it's not my idea; it's Robrt's.
10:39 ingy the perl 5 interpreter?
10:39 audreyt I don't think it will come to pass really. if it does, we generated bot .pmc and .pmx.
10:39 audreyt yeah.
10:40 ingy I think it's a fine idea
10:40 audreyt me too.
10:40 ingy and deprecate .pmc in 5.14
10:40 audreyt also couple it with goto *FH
10:40 audreyt and then we can instead of dying, just open .pm and goto it when cache is stale
10:41 pdcawley joined perl6
10:41 audreyt you can currently emulate it with a zero-filter with F::U::C
10:41 ingy I didn't grok the goto thingy
10:41 audreyt not sure if it's worthy to add to the default refresh_cache block
10:41 audreyt ingy: ok. say you are in a .pmc and you discover yourself is stale
10:41 audreyt ingy: you want to pretend this loading of .pmc never happened
10:41 audreyt and just trigger .pm again
10:41 audreyt there is no neat pureperl way to do it
10:42 audreyt you _can_ immediately F::U::C yourself into .pm
10:42 audreyt but an easier way is to just goto *FH
10:43 audreyt which means "abandon the current parse/exec and swap out to *FH
10:43 audreyt "
10:43 audreyt (for this compilation unit)
10:43 audreyt in internal terms, it means nulling out PL_rsfp and transfer control to *FH
10:43 audreyt but that is just an idea. we live with the 5.6~5.8 world and code toward it now :)
10:44 ingy right
10:44 ingy I think I get it
10:44 ingy this is more sane than the guessing game stuff I was just doing with Alias
10:45 audreyt well, I blame my English for not explaining it well on p5p
10:45 audreyt but you can always safely blame my english :)
10:45 ingy speaking of, you have typos in your blog
10:45 audreyt commits welcome... oh wait.
10:45 ingy I can commit to you blog?
10:46 ingy you++
10:46 audreyt if you want to guestblog, I can certainly do that :)
10:46 ingy s/fitlers/filters/
10:47 audreyt fixed
10:47 ingy that was the main one
10:47 audreyt ingy: someone on perlmonks wants implicit typing to be on by default because "all other language does that"
10:47 ingy a little bit of Engrish inflection here and there never hurt anyone
10:47 ingy :p
10:47 audreyt basically turning yaml into syck
10:48 ingy audreyt: I would be fine with removing the mtime < mtime check in say 5.8.10
10:49 audreyt cool
10:49 audreyt not sure what will happen then
10:49 audreyt I guess it largely depends on whether there are any real adoption of M::C
10:49 ingy woah! /me just grokked "F::U::C yourself into .pm"
10:49 ingy clever
10:50 ingy I'd rather die, but clever
10:50 ingy F::U::C $yourself || die;
10:50 audreyt yeah, it is of real_import
10:50 ingy F::U::C $yourself && die; # rather
10:50 ingy :p
10:51 * audreyt keeps turning out weird jenga corners
10:51 ingy Think of a module that scans all of %INC and caches it into it's .pmc
10:52 ingy Oooo
10:52 ingy Kwiki::Depless
10:52 audreyt Kwiki::Helpless
10:52 clkao wiki::Topless
10:52 audreyt o/~ After all, isn't sanity just a one-trick pony? All you get is one thing: rational thought. But when you're good and crazy, ooh ooh, the sky is the limit o/~
10:52 gugod Module::Useless
10:53 * ingy writes down all these great ideas!
10:53 ingy YAPC fodder
10:53 audreyt YAPC::Sleepless
10:54 ingy audreyt++
10:54 ingy ok, I am off to fix M::I at $new_cafe with $roommate
10:54 audreyt &enjoy!
10:54 ingy ready gugod?
10:54 gugod lets hit it
10:55 ingy indeed!
10:55 ingy &
10:57 audreyt if I implement Goto::FileHandle
10:57 audreyt should I upload it as Acme::Goto::FilteHandle?
10:57 audreyt Acme::Goto::FileHandle, even
11:08 rantanplan_ joined perl6
11:21 Arathorn joined perl6
11:23 mj41 joined perl6
11:28 SamB joined perl6
11:30 kanru joined perl6
11:41 wolverian audreyt, great journal entry, very exciting progress. you all rock :)
11:47 svnbot6 r9556 | arathorn++ | fix v. minor typoe in NOTES
11:48 Arathorn interesting
11:48 arcady Arathorn what about the typo in the commit message? : )
11:48 Arathorn it was a meta typo ;)
11:48 Arathorn of the ironic 'teh' variety
11:48 ruoso joined perl6
11:48 Arathorn a tad lame, perhaps :/
11:49 Arathorn anyway, i was thinking about the biggest millstone to pugs development (from an outsider's point of view) being keeping track of all the various backends, intermediary languages, and tangents
11:50 Arathorn which coincidentally seems to coincide very much with the comment at http://pugs.blogs.com/pugs/2006/03/compiling_rules.html#comment-14985542
11:50 Arathorn (at least in terms of the level of support that all the various backends & intermediary syntaxes provide for full on perl6 - and if so, what vintage of the ever-mutable spec)
11:51 arcady indeed
11:51 arcady you can't just ask "can perl 6 do ...?"
11:51 Arathorn there certainly seems to be a job for someone who sat down and wrote and maintained an aerial view of all the various development bifurcations
11:52 Arathorn esp. in terms of their development, staleness, renamings, refactorings and conclusions (if any)
11:52 * Arathorn thunks
11:52 arcady in general the documentation needs lots of work
11:53 arcady one of those things that I'd do if I had the time
11:54 Arathorn i'm not sure that throwing time at it is necessarily necessary, though
11:54 Arathorn there's just an absence of consolidation (unless i've just not found it yet)
11:54 arcady yeah
11:54 Arathorn between them, audrey's blog and svn.perl.org/perl/docs and the pugs repo itself probably contains everything
11:54 arcady and what is needed is someone who would consistently spend the small amonut of time to keep things updated
11:55 arcady outdated documentation is almost worse than none at all
11:55 Arathorn but even then, JOINing the three resources is decidedly nontrivial - especially without consistent indexes
11:55 Arathorn (svn.perl.org/perl6/doc even)
11:57 arcady but that one only applies to perl 6 the language
11:57 Arathorn yup
11:57 Arathorn whereas pugs-of-the-many-implementations is documented in a mix of #perl6, audrey's blog and READMEs in the pugs repo
11:57 Arathorn although obv audrey's blog tends to be a subset of #perl6
11:58 Arathorn i suspect all that's needed is a single 'map' diagram which is kept rabidly up to date
11:58 * Arathorn ponders a Map of Pugs (complete with lots of 'here be dragons!' annotations)
11:58 arcady the key is "rabidly up to date"
11:58 Arathorn which then points you to all the right URLs - and perhaps has responsibility for slapping OBSOLETE! on docu which hasn't stood the test of time
11:59 Arathorn sure: but if it's a fairly small master index (i.e. fits on a single page of A4/Letter/Foolscap/Papyrus), that might not be so daunting
11:59 arcady sounds like you're volunteering : )
11:59 Arathorn hehe
12:00 * Arathorn isn't necessarily going that far (yet)
12:00 arcady I'd do it, the problem is I don't have consistently free time
12:01 arcady and there's still lots of stuff in perl 6 the language that's incomplete or outright missing
12:02 ingy Juerd: awesome review of pmc.
12:02 Arathorn well, the gaps are easier to spot in the consolidated p6 doc
12:03 Arathorn but keeping track of the beautifully fractaline pugs dev is a total nightmare
12:03 Arathorn from the perspective of someone who isn't totally immersed
12:03 Juerd ingy: Thank you
12:03 arcady so basically, you'd have to have nothing better to do than sit on IRC all day
12:03 Arathorn which perhaps needlessly creates a barrier to entry for fresh minds
12:03 TimToady joined perl6
12:04 ingy Juerd: you forgot the best part though
12:05 * Arathorn was more paying homage to the (not so invisible) Elephant In The IRC Channel of keeping track of what the hell's going on
12:05 mj41 joined perl6
12:05 ingy Perl's -c flag now *works* :)
12:05 ingy s/P/p/
12:06 Juerd It didn't work before?
12:06 ingy -c == --compile ;)
12:07 Juerd Ehm?
12:07 Juerd Perl doesn't have long options, and -c is check, right?
12:07 ingy perl -c lib/Foo.pm
12:07 ingy is the easiest way to create lib/Foo.pmc
12:08 Juerd Eh, right, useful side-effect, but I don't agree that it's the best part
12:08 ingy Juerd: damn you Dutch. I'm trying to make a joke
12:08 ingy :p
12:09 ingy just say, 'heh' and it's all good
12:09 Juerd Oh
12:09 Juerd Heh.
12:09 ingy :D
12:09 Arathorn the -c is certainly c^hserendipitous :)
12:09 Arathorn and rather fun
12:12 chris2 joined perl6
12:14 ingy audreyt: I think M::I can itself use M::C to do much of its magic. like Pod stripping etc
12:15 audreyt ingy: yo
12:15 ingy just an evil thought
12:15 audreyt ingy: you have an extra "benefits" line
12:15 audreyt in your version of pod
12:15 audreyt I'm committing something insane.
12:16 ingy ?
12:17 audreyt http://svn.openfoundry.org/pugs/perl5/Module-Compile/t/pmc.t
12:17 audreyt the .pmc now autorecompiles itself.
12:17 svnbot6 r9557 | audreyt++ | * sheer insanity: self-recompiling pmc validator block!
12:17 audreyt now of course, maybe a writable check or something would be nice, but I'll leave it for later
12:18 ingy nod
12:18 Juerd Oh, audreyt, why do you have to hurt my brane so much, so often? :)
12:18 ruoso does somebody knows if "require bareword;" will still be different from "require $scalar;" in perl 6?
12:18 Juerd ruoso: What do you mean, "bareword"?
12:19 ingy gah http is not working in this cafe
12:19 audreyt ruoso: I think we are adopting the Module::Load semantics
12:19 audreyt ruoso: require "Module::Load" is same as require Module::Load;
12:19 ruoso nice
12:19 audreyt (as is currently in pugs)
12:19 Alias_ left perl6
12:19 audreyt Juerd: it's just two lines! :)
12:19 audreyt filter_add(sub { filter_del(); 1 while filter_read(); $_ = $f; 1; })}
12:19 audreyt and
12:19 audreyt #line 0
12:20 Juerd audreyt: It's not the code, it's the constant reshaping of my universe...
12:20 audreyt ah. well... :)
12:20 ingy audreyt: I have some clever idea about how to do compiler chunking/dispatch
12:21 webmind Juerd, brain?
12:21 ingy s/idea/ideas/
12:21 Juerd webmind: pinky?
12:21 ingy but first I must finish M::I::PMC
12:21 webmind Juerd, what shall we tomorrow night?
12:21 webmind :)
12:21 Juerd webmind: do?
12:21 webmind Juerd, just correcting spelling ?
12:21 webmind Juerd, yes
12:21 Arathorn is there anything in M::C's filter-compilation which works around the way source filters might get confused about ?...? style matching operators (or other weird edgecases)?
12:22 Juerd webmind: Taking over the world is more interesting than just correcting spelling.
12:22 webmind Juerd, true
12:22 Juerd webmind: Where are you going with this?
12:22 webmind Juerd, thinking that 'brane' was a typo ?
12:22 Arathorn (taking over the world by means of correcting spelling is obviously the way to go)
12:22 Juerd webmind: No, that was quite intentional.
12:22 audreyt Arathorn: well, that is the individual M::C compiler's duty
12:22 webmind Juerd, that's why the '?' was there for
12:22 audreyt Arathorn: I imagine using PPI (or even MAD) can reduce a lot of such errors
12:22 Arathorn oh - of course - it depends on what language it'd be parsing, doesn't it
12:22 Arathorn <-- idiot
12:23 audreyt and now that filtering is only done author-side
12:23 audreyt very expensive matching like PPI is possible
12:23 audreyt and even desirable
12:23 Juerd webmind: A lone ? at the end of a line usually indicates that the stuff before it was a question, rather than questioned. Try "(?)" next time.
12:23 * Arathorn nods.
12:23 audreyt (previously the user pays the cost on every load.)
12:23 lypanov audreyt: i love some of the deployment plus points the blog lists btw
12:23 webmind Juerd, I'll see
12:23 ingy audreyt: more importantly I'd like to do a hacking session with dconway on M::C dispatch
12:23 audreyt M::C::Hawkings
12:23 audreyt ingy: sure, and I'll even be there
12:23 Juerd audreyt: Could you do some visiolization of the M::C business?
12:23 audreyt my "Deploying Perl 6" talk just got accepted in YAPC::NA
12:24 lypanov neat :)
12:24 audreyt Juerd: the landscape is _so_ changing
12:24 ingy audreyt: Hawking
12:24 audreyt Juerd: after ingy's M::C::PMC
12:24 Juerd audreyt: When it's settled a bit more, then perhaps :)
12:24 audreyt ingy: M::C::Hacking
12:24 audreyt Juerd: yup :)
12:24 audreyt do remind me to remind you to remind me
12:24 audreyt lypanov: thanks! *smile*
12:24 Juerd Okay. But in case I forget, please remind me to you remind you to remind me to remind you.
12:25 audreyt ok
12:25 Juerd Great :)
12:25 * Arathorn wonders whether the changing landscape is better characterised as constant earthquakes or splendid mountain range formation from a subduction zone :D
12:25 Juerd I feel this redundancy is going to be fruitful.
12:25 lypanov Arathorn: blooming flowers :)
12:25 Arathorn hehehe
12:25 Juerd Because we can now both forget ;)
12:25 audreyt Redundant Array of Insane Dementia
12:25 audreyt exactly ;)
12:26 * Arathorn has a mental image of #perl6 sitting on petals of a vast unfurling carnivorous plant now
12:26 Arathorn trippy. :\
12:26 * lypanov grins
12:27 audreyt ingy: btw, I'll _not_ ever turn ImplicitTyping on by default in YAML::Syck
12:27 * webmind gets some of what Arathorn is having
12:27 audreyt but I'm going to release now with a line on beginning of synopsis to tell the user that you probably want to do that :)
12:27 audreyt "you" as in "the user"
12:27 Arathorn . o O ( http://images3.deviantart.com/i/2004/129/5/2/Audrey_II_Broadway_Version.jpg ) // apologies to any other audrey's present ;)
12:27 Arathorn anyway
12:28 audreyt Arathorn: *giggle*
12:28 webmind heh
12:29 lypanov lol
12:31 audreyt that... is not exactly flattering :D
12:31 * lypanov giggles
12:32 Arathorn hence the apologies - but it does, uh, visualize the idea of an ever changing landscape being equivalent to sitting on the petals of a huge carnivorous plant.
12:32 Arathorn coffee & # :/
12:34 chris2 hey lypanov
12:34 audreyt I deny all associations, except that I maybe 1)flowery 2)carnivorous
12:34 lypanov audreyt: hungry? :)
12:34 lypanov chris2:
12:34 lypanov oops
12:35 lypanov chris2: http://paulfeng.tripod.com/
12:35 lypanov chris2: look at first video on page
12:35 audreyt actually yes... must.. feed... on.. flesh...
12:35 chris2 k
12:35 audreyt food, bbiab &
12:35 lypanov lol
12:35 Arathorn o/` feed me! o/`
12:35 lypanov audreyt: i searched for audrey looking for the above pic
12:35 Arathorn (if anyone's not seen a production (or the film) of Little Shop of Horrors - they're unquestionably missing out :) )
12:35 lypanov audreyt: try it, "Can't find Audrey? Ask your local store to carry it."
12:36 bsb joined perl6
12:36 * lypanov tests searching for "alex"
12:37 |mjk| joined perl6
12:37 gaal lumi: ping
12:38 rafl joined perl6
12:38 Juerd rafl: Please reenable the autobuilding on feather
12:38 chris2 lypanov: that soo reminds me of prince of persia :P
12:39 lypanov chris2: *exactly what i thought*
12:39 rafl Juerd: Too busy right now. Would tomorrow be soon enough?
12:39 chris2 lypanov: great minds ;)
12:41 Juerd rafl: Yes.
12:41 Juerd rafl: Thanks
12:42 rafl Juerd: Great. Don't forget to bug me continuously.
12:42 Juerd rafl: I've bugged you several times for this already; please add it to a local todo list :)
12:42 Arathorn audreyt: do you actually use m$ visio to do your visiolizations?
12:42 rafl Juerd: I'd need a script that bugs me with items in my local todo list then. Write it!
12:43 Juerd rafl: * * * * * mail rafl < ~/todo
12:43 audreyt Arathorn: yes. (but bbiab for real)
12:44 rafl Juerd: Works for me. Thanks!
12:44 ingy audreyt: I love you
12:46 pasteling "ruoso" at 201.8.192.43 pasted "How to get the <ident> part of this rule?" (8 lines, 217B) at http://sial.org/pbot/16311
12:48 lypanov chris2: great minds... um... played prince of persia when young? :P
12:48 chris2 =)
12:48 Juerd megahit!
12:48 chris2 megahit, i just tried to remember :P
12:48 Juerd k
12:48 Juerd k
12:48 Juerd k
12:48 Juerd k
12:48 chris2 it's actually the reason i got dosbox here :P
12:48 Juerd :)
12:49 ruoso audreyt, could you help me with  http://sial.org/pbot/16311 ?
12:50 chris2 bbl
12:59 svnbot6 r9558 | gaal++ | If you have several working directories and they all use a shared DrIFT,
12:59 svnbot6 r9558 | gaal++ | you need to point symlinks to the current one if you want to regenerate
12:59 svnbot6 r9558 | gaal++ | files. We should probably make this arrangement less hacky, but until
12:59 svnbot6 r9558 | gaal++ | we do, this "claims" DrIFT links.
13:02 svnbot6 r9559 | gaal++ | remove debug print
13:03 ingy audreyt: M::I won't install on my system: http://rafb.net/paste/results/zqKJe072.txt
13:03 Alias_ joined perl6
13:04 ingy Alias_:
13:04 Alias_ ?
13:04 ingy audreyt: M::I won't install on my system: http://rafb.net/paste/results/zqKJe072.txt
13:04 ingy any clue??
13:04 Alias_ Weird
13:04 Alias_ What is the currently installed version, and what are you installing
13:05 ingy installing from svn
13:06 Alias_ oh... that might not be such a good idea
13:06 ingy grrr
13:06 Alias_ Not guarenteed to be stable between releases for a while
13:06 ingy what is stable?
13:06 Alias_ 0.60
13:07 ingy I think I'll just release Module::Install::PMC as separate module then
13:07 svnbot6 r9560 | ruoso++ | now lrep can compile code that uses macros and rules from other modules.
13:07 Alias_ I'd like to see a bit more of that, thanks
13:07 Alias_ I think the extension loading process and what-to-bundle selection stuff is stable as it's going to get
13:07 ingy Alias_: a bit more of separation?
13:07 Alias_ yeah
13:08 Alias_ The main MI dist is getting really bloaty
13:08 ingy Hmm, I can just bundle it in M::C!
13:08 ingy that's what I do for Test::Base
13:08 Alias_ erm...
13:08 Alias_ define bundle
13:08 ingy see T::B
13:09 Alias_ You mean include for Makefile.PL-time, or install
13:09 Alias_ ?
13:09 Alias_ Because I would have though MI:PMC is a two-parter
13:09 Alias_ thought
13:09 Alias_ MI:PMC + MI:Admin:PMC
13:09 ingy I mean distribute M::I::PMC with M::C
13:09 ingy it is a two parter
13:10 Alias_ Will there be people using M::C for purposes other than releasing CPAN modules?
13:10 ingy just like M::I::TestBase is in T-B
13:10 ingy Alias_: doesn't matter
13:11 Alias_ Well, only that I'd prefer to keep the number of people installing MI itself locally to a minimum until closer to 1.0
13:11 ingy only matters if people want to use pmc without M::C
13:11 ingy anyway, this make most sense for now
13:11 Alias_ If you are installing the MI extensions without a dependency on MI, that's fine
13:11 ingy yep
13:12 Alias_ Just note you might run into some problems if commands move
13:12 ingy exactly
13:12 Alias_ Because while the extention-loading mechanism is stable, the commands aren't frozen yet
13:12 * ingy doesn't worry
13:13 Alias_ As long as you don't make a dep on MI, and are aren't worried about any command changes, I'm happy
13:13 Alias_ s/are//
13:13 Alias_ If you do put a dep on MI, seperating it from M:C would be appreciated, until 1.0
13:14 Alias_ Because most of the bug being thrown up only impact people with MI installed (and thus, assumed to be an author)
13:14 svnbot6 r9561 | gaal++ | * DrIFT.RuleJSON - very minor cosmetic fix
13:14 svnbot6 r9561 | gaal++ | * ReDrIFT instances
13:16 Alias_ Although speaking of that, I should document what is stable and what isn't
13:18 * Arathorn has been reading the PPI pod... this may be a totally blitheringly obvious question, but does perl6 also suffer from the problem of it being 'truly impossible to accurately parse Perl as both code and document at once'?
13:18 svnbot6 r9562 | ruoso++ | Now macros can be invoked. But... 1) They must be in the same package as the module who uses it (no way to call with full package name (Export???)). 2) macros defined in the same file still not working...
13:19 Alias_ Arathorn: It's not supposed to
13:19 Alias_ Arathorn: Well, it wasn't supposed to
13:19 Alias_ Arathorn: And then for a while, pre-pugs, it did end up suffering from the same problems
13:20 Arathorn right
13:20 Alias_ Arathorn: I had a chat with audreyt while she was at my place, and I gather that in order to make an actual working Haskell parser, there was some "push back" against @Larry relating to language features that caused said problems
13:21 Alias_ And so now, at the very least you get the equivalent of PPI::Tokenizer
13:21 Alias_ Although I'm not sure how we deal with a few other issues
13:22 Alias_ The dependency on an unwritten module problem... I don't know
13:22 Alias_ It may well end up being worse in regards to the PPI::Lexer part
13:22 svnbot6 r9563 | fglock++ | PCR - updated TODO
13:22 Alias_ I struggle to keep up, to be honest
13:22 Alias_ I'm still trying to work out how the hell I deal with having to handle .pm files in Perl 5 that are written in Perl 6
13:22 rantanplan_ joined perl6
13:23 Alias_ And .pmc/.pmx
13:23 Arathorn why is dealing any different?
13:23 Arathorn from the point of view of your IDE (of some kind)?
13:23 Alias_ Because the file is a .pm
13:23 Alias_ And so for almost every other thing, there's a language association
13:24 Arathorn surely the problem's no different to any other source filter, tho'
13:24 Alias_ And thus PPI will be invoked to scan it, almost certainly
13:24 Alias_ true
13:24 * ruoso still using .p6 -> .pm
13:24 Alias_ But this one is particularly nasty, because MOST source filters outside of Acme tend to keep at least the language LOOKING like Perl 5
13:24 Alias_ And PPI doesn't need Perl 5, it just needs something that looks like it
13:25 Alias_ Perl 6 doesn't look like Perl 5
13:25 Alias_ not at all
13:25 Arathorn surely Inline C doesn't keep the language inside looking like perl 5 ;)
13:25 Alias_ Inline C uses heredocs
13:25 Alias_ (doesn't it?)
13:25 * Arathorn quickly flips to the Inline pod
13:25 Arathorn so it does.
13:25 Alias_ which is all happy
13:26 Alias_ This however, starts LOOKING like Perl 5, then suddenly is not perl 5
13:26 Alias_ So any simple heuristic will probably be tricked
13:26 audreyt Alias_: what does "use v7;" do to PPI?
13:26 * Arathorn suddenly makes the Alias_ === ali.as connection and feels a little stupid (for a change)
13:26 Alias_ It parses
13:26 audreyt Alias_: and you expect perl5 that follows
13:26 Alias_ of course
13:27 audreyt as PPI is a perl 5 parser.
13:27 Alias_ The Tokenizer doesn't know any different
13:27 kolibrie joined perl6
13:27 audreyt but perl v7 may tokenize differently than v5
13:27 Alias_ use v7; assumes you'll run off and execute code
13:28 audreyt $ perl -Mv7
13:28 audreyt Perl v7.0.0 required--this is only v5.8.8, stopped.
13:28 audreyt probably not.
13:28 Alias_ right, it executes code
13:28 audreyt what code?
13:28 Alias_ If below the language surface
13:28 audreyt oh.
13:28 audreyt I see your point
13:29 Alias_ In fact, it hasn't even lexed it yet
13:29 Alias_ So it doesn't have a "use statement" yet either
13:29 Alias_ I might just have to go either a regex precheck
13:29 Alias_ Or... hmm...
13:29 Alias_ actually, that's it
13:29 audreyt yup
13:29 Arathorn if perl5 barfs at use v7, surely PPI should too? (and likewise use v6, just as perl would were it not for the crazy use v6-pugs magick)
13:30 Alias_ Otherwise I end up checking "if eq 'v6' for EVERY word in every document
13:30 Alias_ Arathorn: True
13:30 audreyt er no, you can check "use v6" for now
13:30 audreyt I mean, use vSTRING
13:30 Alias_ Arathorn: Except that use v6 won't barf as of next week
13:30 audreyt where string is >= 6
13:30 Alias_ or thereabouts
13:30 audreyt if you see "use v6-pugs" or "use v7" in PPI, I think the sane choice is to heredoc-it
13:30 Alias_ oh wait!
13:30 Alias_ audreyt: That's one very very magic heredoc
13:31 Alias_ hmm
13:31 Alias_ or is it
13:31 audreyt not very magic
13:31 iblechbot joined perl6
13:31 audreyt as the first stab, you can just do what perl ought to do
13:31 Alias_ trouble is that no v6; doesn't obey the heredoc termination string rules
13:31 Arathorn no more magick than the magick of perl5's use vSTRING-version behaviour
13:31 audreyt which is mark everything below that as one doc
13:31 audreyt you can forget about nov6 for now.
13:32 audreyt the idea is if you hand off the 6doc to something like Pugs::Parser::Perl6
13:32 audreyt _that_ will parse the nov6 for you
13:32 audreyt and call back to PPI
13:32 audreyt and if you don't handoff
13:32 Alias_ oh dear...
13:32 Alias_ hmm
13:32 audreyt then logically the rest of the file is just opaque.
13:32 Alias_ yes, but eep
13:32 audreyt conceptually, "no v6" occurs at v6 context
13:32 audreyt it's just means switching back to p5 parsing.
13:32 audreyt we emulate that in M::C with preparse, but conceptually that's what should happen.
13:32 Alias_ I don't have access to that though
13:33 Alias_ "::Isolated"
13:33 audreyt yup, so currently just mark everything below it as opaque.
13:33 audreyt that is I think sane and correct.
13:33 Alias_ Can you do me a favour then, and document that "use v6-pugs;" must occur on a line on it's own
13:33 audreyt (and matches perl's behaviour on "use CGI; use v7; ..."
13:33 Alias_ It so I can probably compensate
13:33 audreyt ok.
13:34 audreyt will do
13:34 Alias_ Any more complex than that, and I'm screwed down in the edge cases
13:34 Alias_ (I think)
13:34 audreyt (but I will allow whitespace+comment after that)
13:34 audreyt use v6;    <spaces here>
13:34 audreyt use v6; # now begins v6
13:34 Alias_ Let me go for a walk, and I'll let you know
13:34 audreyt k
13:35 Alias_ Need to work out what a V6 heredoc will look like
13:35 Alias_ Because it won't fit the current model
13:35 audreyt k
13:35 audreyt Alias++ # improving the toolchain
13:35 Limbic_Region joined perl6
13:35 audreyt (but I don't think it's specific to v6-pugs; "use v7", "use v10" should be parsed that way too)
13:36 * Alias_ nods
13:36 Alias_ The problem will be deserialisation, but I'll be back in 10 minutes
13:36 audreyt Alias++
13:37 audreyt ruoso: named-capture inside return block... try $/->{ident}
13:38 * ruoso trying
13:39 ruoso audreyt, nops... I'm using $()->[2]{ident}[0]{ident} by now
13:39 audreyt k
13:39 audreyt it should be $<ident>
13:40 ruoso but I just realized the code inside the rule is not really being parsed as perl6 code...
13:41 * ruoso successfully compiled a code with a macro definition and use in the same file :)
13:42 ruoso and it worked... :) :) :)
13:43 audreyt ruoso: owoot. $<ident> really should work tho
13:43 * ruoso testing $<ident> now
13:43 audreyt it's parsed in Emitter::Rule::Perl5 line 292
13:43 ruoso I don't think the code inside the rule is being parsed
13:44 audreyt it is being filtred
13:44 audreyt in your tree it's line 283
13:44 audreyt RuleInit
13:45 ruoso $<indent> is an array
13:45 ruoso $<ident> is an array
13:46 audreyt hm, the code inside really should make use of full match objects
13:46 audreyt talk to fglock about that
13:46 audreyt but for now explicit deref is fine
13:49 svnbot6 r9564 | ruoso++ | eval the macro definition when parsing it, so uses of this macro can be parsed later in the same file
13:49 svnbot6 r9563 | fglock++ | PCR - updated TODO
13:51 Limbic_Region did anyone/everyone see eric256's p6 rule post at the Monastery?
13:54 Limbic_Region eric256++
13:54 Limbic_Region advocacy++
13:56 ruoso Limbic_Region, id?
13:56 Limbic_Region http://perlmonks.org/index.pl?node_id=536423
13:57 Limbic_Region though if he also checked it in to the repository under examples
13:59 * ruoso should now move things from Perl6Init.pm to Perl6.p6
13:59 Arathorn is there a trac (or a way to abuse openfoundry) to get at svn changesets on the web?
13:59 kolibrie Limbic_Region: he did, or at least someone did
13:59 audreyt Guy Steele's paper "Growing a Language", a very _very_ nice and relevant read if you had missed it: http://homepages.inf.ed.ac.uk/wadler/steele-oopsla98.pdf
13:59 Arathorn (short of looking at the svn commit mails or logs straight off svn)
14:00 Limbic_Region Arathorn - always check the Pugs homepage when looking for stuff Pugs related
14:00 * Arathorn sees the recent commits link
14:01 Arathorn thanks
14:01 Limbic_Region http://rt.openfoundry.org/Foundry/Project/Source/index.html/pugs/log/
14:01 Arathorn shame that openfoundry's so slow (from the UK, at any rate) :(
14:01 audreyt yeah. I blame the .tw link :/
14:02 clkao i think tw <-> most of europe is now via US
14:02 clkao :/
14:03 audreyt yeah :/
14:05 Arathorn this is certainly being chucked through .de -> NY -> AT&T -> SF -> .tw
14:05 Arathorn ah well
14:06 Arathorn interestingly the latency is incredibly stable at 291.9ms, though
14:12 GabrielVieira joined perl6
14:13 svnbot6 r9565 | ruoso++ | iterator_engine.t working...
14:13 nothingmuch moosen
14:19 Alias_ left perl6
14:24 FurnaceBoy joined perl6
14:28 svnbot6 r9566 | ruoso++ | finally a Makefile... "use" now supported...
14:30 Lorn__ joined perl6
14:33 FurnaceBoy_ joined perl6
14:35 vel joined perl6
14:36 penk left perl6
14:43 chris2 joined perl6
14:46 ruoso hmmm... the compiler should keep the comments... #!/usr/bin/perl is a usefull comment
14:48 Lorn__ is now known as Lorn
14:51 ruoso which would be a good name for the rule which defines ":="
15:07 ruoso hmmm
15:08 justatheory joined perl6
15:10 ruoso I'm having troubles defining a rule to use :=, because := is already used in rule definition...
15:11 ruoso escaping compiles...
15:14 webmind sounds like a crap product ?
15:14 webmind oops
15:14 webmind wrong window
15:27 vel joined perl6
15:31 Qiang joined perl6
15:37 ruoso whats wrong with "<term1><?p6ws>?\=<?p6ws>?$value:=<term1><?p6ws>?\;"?
15:40 * ruoso beats himself
15:40 ruoso missing parenthesis
15:43 svnbot6 r9567 | nothingmuch++ | bootstrap lines for a subsequent performance ;-)
15:44 Guest37849 joined perl6
15:46 eric256 joined perl6
15:46 svnbot6 r9568 | ruoso++ | $a = $b rule implemented. lrep uses Getopt::Std now. Start what will be lrep.p6
15:47 * eric256 wonders if i do a PM monks will get agitated if i post a p6 post everyday ;)  /me tries to think of a new example to build...ideas welcome
15:48 ruoso bye all... going lunch...
15:48 ruoso lrep is close to compile itself... just some rules missing...
15:48 ruoso bye
15:50 Ara5n joined perl6
15:52 PerlJam eric256: I would welcome perl6 posts to perlmonks (But only if they are instructive or otherwise useful.  A post a day just to post would be annoying)
15:52 eric256 heheh oh come on! ;)
15:53 eric256 nah i just want to share what i'm learning and show that there is actualy p6 out there. i'm assuming we can still use all the help we can get ;)
15:53 Ara5n so, what's the first recourse if a brand new pugs segfaults at 'Welcome to Pugs' when run as a ./pugs?
15:53 Ara5n (gdb yields a huge corrupt stacktrace)
15:53 integral o_O
15:53 integral you're using ghc 6.4.1?
15:54 Ara5n ghc 6.5
15:54 Guest37849 is now known as GabrielVieira
15:54 Ara5n (whatever minor version debian thinks is ghc-cvs under sarge)
15:54 Ara5n using r9556 of pugs
15:54 integral well ghc 6.5 isn't a stable release of ghc.   So you should be expecting segfaults, no?
15:55 Ara5n if you say so
15:55 * Ara5n downgrads
15:55 Ara5n e
15:55 Ara5n s
15:55 * integral shrugs
15:55 integral of course, you could submit a bug report, debug GHC, figure out if it's a GHC or pugs problem, etc
15:55 Ara5n it used to work fine around r7000 (last time I actually got 'round to building a pugs)
15:56 integral might be worth debugging then
15:56 Ara5n moreover, make smoke was running fine (until i got bored)
15:57 TimToady Ara5n: maybe it's the readline problem again?
15:57 TimToady if it's only the interactive pugs that croaks...
15:57 Ara5n sounds likely
15:57 * Ara5n seems to remember having problems with cpan & readline on this box at some point
15:57 * Ara5n googles
16:00 theorbtwo joined perl6
16:06 Ara5n does pugs (or ghc 6.[45]) prefer libreadline 5.0 or 4.3?
16:07 rgs I use it with libreadline5.1
16:08 Ara5n rgs: thanks
16:10 Barry joined perl6
16:12 Barry left perl6
16:15 Ara5n well, it dies in (or on entering?) repLoop
16:15 Ara5n which does sound vaguely readline related
16:20 Ara5n yeah, this is blatantly the same problem as eric256 and kolibrie encountered over the last few weeks
16:20 * Ara5n disables readline support & rebuilds
16:21 Ara5n looks like a problem with 5.0 v. 5.1
16:23 Ara5n rafl: ping (c.f. http://colabti.de/irclogger/irclogger_log/perl6?date=2006-02-02,Thu&amp;sel=583#l925 )
16:23 rafl Ara5n: Here I am
16:24 Ara5n rafl: i appear to be encountering the "compiling latest svn of pugs on debian sarge segfaults in interactive mode" problem from Feburary
16:24 Ara5n and the log there suggests pinging you on encountering it
16:24 Ara5n (apologies if the suggestion there is bogus)
16:24 rafl Ara5n: Build log please?
16:24 rafl Ara5n: It's fine with me.
16:26 Ara5n rafl: what's the best mode of build log? (i didn't save stdout from Makefile.PL or make :/ )
16:26 rafl Ara5n: Maybe you started it in screen or something like that?
16:26 Ara5n i did - but the screen has since died :/
16:26 rafl Ara5n: Just pasting the last few lines where the error occurs may be enough.
16:27 Ara5n well, the build process completes fine - and pugs ends up being dynamically linked against libreadline 5.0.10 (sarge's current)
16:27 Ara5n but ./pugs segfaults in the depths of repLoop with a corrupt stack on being run
16:27 Ara5n just before the prompt would appear.
16:27 Ara5n (this using sarge's ghc-cvs, for better or worse)
16:28 Ara5n and pugs in non-interactive mode runs fine.
16:29 * Ara5n is going to try upgrading from readline from 5.0 to 5.1
16:29 rafl Ara5n: Then I'd like to see the output of ldd ./pugs and a gdb backtrace after the segfault.
16:30 nothingmuch joined perl6
16:31 Ara5n http://www.rafb.net/paste/results/rgYS4E82.html
16:33 rafl Too bad.. no debugging symbols in parts of the code.
16:34 rafl In fact I fear I can't help you very much. I maintain pugs for Debian, but it's only in unstable and testing and I never tried to build it on stable.
16:34 rafl I also wonder if that can work as ghc isn't recent enough there.
16:35 Ara5n well, used to build & run fine around November(?) of last year with ghc-cvs, which is a 6.5 flavour
16:35 * Ara5n will try pulling in libreadline 5.1.6 from unstable and see what happens
16:35 Ara5n thanks for checking :)
16:38 Ara5n actually, that's blatantly not going to work through apt
16:38 * Ara5n just installs 5.1 from source and encaps it
16:39 orafu joined perl6
16:40 Ara5n 5.1 dies the same way :(
16:50 * Ara5n rebuilds with readline disabled :|
16:51 * eric256 begins building a BASIC parser just for kicks
16:51 osfameron actually, having a VB parser might not be entirely unuseful
16:52 eric256 i wish that rules returned more info on where/why they failed
16:52 * Limbic_Region wonders if eric256's BASIC parser will handle peek and poke as well as the line, circle, paint functions
16:52 * Limbic_Region really liked BASIC
16:53 Ara5n paint rocked
16:53 eric256 actualy i'm just aiming for LET, PRINT, and GOTO to start with. ;)
16:53 Ara5n especially as you could see the blitting happening over a matter of seconds
16:53 eric256 trying to learn how to build a grammar
16:56 * eric256 kicks the rules he made
16:56 eric256 lol
16:58 eric256 do grammars not work yet?
16:59 rjbs nothingmuch suggested that I mention, here, my release of Sub::Exporter
16:59 rjbs it's an exporter that builds in generators/currying
16:59 * geoffb rezzes in
17:00 geoffb Hey all!
17:00 rjbs irta a clever way of saying "breezes in"
17:00 geoffb rjbs, it's a pseudo-reference to Tron
17:00 rjbs that was on TV about fifteen times this weekend.
17:01 geoffb *chuckle*
17:01 geoffb Anyway, question: where is the SVN repo for the synopses?
17:02 rjbs the p6 synopses?
17:02 geoffb rjbs, yes
17:03 Ara5n svn.perl.org/perl6/doc
17:03 Ara5n (trunk/design/syn iirc)
17:03 geoffb Ara5n, cool, thank you
17:04 Ara5n np - fun to be able to answer rather than ask a q for once ;)
17:04 geoffb heh
17:05 geoffb blech, pod.  Man, I hate pod.  Ah well.
17:05 Ara5n on which note... why does pugs insist on recompiling Data.Yaml.Syck everytime it's made?
17:06 geoffb Are the synopses still being written roughly 1:1 with camel book chapters?
17:09 TimToady Ara5n: it is reportedly a workaround to some bug or other.
17:09 geoffb And if so, is S08 missing, or has it been absorbed into other places?
17:10 Ara5n TimToady: fair enough. (and thanks for the readline pointer - on disabling it, pugs runs happily in interactive mode)
17:10 TimToady geoffb: S08 is probably subsumed by S09 and others.
17:10 geoffb TimToady, thanks
17:11 TimToady There are also some draft synopses in pugs/docs/AES, but that's a different repository.
17:11 geoffb I haven't read AES since they came out, so I figured time to reread them
17:11 stevan joined perl6
17:11 geoffb TimToady, how draft?  "Shot in the dark" or "reasonable start"?
17:12 TimToady readsonable starts, most of them.  Things that have to be determined more by the implementors than the language, like exactly how does threading and such work...
17:12 geoffb Also, Is there anything still of value in A and E besides E07 and historical reference?
17:12 geoffb nodnod
17:13 TimToady Most of the As have [Update: ...] markings where things have diverged, so they're still somewhat useful for the original thinking (or lack thereof).  We still find some things that were inadvertently left out of the Ss, but we're patching them as we go along.
17:15 audreyt geoffb: "reasonable" ones are moving to docs/Perl6/Spec/
17:15 svnbot6 r9569 | audreyt++ | * repo-copy S22 to CPAN.pod
17:15 audreyt geoffb: also, feel free to populate docs/Perl6/Overview/ and docs/Perl6/Tutorial/
17:16 geoffb OK, then it's fair to say that for most purposes, just S*, E07, and #perl6?  I'm assuming here that anything still in A that hasn't been carried over is enough out of date to need to ask here ...
17:16 TimToady it's a good first approximation
17:16 audreyt geoffb: also, if something gets talked about in A but not in S, it probably should be moved to S if it's still normative
17:16 geoffb audreyt, what's moving to docs/Perl6/Spec?
17:16 geoffb The S?
17:16 marmic joined perl6
17:16 audreyt geoffb: the nonnormative docs/AES/*
17:17 geoffb audreyt, oh, OK.
17:17 audreyt geoffb: the S is not moving there, though I've been thinking about svn:external
17:17 geoffb audreyt, nodnod
17:17 audreyt clkao: is svk going to do anything about svn:external?
17:18 audreyt clkao: (or anything similar)
17:18 geoffb audreyt, and as for helping with d/P/O/ and d/P/T/, that will have to wait until $work is not crushing.  I'm stealing time from a warped pocket of the universe in order to ask these questions.  :-)
17:18 audreyt geoffb: ah ok... you are operating under imaginary tuits
17:18 TimToady Basically the ones on svn.perl.org are more language-centric and (hopefully) stable, while the ones under pugs/, while "nonnormative", are in a sense more important at this point because they're recording what is implementable, which us language designers are relatively clueless about...
17:18 geoffb audreyt, completely.  I hope one day to figure out how to rotate them 90 degrees towards the positive reals.
17:18 audreyt that's understandable; I'm on quaternion tuits here
17:19 rgs square tuits become negative then
17:19 audreyt that's why we have them in round.
17:19 rgs indeed.
17:20 geoffb TimToady, OK, thanks.
17:21 TimToady Basically, there are a lot of intentional "holes" where we think it's better for the actual implementators to fill in than for us to guess blindly.
17:21 geoffb TimToady, what is that?  Wisdom in your old age?  Say it isn't so!
17:22 audreyt (I guess that includes all the core APIs for builtin objects :))
17:22 TimToady well, I got the old age part down pat.  not sure about the wisdom part...
17:22 * eric256 notices that a recent build of pugs is much slower than the one i was running yestarday
17:23 * geoffb glances at his young son, who ably demonstrates the wisdom that "If it makes your mouth happy, it must be good."
17:23 TimToady ambiguous.  does "recent" mean before or after yesterday?
17:24 ruoso joined perl6
17:24 eric256 how do i access a grammar?  like i want to do $basic_program ~~ /Basic.program/; but i think i have the syntax wrong
17:24 eric256 i tried <Basic.program> too with no joy
17:25 audreyt Basic::Program surely?
17:25 ruoso Basic.program is the grammar name?
17:25 ruoso or one of the rules in the grammar?
17:25 eric256 Basic is the grammar, program is the rule
17:26 ruoso it still depends on the implementation...
17:26 clkao audreyt: hopefully. soon.
17:27 ruoso Maybe I'm wrong but the rules are still subroutines, not methods... at least in lrep and in P::C::R
17:27 TimToady how does grammar inheritance work then?
17:28 * ruoso hides...
17:28 ruoso it still doesn't work
17:29 ruoso but shouldn't be hard to change...
17:29 * ruoso wonders why it wasn't made as methods in the first place...
17:29 eric256 thanks to whoever made the $match.perl.say print nicely
17:29 TimToady ruoso: no need to hide.  As far as I know, PGE uses subs rather than methods.  I was more asking from curiosity, wasn't meant to be a rhetorical question...
17:29 audreyt eric256: in Parrot-PGE, I don't think <Foo::bar> works
17:30 audreyt eric256: and you are welcome
17:30 audreyt eric256: in fact in my current Parrot, <Foo::bar> is a segfault
17:30 eric256 yea i've come to that conclusion so i commented out the grammar part
17:30 ruoso TimToady, :)... It's on my list already... :)
17:30 audreyt eric256: but if youa re in the same package
17:31 audreyt you can just use <program>
17:31 audreyt in actual fact, regardless of the package, because the Foo:: doesn't work
17:31 audreyt you can just use the <program>... for now
17:31 audreyt that is of course subject to change.
17:32 audreyt oh, it fails because we had not recreated the Parrot namespaces
17:32 audreyt and so it tries to access the Parrot namespace "Basic::"
17:32 audreyt creating a new PMC
17:32 audreyt and dies with the rather cryptic
17:32 audreyt Illegal PMC enum (0) in new
17:33 eric256 lol. i'm glad that all means something to you
17:33 audreyt I find delight in your gladness  :)
17:34 audreyt so <Foo::bar> will work once we target parrot with objects
17:34 * eric256 finaly gets his rules to work. now to read from the data section...pugs does already have a __DATA__ section capability right?
17:34 audreyt eric256: it's t/syntax/POD.t
17:34 TimToady __DATA__ is dead
17:34 audreyt and it looks like it's not there
17:34 TimToady =begin DATA or some such
17:35 eric256 its DEAD? /me morns his data section.. alright off to look at pod
17:35 TimToady instead you get multiple pod streams, and the last one doesn't need =end
17:36 * geoffb rezzes back out again (thanks all)
17:36 TimToady I am also reminded of .hack/sign
17:36 audreyt in actual fact... that's a really good candidate for M::Cing.
17:36 * ruoso thinks about the new obfu styles created and some disabled by this
17:37 audreyt ingy: you of course thought about M::C Perldoc?
17:37 TimToady do we also get a .pmd now? :)
17:38 nothingmuch is this like .swp, swo, etc?
17:38 audreyt precompile the parsed POD stream into a BEGIN that populates $={FOO}
17:38 ingy audreyt: of course :p
17:38 TimToady .pmp?
17:38 nothingmuch audreyt++
17:38 audreyt =head1 NAME
17:38 nothingmuch TimToady: that's a nice line for our rap song
17:38 audreyt accessible for
17:38 audreyt $={NAME}
17:38 nothingmuch .pmpin your pod into deep data structures
17:38 audreyt as an arrayref or a string
17:38 TimToady BOOM BOOM chika chika
17:38 audreyt %= is unreserved
17:39 audreyt so we can abuse it
17:39 nothingmuch TimToady: see also misc/rap.txt
17:39 nothingmuch stevan made big progress today
17:39 nothingmuch he chose a tune to rip off ;-)
17:39 TimToady TheDamian was working on a a = twigil proposal for all this, so perhaps should sync with him.
17:39 ingy audreyt: getting close on makefile support for .pmc
17:39 audreyt twigil for perl5?
17:39 audreyt oh, perl6
17:40 eric256 is there a way to tell it that i want it to capture the <ident> but not put it in an <ident> structure....right now <?ident> causes it to match but discard
17:40 ingy audreyt: I think pmcs should automatically be added to clean_files, no?
17:40 audreyt ingy: sure, why not
17:40 audreyt ingy: oh wait
17:40 audreyt no, probably not.
17:40 ingy because you want to check them in
17:40 Ara5n joined perl6
17:40 audreyt yeah.
17:40 nothingmuch err?
17:40 nothingmuch huh?
17:40 ingy yeah
17:40 audreyt I think the perl5 runtime should convert the $*FOO into $*{FOO} and $=BAR into $={BAR}
17:40 nothingmuch autogenerated in repo == baaaaaaaaaaaad
17:41 ingy nothingmuch: bzzzt wrong
17:41 nothingmuch better have a snapshot service with precompiled ones
17:41 eric256 hmmm never mind he......i broked something else somewhere else  loosing all captures
17:41 ingy well M::I inc checked in is good
17:41 cdpruden joined perl6
17:41 ingy and that's generated
17:41 nothingmuch 99% of the deployment problems I see in e.g. Catalyst land are due to stuff that should be autogenerated being checked in
17:41 audreyt and we don't need no snapshot service for that.
17:41 nothingmuch and not regenerated
17:42 rgs audreyt: hmm no because in perl 5 at least %= is forced into main::
17:42 ingy actually maybe nothingmuch is right in this case
17:42 nothingmuch in pugs land we don't really deal with deployment
17:42 ingy chacking in .pmcs is really not a service to $other_hackers
17:42 audreyt rgs: tie it and look at (caller(0))[0].
17:42 nothingmuch but explaining to n00bs 10 times a day that they shoudl zap all the pmcs and ignore svn
17:42 ingy checking in inc *is* good
17:42 nothingmuch and then to tell them "one minute" and recheck them in en masse
17:43 TimToady should probably be a lexical import, actually...
17:43 nothingmuch == not good
17:43 ingy because $other_hackers rarely need to change inc
17:43 rgs audreyt++ # has evil ideas *fast*
17:43 nothingmuch also, most people won't need it
17:43 audreyt rgs: well, it all starts in 1999 where I reasoned I want to tie the symbol table
17:43 audreyt rgs: I couldn't, so all the smaller evil ideas follwoed
17:44 rgs still not possible :)
17:44 nothingmuch if you assign *{"="} to $some_obj that has '%{}' overloaded that doesn't "jsut work", right?
17:44 ingy audreyt: I'll add them to clean_files for now
17:44 audreyt nothingmuch: nope
17:44 audreyt nothingmuch: it looks at the real reftype
17:44 ingy it'll make for easier testing :p
17:44 audreyt ingy: is there a distinction between realclean and clean?
17:45 ingy I don't think you can add files to real_clean
17:45 audreyt ingy: can we only add it to realclean?
17:45 * nothingmuch thinks the biggest load of wasted effor in the perl community is kwalitee
17:45 nothingmuch why do people devote so much attension to something so silly?
17:46 ingy nothingmuch++
17:46 TimToady audreyt: rather than playing tying games (er...) it'd probably be better if the compiled P5 just declared a lexical twigil-holder at the top of the file.
17:46 audreyt ingy: you can
17:46 nothingmuch and I don't mean just getting it
17:46 audreyt ingy: just populate the realclean key
17:46 nothingmuch discussing it at nauseum
17:46 nothingmuch new kwalitee tests
17:46 nothingmuch new ideas
17:46 nothingmuch the philosophy of kwalitee
17:46 nothingmuch the definitions on the wiki
17:46 nothingmuch and the tests are sooooooooooo badly implemented
17:46 audreyt ingy: it should work. I think that's the best - look at EU::MM doc for semantic
17:46 eric256 hmmm if you can read from pod sections, could you right to them as well? ;)
17:46 nothingmuch e.g. it checks that the module has a pod test
17:46 audreyt ingy: clearly .pmc is among "derived files"
17:46 rjbs nothingmuch: I don't think it's a total waste, it's a nice little lint -- but yeah, it's certainly not worth the effort some people put in, especially given some of the implementation.
17:46 nothingmuch instead of checking that it has good pod
17:47 rjbs nothingmuch: that's the most obnoxious one. by far.
17:47 ingy audreyt: ok
17:47 audreyt ingy: M::I::Makefile needs a real_clean_files()
17:47 audreyt but it's trivial. thanks a bunch :)
17:47 nothingmuch rjbs: not a total waste, just that effort:gain is too big
17:47 rjbs nothingmuch: for the authors, but not for me! :)
17:47 nothingmuch otoh effort:gain of working on phallanx is pretty high, theoretically
17:47 nothingmuch err, pretty low
17:47 ingy audreyt: did you see that I am distributed M::I::PMC in M::C?
17:48 nothingmuch gain:effort is pretty high ;-)
17:48 ruoso %args = (); is still valid, isn't it?
17:48 ingy er, M-C
17:48 nothingmuch but i don't see people discussing *that* to death on perl-qa@perl.org
17:48 audreyt ingy: I saw, it's obviously sane
17:48 nothingmuch ingy: that looks like an emacs subprompt
17:48 rjbs nothingmuch: it requires more work. :(
17:48 nothingmuch rjbs: yeah.. *sigh*
17:49 lampus joined perl6
17:49 audreyt TimToady: want to join irc.perl.org #parrotsketch in 10 minutes? :)
17:49 TimToady ruoso: yes, if %args is declared already.  otherwise need a 'my'
17:49 audreyt TimToady: re twigil holder, yeah, it's prolly silly.
17:49 audreyt I mean, the tie-pkg idea
17:49 audreyt maybe just compile the twigil forms out.
17:49 audreyt since we are preprocessing anyway
17:50 * audreyt praises PPI for (somewhat) sane macro processing
17:50 TimToady The v6 is already the two-language hack.  don't need more...
17:50 ruoso TimToady, ok... the my is before...
17:50 ruoso TimToady, no rule for my %args = (); yet
17:50 audreyt TimToady: well, I'm thinking about using it in non-v6 code
17:50 audreyt TimToady: but in Perldoc.pm
17:50 audreyt (port of the perl6 DOM to perl5)
17:51 audreyt but may be too silly. maybe all p6 magick should be properly in Pugs::Runtime and hence in v6
17:51 audreyt like the Match overoverloading etc
17:51 svnbot6 r9570 | eric256++ | Added a realy basic BASIC parser, that doesn't realy work yet.
17:51 svnbot6 r9571 | ruoso++ | empty_list rule available... one more line to lrep.p6
17:51 TimToady the more we try to make p5 look like p6-but-not-quite, the harder it is to translate, if the semantics get off...
17:51 audreyt it's harder to translate 'idiomatically'
17:51 audreyt yeah.
17:51 audreyt better not make your (and Alias's, and MADhackers') life more miserable
17:52 eric256 if someone could peak at examples/rules/basic.p6 and give me any idea why its not captureing the actual text i would appreciate it
17:52 TimToady I worry a lot about the new switch, for example.
17:52 TimToady In an Alias_ey sort of way.
17:52 rgs the ~~ feature ?
17:52 audreyt given
17:52 audreyt use feature given, that is
17:53 TimToady I worry about the semantics of p5 ~~ not matching p6 ~~ in the long run.
17:53 rgs I think that's the ~~ smart match that will be the hardest to translate right, among the new ones
17:53 audreyt eric256: it's capturing '$;'
17:53 rgs for example, what does it return in list context ?
17:53 TimToady Well, maybe they'll converge okay.  But I do worry.
17:53 eric256 yes... but it should be capturing the whole text...at least i thought it should ....
17:54 TimToady where's a language designer when you need one.  :/
17:54 audreyt eric256: ws
17:54 audreyt eric256: whitespace are ignored
17:54 audreyt <ws>
17:54 audreyt or <' '>
17:54 audreyt or \s+
17:54 eric256 ohhh dear. i see. lol
17:55 audreyt the joy of default /x
17:55 eric256 yea that will take some practice to get used to
17:55 TimToady even inside <[...]>, you'll note.
17:55 rgs TimToady: on the other hand p5's ~~ can be expressed entirely in terms of perl 5.8 paraphrases. So you can translate it non-idiomatically (and painfully)
17:56 nothingmuch rgs: yes, but while this is technically better in that it's more accurate, it's hardly a translation
17:56 nothingmuch as far as the user is concerned it just makes it run there
17:56 nothingmuch it's not really "ported"
17:56 TimToady p5given $x {...}
17:56 elmex_ joined perl6
17:56 nothingmuch if p5given is the result of a perl 5 given that's one more thing the user will have to iron out later
17:56 rgs you can also compile everything to assembly code and make that run under an chip emulator written in perl 6. *that* would be a mathematically correct translation.
17:56 nothingmuch and one more thing whose subtle semantics people won't want to remember
17:57 nothingmuch if ~~ works well in Perl 6
17:57 audreyt rgs: TimToady is after idiomatic translation
17:57 nothingmuch but works just slightly different in Perl 5
17:57 TimToady I have a sneakin' suspicion the translator will be cranking out a lot of p5foo() function calls.
17:57 rgs audreyt: indeed
17:57 audreyt rgs: we all know semantic-correct translation (like Pugs::Emitter::*::Perl5) always works
17:57 nothingmuch then the usefulness of it's DWIM-fu is kinda lost into a big maze of fear for every user who has seen both p5given and given
17:57 rgs I suspect there will be problems with ties, too
17:57 audreyt oh, ties are in perl6.
17:57 rgs with their perl 5 bugs ? :)
17:58 eric256 hehe with the new whitespace rules my grammar brings pugs to its knees. lol
17:58 TimToady rgs: such as being able to tie any old variable?
17:58 rgs for example. or more internal bugs, like magic leaking or such
17:59 audreyt eric256: maybe try port your code to perl5 using Pugs::Compiler::Rule ?
17:59 rgs I suspect lots of perl 5 coders have coded around interpreter misfeatures
17:59 * nothingmuch has on few occasions
17:59 eric256 audreyt i'm still no where near clear how that would work. lol
17:59 * audreyt thrives on such misfeatures
18:00 nothingmuch audreyt: ?
18:00 elmex_ joined perl6
18:00 TimToady There's no way to do perfect translation, but hopefully we can at least mark where the translator is unsure.
18:00 audreyt eric256: err, read the pod: http://search.cpan.org/dist/Pugs-Compiler-Rule/lib/Pugs/Compiler/Rule.pm
18:00 rgs yes, and refine the translator over time
18:00 rgs that said, time for food &
18:01 audreyt eric256: it's in perl5/Pugs-Compiler-Rule/ -- you can start by writing a "rule" function to define new rules
18:02 ingy audreyt: what happens when M::I::Foo does $self->admin->bar() ?
18:02 audreyt it's just *Pugs::Grammar::Rule::language = Pugs::Compiler::Rule->compile('...')->{code}
18:02 audreyt ingy: it looks up M::I::A::* to find bar
18:02 ingy on the user side
18:02 audreyt oh. you need to say
18:03 audreyt $self->is_admin
18:03 audreyt to guard that
18:03 ingy super you++ thanks
18:06 * eric256 asks stupid question....why isn't that module avaiable in pugs?
18:09 PerlJam eric256: um ... what do you mean?
18:09 eric256 why would i write it in perl5 using that module instead of pugs?
18:10 PerlJam i give up.  why would you?  :-)
18:10 eric256 audreyt just told me to. thats why i'm confused
18:11 audreyt eric256: er beause, well, you see, that module is under active dev and API change
18:11 audreyt eric256: the plan is indeed to switch to that module once it stabilizes a bit.
18:12 eric256 ahh but there is no current way to use it in pugs?
18:12 audreyt well, use perl5:Pugs::Compiler::Rule
18:12 chip joined perl6
18:12 PerlJam hey chip
18:13 eric256 hehe that would be a nasty little loop. /me decideds to wait just a little on that one
18:16 ingy audreyt: I think we need to change pm_to_blib to be :: (double colon)
18:16 audreyt ingy: goahead
18:17 ingy audreyt: sadly I'll need a M::I release for that
18:17 ingy or a gonzo hack
18:17 audreyt ingy: also, you merged my pugs/perl5/M::C changes (including the removal of the extra "benefits" line in POD)?
18:17 audreyt ingy: a M::I release please. we are overflowing with gonzo hacks
18:17 Juerd I always picture Audrey's ::-slide in her Haskell talk when I see a lone ::. It's so beautiful, the four dots.
18:17 ingy hi chip
18:18 ingy audreyt: I'd want Alias to do that though
18:18 audreyt Juerd: indeed.
18:18 audreyt ingy: not me? why? *pout*
18:18 ingy audreyt: you have time?
18:18 ingy ok!
18:18 audreyt I'm operating on quarternion tuits, so sure
18:19 ingy fine
18:23 eric256 err don't name rules "print" lol. /me learnd that the hard way
18:23 audreyt lol
18:23 audreyt yeah, they are just functions.
18:24 eric256 no error. but it ends up capturing just the first letter...sort of..it was very weird
18:24 audreyt eric256: PGE has builtin <print>
18:25 audreyt it matches a single IsPrint
18:25 audreyt and can't be overridden
18:25 audreyt well, not without the <Foo::bar> support is hacked in
18:26 eric256 hehe. well that explains alot of what was happening then
18:26 broquaint What's the quickest way to run a test with an updated Prelude.pm? I assume an updated Prelude.pm.yml.gz will do the job.
18:26 audreyt broquaint: I think so yes
18:27 broquaint Cool. How do I do that? :)
18:27 broquaint Get pugs to emit YAML then just gzip it up?
18:28 ingy audreyt: M::I Makefile.PL is not actually making a Makefile
18:28 ingy Writing Makefile for Module::Install
18:28 ingy LIES ^^
18:29 audreyt broquaint: well, "make pugs" does that for you
18:30 Juerd .pm.yml.gz  # heehee
18:30 Juerd .pm.yml.gz.pgp.md5.bz2
18:30 Juerd Hm, no, that's just silly, to bz2 an md5 checksum file
18:31 TimToady .say
18:34 broquaint So it does, audreyt :) Think I'll just nab that part of the Makefile ...
18:37 audreyt broquaint: cool! add a new target perhaps
18:37 audreyt to Prelude.pm.yml.gz
18:38 ingy audreyt: ping
18:40 TimToady audrey's on parade at parrotsketch at the moment
18:41 ingy TimToady: thanks. you don't know the inner evils of M::I perchance?
18:41 TimToady shake
18:44 * ingy implements $gonzo_hack
18:44 audreyt mm parade.
18:44 ingy audreyt: need your help
18:44 eric256 did you get to ride on a float and wave at all of the lowly people on the street?
18:44 audreyt ingy: yes?
18:45 ingy M::I won't install
18:45 ingy It won't create it's own Makefile
18:45 audreyt wow.
18:45 audreyt permission?
18:46 audreyt a fresh checkout from svn worked
18:46 ingy it says Writing Makefile for Module::Install
18:46 ingy but doesn't write one
18:47 audreyt ingy: trace EU::MM::flush
18:47 * eric256 realy realy realy loves rules
18:48 eric256 i'm might get divorced just so i can marry them! ;)
18:48 audreyt aww
18:48 TimToady that would be against the rules
18:49 ingy hisss
18:49 eric256 its like having a parser right there. all you need to do is tell it how it works...once code refs work you could build like a whole miny language
18:49 audreyt eric256: coderef works... in p5...
18:49 ingy audreyt: trace?
18:49 * audreyt tries to steer eric256 toward hacking Pugs::Compiler::Rule
18:49 * eric256 spits on p5
18:49 audreyt ok, I got the idea :)
18:49 audreyt ingy: trace, as in, put print statements, etc. I can't dupe the bug here.
18:50 eric256 hehe. i looked over it and was totaly confused i would need lots of hand holding to get anything done
18:50 oozy joined perl6
18:50 ingy audreyt: does M::I really need CPANPLUS?
18:50 oozy hi
18:50 ingy hi oozy
18:53 audreyt ingy: no
18:55 ingy why is it even a dep?
18:57 pawel joined perl6
18:58 pawel hi all
18:58 pawel is now known as pmurias
19:01 ingy audreyt: commenting out the CPANPLUS feature recommends, fixed it for me
19:01 ingy !
19:01 audreyt ingy: just comment it out then, orz
19:01 ingy I recommends we take out CPANPLUS
19:02 audreyt I accept your recommendation
19:02 ingy :)
19:02 elmex joined perl6
19:03 Cryptic_K joined perl6
19:05 kane_ there was a requirement on cpanplus? thought it used it if there, not if otherwise...
19:08 ingy kane_: it was a feature recommends
19:09 ingy but a royal barrier in M::I install if you didn't already have it
19:09 ingy s/in/to/
19:09 kane_ ah, that's no good of course... tranpsarency++
19:12 eric256 if you match a string with a grammar, will the object ISA that grammar? or something along those lines?  then you could build an object directly with rules, and have custom methods built into the match object.    $program ~~ /<program>/; $program.compile.run;
19:13 TimToady Might have to say $program().compile.run to pull out result object.
19:14 audreyt right. AUTOMETH might be too sugary.
19:14 TimToady we don't autobless match objects currently
19:15 eric256 is that a planned feature though?  autobless into a class of the rules name maybe?
19:16 TimToady could be a role that tweaks BUILD, maybe
19:16 TimToady but someone still needs to invoke the new, so that wouldn't work.
19:17 TimToady would have to be driven from the grammar side somehow, and I don't see it, unless it's a Grammar role...
19:19 eric256 it couldn't just autocreate objects that are of  named for the named rule they matched, which are children of the grammar object, which is a child of the Match object?
19:20 eric256 or maybe only do that if said objects/classes (/me forgets the correct language) exist already?
19:23 eric256 arg lunch time....well i hope this can be a feature because it would be realy nice to have if you are doing natural language processing, or mini languages, template engines. ;)  later
19:23 TimToady I'm sure someone will find a way to factor out any perceived redundancy...
19:23 TimToady also gotta run. &
19:24 Cryptic_K is now known as Quell
19:32 fglock joined perl6
19:38 audreyt dinner... bbiab &
19:38 lypanov ummmmfoood
19:45 FurnaceBoy_ is now known as FB|afk
20:13 binary42 joined perl6
20:20 rhandom joined perl6
20:22 ingy audreyt: ping
20:23 audreyt pong
20:23 ingy audreyt: I have a seemingly working M::I::PMC
20:23 ingy was wondering...
20:23 ingy does the cp in pm_to_blib always preserve time stamp?
20:25 ingy just wondering whether to touch blib/lib/Foo.pmc instead of (or in addition to) lib/Foo.pmc
20:25 audreyt yes, ifyou look at EU::I then it always does
20:25 ingy always preserves?
20:25 audreyt so if you touch lib/Foo.pmc and make sure it's always at least 2sec> lib.Foo.pm
20:25 audreyt you are set
20:26 Juerd sleep 3
20:26 audreyt ExtUtils::Install, grep for utime
20:26 audreyt Juerd: thank-you! :)
20:26 Juerd ;)
20:27 kolibrie (OT) how can my 2GB partition be full with only 535662 bytes of data?
20:27 Juerd kolibrie: Slack
20:27 ingy audreyt: I'll just release what I have, and we can fix whatever comes up
20:27 Juerd kolibrie: Or maybe deleted files.
20:27 TimToady open unlinked file growing forever
20:28 Juerd kolibrie: What TimToady says. Some MySQL versions tend to do that.
20:28 audreyt ingy: sure!
20:28 Juerd kolibrie: You may be able to find the offender with lsof
20:28 kolibrie could be an open file, because it is growing
20:28 kolibrie 5MB per day or so
20:28 Juerd Then it probably is :)
20:29 Juerd Do you run mysql? :)
20:29 * Juerd likes to blame mysql.
20:29 * TimToady prefers to blame yoursql.
20:29 Juerd A sysadmin needs a scapegoat.
20:29 kolibrie Juerd: not by choice, but I think I might have it running
20:30 Juerd Hm, just discovered that I'm wearing my left sock inside-out.
20:30 Juerd No wonder I couldn't see its properties!
20:30 Juerd (Like that it's white)
20:30 TimToady too much information...
20:31 Juerd Sock, not undies :)
20:31 * eric256 is mildly distrurbed
20:31 theorbtwo kolibrie: Is this linux?  cd /proc; ls -l */fd/*|grep deleted
20:31 theorbtwo (As root.)
20:31 Juerd Hm. Is this another weird american thing? :)
20:31 TimToady being mildly distrubed?
20:31 eric256 TimToady   grammar Program is Classified() { } ;)  mostly just a joke.
20:31 Juerd TimToady: And finding sock info too much.
20:32 kolibrie theorbtwo: I'll try that too
20:32 eric256 disturbed* even
20:32 szbalint Juerd: I guess it depends on the level of imagination applied to that particular sentence.
20:33 theorbtwo Apparently, wearing one sock on one's third leg is a stereotypical adolescent male thing to do.
20:33 Juerd theorbtwo: wth?
20:33 theorbtwo Juerd: Yeah, I'm not sure I really get the point either.
20:34 * eric256 stares at theorbtwo
20:34 Juerd Now I am also mildly distr?ur?bed.
20:34 * kolibrie is glad he was never a stereotypical adolescent male
20:34 Juerd theorbtwo: Have you often done this?
20:34 Juerd theorbtwo: And does it help? (how, and for what?)
20:35 theorbtwo I don't think anyone has actually done this outside of bad teen movies.
20:35 theorbtwo I have never done this.
20:40 ingy audreyt: please release M::I
20:40 ingy audreyt: also how do i runtime dep on M-I-0.61
20:41 ingy use Module::Install 0.61; ??
20:41 ingy (from inside M::I::PMC)
20:41 audreyt that'd do
20:41 audreyt use Module::Install 0.61 ();
20:42 audreyt oh wait
20:42 audreyt that doesn't work
20:42 audreyt do a manual check.
20:42 chip TimToady: dude.  how's tricks?
20:43 ingy use Module::Install::Base 0.61;
20:43 TimToady chipmeister.  They're pretty how.
20:43 audreyt ingy: sure, commit it :)
20:43 chip TimToady: I'm told that 'is tieable' is required if you want to let a subroutine tie your var.
20:44 Limbic_Region chip - you didn't get the memo?  The 'is tieable' trait has been renamed 'likes b&d'
20:44 TimToady Or something.  It'd be nice to be able to assume by default that the optimizer can optimize something.
20:44 * Limbic_Region ducks
20:44 TimToady But the default could be shifted in a lexical scope.
20:45 * audreyt is reminded of the "use traits" macro idea again
20:45 eric256 perlbot nopaste
20:45 perlbot Paste your code here and #<channel> will be able to view it: http://sial.org/pbot/<channel>
20:45 theorbtwo As in use traits '&' => 'is tieable'
20:45 audreyt TimToady: bool::true is bool::True now?
20:46 TimToady yes, if I recall correctly.  Didn't want people confusing it with true().
20:46 chip TimToady: are you OK with this being enforced at the compiler level rather than at runtime?  I'd like to avoid putting flyweight proxy objects in front of every (tieable/non-tieable) value.
20:46 theorbtwo Can we use bool 'True', 'False', if we like being confused?
20:47 TimToady Sure.
20:47 TimToady Sure.
20:47 audreyt chip: wait... you mean all Integer are by default tieable and mutable
20:47 audreyt and then we slap non-tieable and immutable proxies over it?
20:47 ingy audreyt: should I apply your M::C patches to the release version
20:47 audreyt ingy: sure
20:48 chip audreyt: I'm saying that I don't want the tieable proxies and TimToady seems to have blessed making that a compiler decision (i.e. if you didn't declare your parameter 'tieable' then the 'tie' operator will fail to compile)
20:48 eric256 bool::True is better than 1....how? lol
20:48 TimToady I'd like the compiler to be able to optimize a $foo to a Parrot N or I register occasionally...
20:48 audreyt chip: tie is a runtime operation.
20:49 audreyt chip: unless we prebind all methods (pugs -o), we can't prevent that from happening at runtime
20:49 TimToady There is no tie() function in P6 that I'm aware of.
20:49 audreyt -O, even
20:49 audreyt TimToady: S06 claims there is a runtime tie statement.
20:49 audreyt line 1319
20:50 TimToady right.
20:50 audreyt chip: if you'd like to make everything tieable/mutable by default (instead of the other way around, as I gather that's plan), then compiler has to rely on runtime to provide attrs
20:50 audreyt of course we can use PMC attrs or something like that
20:50 TimToady But what I mean is that there's no tie() with P5 semantics.
20:51 Limbic_Region But Perl 6 variables are tied directly at declaration time, and for performance reasons may not be tied with a run-time tie statement unless the variable is explicitly declared with an implementation type that does the Tieable role.
20:51 Limbic_Region err - that should have been quoted
20:51 nwc10 joined perl6
20:51 audreyt TimToady: ok. you mean the Tieable role dispatch it to the container class.
20:51 fglock back
20:51 TimToady *nod*
20:51 audreyt chip: under p6 model, compiling to parrot where everything is a container, we'd need one container PMC and one value PMC
20:51 audreyt always
20:52 audreyt and put the container PMC's immutable/untieable bits on
20:52 nwc10 Not sure who gets Debian Weekly News, but there's an interesting paragraph in this week's "Isaac Jones asked the Debian community to look at Haskell98 and some of the "research" extensions and give upstream developers some input about what would make Haskell more attractive. He is trying to make Haskell more suitable for practical applications and reported on efforts to develop CPAN-like and apt-get-like systems for it." http://www.debian.org/News/weekl
20:52 larsen joined perl6
20:52 audreyt nwc10: yeah, SyntaxNinja is the Andreas Koenig of Haskell
20:52 pasteling "eric256" at 66.102.136.70 pasted "BASIC Parser/Execution" (8 lines, 177B) at http://sial.org/pbot/16319
20:52 chip I don't see this "performance issue" really, at least on Parrot.  A vtable is a vtable, and if the variable's vtable changes out from underneath me from Hash to DB_File_hashlike_thing, where's the penalty?
20:52 fglock ruoso: re rules as objects - the initial implementation was functional - PCR API will be plain OO (but it's not yet)
20:53 LeTo shared objects?
20:53 Limbic_Region TimToady - regarding your "There is no tie() function in .." statement.  I would ask given that extract from S06 what a run-time tie statement looks like?
20:53 audreyt chip: right, that's because the PMCs already paid the full price for eachone
20:53 audreyt chip: so there's no additional penalty :)
20:53 chip audreyt: If you compile Perl 6 to have distinct value and variable PMCs, then I have failed and should turn in my designer hat
20:54 spity joined perl6
20:54 chip (Or you have.  But I'm not taking bets on it.)
20:54 audreyt class Scalar is also { method foo () {1} }
20:55 audreyt class Int is also { method foo () {2} }
20:55 audreyt my $x = 1;
20:55 audreyt variable($x).foo; # 1
20:55 audreyt $x.foo; # 2
20:55 audreyt this is, I believe, the current semantic
20:55 TimToady 'is instead' maybe is closer to tie()
20:55 chip 'variable'?
20:55 audreyt variable($x) talks about the X in the lvalue context
20:55 chip you mean the distinction between variable and value is actually part of the Perl 6 user-visible spec?
20:56 Limbic_Region ok TimToady - so regardless of what gives you the p5 tie() functionality - it is still going to be a trait
20:56 audreyt well, yeah, S12.
20:56 Limbic_Region and if it wasn't originally defined as being tieable then changing it later (runtime) is going to blow up
20:56 Limbic_Region got it
20:56 * chip goes to read, prepared for disappointment
20:56 audreyt chip: I think you somewhat know where I come from :)
20:56 TimToady you're basically talking about swapping out the container's type and installing a different container type
20:57 chip TimToady: I would like to argue (once I get my bearings WRT S12) that the Perl 5 model, where all values are variables, it's just that some of them have names and some don't, is parsimonious and adequate
20:58 TimToady adequate for what?
20:58 chip well, if you don't know, I guess we're all in trouble
20:58 integral obviously not perl5, considering the number of bugs that appear from missing readonly flags
20:58 TimToady we're all in trouble anyway.  :)
20:58 ingy audreyt: when can you release 0.61?
20:58 chip integral: I'm planning to enforce constness with a flyweight proxy, so that mutation operations never even get dispatched.  Faster and more secure.
20:59 audreyt integral: chip is considering taking the jvalue.org option rather than the CLR option.
20:59 * integral needs to go read those...
20:59 audreyt ingy: I'm looking at the change. sec
21:00 audreyt (and I do agree it involves least modification to the PMC concept)
21:00 audreyt (but I'll still need to emit two PMCs not one.)
21:00 TimToady the proxy idea works nicely for readonly parameters bound to readable objects.
21:00 audreyt yup.
21:00 audreyt ingy: wait.. why do you need a release?
21:01 chip TimToady: I think the core confusion I have is why you've taken the position that scalars are just like aggregates in being containers.  At that point, if you think about the problem enough, you realize you've created a turtles-all-the-way-down situation.
21:01 audreyt ingy: looks good anyway. I'll release in10mins
21:02 TimToady It's also possible that we could say that untyped variables default to tyable, though I think that would have profound negative impact on any type inferencing.
21:02 audreyt (in pugs, scalars are TVars, and rvalues are Val, they are two structures)
21:02 audreyt TimToady: indeed
21:02 chip TimToady: Or, giving you the benefit of all doubts, you've implied a dereferencing operatino on every single naming of a scalar variable.
21:03 chip Heck, this even breaks the Parrot lexical model, unless I've misunderstood.
21:03 audreyt chip: AbsPIR is trying to remedy all of this.
21:03 audreyt not very easily ;)
21:03 ghenry joined perl6
21:03 audreyt (certainly not fast enough.)
21:04 ludan joined perl6
21:04 audreyt my original idea was, for readonly objs, we can save the Scalar step and put the immutable PMCs into the pad.
21:04 ludan hi all
21:04 audreyt (during function param binding)
21:04 audreyt and if no mutable operations happen in the body
21:04 audreyt all the subsequent function calls are just sharing on PMC*
21:04 audreyt on a shared value obj
21:04 chip audreyt: No wonder I was so confused about your desire for that.  You wanted to bypass something I didn't yet know existed.
21:05 audreyt chip: I'm glad we are on the same page now.
21:05 Limbic_Region s/same/sane/; # laugh hysterically
21:06 TimToady I don't see the problem offhand from a language point of view--we have two kinds of variables 1) explicitly P5ish tyable ones, and 2) lexicals with more restricted semantics, not less restricted.
21:06 audreyt TimToady: there's no problem from a language pov - all CLR-class langauges make that distinction
21:06 chip TimToady: the problem is that the distinction requires a level of indirection to maintain.
21:07 chip TimToady: better to do away with the restriction, so that the indirection can also disappear.
21:07 nothingmuch if anyone wants it, i decided to write a weird set of imaps for vim
21:07 TimToady But we know lexically whether the indirection is necessary, seems to me.
21:07 whiteg joined perl6
21:07 nothingmuch that abuse alt key insertion
21:07 nothingmuch e.g. µ is 'my '
21:07 audreyt TimToady: yes.
21:07 nothingmuch and ƒ is 'sub '
21:08 audreyt TimToady: all the FETCH calls are inferrable on the static context propagation phase.
21:08 chip TimToady: MY<> and := contradict that conclusion
21:08 nothingmuch ƒfoo ¯ is 'sub foo { }
21:08 chip TimToady: not to mention foo(\$a); sub foo ($a) { tie $$a, ... }   # OK?
21:08 nothingmuch (there's around 20 of em)
21:08 TimToady MY<> is compile time, but I'll grant you := can collide.
21:09 chip CALLER then, and OUTER, and whatever the syntax is for walking up the call stack examining the pads
21:09 ludan see you guys, bye
21:09 audreyt but := is just a call on the compile-time created Signature metaobject
21:09 ludan left perl6
21:10 TimToady Any binding can refuse to work if typologically bad...
21:10 chip audreyt: OK, given the container/value distinction, := is less problematic
21:10 audreyt chip: the c/v distinction was made clear to solve := :)
21:10 audreyt TimToady: yup.
21:10 audreyt (and of course not at compile-time. but that's okay. if you want compile-time you'd used ::=)
21:10 Juerd I associate desugaring with bad performance. Please tell me that that makes no sense.
21:11 audreyt Juerd: makes no sense.
21:11 fglock audreyt: does Pugs::Compiler::PILN makes sense? (maybe some day)
21:11 Juerd Thank you
21:11 audreyt fglock: yes.. we even have the rules already
21:11 audreyt fglock: but I'm thinking about avoiding all that with YAML loading the objects :)
21:11 audreyt fglock: but I'd like a nice rules engine first... and maybe switch pugs's // over to use that
21:12 audreyt /../ I mean.
21:12 chip OK, let's try to stay on target here.  I'm trying to find a reason why c/v distinction is valuable for scalars.  So far, all I can see is that the variable() operator *should* be creating a transient object containing the result of pad introspection, and the c/v distinction serves no user need.
21:12 audreyt well, then you are putting the C level at the pad level... and parrot's pad are untyped
21:13 audreyt my $x is MyScalar = 2;
21:13 audreyt my $y is MyScalar = 2;
21:13 audreyt s/My/Your/
21:13 chip audreyt: each HLL can create its own lexinfo and lexpad classes.  I think Perl 6 should have a fatter lexinfo with e.g. type information
21:13 audreyt aha. that means pushing the C level into LexInfo
21:13 audreyt and into Namespace
21:13 chip the information that the C is currently holding, yeah
21:14 chip Namespace?  Ah.
21:14 audreyt (there are pkg vars and there are pad vars.)
21:14 audreyt (most of the time they are aliased with "our")
21:14 audreyt "sub f {...}" is just "our sub f {...}"
21:14 fglock audreyt: re "nice" - please see PCR 'TODO' and write comments (please annotate which are new comments) - I've added a 'priorities' section, so that the project can go in a predictable direction...
21:14 chip Yes, not as straightforward as the lexinfo derivation, but certainly doable
21:14 audreyt ok. what about aggregates?
21:15 nwc10 left perl6
21:15 ingy audreyt: cpan-upload -mailto [email@hidden.address] -user INGY -password ******** Module-Compile-0.14.tar.gz
21:15 audreyt ingy: woot!
21:15 audreyt chip: conceptually, @a[0] need to point to such a info also
21:15 ruz joined perl6
21:16 chip don't @a[*] share the same C info?
21:16 fglock audreyt: you are PCR comaintainer
21:16 audreyt fglock: k
21:16 chip variable(@a[0]) would be a transient object that looks in @a for metainfo when needed, I'd think
21:17 audreyt chip: arrays in perl are hetergenous... I don't know why you think they can share container info
21:17 audreyt @a[0] := something
21:17 audreyt @a[1] := another
21:17 chip yes, but consider, in the c/v model all you're doing there is swapping Vs but leaving the C in place
21:17 ingy audreyt: I had an interesting idea. suppose an Inline C section is in the middle of a v6 program (under M::C)
21:18 chip so if the C isn't going to mutate in a true C/V, then the psuedo-C metainfo wouldn't need to morph either in my model
21:18 Arathorn joined perl6
21:18 ingy you don't want v6 to parse the Inline section
21:18 audreyt chip: the C is going to mutate upon := and := can have @a[0] as lhs.
21:18 audreyt chip: unless all aggregates start to maintain Cinfo also.
21:18 chip audreyt: no point in that.
21:19 ingy but you also don't want to split the v6 into two sections
21:19 audreyt or we disallow := with an indexed expression at lhs
21:19 audreyt and only allow simple-name :=
21:19 audreyt then your scheme works.
21:19 chip audreyt: of course that's not OK
21:19 ingy so... you put a token of "md5 of inline section"; in place of the inline section until the v6 is done
21:20 ingy I think it's prettyt neat
21:20 chip audreyt: is the list of all Scalar container attributes enumerated?
21:21 * chip can't find it in S12
21:21 audreyt chip: the only relevant ones is readonly and Tieable
21:21 ingy night all
21:21 audreyt and the "constant $x" declarator
21:21 audreyt (which currently gets compiled to a .constant in pir)
21:22 chip well, now I get it
21:22 chip you guys have been calling those "container" attributes, but they aren't at all
21:22 chip they're predictor predicates
21:22 chip "if I try this kind of operation, will it work?"
21:23 audreyt try explain container classes with that metaphor
21:23 chip like Array and Hash, you mean?
21:24 chip I don't understand what you're asking for, WRT 'explain'
21:24 audreyt ok. you have a LoggedScalar that contains a Point object
21:24 audreyt the LoggedScalar logs each fetch.
21:24 chip well, you're assuming your conclusion
21:24 audreyt my $x is LoggedScalar = Point.new
21:24 audreyt it's part of spec :/
21:25 chip remember the "as if" rule!  :-)
21:25 audreyt sure.
21:25 audreyt now I create an array with 3 elements
21:25 audreyt my @a is LoggedArray;
21:25 audreyt @a = (...someinit...)
21:25 audreyt then I bind @a[0] with $x
21:25 audreyt @a[0] := $x
21:26 audreyt then I assign into @a[0], triggering a LoggedScalar action but not a Point action.
21:26 audreyt end of use-case.
21:27 chip OK.  I see 'is LoggedScalar' as an implied tie.
21:27 audreyt (or just, I read from @a[0], which triggers; then I read from @a[1], which doesn't)
21:27 audreyt that'd be correct.
21:27 audreyt then Array and Hash are implicit Ties as well
21:27 audreyt and I think you are saying we optimize the most common implicit-tie, vanilla Scalar, away.
21:27 chip the LoggedScalar implements all the scalar ops, logging some, then passing them on to its internal object, because that's what the author of LoggedScalar made it do
21:28 chip the internal object is the Point that was passed to the LoggedScalar constructor by the Perl6-generated PIR
21:28 chip so $x.isa(LoggedScalar), but not $x.isa(Point)
21:29 audreyt but the spec says $x.isa(Point).
21:29 audreyt variable($x).isa(LoggedScalar).
21:29 TimToady variable($x).isa(LoggedScalar)
21:29 audreyt again, S06 and S12.
21:29 TimToady there's an echo in here...
21:29 chip OK, modification.
21:30 * chip cues up the Jeopardy music
21:31 chip OK, here's the deal.  I think variable() has the wrong polarity.  It walks backwards up a chain that's forward-linked and could have a depth > 1 (i.e. proxies)
21:32 chip I think tied() is a better model, WRT polarity.
21:32 chip "Show me the man behind the curtain" is much better than "let me talk to your supervisor".
21:33 TimToady variable() is not a function.
21:33 chip er, cancel that.
21:33 * chip tries again, playing the Jeopardy music louder
21:34 chip if variable() is not a function then how do you handle nested tying?
21:34 * audreyt would like to note that there is no nested tying.
21:35 TimToady a container may only have one type.
21:35 eric256 errr...if  $x is a point, but @a[0] is a LoggedScalar, are you saying that binding @[0] := $x  changes both @a[0] and $x's behaviours?
21:35 eric256 but $x could be := bound in many places...how would variable($x) deal with that?
21:35 audreyt eric256: $x is a Scalar of Point
21:35 audreyt when it's := $x, it acts on the rhs Scalar, not the rhs point
21:36 fglock audreyt: I need to somehow examine the state of the call stack, in order to implement references to $0 inside a rule - how about using PadWalker for that, so that I don't have to implement additional structures in the program?
21:36 audreyt fglock: feel free to use as many cpan module as you need
21:36 audreyt the more the merrier
21:37 chip Well.
21:37 fglock audreyt: I mean, is it safe to use PadWalker?
21:37 audreyt fglock: it's not safe to use any XS module ;)
21:37 eric256 so it would be changing the scalar to LoggedScalar which is contained in a Point = .... /me bows out...just got confused on that part
21:37 audreyt fglock: but I'd recommend going ahead with it
21:37 fglock audreyt: ok
21:38 ruoso fglock, did you see the lrep-compiler subtree?
21:38 fglock ruoso: not yet, sorry
21:38 chip AFAICT, what's going on here is (1) you have a set of things you'd like to do to variables: tie them, query their read-only-ness, etc.; (2) you have chosen to present these features in a way that basically forces a container/value distinction, even for scalars; (3) you've chosen to make the containers full-blown user-visible classes, which prevents almost any kind of optimization; (4) audreyt is asking for value types to try to undo the bad performance consequ
21:39 audreyt that is all entirely correct.
21:39 fglock ruoso: looking
21:39 audreyt I wouldn't opposed to the scheme of compiling basic Scalar living only on NS/LexInfo away
21:39 chip I would conterpropose that avoiding an extra indirection on every normal variable -- in other words, avoiding a situation in which everything is always tied, and the only question is *what class* you're tying through, should be a design criterion of any language interested in running fast
21:40 audreyt and I wouldn't opposed to sharing a container pointer for the pad entries
21:40 chip In other words: Get the heck rid of container classes for scalars, and work backwards from that.  Otherwise you will suffer.
21:41 audreyt and I can compile the deref away for early-bound variables
21:41 chip this is a dynmamic language, I can play with CALLER.MY, and you lose
21:41 TimToady Er, I thought that's what we did when we said you couldn't tie something without declaring it that way.
21:41 audreyt not so if your MY pad is not tyable.
21:41 audreyt sigh, echo.
21:41 audreyt and also CALLER.MY is forbidden
21:42 audreyt they are now CALLER.ENV always
21:42 audreyt and those containers get special marks.
21:42 chip TimToady: as long as my Integer $x is   my Scalar of Integer  implicitly; as long as hacking Scalar modifies the behavior of every scalar variable; you lose
21:42 chip everything is always tied.
21:42 chip the only question is, by what
21:43 audreyt the as-if rule says we can detect changes to "class Scalar is also" and promote all implicit C/V to explicit ones. or just disallow hacking Scalar, making it the special case.
21:43 TimToady What we've basically said is that container types (or at least Scalar) can be considered finalized in a particular lexical scope.
21:43 audreyt but note that all the lex Scalars are created at compile time
21:44 audreyt it's just their values that gets shuffled at runtime.
21:45 audreyt TimToady: actually, that needs to go into S6 :)
21:45 chip TimToady: finalization isn't good enough
21:45 audreyt "builtin container classes are considered finalized at runtime"
21:45 chip TimToady: that implies that indirection *must* still be taken
21:45 fglock ruoso: would you like to work on Pugs::Compiler::Rule? You are already familiar with the internals
21:46 chip more to the point, when I'm accessing CALLER.MY, I have no way to know a priori whether the caller was compiled with a modified Scalar, so all lexical pads must be constructed in a way to allow for mutated Scalar, i.e. everything is always tied
21:46 TimToady no
21:47 TimToady we'll restrict CALLER.MY however we need to to allow optimization in a given lexical scope.
21:47 chip it's not a questoin of restriction, I just want to use it.  The PIR code to access the pad will differ depending on whether the given scope was compiled with a modified Scalar or not.
21:47 TimToady We already restrict any mods to CALLER.MY after CALLER is compiled.
21:47 chip And sometimes the consumer of the pad is not even written in Perl.
21:48 audreyt chip: if python gets a perl Scalar, they'll have no problem with it
21:48 TimToady The API has to say "I won't" if the caller's scope won't.
21:48 audreyt chip: it's just slow.
21:49 ruoso fglock, I'm actually implementing the regular language rules like "$a = 'literal'" and so on
21:49 TimToady Beyond that it's a problem of autoboxing.
21:49 chip Sounds like pads will have two variants, or perl6::lexpad will have a 'slow' flag where there are containers and a 'fast' flag where there aren't.
21:49 chip (or ::lexinfo will have the flag and ::lexpad will use it.  whatever)
21:49 TimToady But the compiler has to be free to optimize the heck out of "my int @array[2000]"
21:50 chip TimToady: lower-case types aren't even in the pad, so don't worry about that
21:50 audreyt (except when they are lower-case 'buf' ;))
21:50 audreyt chip: don't forget all hashes are "pads" too, in that sense
21:50 chip sub foo { my int $i; bar() }  sub bar { print CALLER.MY<$i>; }   # error
21:51 TimToady autobox
21:51 audreyt it's certainly plausible to declare "env int $i;" autoboxed.
21:51 audreyt chip: the "my" scope is not seen by callee now
21:51 audreyt chip: only the vars declared with "env" are
21:51 TimToady but yes, error for plain "my"
21:51 audreyt and it's fine to special-handle those
21:51 chip audreyt: oh, REALLY
21:51 audreyt chip: yeah. it's been hashed as lot
21:51 audreyt and it's okay to make "env" very slow.
21:52 audreyt I mean CALLER::*
21:52 audreyt it's okay to walk back frames
21:52 chip well.
21:52 audreyt query metaobjects
21:52 audreyt etc.
21:52 audreyt it's okay that %CALLER::.keys takes _very_ long time.
21:52 PerlJam Don't you guys still have weekly meetings to hash all of this out?  :-)
21:52 chip and how is variable() to be implemented on Parrot?
21:52 audreyt %ENV::.keys takes O(n^2).
21:53 audreyt PerlJam: yeah, this is post-meeting hysteria
21:53 audreyt PerlJam: (the meeting was 1hr ago)
21:53 chip three hours
21:53 audreyt oh ok. 3hrs.
21:53 audreyt mm fruit flies like a banana
21:53 integral normal meetings decamp to the pub, perl meetings decamp to irc...
21:53 audreyt integral: except perl meeting are on irc too
21:53 chip this meeting started on irc too.  it's weird
21:53 svnbot6 r9573 | ruoso++ | 1 more rule: Assigning hash to scalar creates a reference... 1 more line to lrep.p6...
21:53 audreyt chip: variable() is not a function. it's a special form.
21:53 audreyt it's a Var() node in the AST.
21:54 audreyt it doesn't live in any namespace like &variable
21:54 audreyt or anything like that.
21:54 TimToady It's the difference between C languages . and -> operators...
21:54 audreyt nice metaphor.
21:54 lisppaste3 pmurias pasted "whats wrong with this autogenerated rule?" at http://paste.lisp.org/display/17879
21:54 chip yeah, I get that.  so with an optimized variable (a normal variable without a C), it evaluates to Scalar ?
21:55 audreyt it evaluates to something that .isa Scalar.
21:55 audreyt yup
21:55 audreyt (if it's of the $ sigil)
21:55 chip TimToady: I think you mean C++, where operator -> () can be redefined but there is no operator . ()
21:55 chip audreyt: no, you miss my point
21:55 TimToady Plain C also distinguishes . from ->
21:56 audreyt variable($x).infix:<=>(4)
21:56 * integral always thought perl6 should do that :-)
21:56 chip audreyt: given   sub foo { my $a; variable($a) }   and a compiler that is smart and knows that Scalar has not been modified, shouldn't variable($a) translate literally to Scalar?
21:56 audreyt chip: see my form above
21:56 chip TimToady: there's no situation where both are legal, but in perl6, $a and varaible($a) are both legal, so the analogy breaks down
21:57 audreyt chip: variable($x) can't be just a generic ::Scalar protoobject
21:57 audreyt it must be the C metaobject, no matter where it lives.
21:57 TimToady variable($a) probably pessimizes $a.
21:57 audreyt yup.
21:57 bsb joined perl6
21:57 chip and variable($$a)?
21:57 audreyt it can mark it as "slow" pad or something.
21:57 chip not legal?
21:58 audreyt it's surely legal as far as I can tell.
21:58 audreyt $$a := ... # takes this form
21:58 audreyt basically, I start from the complete C/V model and try to compile away the "simple" static cases.
21:58 audreyt if there are VObj, the V layer is fast and the C layer can be compensated
21:59 audreyt if there are no VObjs, I put metainfo in Pad and NS
21:59 chip OK.  I give up, for now.  You guys really want to make everything tied, and then go to great effort to make the compiler work and sometimes (but not always!) figure out when the tie is semantically null and omit it ... well, by all means, knock yourselves out
21:59 audreyt for plain scalar, and pessimize it when a ref is taken
21:59 * chip & # dayjob
21:59 audreyt chip: I would like to point out that all CLR-class language and all ML-class language do that :/
22:00 integral and look how *fast* they are!
22:00 chip they have Scalar class equivalents that are user-mutable?
22:00 audreyt (and that's not ironic, I presume)
22:00 * integral brushes how slow their optimising compilers are under the carpet
22:00 audreyt integral++ # heh
22:01 chip <chip> they have Scalar class equivalents that are user-mutable?  If not, then the situations are not even remotely comparable
22:02 chip Sometimes the default behavior does not have to be encased in the same clothing as non-default behavior.  Just sayin'.
22:02 * chip & # really
22:02 audreyt most of those language freezes the container classes and do not allow runtime tampering.
22:03 * ruoso locked up defining the subroutine call rule...
22:04 audreyt also, most of those languages have a typed interface for containers, so you can't put Any into there
22:04 chip [jeepers, I wasn't talking about real containers, I specifically said "Scalar" container, which was no doubt created by the Society For Putting Things On Top Of Other THings]  [every time I get out, they keep dragging me back in]
22:04 audreyt once you can put Any into there, then it's a level of indirection.
22:04 audreyt yeah, I'm talking about scalars too.
22:04 audreyt "mutable references" is the term.
22:05 audreyt because those languages have the idea of a value class :)
22:05 chip but they're OPTIONAL.  In Perl 6 they're apparently -mandatory-.
22:05 chip and in those other languages, the container (surely?) is not itself a full-blown object with .isa and other methods
22:06 * PerlJam senses some deep misunderstanding here.
22:06 PerlJam But then I havne't been following along too closely
22:07 pasteling "ruoso" at 200.195.79.180 pasted "can anybody find out what is wrong here? This rule is supposed to match subroutine invocation..." (5 lines, 167B) at http://sial.org/pbot/16321
22:07 audreyt chip: ok. how about: we declare Scalar finalized and closed by default
22:07 audreyt chip: and do not allow extension to it without predeclaring to the compiler
22:07 chip audreyt: I have a better one for you.
22:07 audreyt chip: so all operations are prebound at compile time.
22:08 PerlJam ruoso: looks like someone needs to invent the :w modifier :)
22:08 chip audreyt: delete Scalar and replace it with a Perl5-style tying mechanism, where if you want to tie it's up to you to provide the full suite of behavior.  If you want to introduce a helper class, by all means, do so
22:09 chip you could, if you were feeling particularly puckish, call it "Scalar"
22:09 audreyt my $a; # simple
22:09 audreyt my @a; # complex
22:09 audreyt my $a is Scalar; # complex
22:09 audreyt that's your proposal?
22:09 chip but here's the key thing:  "my Integer $a"  is NOT, repeat NOT, implicitly "my Scalar of Integer $a"
22:09 TimToady didn't we just say that?
22:10 chip TimToady: Perhaps my decoder was out of sync, I don't remember that
22:10 audreyt that leaves the question of whether @a[0] is by default bindable
22:10 audreyt and I guess under your scheme then they are not
22:10 audreyt @a itself would be
22:10 audreyt but @a[0] would take another explicit annotaiton.
22:10 chip oh for crying out in the beer, why do you need a container object to do binding?  Aliasing of SVs works fine in Perl5
22:11 fglock ruoso: looks ok
22:11 ruoso fglock, the rule?
22:11 fglock PerlJam: :w doesn't skip #comments
22:11 fglock ruoso: the rule looks ok
22:12 ruoso fglock, but it simply doesn't match "getopts('i:o:',$argsref);"
22:12 audreyt chip: well, I thought you said that @a would be uniform in their simple/complexhood
22:12 PerlJam fglock: <p6ws> does?
22:12 ruoso PerlJam, perl 6 white space
22:12 ruoso PerlJam, comment is white space
22:12 chip audreyt: yeah, but if @a is simple, why should that possibly preclude binding $a[0]?
22:12 audreyt it would preclude binding $a[0] if rhs is complex.
22:12 audreyt it wouldn't preclude binding $a[0] on a simple rhs.
22:12 chip in that case, yes
22:13 audreyt ok, we are acutally in agreement!
22:13 audreyt how quaint :)
22:13 ruoso fglock, any idea?
22:13 TimToady quit quickly before we disagree again! :)
22:13 PerlJam ruoso, fglock: I've always imagined that :w would be "implemented" as a <?ws> rule of some sort.  If true, you could just override it (the <?ws> rule) to mean what you want.
22:13 chip I really can't afford to take any more time on this, anyway.  :-)
22:13 chip at least, not right now
22:13 audreyt chip: ciao :)
22:13 TimToady peace
22:13 audreyt TimToady: that has far-reaching consequences though :)
22:13 chip live long and ... oh, n/m
22:13 fglock ruoso: '$name:=(<ident>)' should be '$<name>:=<ident>'  but that's not supported by lrep
22:14 fglock PerlJam: yes, it makes sense
22:14 mugwump Personally I think the presence of a container object is a sure sign something is wrong.  It's just not lexical binding if you need extra object indirection for it, and performance will suck.  But what would I know :)
22:14 audreyt mugwump: a container object denotes mutability :)
22:14 audreyt mugwump: IORef is not wrong, it's explicit
22:15 ruoso fglock, but this doesn't seem to be the cause of the problem
22:15 audreyt a (IORef Dynamic) is slow, yes, but not slower than perl5 SVs.
22:15 audreyt and we get faster performance if you annotate it's either immutable in some way, or fixed in type in some way.
22:15 ruoso fglock, I'll try without the named capture
22:15 PerlJam ruoso: what are you testing it against?  in your rule, the argument list is mandatory.
22:15 fglock ruoso: are you using long names (short names not supported yet)
22:15 audreyt (at least that's what I thought of perl6's stance on the type-annotation game)
22:16 ruoso fglock, hmmm...
22:16 TimToady I expect some arrays allow their elements to be rebound and others don't.
22:16 audreyt the question is merely if Array does :)
22:17 ruoso fglock, even with long names
22:17 ruoso "Getopt::Std::getopts( 'i:o:' , $argsref );" doesn't match
22:18 audreyt (*@x) := ($x, $y, $z); # binding of elements.
22:18 audreyt that happens, oh, at every other function call :)
22:18 ayrnieu eric256 - if you're going to make many perl6 posts on perlmonks, you might index them somewhere.  As PM doesn't have tags.
22:18 audreyt (though we can say that *@x is declared as Hybrid or something by default
22:18 TimToady but it's not trying to bind the existing slots in @x.
22:18 audreyt )
22:18 PerlJam ruoso: Since I'm not really playing along at home ... does <ident> match colons?  Does <list> match "'i:o:', $argsref"  ?
22:19 ruoso list matchs variables and literals
22:19 ruoso with the ,
22:19 ruoso let me try without parameters...
22:19 PerlJam ruoso: where is the definition of <ident> and <list>?
22:20 ruoso PerlJam, in Perl6.p6 or Perl6Init.pm
22:20 TimToady *@x := ($x, $y, $z) can throw away the current contents of @x and rebuild with any containers consistent with its type declaration.
22:20 ruoso PerlJam, ok... list is not the problem... removing it still doesnt match..
22:20 svnbot6 r9574 | pmurias++ | xgrammar2p6:
22:20 svnbot6 r9574 | pmurias++ |  + character classes
22:20 svnbot6 r9574 | pmurias++ |  + begun testing with pge(go to line 3 :)
22:20 svnbot6 r9574 | pmurias++ |  + work towards use warnnings
22:20 mugwump so what happens when $x drops out of scope?
22:21 audreyt TimToady: true. and we don't allow
22:21 audreyt sub f (@x[4], @x[1]) { ... }
22:21 TimToady no, we don't
22:21 audreyt so maybe it's okay to say Array doesn't allow element rebinding by default
22:21 PerlJam ruoso: I'm looking at ident now it looks okay.
22:21 audreyt and you have to explicitly declare them.
22:21 ruoso PerlJam, yes... it works on the "use" and "require" rules
22:21 TimToady Array of Scalar of ...
22:22 audreyt yeah.
22:22 PerlJam ruoso: that just leaves <?p6ws>  :-)
22:22 mugwump so is an unbindable Array an Array of Any ?
22:22 ruoso PerlJam, :)
22:22 TimToady s:g/Scalar/Item/
22:22 GabrielVieira joined perl6
22:22 audreyt mugwump: a default array would be Array of Any, yes
22:23 mugwump but once you make it an array of Item/Scalar (?) you get bindability
22:23 audreyt sure
22:23 TimToady Array of Object would probably do it.
22:23 audreyt my @a; @a[0]=variable($x); @a[0]:=3
22:23 audreyt # woot, rebound
22:23 ruoso PerlJam, "\w+\(\)\;" doesn't matches it also... I'm lost...
22:24 PerlJam ruoso: Well, \w+ doesn't include :
22:24 audreyt then of course variable() pessimizes the $x declarator
22:24 audreyt and needs to refer to something that is statically known
22:24 ruoso PerlJam: I'm trying now to match "getopts();"
22:24 audreyt otherwise it's compile-time failure
22:24 audreyt that will get chip's semantic.
22:24 PerlJam ruoso: oh.  Then you've clearly broken something fundamental :)
22:24 ruoso he
22:24 ruoso heh
22:25 ruoso PerlJam, nah... all tests still working...
22:25 fglock ruoso: \w not implemented - so it would mean "w" :)
22:26 PerlJam heh
22:26 ruoso fglock, hmmm... ok
22:26 * ruoso now trying "getopts();" as rule
22:26 mugwump so, can typed scalars be bound?  as in, the old my Dog $spot
22:26 ruoso to match "getopts();"
22:27 mugwump given that $spot is now a Dog, not a Scalar (assuming Scalar is the term for the container)
22:27 * ruoso beats his head on the table... it still did not work...
22:27 fglock ruoso: did you push the new syntax into the statements array?
22:27 TimToady "my Dog $spot" is a declaration of the value, not the container type.
22:27 ruoso fglock, yes
22:28 ruoso aaaarrrrrrrghhhh
22:28 ruoso push @statemens, \&sub_call;
22:28 fglock ruoso: maybe it is matching something less specific - try 'unshift' instead
22:28 ruoso fglock, did you notice the missing "t" in @statements?
22:28 audreyt TimToady: I thought it also puts a constraint on the scalar.
22:28 TimToady yes, that is the effect of it
22:29 PerlJam TimToady: This is something I was always shaky on ... in the statement "my X $foo is Y",  X is saying something about the value and Y is saying something about the container?
22:29 * ruoso jumps through the window
22:29 TimToady yep
22:29 * nothingmuch closes the window
22:29 PerlJam well, I guess I wasn't shaky after all  :)
22:29 fglock ruoso: no :) please fix it - btw, debugging the grammar _is_ hard
22:29 PerlJam Just unsure from lack of use.
22:29 fglock nothingmuch: too late
22:30 ruoso fglock, just worked...
22:30 ruoso fglock, the first try was correct...
22:30 mugwump but isn't the type constraint X also a property of the container?  It just deals with the value
22:30 TimToady shows up better in "my X @foo is Y" where X distributes over all the elements of @foo, but Y is a single container trait
22:31 fglock ruoso: which try?
22:31 TimToady Kinda, either the container or the compiler has to keep track of it.
22:31 audreyt s/either/both/
22:31 nothingmuch fglock: he managed to close it after jumping?
22:31 nothingmuch that's pretty impressive
22:31 audreyt (under an unfinalized/open world, both compiler and the runtime has to have info)
22:31 fglock nothingmuch: no, he hit the Wall instead
22:32 nothingmuch anyway
22:32 nothingmuch heh
22:32 TimToady I beg your pardon.
22:32 audreyt (cf. "Hybrid Type Checking")
22:32 nothingmuch anyway, good night =)
22:32 fglock TimToady: sorry
22:32 nothingmuch ... and as much as possible is moved from runtime to compiler
22:32 TimToady :)
22:32 ruoso fglock, the first rule I wrote was write...
22:33 ruoso s/write/right/
22:33 audreyt nothingmuch: actually, sometime you want a very fast compilation.
22:33 TimToady ...but no more than is possible.
22:33 * nothingmuch stops being annoying
22:33 TimToady And there's no cat...
22:33 audreyt typically when you only run it once.
22:33 audreyt -e comes to mind.
22:33 nothingmuch audreyt: i was teasing ;-)
22:33 mugwump if you say $x := $y, you have two containers but one value?
22:33 nothingmuch not only -e
22:33 nothingmuch actually, for some -e i actually *DO* want good compilation
22:33 nothingmuch because it mightr process large chunks of data, but the compilation unit is very small
22:33 nothingmuch but for hacking sessions
22:33 nothingmuch fixing unit tests
22:33 nothingmuch interactive programming shells
22:34 Limbic_Region joined perl6
22:34 nothingmuch that's where I want a decent dynamic bytecode that compiles in a jiffy
22:34 nothingmuch but we already know this
22:34 nothingmuch so good night =)
22:34 FB|afk is now known as FurnaceBoy
22:34 mugwump if you say my Dog $spot .= new; my $y := $x; $y = Cat.new(), what happens?
22:34 TimToady mugwump: at least conceptually before the optimizer gets to it.
22:36 fglock later &
22:36 TimToady The binding is allowed to fail if the types are incompatible.
22:36 eric256 mugwump is one of those x or y suppose to be $spot?
22:36 mugwump yes :)
22:36 mugwump my Dog $spot .= new; my $moggy := $spot; $moggy = Cat.new(), what happens?
22:37 fglock left perl6
22:37 TimToady you probably get a failure on the assignment
22:37 PerlJam mugwump: I'd say a runtime exception is throw (Assuming Cat and Dog aren't related)
22:38 mugwump ok, for now we assume !Cat.isa(Dog)||Cat.does(Dog) :)
22:38 mugwump bah, bad precedence in that.  !(Cat.isa(Dog)||Cat.does(Dog))
22:39 mugwump the question is why does it fail
22:39 mugwump does the binding transfer the container properties?
22:39 PerlJam mugwump: because a Dog doesn't know how to store a Cat
22:39 TimToady s/Dog/Dog container/ would be more accurate
22:40 mugwump so, $moggy became a new Dog container when I bound it?
22:40 PerlJam mugwump: no, $moggy became an alias for the existing Dog container
22:40 TimToady Either that, or it's a Don't Care container, and the assignment succeeds.
22:41 mugwump but if you do that then you just violated the type constraint on $spot
22:41 TimToady (by virtue of throwing the Dog object away)
22:41 TimToady yes, which is why the former is probably better
22:42 mugwump PerlJam: I think the point of this is that we don't want to use terms like "alias", we want lexical references to be first class objects
22:42 * LeTo would say that a Dog container could accomodate a Cat but not an elephant *duck*
22:43 TimToady quack
22:43 TimToady what's an elephant *duck*?
22:44 LeTo a missing hyphen ;)
22:45 * mugwump starts considering examples with Camel and Eye_Of_Needle classes but decides against it
22:45 PerlJam mugwump: um ... I think we want lexical references to be "first class objects" *sometimes*.  Occasionally we want to talk *through* the reference and occasionally we want to talk *to* the reference
22:46 TimToady a reference is not really an object but it autoboxes if you treat it like one.
22:47 TimToady The nice thing about being a language designer and not an implementor is that you get this nice big carpet to sweep all the details under...
22:48 mugwump I interpret that previous comment as saying; the language concept of a reference does not always need an object to represent it, that sometimes containers are enough.
22:48 * PerlJam suddenly has an image of Chip emerging from under a carpet coughing up a storm from all of the dust
22:48 TimToady Sometimes a void* is enough...
22:49 * eric256 beings the long wait as 184k records are loaded into his db....hmmm
22:50 beppu joined perl6
22:50 mugwump a void* is a reference, surely.  To put it into C terms like that, it would be like a macro to refer to the same variable
22:50 mugwump in some cases
22:51 mugwump ok, well anyway, I think that's getting a bit sidetracked.  Did we decide that binding copies the container (logically) ?
22:52 svnbot6 r9576 | ruoso++ | sub_call rule... 1 more line to lrep.p6...
22:52 * audreyt goes sleep now :)
22:52 * audreyt waves &
22:52 chip hey, that's cute.  the container moves with the value.  next thing you'll need a container^2
22:52 mugwump night audreyt (or morning, I suppose :))
22:52 * chip relurks
22:52 audreyt closing thought: maybe model this with Data::Alias under chip's semantic in p5 :)
22:52 audreyt &
22:54 ayrnieu audrey's latest p6c post confuses me.
22:54 ayrnieu rule Foo {{...}} # isn't special {{..}} synatx, it's just {...} in a rule...
22:55 ayrnieu that is, an interpolated closure.  But then she immediately shows that she realizes this with her next example.
22:56 ayrnieu (oh, OK, I'm misreading.)
22:57 * LeTo puts a red note on the calendar: "she did actually turn off the computer"
22:57 Arathorn lol
22:58 ayrnieu arathorn - what amuses you?
23:01 eric256 350 out of 3500 batches down...
23:01 Arathorn the red note :)
23:01 Arathorn eric256: how goes BASIC?
23:01 eric256 12 * 10 = another 2 hours?? bah
23:01 eric256 good. paused working on it to do actualy work
23:01 eric256 but i got it to parse and execute some simple commands. ;)
23:02 Arathorn cool :)
23:03 * ayrnieu waiting for interpolated hashes and closures :-)
23:11 Arathorn in basic? ;)
23:12 * ruoso is dealing with '$input_filename = %args{i};'
23:13 ayrnieu ?eval [join(*<a b c>), join('a','b','c')]
23:13 ayrnieu ruoso - %args{i} looks like a syntax error.
23:13 eric256 what would you expect that to do?
23:13 ruoso ayrnieu, in perl 6?
23:13 ayrnieu oh, no evalbot.
23:13 ayrnieu ruoso - yes.
23:14 ruoso ayrnieu, serious?
23:14 ayrnieu ruoso - in perl5, too :-)
23:14 ayrnieu ruoso - yes.  Unless you've a subroutine named i in scope ...
23:14 eric256 {i}  should be <i> shouldn't it?   or {'i'} ?
23:14 ruoso eric256, hmmmm... you got it...
23:14 ayrnieu eric - it perl6, in should return ["bac","bac"]; but invocation-with-flattening isn't here yet.
23:14 ruoso eric256, it should be a literal
23:15 eric256 anyone know why pugs keeps reloading prelude from source?
23:17 ayrnieu eric - it loads the perl6 prelude.
23:17 ayrnieu open("blib6/lib/Prelude.pm.yml.gz", O_RDONLY|O_NONBLOCK|O_NOCTTY|O_LARGEFILE) = 3 , and then again with just O_RDONLY
23:17 eric256 instead of loading the precompiled one though it keeps loading from source
23:17 Juerd ARGH
23:17 ayrnieu maybe a fast-development hack.
23:18 Juerd My government is forcing me to participate in a survey.
23:18 * eric256 shots Juerd to put him out of his misery
23:18 Juerd Which causes me lots and lots of work to calculate stuff.
23:18 Juerd For which I do not have any tuits.
23:18 eric256 just make up some numbers . lol.  i like 5 and 6 myself
23:18 ayrnieu Juerd - life is suffering.
23:18 TimToady A survey like "How much of your money you made last year are you willing to part with?"
23:19 eric256 see.  5 or 6 dollars. ;)
23:19 Juerd Summarized, their demand is that I re-do my entire 2005 financial administration, but using different requirements than ever specified before.
23:19 ruoso ayrnieu, http://search.cpan.org/~autrijus/Perl6-Bible-0.30/lib/Perl6/Bible/E02.pod says opposite
23:19 ruoso ayrnieu,  perl5: $foo{$k} => perl6: %foo{$k}
23:20 ayrnieu ruoso - where?
23:20 TimToady E02 is *not* canonical.
23:20 ruoso oh
23:20 ayrnieu ruoso - um, and what are you saying that 02 says the opposite of?
23:20 Juerd TimToady: No, a survey like "Give us lots of detailed information about what your company did, in ways that you couldn't know you had to account, and answer our 50 questions on these 12 pages. Oh, and you have to do so in EVEN LESS TIME than the tax bureau gives you."
23:20 ayrnieu ruoso - what have I said that it contradicts, rather.
23:20 ruoso that it should be $foo{$k} instead of %foo{$k}
23:21 ayrnieu ruoso - I never said that.
23:21 ruoso <ayrnieu> ruoso - %args{i} looks like a syntax error.
23:21 ayrnieu ruoso - it does.
23:21 ayrnieu ruoso - unless you have a subroutine named i
23:21 ruoso ayrnieu, oh
23:21 ruoso ayrnieu, got it
23:21 ayrnieu ruoso - contrast with $args{$i}
23:21 ayrnieu %args{$i}
23:21 ruoso sorry
23:21 ruoso too tired already
23:21 ruoso :)
23:22 ayrnieu sub { %args{shift} }  # needs $args{+shift} disambiguation in perl5.
23:23 Juerd It's not disambiguation. Without the +, it's not ambiguous.
23:23 svnbot6 r9577 | ruoso++ | $a = %b{$a} working... 2 more lines in lrep.p6
23:23 Juerd It's autoquotation breaking.
23:24 |Jack| joined perl6
23:24 ayrnieu Juerd - *shrug*.  Point is that perl6 does not have this confusion.
23:25 eric256 no but in perl6 when you accidentaly do <$i> your screwed and don't know it. ;)  just found that out recently /me needs to print out some quick refs
23:26 ayrnieu accidentally doing %foo<$i> is like doing %foo{$i} in perl5, I suppose.
23:26 ayrnieu it can't be /too/ easy :-)
23:27 eric256 except that it works in p5
23:27 Juerd ayrnieu: Has it ever confused you?
23:27 TimToady The little sharp pointy things are supposed to alert you to the danger.
23:27 ayrnieu no, %foo{$i} doesn't do what you mean in perl5.
23:27 Juerd ayrnieu: If so, then do you think autoquoting should be completely gone? We still have it left of =>.
23:27 ayrnieu Juerd - ack, no, I love autoquoting.
23:27 eric256 TimToady yep, and they will in the future. just still getting used to it all, especialy when converting p5 to p6 i'm easily confused. not a complaint, just an observation
23:28 Juerd ayrnieu: But you do think it's confusing?
23:28 ayrnieu Juerd - I've written $foo{shift} without seeing that perl would see it otherwise, before, and then I realized my mistake.  It hasn't confused me since.
23:29 eric256 ayrnieu honestly in p5 i never use hashes, just hashrefs so i don't know the specific issue you have. lol.  early on i figured it was to hard to remember when i had a ref and not. ;)
23:31 Daveman joined perl6
23:32 ayrnieu Juerd - I don't think you can even set off with the idea of taking everything that ever confused anyone out of perl5 if you want to end up with something perl.  Perl has its own preferences for how the complexity blanket should lay.
23:33 Juerd ayrnieu: Do you feel differently about shift => 5 than about $foo{shift}, in Perl 5?
23:33 ayrnieu Which is to say, perl favors tremendous *language* complexity, because larry thinks that humans are good at complex languages.
23:33 Juerd $foo{shift} is neither ambiguous nor confusing, OR => is too.
23:34 ayrnieu Juerd - I've written $foo{shift} in error.  I've never written shift => in error.
23:34 ayrnieu that's a funny idea, though.
23:34 svnbot6 r9578 | eric256++ | basic.p6 BASIC implementation in P6....well it wil be eventualy.
23:34 TimToady That's why we fixed $foo{shift} but not shift =>.
23:34 Juerd So your assymmetry makes the features different? :)
23:35 * eric256 wonders if that was an intentional play on words....hmmm
23:35 Juerd TimToady: To me it doesn't make sense that people would make the mistake with .{}, but not with =>...
23:35 TimToady We didn't actually set out with the goal of fixing all the traps, but it turned out we could fix a lot of them in passing.
23:35 Juerd Note that I do agree with Perl 6's non-autoquoting in {}, because of the closure argument.
23:36 TimToady Juerd: nevertheless, that's the bias we've observed.  People don't often want an expression left of =>, and frequently want an expression inside {..}
23:36 ayrnieu Juerd - if you take away autoquoting, I'll use q:w// and zip my hashes together! :-)
23:36 Juerd I find the autoquoting-is-confusing argument a rather weak one.
23:36 mako132_ joined perl6
23:36 ayrnieu well, my lists.
23:37 TimToady It is nice to go back through perlmonks though and realize that just about 90% of the newbie traps are now closed.
23:37 eric256 how about the autoquoting in {} breaks stuff more often than in => .... simple enough and true enough
23:37 TimToady doubtless we've introduced other newbie traps, of course...
23:37 eric256 TimToady now if we only knew how many were opened in exchange ;)
23:37 TimToady hah, beat you. :)
23:38 eric256 hehe. yea..  i think we might have more convert traps than newbie traps
23:38 TimToady could be.  but perl programmers are a patient lot, by and large.
23:38 Juerd TimToady: While that's true, I don't think that alone warrants breaking previously existing symmetry. If there were no Perl 5, it'd be a perfect reason to autoquote =>, but not .{}. However, removing autoquoting from .{} is a *change*, and needs much more -- {} always being a closure, for example.
23:38 ayrnieu I suppose the other thing is that autoquoting left of => only affects expressions that look like identifiers.  But things that don't look like identifiers are very wierd left of => and common in {}, so nobody gets in habit of seeing that as an 'expression' space in the first place.
23:39 TimToady Juerd: yes, and same argument for interpolating {...} in ""
23:39 Juerd I like {} interpolation.
23:39 Juerd It's @foo[] and %foo{} interpolation that I'm not so sure about
23:39 TimToady ayrnieu: at some point somebody just has to take a guess about the future...
23:40 TimToady the stuckee seems to be me mostly...
23:40 eric256 hehe i didn't like {} for like a day. then i figured out i could do say "Line {$i++}: $line" and i was very happy agian. lol
23:40 mako132_ joined perl6
23:40 Arathorn {} interpolation rocks, imo :)
23:41 Juerd eric256: print "Line ${\$i++}: $line\n" works in Perl 5 already
23:41 Juerd It's not THAT revolutionary :)
23:41 Arathorn it's a whole lot cleaner, though
23:41 Juerd That it is
23:41 ayrnieu visually cleaner.
23:41 * eric256 tries to run evalbot and finds that it needs svn not svk ...
23:41 eric256 Juerd it is revolutionary in that i don't need to escape all the code in it.  never bothered to learn the ${} trick in perl5 because it was always confusing to try and read
23:42 Juerd But also a hazard (newbie trap?) when actually quoting code. I have lots of javascript code, for example -- I'd need to specify what I want to interpolate, and what not, which seems counterintuitive.
23:43 Juerd eric256: I'd say that the revolution in that isn't {} or ${\} related, but in having a recursive grammar for the language :)
23:43 eric256 yea i think some of the other quote styles will help with that. since you can turn on and off most the interpolation
23:43 ayrnieu so extended q// modifiers are nice.
23:43 Juerd ayrnieu: But not something constantly on my mind...
23:43 eric256 Juerd sure...but some of use have no idea what that means and just see the result. lol
23:44 ayrnieu Juerd - not yet. Run into this problem a few more times...
23:44 Juerd ayrnieu: But isn't running into the same problem several times normally a sign of a weakness in the language? :)
23:45 eric256 Juerd or just lack of RTFM :)
23:45 Juerd It's definitely not a lack of RTFM
23:45 Juerd I've read all TFM there is ATM, and will read all TFM to come.
23:45 eric256 lol
23:45 ayrnieu Juerd - I'd argue that not being able to keep the language on your mind is more indicative of perl's aforementioned complexity-blanket biases, and solved by familiarity.
23:46 Juerd Still, picking just the things I want to interpolate doesn't come naturally at all. I wouldn't know which level does what.
23:46 ayrnieu level?
23:47 eric256 you migth just want :c for closures so you could bracket what you want to interpolate, or :s scalars so that you only have to escape $.  i think thats going to be a pretty nice feature
23:48 Juerd Actually, in Javascript, I'd want the {} feature, but to be written differently.
23:48 Juerd Maybe {{{ }}}
23:48 Juerd I think I'll get my own quoting operator :)
23:49 Juerd That's nicer than repeating flags.
23:49 ayrnieu or argument to :c ...
23:49 Juerd eric256: I have surprisingly few $ in my javascript :)
23:51 eric256 now that would be interesting  :c('{{', '}}') hmm
23:52 ayrnieu my $a = 1; <<a b $a>>  # should return ("a", "b", 1)  , yes?  It seems to evaluate to 3, here.
23:52 TimToady :c<{{ }}> is shorter.
23:52 Juerd So, this would be what, &quotelike:js = &quotelike:q.assuming( :s :c< {{{ }}} > );  ?
23:52 eric256 since you have few $ in your javascript wouldn't you want to use that instead of { } which you'll have a aloto of?
23:52 eric256 TimToady show off
23:52 Juerd What's the category for quotelikes?
23:53 eric256 its in S02 under Literals...if thats what you mean
23:53 TimToady I wouldn't use triples--that's reserved for quasi-unquoting these days...
23:53 Juerd eric256: Could be
23:53 Juerd TimToady: Well, that's a valid perception of what I'd do there: explicitly interpolate something into a piece of code
23:54 * ayrnieu looking at S02 which says in the list of modifiers that :ww has 'quote protection', seeming to indicate that q:ww/a "b c" d/ would have three elements (the second as '"b c"'), but then says that q/:ww/ is equivalent to <<>>
23:54 Juerd Though {{ }} would suffice.
23:54 |Jack| left perl6
23:55 * ruoso sad... macros stopped working...
23:55 TimToady Fighting over the brackets in ASC
23:56 TimToady II is like fighting over the radio spectrum...
23:56 svnbot6 r9579 | ruoso++ | going on... broke at the moment... need to fix macro compilation...
23:56 TimToady s/\n//
23:56 ruoso I'm going home
23:56 TimToady what it something I said?
23:57 TimToady *was
23:57 TimToady darn, I should go home...
23:57 ayrnieu ah, OK, pugs is just broken with that earlier <<>> question.  q:w:s(a b $a) just confuses the interactive reader into scalar context, somehow.
23:58 ruoso if someone with a good heart wants to take a look why macro compilation stopped working on lrep-compiler, fell free...
23:58 ruoso the problem is in Perl6Primitives.p6
23:58 * ruoso is going home..

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

Perl 6 | Reference Documentation | Rakudo