6.2.11 released! | pugs.blogs.com | pugscode.org | pugs.kwiki.org | paste: sial.org/pbot/perl6 | < audreyt> my fingers juxpatosed | Word of the Day: overgolfy
Set by Alias_ on 13 March 2006.
Limbic_Region just isn't a purse person 00:01
eric256 posts more p6 to perlmonks. 00:02
figured if there wasn't enough for my tastes...i would add some ;)
ayrnieu eric - yay!
audreyt so, to support cleaner transfer of control from .pmc<->.pm or something like that
crackheads at #p5p are thinking about goto *FH
obra *blink* 00:03
audreyt I am impressed by the collective crackness.
obra that's impressive
Juerd eric256++
diotalevi_ Well... #perl6 also comes off as pretty cracked too, fwiw.
Juerd Wait a second. Is crack positive or negative? :)
audreyt diotalevi_: yeah. that's more like, "look, we are not the only one"
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
audreyt seek DATA, 0; goto *DATA; # look, reexec 00:04
Juerd And goto *FH seems like FUN
audreyt $_ = "some code"; open _; goto *_; # look, never goes back
er, I mean
open _, '<', \$_;
00:04 eric256 left
Juerd eval_exec :) 00:04
audreyt yup, exactly that
obra goto *STDIN?
audreyt obra++ 00:05
obra . O { In an HTTP environment }
You want executable verbs? We'll give you executable verbs!
audreyt obra++ # that just hit "clinical insanity"
obra I WIN!
Sorry. I'm at a customer site today. I'm getting a little punchy 00:06
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? )
Arathorn has read xp.c2.com/SpikeSolution.html and feels vaguely clueful now :)
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
diotalevi_ It's funny.
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
nothingmuch audreyt: doesn't goto() imply that @_ is carried over?
audreyt diotalevi_: you are doing core coros? 00:10
diotalevi_ nope, audreyt.
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.
diotalevi_ It it serializes closures and their captured lexicals.
Arathorn nods
diotalevi_ So eval(Dump(sub{ my $x = 0; sub { ++$x }->() )) is sane. 00:11
audreyt this is D::D::S? 00:12
diotalevi_ Yes, DDS.
Sounds like a dental thing.
audreyt ok, I need to steal^Wadapt it to YAML::Syck
been looking for that
that'd mean I can target p5 using the same lexinfo structure as the parrot target
nothingmuch audreyt: it's actually pretty easy 00:13
audreyt and shuffle closures between p6 and p5 land
nothingmuch PadWalker has an undocumented function to give you all the captured vars in a closure
audreyt what?
what!?
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
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. ;)
audreyt Arathorn: this is future-tense, perl 5.10-maybe, not-yet-implemented, technology
diotalevi_: ooh ok. another cpan module?
Arathorn oh, right!
nothingmuch audreyt: and then you just recursively dump that coirrectly, and any closures therein have to do that too
it should really be B::Deparse logic
audreyt nothingmuch: yeah, I got that bit.
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....
hope... hope...
audreyt just didn't know about the capture-var-list thing.
well, it's undocumented, so I can hardly blame myself.
diotalevi_ Actually, DDS does that work *today* and has for a year now.
It's just better code organization to move that out of DDS and into PadWalker.
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:19
audreyt diotalevi_: *sigh* I thought about that. 00:20
I initially mentioned Toolkit
but it's (while I think pretty cool) not as popular
so I replaced it with Switch
in hindsight maybe Spiffy is better ;)
diotalevi_ chokes a little. 00:21
audreyt Smart::Comment? ;)
how come it's either ingy or damian?
oh and Inline.
diotalevi_ No comment. 00:22
Arathorn vaguely recalls seeing Indented mentioned somewhere?
audreyt Indented is part of M::C's test suite 00:23
but not a module of its own
Arathorn ah.
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...
svnbot6 r9552 | chromatic++ | Fixed an apparent test typo.
diotalevi_ Smart::Comment isn't great to cache since you do want to turn it off at some point.
00:24 ruoso joined
audreyt verily. 00:24
Inline is definitely great to cache
as is v6
because both effectively swap the language out
Spiffy is... well, spiffy. 00:25
diotalevi_ Spiffy eats my soul.
audreyt mind-flayer
wait, that just eats brains.
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.
That and anything written using it.
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.
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
audreyt _not_ that I think that'd be a good thing.
ruoso: yup. then you'll want to write a linker. :)
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
but we'll see.
ruoso audreyt, it's not how ordinary linkers work... it can change compilation rules...
diotalevi_ Desugared forms might have helped alot. There were no such things when I was looking at it.
ruoso audreyt, the compiler needs to actually load the modules... 00:29
audreyt diotalevi_: that's what Module::Compile offers beyond Filter::Simple
ruoso audreyt, not just point somewhere...
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.
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.
audreyt diotalevi_: nod, and with .pmc, you can look at that line and see a my $self=shift
diotalevi_ aye. ;-)
audreyt that will likely save people's sanity :)
and load them without losing lexical thoughts
ruoso audreyt, should I compile and load recursively or just load recursively? 00:31
audreyt, letting Makefile to do the rest
audreyt ruoso: compile separately and load recursively, is the p6 doctrine, and is easier to manage
ruoso audreyt, great... it's easier to do also... ;)
audreyt right ;)
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 !)
but not really easier to reason about.
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..
audreyt, while generating the AST
audreyt ruoso: yes.
actually just "use"
you can analyze "require" also to create the neccessary symbols
but for now probably just use "use", unless there is a critical need for require 00:34
ruoso audreyt, require can define "rules"
audreyt ruoso: I understand, but why are they used instead of use?
if it's just because somethings are in .pl form, maybe they should be .pm
like in perl5/Pugs-Compiler-Rule
ruoso audreyt, I already did it... 00:35
audreyt oh
right, you got a new tree
I'm still in the old one. sorry
ruoso see lrep-compiler
audreyt yup
audreyt got temporarily disoriented
ruoso fglock asked me to keep a copy, as p6compiler wouldn't work anymore
TimToady Europe will do that to you occidentally.
putter groan 00:36
audreyt ruoso: so. if you change
require Grammar::Perl6Init;
to
use Grammar::Perl6Init;
in eg. prim
will anything break?
ruoso I don't think so
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
audreyt well, sure, then analyze both then :)
timtowtdi
ruoso audreyt, :)
audreyt, I don't think it will be much different
audreyt *nod* 00:38
ruoso audreyt, the compiler will have both at parse time...
no BEGIN block effective
audreyt yes, I see that. :)
audreyt needs to 1)journal 2)sleep
diotalevi_ Is that the same one that hasn't been updated since January? 00:42
I followed the link from your perlmonks node.
audreyt what same one?
pugs.blogs.com/ ?
I thought I said "302 moved" :)
there's been... a lot of updates since january. 00:43
diotalevi_ pugs.blogs.com/audrey/
audreyt oh, the private blog.
the .tw media was translating each entry and their comments and republish them to newspapers
so I froze it for a while.
not sure when/whether to resume.
diotalevi_ Oh. Well there's the one link you 'know?
Republished in newspapers? Uffda! 00:44
ruoso going to sleep
00:44 penk joined
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?
audreyt diotalevi_: try it. 00:46
diotalevi_: you'll be surprised!
also try "use v6 -pugs", "use v6 pugs" and "use v6 Pugs".
diotalevi_ It can't load v6. So... It's really use v6 '-pugs'?
audreyt there's no discernable rule whatsoever
diotalevi_ Argh. ETooMuchSugar. 00:47
audreyt er no
use v6 '-pugs'; # this doesn't work
the only form that works is v6-pugs.
diotalevi_ I just want some nice, sugar free, brain rotting phenylfoofooberries.
audreyt so this is not sugar but more like, well, incantation.
Arathorn . o O ( syntactic saccharine ) 00:48
audreyt Arathorn++
slurpee *~O_o~*
diotalevi_ I'm just completely confused what it does then. 00:49
BEGIN{require v6; v6->import( '-pugs' )}?
00:50 frederico_ joined
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
'cos if so, v6.pm seems to ignore it..
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
From there... yeah.
This stuff would be much nicer if it didn't spend so much time looking like magic. 00:54
"nicer" when trying to understand it, etc.
Arathorn v6.pm is pretty damn cryptic, for all of its 10 lines of code
(although i don't think i've ever looked at a source filter's source before, apart from Spiffy about 10 minutes ago :) 00:55
audreyt Arathorn: it doesn't use Module::Compile yet, thought 00:58
both Inline::Pugs and v6.pm will switch to M::C
but not today :)
diotalevi_: BEGIN { require "v6.pm" }
but otherwise yes 00:59
Arathorn and the -pugs just gets dropped into the void?
audreyt the eventual plan is for the -pugs to fire up v6::pugs as the handler, and allow other plugins
like v6-lrep 01:00
or v6-via-js-then-translated-to-p5
or something like that.
diotalevi_ audreyt: huh? Where's that documented?
audreyt diotalevi_: it's not documented because it's not implemented :)
diotalevi_: just today we sorted out M::C; then it needs M::I support, and ingy is working on converting Inline to it
diotalevi_ I meant, the behavior in p5 of C<use v6-pugs>
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.
diotalevi_ I mean, that part has to be completely valid perl5. 01:01
audreyt ok. the foo-bar syntax is not documented anywhere.
diotalevi_ Right?
audreyt though there is mentioning of -bar being '-bar' autoquoting in general
but not after 'use', and certainly not after v6.
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
putter: it's 2am now, I really should sleep.
putter ;)
diotalevi_ audreyt: so at what character can the non-p5 stuff happen?
I would have thought immediately *after* the semicolon ending the use().
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.
the -pugs suffix is fed as the import option.
diotalevi_ When p5 documents that use Foo::Bar; becomes BEGIN { require Foo::Bar; Foo::Bar->import(...) } this isn't really optional.
audreyt anything after the semicolon is M::C fodder.
Arathorn presumably use p6-pugs is equivalent to use p6 -pugs, where -pugs is the LIST for use Module LIST syntax
diotalevi_ Oh! Well you just told me the opposite a moment ago! 01:04
audreyt yup.
did I?
Arathorn [00:47] <audreyt> use v6 '-pugs'; # this doesn't work
^ source of confusion, i think
audreyt sigh. ok
use p6 '-pugs'; # this does work
use v6 '-pugs'; # this doesn't
Arathorn aah :D
audreyt sorry for the confusion.
diotalevi_ Because... vstrings are still in my version of perl, probably. 01:05
01:05 jisom joined
diotalevi_ So /^v\d/ is special then. 01:05
audreyt yes.
TimToady The problem with vstrings isn't so much the syntax as the semantics...
01:06 avar joined
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.
TimToady Anyway, v6 will still mean "version 6" in Perl 6--it just won't be
a stirng.
*string.
Well, the syntax has been fairly consistent, but sure, the semantics have been waving all over the place. 01:07
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 :)
TimToady Not entirely... 01:09
In theory, Perl 5 oughta just blow up the moment it sees a 'use v6', saying "I'm not version 6..."
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 :)
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.
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)?
diotalevi_ Arathorn: do whatever makes sense. There's lots of magic, good docs should follow.
maybe just put it in comments though since users don't care about that
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.
jisom would V6 be interpreted differently than v6? 01:12
TimToady Yes, it's be an ordinary Module, I believe.
audreyt Arathorn: please commit
Arathorn: pod is fine 01:13
01:13 f0rth joined
TimToady But it's possible that someone has a pet V6 module somewhere already. 01:13
Arathorn audreyt: thanks
TimToady It's rather less likely that someone has an existing v6 module.
jisom and if you're on osx and have v6.pm and V6.pm, it comes down to the first found
TimToady if you're on osx it comes down to a lot of things. 01:14
01:15 Khisanth joined
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:15
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;'.
jisom implicit? 01:17
audreyt "module Foo;" or "class Foo;"
TimToady It'd be 'class Foo' or 'module Foo'
jisom oh
audreyt "package Foo" goes back to p5land.
diotalevi_ s/p5land/candyland/
cuz it's true.
TimToady in any event, the declared name is what needs to show up in the library when a module is installed.
ayrnieu finally notices www.perlcast.com/audio/Perlcast_Int...23_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.
In any case, if none of the directories in the path have changed, you 01:19
can just load files by scanning for the names in your (flat file?) database.
none of the multiple-calls-to-stat() business...
01:19 wilx`` joined
TimToady That approach solves the case problem, the unicode problem, and the efficiency problem all in one. 01:21
At worst, you just rebuild your candidate file list once on every invocation, even if you have nowhere to cache it. 01:22
(assuming the library doesn't change in mid-invocation...)
Having the candidate list also makes for easy pattern matching when you don't specify exactly which version you want. 01:23
audreyt thinks we should just bundle sqlite. 01:24
jisom sounds really complicated, but dwim
TimToady And the sitelib can have its part of the candidate list presorted based on site preferences.
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...
Does sqlite do flat files? 01:26
audreyt not quite sure what flat files mean here
mugwump no, it is binary only
audreyt it's just a modern version of the SDBM perl5 used to bundle :)
oh, as in text file. no.
so, good point. back to yaml perhaps.
TimToady Something "human" "readable". 01:27
audreyt *nod*
TimToady with implicit ordering. SDBMish things would have to be sorted.
audreyt well, implicit ordering on sqlite is "create unique index" 01:28
but yeah, I agree transparency is more imporatnt
mugwump xrl.us/kezv # de-warnock? for TaPL OCAML->P6 example conversion
TimToady Especially if recalculation is rare compared with usage. Much better to just slurp an ordered lists of yaml or some such.
Sort of MMD writ large. 01:29
audreyt mugwump: yesterday's backlog has me shoe-horning this into roles
mugwump: search for gaal and "data Moose"
constructors into classes, data types into roles, constructor args into "has $.x" 01:30
mugwump: gaal was starting to write a DrIFT rule for it, so we can convert all Pug sinternal structs into p6
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
audreyt mugwump: as for sugar, any sugar is fine as long as the final desugar form is well understood
audreyt summons the "then you can write is as a ~V~ macro" argument 01:31
(where the ~V~ is, again, the handwaving operator)
mugwump I'm just looking to translate the examples, I don't care about making it as terse as Haskell :)
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.
mugwump perl6.does(ML), not perl6.is(ML) ;-)
diotalevi_ will be leaving RSN tho.
TimToady dotalevi_: maybe that's a feature in this case.
mugwump diotalevi_: you get used to it. it even gets nice once you get familiar with the alternate forms 01:33
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.
I mean, just speaking as someone who has occasionally tried to write a document in YAML.
audreyt error messages? 01:36
01:36 K joined
audreyt YAML::Syck seems to give me okay feedback so far 01:36
but ymmv. :)
diotalevi_ Yah, like "you did this. Maybe you meant this. But here's where it died."
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 :)
it's also 20x-50x faster and ruby compliant
diotalevi_ Oh that's nice.
That's very nice.
So YAML.pm is getting um... aliased to YAML::Syck RSN? 01:38
audreyt curtsies
well no, I don't think so, but who knows. havn't really discussed this with ingy.
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:39
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... ;)
diotalevi_ ::Syck makes that nice?
TimToady putter: 40
audreyt diotalevi_: yes.
diotalevi_: it transparently handles crlf.
TimToady audreyt: aren't you up past your bedtime, young lady? 01:41
diotalevi_ literally does a jig.
audreyt well, yes. and I just posted my journal
so I have no excuses
mugwump finds audreyt's reference at xrl.us/kez7
audreyt adieu, folks :)
audreyt waves &
TimToady sweet dreams.
diotalevi_ /^(?:pas de basque){5,5}(?:plain caper){2,2}$/ 01:42
diotalevi_ thanks audreyt muchly. 01:43
01:46 donatoaz joined 01:47 donatoaz left
Arathorn hm, is the svnbot wedged atm? 01:51
svnbot6 r9553 | arathorn++ | explanation of why use v6-pugs works from $Larry
Arathorn wonders if he committed into the wrong repo
jisom no
Arathorn ah, there we go
TimToady: hope you don't mind me using your name & verbiage in vain there
Arathorn will amend as necessary 01:52
Arathorn will check logs tomorrow, either way 01:56
slurpee s/oady/owdy/ 02:02
actually wrong too :)
slurpee goes back to admiring the big data snafu at work 02:03
02:07 amnesiac joined
svnbot6 r9554 | autrijus++ | * v6.pm: slight nit in Arathorn++'s POD - "no whitespace neccessary" 02:09
r9554 | autrijus++ | should be "lack of whitespace is neccessary".
r9554 | autrijus++ | (yes, I'm sleeping soundly already.)
putter lol 02:12
02:35 DesreveR joined 02:45 mako132_ joined
FurnaceBoy audreyt, also, necessary is spelled "necessary" 02:45
02:51 justatheory joined
FurnaceBoy hi j.a.t. 02:51
ayrnieu www.perlmonks.org/?node_id=536453 # re eric256 02:55
03:09 ueater joined
Alias_ audreyt: FIRST_MAKEFILE? Not having any idea what you are talking about :) 03:28
oh wait, there was a bug report 03:40
TimToady: Won't a flat file list of library to filename mapping get pretty slow? 03:41
TimToady: It would mean that the more modules you install, the longer it's going to take to find a module 03:42
spinclad Alias_: why? slurp the whole list into a hash at perl startup... 03:43
Alias_ spinclad: How much memory do you want to spend to do that? 03:44
not to mention load time
And locking issues
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...
Alias_ TimToady: So it will only apply on filesystems without such support? 03:46
(which would seem reasonable... maybe)
spinclad ENOBRUTEFORCE, falling back
TimToady Can always optimize it later. But I'd just like to see a simple design first.
Alias_ as usual, is nervous of change 03:47
revdiablo Berkeley DB! SQLite! Embedded mysql!
*snicker*
Alias_ SQLite is bloody tempting
revdiablo Maybe hooks to plug in your own module lookup system 03:48
03:48 wilx joined
Alias_ ugh 03:48
revdiablo Though this probably doesn't count as a simple design ;)
Alias_ There's such a thing as too much infrastructure. Ask Java
TimToady Basically, the API has to be able to emulate a sane naming structure on architectures that support it poorly. 03:49
Additional complications are mostly optimizations.
Alias_ Well, and varying complications of "poorly" 03:50
Would it mean you can no longer just copy in .pm files on Win32
etc etc
Ugly real life practices that work now and people appreciate
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
03:51 dduncan joined
Alias_ indeed 03:51
Just pointing out the potential baby and bathwater problem
TimToady Can certainly look at name-mangling that rewards babies more than bathwater. 03:52
Alias_ tries to imagine unicode-escaped file names 03:54
(and what they might look like when we only have _ and - to work with
ayrnieu - can be zero, _ can 1.
Alias_ I was thinking Acme/WINGDING-CHARACTER-SMILEY-FACE.pm 03:55
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. 03:56
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
04:02 revdiablo joined
Alias_ And if @INC isn't static? 04:03
They already move around quite a bit
04:03 lypanov joined
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:03
TimToady Doesn't matter if we dup a little of that information, I think. 04:04
04:04 stennie joined
Alias_ What if you change the casing of a class name, but it remains in the same file name 04:05
and so on, and so forth
But this is just talk
TimToady Yeah, that's potentially a problem.
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
:)
other problems... NFS indexing :/
ouch
NFS people already bitch about things like .pmc and Class::Autouse adding an extra stat per module 04:07
Then there's filesystems without the ability to handle lists
Thing HTTP
Think
And the crazy things do with CODE refs in @INC (Which I'm not sure we are keeping)
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:08
network cache coherency is always a big problem... 04:09
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:11
(assuming directory change catches most of the file creation/deletion events) 04:12
04:13 mako132_ joined
TimToady \ 04:13
s/darncat//
Alias_ I'd also hate to see a situation in which we starting acting for the lowest common demoninator 04:19
So that you'd need a library database even on filesystems that were case sensitive and unicode
And of course then people would start hacking functionality into the library system
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:20
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? :)
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.
Alias_ votes for the least possible infrastructure 04:24
:)
TimToady s/least/slowest/???
Alias_ s/slowest/most uniform performance across all workloads/ 04:25
Playing favourites is tricky
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
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:27
TimToady refrains from pointing out that he lives within a mile of both of those... 04:28
Alias_ :)
FurnaceBoy oh cool ! Reiser. 04:49
thx
video.google.com/videoplay?docid=68...ser+google
Alias_ Well, I'll warn you now he's a REALLY boring speaker in style
FurnaceBoy hehe
I love him for his ,... MIND
Alias_ But do try and stick with it, because he has some great points when it comes to performance
FurnaceBoy yeah. I expect he does. 04:50
will watch later, just imbibing series 1 ep 3 of BSG
diotalevi So can you distill those points out? 05:05
FurnaceBoy some of them probably exist in material on namesys.com 05:58
FurnaceBoy hasn't watched the video yet
06:09 putter joined
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
&
06:43 beppu joined 06:53 KingDiamond joined 07:00 GeJ joined 07:16 dduncan left 07:25 xinming joined 07:29 iblechbot joined 07:57 Aankhen`` joined 08:00 ghenry joined
Alias_ ouch, McAfee accidentally nukes Excel in it's latest update 08:03
(already disabled now though) 08:04
08:04 Alias_ left 08:08 drrho joined 08:10 kane_ joined
gaal morning 08:22
GeJ morning gaal 08:24
gaal so much cheerful insanity 08:25
08:31 pdcawley joined
lypanov bounces 08:37
09:00 nothingmuch joined 09:06 f joined 09:13 nothingmuch joined
Supaplex dribbles lypanov around the court 09:21
ingy dribbles on his pillow 09:22
Supaplex heh
speaking of pillow
lypanov boingyboingyboingyboingy
Supaplex crashes for the night *plunk*
lypanov grows hands and waves! 09:23
Supaplex hehe night' :)
09:24 Alias_ joined
Alias_ TimToady: Ping? 09:24
GeJ Alias_ ? 09:26
Alias_ GeJ: Wanted to talk licensing 09:27
GeJ may I request your wisdom in a /query?
Alias_ hmm?
GeJ ain't no TimToady
I tried to contact you yesterday, but didn't get any answer
Alias_ via what channel? :) 09:28
(generic sense of the word)
GeJ through a query
Alias_ ah
Don't think I got it
What can I do for you
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:29
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.
Alias_ He's lost in the MMORPG Eve Online or something
I would try contacting Curtis Poe, which last time I checked is his roommate 09:31
Who should at least know what the situation is
GeJ ok
I'll try again, and then fall back to the ovid option 09:32
thanks
Alias_ Alternatively, Masque or ua might know
if they are around 09:33
But ovid first
GeJ thanks
I'll do that
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:36
Alias_ Dunno, I think he only needs to twiddle some PAUSE permissions 09:37
If he was an AWOL author I would have done it by now myself
09:45 xern joined, mako132__ joined
nothingmuch pets ingy 09:46
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
ingy attempts to add .pmc support to M::C by using orz.pm in YAML.pm :) 09:59
s/::C/::I/ 10:00
Alias_ s/c/x/ 10:01
Alias_ runs
10:01 rafl joined
ingy .pmx? 10:01
Alias_ see audrey's most recent P5P post 10:02
Alias_ votes pmx +1 10:03
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"
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
yeah
ingy and drop support for perl 5.8? 10:14
Alias_ yep
um
And remove .pmc from maint and blead I believe, yes
ingy so how will that work on older perls?
Alias_ Because the caching is done Perl-side, we can implement it all the way back to perl 5.004 if we want 10:15
ingy where is the caching check triggered? 10:16
Alias_ wherever you want, but presumably inside v6.pm
well, not wherever you want... if you want pmc's "ignore what's in the .pm" checking
:)
But it gives the pm more control over how the checking is done 10:17
ingy you are totally high
say Foo.pm uses v6
and v6 checks for Foo.pmx
is that what you are saying...?
Alias_ yep 10:18
Well, that's what I believe Audrey and Robert are saying
ingy you've just lost all the benefit of caching
you can't stop the load of Foo.pm 10:19
it's 100 billion times slower than a stat
Alias_ 50 stats
svnbot6 r9555 | Darren_Duncan++ | r3107@darren-duncans-power-mac-g4: darrenduncan | 2006-03-14 02:17:33 -0800
r9555 | Darren_Duncan++ | ext/Rosetta/ : continued rewrite of Language.pod
Alias_ or whatever
ingy and will probably cause internal problems with the loading of Foo.pmx
Alias_ but I could be misinterpreting
ingy it's completely bogus idea as I understand it 10:20
unless your real goal is that nobody but rogue misfits ever use caching
Alias_ ask them 10:21
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
So faster for everybody
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
Alias_ I could be wrong about what it means
Because I seem to keep getting a lot of patches to modules that remove extra stats 10:24
Every few months or so
So obviously there's some userbase that cares a lot
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
Alias_ The idea of only paying it for each module that uses it is attractive
similar to the regex vars that are bad because every regex has to pay for them 10:26
ingy but .pmc modules use less modules at runtime 10:27
so automatically there are less stats
Alias_ that doesn't follow
ingy excuse me?
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
Using .pmx (with pmc compiled out) you'd use (30 - 3) + 3 * 3 10:29
There's probably a tipping point
A third maybe
or a quarter
ingy But the cost of doing the runtime check will blow the stats out of the water
Alias_ And in exchange potentially more control and correctness and compatibility 10:30
(to be established)
ingy plus how do you keep Foo.pm from actually needing v6 on the user's machine
10:30 cnhackTNT joined
Alias_ As I understand it, that they'll need anyway 10:31
Or anything out there without pmc support will just crash
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
sure
iykwim? 10:34
ah, know
ingy aittyd 10:35
audreyt ingy: hi 10:39
ingy hi audreyt
what's up?
audreyt ingy: .pmx is the idea of having a common validation metadata stored inside the cache and verified by the interpreter
it's not my idea; it's Robrt's.
ingy the perl 5 interpreter?
audreyt I don't think it will come to pass really. if it does, we generated bot .pmc and .pmx.
yeah.
ingy I think it's a fine idea 10:40
audreyt me too.
ingy and deprecate .pmc in 5.14
audreyt also couple it with goto *FH
and then we can instead of dying, just open .pm and goto it when cache is stale
10:41 pdcawley joined
audreyt you can currently emulate it with a zero-filter with F::U::C 10:41
ingy I didn't grok the goto thingy
audreyt not sure if it's worthy to add to the default refresh_cache block
ingy: ok. say you are in a .pmc and you discover yourself is stale
ingy: you want to pretend this loading of .pmc never happened
and just trigger .pm again
there is no neat pureperl way to do it
you _can_ immediately F::U::C yourself into .pm 10:42
but an easier way is to just goto *FH
which means "abandon the current parse/exec and swap out to *FH 10:43
"
(for this compilation unit)
in internal terms, it means nulling out PL_rsfp and transfer control to *FH
but that is just an idea. we live with the 5.6~5.8 world and code toward it now :)
ingy right 10:44
I think I get it
this is more sane than the guessing game stuff I was just doing with Alias
audreyt well, I blame my English for not explaining it well on p5p 10:45
but you can always safely blame my english :)
ingy speaking of, you have typos in your blog
audreyt commits welcome... oh wait.
ingy I can commit to you blog?
you++ 10:46
audreyt if you want to guestblog, I can certainly do that :)
ingy s/fitlers/filters/
audreyt fixed 10:47
ingy that was the main one
audreyt ingy: someone on perlmonks wants implicit typing to be on by default because "all other language does that"
ingy a little bit of Engrish inflection here and there never hurt anyone
:p
audreyt basically turning yaml into syck
ingy audreyt: I would be fine with removing the mtime < mtime check in say 5.8.10 10:48
audreyt cool 10:49
not sure what will happen then
I guess it largely depends on whether there are any real adoption of M::C
ingy woah! /me just grokked "F::U::C yourself into .pm"
clever
I'd rather die, but clever 10:50
F::U::C $yourself || die;
audreyt yeah, it is of real_import
ingy F::U::C $yourself && die; # rather
:p
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
Oooo 10:52
Kwiki::Depless
audreyt Kwiki::Helpless
clkao wiki::Topless
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/~
gugod Module::Useless
ingy writes down all these great ideas! 10:53
YAPC fodder
audreyt YAPC::Sleepless
ingy audreyt++ 10:54
ok, I am off to fix M::I at $new_cafe with $roommate
audreyt &enjoy!
ingy ready gugod?
gugod lets hit it
ingy indeed! 10:55
&
audreyt if I implement Goto::FileHandle 10:57
should I upload it as Acme::Goto::FilteHandle?
Acme::Goto::FileHandle, even
11:08 rantanplan_ joined 11:21 Arathorn joined 11:23 mj41 joined 11:28 SamB joined 11:30 kanru joined
wolverian audreyt, great journal entry, very exciting progress. you all rock :) 11:41
svnbot6 r9556 | arathorn++ | fix v. minor typoe in NOTES 11:47
Arathorn interesting 11:48
arcady Arathorn what about the typo in the commit message? : )
Arathorn it was a meta typo ;)
of the ironic 'teh' variety
11:48 ruoso joined
Arathorn a tad lame, perhaps :/ 11:48
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:49
which coincidentally seems to coincide very much with the comment at pugs.blogs.com/pugs/2006/03/compili...t-14985542 11:50
(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)
arcady indeed 11:51
you can't just ask "can perl 6 do ...?"
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
esp. in terms of their development, staleness, renamings, refactorings and conclusions (if any) 11:52
Arathorn thunks
arcady in general the documentation needs lots of work
one of those things that I'd do if I had the time 11:53
Arathorn i'm not sure that throwing time at it is necessarily necessary, though 11:54
there's just an absence of consolidation (unless i've just not found it yet)
arcady yeah
Arathorn between them, audrey's blog and svn.perl.org/perl/docs and the pugs repo itself probably contains everything
arcady and what is needed is someone who would consistently spend the small amonut of time to keep things updated
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
(svn.perl.org/perl6/doc even)
arcady but that one only applies to perl 6 the language 11:57
Arathorn yup
whereas pugs-of-the-many-implementations is documented in a mix of #perl6, audrey's blog and READMEs in the pugs repo
although obv audrey's blog tends to be a subset of #perl6
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)
arcady the key is "rabidly up to date"
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
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 : )
Arathorn hehe
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
and there's still lots of stuff in perl 6 the language that's incomplete or outright missing 12:01
ingy Juerd: awesome review of pmc. 12:02
Arathorn well, the gaps are easier to spot in the consolidated p6 doc
but keeping track of the beautifully fractaline pugs dev is a total nightmare 12:03
from the perspective of someone who isn't totally immersed
Juerd ingy: Thank you
arcady so basically, you'd have to have nothing better to do than sit on IRC all day
Arathorn which perhaps needlessly creates a barrier to entry for fresh minds
12:03 TimToady joined
ingy Juerd: you forgot the best part though 12:04
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
12:05 mj41 joined
ingy Perl's -c flag now *works* :) 12:05
s/P/p/
Juerd It didn't work before? 12:06
ingy -c == --compile ;)
Juerd Ehm? 12:07
Perl doesn't have long options, and -c is check, right?
ingy perl -c lib/Foo.pm
is the easiest way to create lib/Foo.pmc
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
:p
just say, 'heh' and it's all good 12:09
Juerd Oh
Heh.
ingy :D
Arathorn the -c is certainly c^hserendipitous :)
and rather fun
12:12 chris2 joined
ingy audreyt: I think M::I can itself use M::C to do much of its magic. like Pod stripping etc 12:14
audreyt ingy: yo 12:15
ingy just an evil thought
audreyt ingy: you have an extra "benefits" line
in your version of pod
I'm committing something insane.
ingy ? 12:16
audreyt svn.openfoundry.org/pugs/perl5/Modu...le/t/pmc.t 12:17
the .pmc now autorecompiles itself.
svnbot6 r9557 | audreyt++ | * sheer insanity: self-recompiling pmc validator block!
audreyt now of course, maybe a writable check or something would be nice, but I'll leave it for later
ingy nod 12:18
Juerd Oh, audreyt, why do you have to hurt my brane so much, so often? :)
ruoso does somebody knows if "require bareword;" will still be different from "require $scalar;" in perl 6?
Juerd ruoso: What do you mean, "bareword"?
ingy gah http is not working in this cafe 12:19
audreyt ruoso: I think we are adopting the Module::Load semantics
ruoso: require "Module::Load" is same as require Module::Load;
ruoso nice
audreyt (as is currently in pugs)
12:19 Alias_ left
audreyt Juerd: it's just two lines! :) 12:19
filter_add(sub { filter_del(); 1 while filter_read(); $_ = $f; 1; })}
and
#line 0
Juerd audreyt: It's not the code, it's the constant reshaping of my universe... 12:20
audreyt ah. well... :)
ingy audreyt: I have some clever idea about how to do compiler chunking/dispatch
webmind Juerd, brain? 12:21
ingy s/idea/ideas/
Juerd webmind: pinky?
ingy but first I must finish M::I::PMC
webmind Juerd, what shall we tomorrow night?
:)
Juerd webmind: do?
webmind Juerd, just correcting spelling ?
Juerd, yes
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)?
Juerd webmind: Taking over the world is more interesting than just correcting spelling. 12:22
webmind Juerd, true
Juerd webmind: Where are you going with this?
webmind Juerd, thinking that 'brane' was a typo ?
Arathorn (taking over the world by means of correcting spelling is obviously the way to go)
Juerd webmind: No, that was quite intentional.
audreyt Arathorn: well, that is the individual M::C compiler's duty
webmind Juerd, that's why the '?' was there for
audreyt Arathorn: I imagine using PPI (or even MAD) can reduce a lot of such errors
Arathorn oh - of course - it depends on what language it'd be parsing, doesn't it
<-- idiot
audreyt and now that filtering is only done author-side 12:23
very expensive matching like PPI is possible
and even desirable
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.
Arathorn nods.
audreyt (previously the user pays the cost on every load.)
lypanov audreyt: i love some of the deployment plus points the blog lists btw
webmind Juerd, I'll see
ingy audreyt: more importantly I'd like to do a hacking session with dconway on M::C dispatch
audreyt M::C::Hawkings
ingy: sure, and I'll even be there
Juerd audreyt: Could you do some visiolization of the M::C business?
audreyt my "Deploying Perl 6" talk just got accepted in YAPC::NA
lypanov neat :) 12:24
audreyt Juerd: the landscape is _so_ changing
ingy audreyt: Hawking
audreyt Juerd: after ingy's M::C::PMC
Juerd audreyt: When it's settled a bit more, then perhaps :)
audreyt ingy: M::C::Hacking
Juerd: yup :)
do remind me to remind you to remind me
lypanov: thanks! *smile*
Juerd Okay. But in case I forget, please remind me to you remind you to remind me to remind you.
audreyt ok 12:25
Juerd Great :)
Arathorn wonders whether the changing landscape is better characterised as constant earthquakes or splendid mountain range formation from a subduction zone :D
Juerd I feel this redundancy is going to be fruitful.
lypanov Arathorn: blooming flowers :)
Arathorn hehehe
Juerd Because we can now both forget ;)
audreyt Redundant Array of Insane Dementia
exactly ;)
Arathorn has a mental image of #perl6 sitting on petals of a vast unfurling carnivorous plant now 12:26
trippy. :\
lypanov grins
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
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 :)
"you" as in "the user"
Arathorn . o O ( images3.deviantart.com/i/2004/129/5...ersion.jpg ) // apologies to any other audrey's present ;)
anyway
audreyt Arathorn: *giggle* 12:28
webmind heh
lypanov lol 12:29
audreyt that... is not exactly flattering :D 12:31
lypanov giggles
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
coffee & # :/
chris2 hey lypanov 12:34
audreyt I deny all associations, except that I maybe 1)flowery 2)carnivorous
lypanov audreyt: hungry? :)
chris2:
oops
chris2: paulfeng.tripod.com/ 12:35
chris2: look at first video on page
audreyt actually yes... must.. feed... on.. flesh...
chris2 k
audreyt food, bbiab &
lypanov lol
Arathorn o/` feed me! o/`
lypanov audreyt: i searched for audrey looking for the above pic
Arathorn (if anyone's not seen a production (or the film) of Little Shop of Horrors - they're unquestionably missing out :) )
lypanov audreyt: try it, "Can't find Audrey? Ask your local store to carry it."
12:36 bsb joined
lypanov tests searching for "alex" 12:36
12:37 |mjk| joined
gaal lumi: ping 12:37
12:38 rafl joined
Juerd rafl: Please reenable the autobuilding on feather 12:38
chris2 lypanov: that soo reminds me of prince of persia :P
lypanov chris2: *exactly what i thought* 12:39
rafl Juerd: Too busy right now. Would tomorrow be soon enough?
chris2 lypanov: great minds ;)
Juerd rafl: Yes. 12:41
rafl: Thanks
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 :)
Arathorn audreyt: do you actually use m$ visio to do your visiolizations?
rafl Juerd: I'd need a script that bugs me with items in my local todo list then. Write it!
Juerd rafl: * * * * * mail rafl < ~/todo 12:43
audreyt Arathorn: yes. (but bbiab for real)
rafl Juerd: Works for me. Thanks! 12:44
ingy audreyt: I love you
pasteling "ruoso" at 201.8.192.43 pasted "How to get the <ident> part of this rule?" (8 lines, 217B) at sial.org/pbot/16311 12:46
lypanov chris2: great minds... um... played prince of persia when young? :P 12:48
chris2 =)
Juerd megahit!
chris2 megahit, i just tried to remember :P
Juerd k
chris2 it's actually the reason i got dosbox here :P
Juerd :)
ruoso audreyt, could you help me with sial.org/pbot/16311 ? 12:49
chris2 bbl 12:50
svnbot6 r9558 | gaal++ | If you have several working directories and they all use a shared DrIFT, 12:59
r9558 | gaal++ | you need to point symlinks to the current one if you want to regenerate
r9558 | gaal++ | files. We should probably make this arrangement less hacky, but until
r9558 | gaal++ | we do, this "claims" DrIFT links.
r9559 | gaal++ | remove debug print 13:02
ingy audreyt: M::I won't install on my system: rafb.net/paste/results/zqKJe072.txt 13:03
13:03 Alias_ joined
ingy Alias_: 13:04
Alias_ ?
ingy audreyt: M::I won't install on my system: rafb.net/paste/results/zqKJe072.txt
any clue??
Alias_ Weird
What is the currently installed version, and what are you installing
ingy installing from svn 13:05
Alias_ oh... that might not be such a good idea 13:06
ingy grrr
Alias_ Not guarenteed to be stable between releases for a while
ingy what is stable?
Alias_ 0.60
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.
Alias_ I'd like to see a bit more of that, thanks
I think the extension loading process and what-to-bundle selection stuff is stable as it's going to get
ingy Alias_: a bit more of separation?
Alias_ yeah
The main MI dist is getting really bloaty 13:08
ingy Hmm, I can just bundle it in M::C!
that's what I do for Test::Base
Alias_ erm...
define bundle
ingy see T::B
Alias_ You mean include for Makefile.PL-time, or install 13:09
?
Because I would have though MI:PMC is a two-parter
thought
MI:PMC + MI:Admin:PMC
ingy I mean distribute M::I::PMC with M::C
it is a two parter
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
Alias_: doesn't matter
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
anyway, this make most sense for now
Alias_ If you are installing the MI extensions without a dependency on MI, that's fine
ingy yep
Alias_ Just note you might run into some problems if commands move 13:12
ingy exactly
Alias_ Because while the extention-loading mechanism is stable, the commands aren't frozen yet
ingy doesn't worry
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
s/are//
If you do put a dep on MI, seperating it from M:C would be appreciated, until 1.0
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
r9561 | gaal++ | * ReDrIFT instances
Alias_ Although speaking of that, I should document what is stable and what isn't 13:16
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...
Alias_ Arathorn: It's not supposed to 13:19
Arathorn: Well, it wasn't supposed to
Arathorn: And then for a while, pre-pugs, it did end up suffering from the same problems
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
And so now, at the very least you get the equivalent of PPI::Tokenizer 13:21
Although I'm not sure how we deal with a few other issues
The dependency on an unwritten module problem... I don't know 13:22
It may well end up being worse in regards to the PPI::Lexer part
svnbot6 r9563 | fglock++ | PCR - updated TODO
Alias_ I struggle to keep up, to be honest
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
Alias_ And .pmc/.pmx 13:23
Arathorn why is dealing any different?
from the point of view of your IDE (of some kind)?
Alias_ Because the file is a .pm
And so for almost every other thing, there's a language association
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
true
ruoso still using .p6 -> .pm
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
And PPI doesn't need Perl 5, it just needs something that looks like it
Perl 6 doesn't look like Perl 5 13:25
not at all
Arathorn surely Inline C doesn't keep the language inside looking like perl 5 ;)
Alias_ Inline C uses heredocs
(doesn't it?)
Arathorn quickly flips to the Inline pod
so it does.
Alias_ which is all happy
This however, starts LOOKING like Perl 5, then suddenly is not perl 5 13:26
So any simple heuristic will probably be tricked
audreyt Alias_: what does "use v7;" do to PPI?
Arathorn suddenly makes the Alias_ === ali.as connection and feels a little stupid (for a change)
Alias_ It parses
audreyt Alias_: and you expect perl5 that follows
Alias_ of course
audreyt as PPI is a perl 5 parser. 13:27
Alias_ The Tokenizer doesn't know any different
13:27 kolibrie joined
audreyt but perl v7 may tokenize differently than v5 13:27
Alias_ use v7; assumes you'll run off and execute code
audreyt $ perl -Mv7 13:28
Perl v7.0.0 required--this is only v5.8.8, stopped.
probably not.
Alias_ right, it executes code
audreyt what code?
Alias_ If below the language surface
audreyt oh.
I see your point
Alias_ In fact, it hasn't even lexed it yet 13:29
So it doesn't have a "use statement" yet either
I might just have to go either a regex precheck
Or... hmm...
actually, that's it
audreyt yup
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)
Alias_ Otherwise I end up checking "if eq 'v6' for EVERY word in every document 13:30
Arathorn: True
audreyt er no, you can check "use v6" for now
I mean, use vSTRING
Alias_ Arathorn: Except that use v6 won't barf as of next week
audreyt where string is >= 6
Alias_ or thereabouts
audreyt if you see "use v6-pugs" or "use v7" in PPI, I think the sane choice is to heredoc-it
Alias_ oh wait!
audreyt: That's one very very magic heredoc
hmm 13:31
or is it
audreyt not very magic
13:31 iblechbot joined
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
Arathorn no more magick than the magick of perl5's use vSTRING-version behaviour
audreyt which is mark everything below that as one doc
you can forget about nov6 for now.
the idea is if you hand off the 6doc to something like Pugs::Parser::Perl6 13:32
_that_ will parse the nov6 for you
and call back to PPI
and if you don't handoff
Alias_ oh dear...
hmm
audreyt then logically the rest of the file is just opaque.
Alias_ yes, but eep
audreyt conceptually, "no v6" occurs at v6 context
it's just means switching back to p5 parsing.
we emulate that in M::C with preparse, but conceptually that's what should happen.
Alias_ I don't have access to that though
"::Isolated" 13:33
audreyt yup, so currently just mark everything below it as opaque.
that is I think sane and correct.
Alias_ Can you do me a favour then, and document that "use v6-pugs;" must occur on a line on it's own
audreyt (and matches perl's behaviour on "use CGI; use v7; ..."
Alias_ It so I can probably compensate
audreyt ok.
will do 13:34
Alias_ Any more complex than that, and I'm screwed down in the edge cases
(I think)
audreyt (but I will allow whitespace+comment after that)
use v6; <spaces here>
use v6; # now begins v6
Alias_ Let me go for a walk, and I'll let you know
audreyt k
Alias_ Need to work out what a V6 heredoc will look like 13:35
Because it won't fit the current model
audreyt k
Alias++ # improving the toolchain
13:35 Limbic_Region joined
audreyt (but I don't think it's specific to v6-pugs; "use v7", "use v10" should be parsed that way too) 13:35
Alias_ nods 13:36
The problem will be deserialisation, but I'll be back in 10 minutes
audreyt Alias++
ruoso: named-capture inside return block... try $/->{ident} 13:37
ruoso trying 13:38
audreyt, nops... I'm using $()->[2]{ident}[0]{ident} by now 13:39
audreyt k
it should be $<ident>
ruoso but I just realized the code inside the rule is not really being parsed as perl6 code... 13:40
ruoso successfully compiled a code with a macro definition and use in the same file :) 13:41
and it worked... :) :) :) 13:42
audreyt ruoso: owoot. $<ident> really should work tho 13:43
ruoso testing $<ident> now
audreyt it's parsed in Emitter::Rule::Perl5 line 292
ruoso I don't think the code inside the rule is being parsed
audreyt it is being filtred 13:44
in your tree it's line 283
RuleInit
ruoso $<indent> is an array 13:45
$<ident> is an array
audreyt hm, the code inside really should make use of full match objects 13:46
talk to fglock about that
but for now explicit deref is fine
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
r9563 | fglock++ | PCR - updated TODO
Limbic_Region did anyone/everyone see eric256's p6 rule post at the Monastery? 13:51
eric256++ 13:54
advocacy++
ruoso Limbic_Region, id? 13:56
Limbic_Region perlmonks.org/index.pl?node_id=536423
though if he also checked it in to the repository under examples 13:57
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?
kolibrie Limbic_Region: he did, or at least someone did
audreyt Guy Steele's paper "Growing a Language", a very _very_ nice and relevant read if you had missed it: homepages.inf.ed.ac.uk/wadler/steel...psla98.pdf
Arathorn (short of looking at the svn commit mails or logs straight off svn)
Limbic_Region Arathorn - always check the Pugs homepage when looking for stuff Pugs related 14:00
Arathorn sees the recent commits link
thanks 14:01
Limbic_Region rt.openfoundry.org/Foundry/Project/.../pugs/log/
Arathorn shame that openfoundry's so slow (from the UK, at any rate) :(
audreyt yeah. I blame the .tw link :/
clkao i think tw <-> most of europe is now via US 14:02
:/
audreyt yeah :/ 14:03
Arathorn this is certainly being chucked through .de -> NY -> AT&T -> SF -> .tw 14:05
ah well
interestingly the latency is incredibly stable at 291.9ms, though 14:06
14:12 GabrielVieira joined
svnbot6 r9565 | ruoso++ | iterator_engine.t working... 14:13
nothingmuch moosen
14:19 Alias_ left 14:24 FurnaceBoy joined
svnbot6 r9566 | ruoso++ | finally a Makefile... "use" now supported... 14:28
14:30 Lorn__ joined 14:33 FurnaceBoy_ joined 14:35 vel joined 14:36 penk left 14:43 chris2 joined
ruoso hmmm... the compiler should keep the comments... #!/usr/bin/perl is a usefull comment 14:46
14:48 Lorn__ is now known as Lorn
ruoso which would be a good name for the rule which defines ":=" 14:51
hmmm 15:07
15:08 justatheory joined
ruoso I'm having troubles defining a rule to use :=, because := is already used in rule definition... 15:10
escaping compiles... 15:11
webmind sounds like a crap product ? 15:14
oops
wrong window
15:27 vel joined 15:31 Qiang joined
ruoso whats wrong with "<term1><?p6ws>?\=<?p6ws>?$value:=<term1><?p6ws>?\;"? 15:37
ruoso beats himself 15:40
missing parenthesis
svnbot6 r9567 | nothingmuch++ | bootstrap lines for a subsequent performance ;-) 15:43
15:44 Guest37849 joined 15:46 eric256 joined
svnbot6 r9568 | ruoso++ | $a = $b rule implemented. lrep uses Getopt::Std now. Start what will be lrep.p6 15:46
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:47
ruoso bye all... going lunch... 15:48
lrep is close to compile itself... just some rules missing...
bye
15:50 Ara5n joined
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! ;)
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?
(gdb yields a huge corrupt stacktrace)
integral o_O
you're using ghc 6.4.1?
Ara5n ghc 6.5 15:54
15:54 Guest37849 is now known as GabrielVieira
Ara5n (whatever minor version debian thinks is ghc-cvs under sarge) 15:54
using r9556 of pugs
integral well ghc 6.5 isn't a stable release of ghc. So you should be expecting segfaults, no?
Ara5n if you say so 15:55
Ara5n downgrads
e
s
integral shrugs
of course, you could submit a bug report, debug GHC, figure out if it's a GHC or pugs problem, etc
Ara5n it used to work fine around r7000 (last time I actually got 'round to building a pugs)
integral might be worth debugging then 15:56
Ara5n moreover, make smoke was running fine (until i got bored)
TimToady Ara5n: maybe it's the readline problem again? 15:57
if it's only the interactive pugs that croaks...
Ara5n sounds likely
Ara5n seems to remember having problems with cpan & readline on this box at some point
Ara5n googles
16:00 theorbtwo joined
Ara5n does pugs (or ghc 6.[45]) prefer libreadline 5.0 or 4.3? 16:06
rgs I use it with libreadline5.1 16:07
Ara5n rgs: thanks 16:08
16:10 Barry joined 16:12 Barry left
Ara5n well, it dies in (or on entering?) repLoop 16:15
which does sound vaguely readline related
yeah, this is blatantly the same problem as eric256 and kolibrie encountered over the last few weeks 16:20
Ara5n disables readline support & rebuilds
looks like a problem with 5.0 v. 5.1 16:21
rafl: ping (c.f. colabti.de/irclogger/irclogger_log/...l=583#l925 ) 16:23
rafl Ara5n: Here I am
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
and the log there suggests pinging you on encountering it
(apologies if the suggestion there is bogus)
rafl Ara5n: Build log please?
Ara5n: It's fine with me.
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?
Ara5n i did - but the screen has since died :/
rafl Ara5n: Just pasting the last few lines where the error occurs may be enough.
Ara5n well, the build process completes fine - and pugs ends up being dynamically linked against libreadline 5.0.10 (sarge's current) 16:27
but ./pugs segfaults in the depths of repLoop with a corrupt stack on being run
just before the prompt would appear.
(this using sarge's ghc-cvs, for better or worse)
and pugs in non-interactive mode runs fine. 16:28
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
Ara5n www.rafb.net/paste/results/rgYS4E82.html 16:31
rafl Too bad.. no debugging symbols in parts of the code. 16:33
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
I also wonder if that can work as ghc isn't recent enough there.
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
thanks for checking :)
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
Ara5n 5.1 dies the same way :( 16:40
Ara5n rebuilds with readline disabled :| 16:50
eric256 begins building a BASIC parser just for kicks 16:51
osfameron actually, having a VB parser might not be entirely unuseful
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
Limbic_Region really liked BASIC
Ara5n paint rocked 16:53
eric256 actualy i'm just aiming for LET, PRINT, and GOTO to start with. ;)
Ara5n especially as you could see the blitting happening over a matter of seconds
eric256 trying to learn how to build a grammar
eric256 kicks the rules he made 16:56
lol
do grammars not work yet? 16:58
rjbs nothingmuch suggested that I mention, here, my release of Sub::Exporter 16:59
it's an exporter that builds in generators/currying
geoffb rezzes in
Hey all! 17:00
rjbs irta a clever way of saying "breezes in"
geoffb rjbs, it's a pseudo-reference to Tron
rjbs that was on TV about fifteen times this weekend.
geoffb *chuckle* 17:01
Anyway, question: where is the SVN repo for the synopses?
rjbs the p6 synopses? 17:02
geoffb rjbs, yes
Ara5n svn.perl.org/perl6/doc 17:03
(trunk/design/syn iirc)
geoffb Ara5n, cool, thank you
Ara5n np - fun to be able to answer rather than ask a q for once ;) 17:04
geoffb heh
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?
geoffb Are the synopses still being written roughly 1:1 with camel book chapters? 17:06
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?
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.
geoffb TimToady, thanks
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
geoffb TimToady, how draft? "Shot in the dark" or "reasonable start"? 17:11
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?
nodnod
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:13
audreyt geoffb: "reasonable" ones are moving to docs/Perl6/Spec/ 17:15
svnbot6 r9569 | audreyt++ | * repo-copy S22 to CPAN.pod
audreyt geoffb: also, feel free to populate docs/Perl6/Overview/ and docs/Perl6/Tutorial/
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
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
geoffb audreyt, what's moving to docs/Perl6/Spec?
The S?
17:16 marmic joined
audreyt geoffb: the nonnormative docs/AES/* 17:16
geoffb audreyt, oh, OK. 17:17
audreyt geoffb: the S is not moving there, though I've been thinking about svn:external
geoffb audreyt, nodnod
audreyt clkao: is svk going to do anything about svn:external?
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. :-)
audreyt geoffb: ah ok... you are operating under imaginary tuits
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...
geoffb audreyt, completely. I hope one day to figure out how to rotate them 90 degrees towards the positive reals.
audreyt that's understandable; I'm on quaternion tuits here
rgs square tuits become negative then 17:19
audreyt that's why we have them in round.
rgs indeed.
geoffb TimToady, OK, thanks. 17:20
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!
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...
eric256 notices that a recent build of pugs is much slower than the one i was running yestarday
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
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
i tried <Basic.program> too with no joy
audreyt Basic::Program surely? 17:25
ruoso Basic.program is the grammar name?
or one of the rules in the grammar?
eric256 Basic is the grammar, program is the rule
ruoso it still depends on the implementation... 17:26
clkao audreyt: hopefully. soon.
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?
ruoso hides... 17:28
it still doesn't work
but shouldn't be hard to change... 17:29
ruoso wonders why it wasn't made as methods in the first place...
eric256 thanks to whoever made the $match.perl.say print nicely
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...
audreyt eric256: in Parrot-PGE, I don't think <Foo::bar> works
eric256: and you are welcome 17:30
eric256: in fact in my current Parrot, <Foo::bar> is a segfault
eric256 yea i've come to that conclusion so i commented out the grammar part
ruoso TimToady, :)... It's on my list already... :)
audreyt eric256: but if youa re in the same package
you can just use <program> 17:31
in actual fact, regardless of the package, because the Foo:: doesn't work
you can just use the <program>... for now
that is of course subject to change.
oh, it fails because we had not recreated the Parrot namespaces 17:32
and so it tries to access the Parrot namespace "Basic::"
creating a new PMC
and dies with the rather cryptic
Illegal PMC enum (0) in new
eric256 lol. i'm glad that all means something to you 17:33
audreyt I find delight in your gladness :)
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?
audreyt eric256: it's t/syntax/POD.t
TimToady __DATA__ is dead
audreyt and it looks like it's not there
TimToady =begin DATA or some such
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
geoffb rezzes back out again (thanks all) 17:36
TimToady I am also reminded of .hack/sign
audreyt in actual fact... that's a really good candidate for M::Cing.
ruoso thinks about the new obfu styles created and some disabled by this
audreyt ingy: you of course thought about M::C Perldoc? 17:37
TimToady do we also get a .pmd now? :)
nothingmuch is this like .swp, swo, etc? 17:38
audreyt precompile the parsed POD stream into a BEGIN that populates $={FOO}
ingy audreyt: of course :p
TimToady .pmp?
nothingmuch audreyt++
audreyt =head1 NAME
nothingmuch TimToady: that's a nice line for our rap song
audreyt accessible for
$={NAME}
nothingmuch .pmpin your pod into deep data structures
audreyt as an arrayref or a string
TimToady BOOM BOOM chika chika
audreyt %= is unreserved
so we can abuse it 17:39
nothingmuch TimToady: see also misc/rap.txt
stevan made big progress today
he chose a tune to rip off ;-)
TimToady TheDamian was working on a a = twigil proposal for all this, so perhaps should sync with him.
ingy audreyt: getting close on makefile support for .pmc
audreyt twigil for perl5?
oh, perl6
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?
audreyt ingy: sure, why not
ingy: oh wait
no, probably not.
ingy because you want to check them in
17:40 Ara5n joined
audreyt yeah. 17:40
nothingmuch err?
huh?
ingy yeah
audreyt I think the perl5 runtime should convert the $*FOO into $*{FOO} and $=BAR into $={BAR}
nothingmuch autogenerated in repo == baaaaaaaaaaaad
ingy nothingmuch: bzzzt wrong 17:41
nothingmuch better have a snapshot service with precompiled ones
eric256 hmmm never mind he......i broked something else somewhere else loosing all captures
ingy well M::I inc checked in is good
17:41 cdpruden joined
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
audreyt and we don't need no snapshot service for that.
nothingmuch and not regenerated
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
nothingmuch in pugs land we don't really deal with deployment
ingy chacking in .pmcs is really not a service to $other_hackers
audreyt rgs: tie it and look at (caller(0))[0].
nothingmuch but explaining to n00bs 10 times a day that they shoudl zap all the pmcs and ignore svn
ingy checking in inc *is* good
nothingmuch and then to tell them "one minute" and recheck them in en masse
TimToady should probably be a lexical import, actually... 17:43
nothingmuch == not good
ingy because $other_hackers rarely need to change inc
rgs audreyt++ # has evil ideas *fast*
nothingmuch also, most people won't need it
audreyt rgs: well, it all starts in 1999 where I reasoned I want to tie the symbol table
rgs: I couldn't, so all the smaller evil ideas follwoed
rgs still not possible :) 17:44
nothingmuch if you assign *{"="} to $some_obj that has '%{}' overloaded that doesn't "jsut work", right?
ingy audreyt: I'll add them to clean_files for now
audreyt nothingmuch: nope
nothingmuch: it looks at the real reftype
ingy it'll make for easier testing :p
audreyt ingy: is there a distinction between realclean and clean?
ingy I don't think you can add files to real_clean 17:45
audreyt ingy: can we only add it to realclean?
nothingmuch thinks the biggest load of wasted effor in the perl community is kwalitee
why do people devote so much attension to something so silly?
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.
audreyt ingy: you can
nothingmuch and I don't mean just getting it
audreyt ingy: just populate the realclean key
nothingmuch discussing it at nauseum
new kwalitee tests
new ideas
the philosophy of kwalitee
the definitions on the wiki
and the tests are sooooooooooo badly implemented
audreyt ingy: it should work. I think that's the best - look at EU::MM doc for semantic
eric256 hmmm if you can read from pod sections, could you right to them as well? ;)
nothingmuch e.g. it checks that the module has a pod test
audreyt ingy: clearly .pmc is among "derived files"
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.
nothingmuch instead of checking that it has good pod
rjbs nothingmuch: that's the most obnoxious one. by far. 17:47
ingy audreyt: ok
audreyt ingy: M::I::Makefile needs a real_clean_files()
but it's trivial. thanks a bunch :)
nothingmuch rjbs: not a total waste, just that effort:gain is too big
rjbs nothingmuch: for the authors, but not for me! :)
nothingmuch otoh effort:gain of working on phallanx is pretty high, theoretically
err, pretty low
ingy audreyt: did you see that I am distributed M::I::PMC in M::C?
nothingmuch gain:effort is pretty high ;-) 17:48
ruoso %args = (); is still valid, isn't it?
ingy er, M-C
nothingmuch but i don't see people discussing *that* to death on [email@hidden.address]
audreyt ingy: I saw, it's obviously sane
nothingmuch ingy: that looks like an emacs subprompt
rjbs nothingmuch: it requires more work. :(
nothingmuch rjbs: yeah.. *sigh*
17:49 lampus joined
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'
audreyt TimToady: re twigil holder, yeah, it's prolly silly.
I mean, the tie-pkg idea
maybe just compile the twigil forms out.
since we are preprocessing anyway
audreyt praises PPI for (somewhat) sane macro processing 17:50
TimToady The v6 is already the two-language hack. don't need more...
ruoso TimToady, ok... the my is before...
TimToady, no rule for my %args = (); yet
audreyt TimToady: well, I'm thinking about using it in non-v6 code
TimToady: but in Perldoc.pm
(port of the perl6 DOM to perl5)
but may be too silly. maybe all p6 magick should be properly in Pugs::Runtime and hence in v6 17:51
like the Match overoverloading etc
svnbot6 r9570 | eric256++ | Added a realy basic BASIC parser, that doesn't realy work yet.
r9571 | ruoso++ | empty_list rule available... one more line to lrep.p6
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...
audreyt it's harder to translate 'idiomatically'
yeah.
better not make your (and Alias's, and MADhackers') life more miserable
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.
In an Alias_ey sort of way.
rgs the ~~ feature ?
audreyt given
use feature given, that is
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
audreyt eric256: it's capturing '$;'
rgs for example, what does it return in list context ?
TimToady Well, maybe they'll converge okay. But I do worry.
eric256 yes... but it should be capturing the whole text...at least i thought it should ....
TimToady where's a language designer when you need one. :/ 17:54
audreyt eric256: ws
eric256: whitespace are ignored
<ws>
or <' '>
or \s+
eric256 ohhh dear. i see. lol
audreyt the joy of default /x 17:55
eric256 yea that will take some practice to get used to
TimToady even inside <[...]>, you'll note.
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)
nothingmuch rgs: yes, but while this is technically better in that it's more accurate, it's hardly a translation 17:56
as far as the user is concerned it just makes it run there
it's not really "ported"
TimToady p5given $x {...}
17:56 elmex_ joined
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.
nothingmuch and one more thing whose subtle semantics people won't want to remember
if ~~ works well in Perl 6 17:57
audreyt rgs: TimToady is after idiomatic translation
nothingmuch but works just slightly different in Perl 5
TimToady I have a sneakin' suspicion the translator will be cranking out a lot of p5foo() function calls.
rgs audreyt: indeed
audreyt rgs: we all know semantic-correct translation (like Pugs::Emitter::*::Perl5) always works
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
rgs I suspect there will be problems with ties, too
audreyt oh, ties are in perl6.
rgs with their perl 5 bugs ? :)
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?
rgs for example. or more internal bugs, like magic leaking or such
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
nothingmuch has on few occasions
eric256 audreyt i'm still no where near clear how that would work. lol
audreyt thrives on such misfeatures
nothingmuch audreyt: ? 18:00
18:00 elmex_ joined
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: search.cpan.org/dist/Pugs-Compiler-...er/Rule.pm
rgs yes, and refine the translator over time
that said, time for food &
audreyt eric256: it's in perl5/Pugs-Compiler-Rule/ -- you can start by writing a "rule" function to define new rules 18:01
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}
ingy: it looks up M::I::A::* to find bar
ingy on the user side
audreyt oh. you need to say
$self->is_admin 18:03
to guard that
ingy super you++ thanks
eric256 asks stupid question....why isn't that module avaiable in pugs? 18:06
PerlJam eric256: um ... what do you mean? 18:09
eric256 why would i write it in perl5 using that module instead of pugs?
PerlJam i give up. why would you? :-) 18:10
eric256 audreyt just told me to. thats why i'm confused
audreyt eric256: er beause, well, you see, that module is under active dev and API change 18:11
eric256: the plan is indeed to switch to that module once it stabilizes a bit.
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
PerlJam hey chip 18:12
eric256 hehe that would be a nasty little loop. /me decideds to wait just a little on that one 18:13
ingy audreyt: I think we need to change pm_to_blib to be :: (double colon) 18:16
audreyt ingy: goahead
ingy audreyt: sadly I'll need a M::I release for that 18:17
or a gonzo hack
audreyt ingy: also, you merged my pugs/perl5/M::C changes (including the removal of the extra "benefits" line in POD)?
ingy: a M::I release please. we are overflowing with gonzo hacks
Juerd I always picture Audrey's ::-slide in her Haskell talk when I see a lone ::. It's so beautiful, the four dots.
ingy hi chip
audreyt: I'd want Alias to do that though 18:18
audreyt Juerd: indeed.
ingy: not me? why? *pout*
ingy audreyt: you have time?
ok!
audreyt I'm operating on quarternion tuits, so sure
ingy fine 18:19
eric256 err don't name rules "print" lol. /me learnd that the hard way 18:23
audreyt lol
yeah, they are just functions.
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>
it matches a single IsPrint 18:25
and can't be overridden
well, not without the <Foo::bar> support is hacked in
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.
audreyt broquaint: I think so yes
broquaint Cool. How do I do that? :) 18:27
Get pugs to emit YAML then just gzip it up?
ingy audreyt: M::I Makefile.PL is not actually making a Makefile 18:28
Writing Makefile for Module::Install
LIES ^^
audreyt broquaint: well, "make pugs" does that for you 18:29
Juerd .pm.yml.gz # heehee 18:30
.pm.yml.gz.pgp.md5.bz2
Hm, no, that's just silly, to bz2 an md5 checksum file
TimToady .say 18:31
broquaint So it does, audreyt :) Think I'll just nab that part of the Makefile ... 18:34
audreyt broquaint: cool! add a new target perhaps 18:37
to Prelude.pm.yml.gz
ingy audreyt: ping 18:38
TimToady audrey's on parade at parrotsketch at the moment 18:40
ingy TimToady: thanks. you don't know the inner evils of M::I perchance? 18:41
TimToady shake
ingy implements $gonzo_hack 18:44
audreyt mm parade.
ingy audreyt: need your help
eric256 did you get to ride on a float and wave at all of the lowly people on the street?
audreyt ingy: yes?
ingy M::I won't install 18:45
It won't create it's own Makefile
audreyt wow.
permission?
a fresh checkout from svn worked 18:46
ingy it says Writing Makefile for Module::Install
but doesn't write one
audreyt ingy: trace EU::MM::flush 18:47
eric256 realy realy realy loves rules
i'm might get divorced just so i can marry them! ;) 18:48
audreyt aww
TimToady that would be against the rules
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
audreyt eric256: coderef works... in p5...
ingy audreyt: trace?
audreyt tries to steer eric256 toward hacking Pugs::Compiler::Rule
eric256 spits on p5
audreyt ok, I got the idea :)
ingy: trace, as in, put print statements, etc. I can't dupe the bug here.
eric256 hehe. i looked over it and was totaly confused i would need lots of hand holding to get anything done 18:50
18:50 oozy joined
ingy audreyt: does M::I really need CPANPLUS? 18:50
oozy hi
ingy hi oozy
audreyt ingy: no 18:53
ingy why is it even a dep? 18:55
18:57 pawel joined
pawel hi all 18:58
18:58 pawel is now known as pmurias
ingy audreyt: commenting out the CPANPLUS feature recommends, fixed it for me 19:01
!
audreyt ingy: just comment it out then, orz
ingy I recommends we take out CPANPLUS
audreyt I accept your recommendation 19:02
ingy :)
19:02 elmex joined 19:03 Cryptic_K joined
kane_ there was a requirement on cpanplus? thought it used it if there, not if otherwise... 19:05
ingy kane_: it was a feature recommends 19:08
but a royal barrier in M::I install if you didn't already have it 19:09
s/in/to/
kane_ ah, that's no good of course... tranpsarency++
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:12
TimToady Might have to say $program().compile.run to pull out result object. 19:13
audreyt right. AUTOMETH might be too sugary. 19:14
TimToady we don't autobless match objects currently
eric256 is that a planned feature though? autobless into a class of the rules name maybe? 19:15
TimToady could be a role that tweaks BUILD, maybe 19:16
but someone still needs to invoke the new, so that wouldn't work.
would have to be driven from the grammar side somehow, and I don't see it, unless it's a Grammar role... 19:17
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:19
or maybe only do that if said objects/classes (/me forgets the correct language) exist already? 19:20
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...
also gotta run. &
19:24 Cryptic_K is now known as Quell 19:32 fglock joined
audreyt dinner... bbiab & 19:38
lypanov ummmmfoood
19:45 FurnaceBoy_ is now known as FB|afk 20:13 binary42 joined 20:20 rhandom joined
ingy audreyt: ping 20:22
audreyt pong 20:23
ingy audreyt: I have a seemingly working M::I::PMC
was wondering...
does the cp in pm_to_blib always preserve time stamp?
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
ingy always preserves?
audreyt so if you touch lib/Foo.pmc and make sure it's always at least 2sec> lib.Foo.pm
you are set
Juerd sleep 3 20:26
audreyt ExtUtils::Install, grep for utime
Juerd: thank-you! :)
Juerd ;)
kolibrie (OT) how can my 2GB partition be full with only 535662 bytes of data? 20:27
Juerd kolibrie: Slack
ingy audreyt: I'll just release what I have, and we can fix whatever comes up
Juerd kolibrie: Or maybe deleted files.
TimToady open unlinked file growing forever
Juerd kolibrie: What TimToady says. Some MySQL versions tend to do that. 20:28
audreyt ingy: sure!
Juerd kolibrie: You may be able to find the offender with lsof
kolibrie could be an open file, because it is growing
5MB per day or so
Juerd Then it probably is :)
Do you run mysql? :) 20:29
Juerd likes to blame mysql.
TimToady prefers to blame yoursql.
Juerd A sysadmin needs a scapegoat.
kolibrie Juerd: not by choice, but I think I might have it running
Juerd Hm, just discovered that I'm wearing my left sock inside-out. 20:30
No wonder I couldn't see its properties!
(Like that it's white)
TimToady too much information...
Juerd Sock, not undies :) 20:31
eric256 is mildly distrurbed
theorbtwo kolibrie: Is this linux? cd /proc; ls -l */fd/*|grep deleted
(As root.)
Juerd Hm. Is this another weird american thing? :)
TimToady being mildly distrubed?
eric256 TimToady grammar Program is Classified() { } ;) mostly just a joke.
Juerd TimToady: And finding sock info too much.
kolibrie theorbtwo: I'll try that too 20:32
eric256 disturbed* even
szbalint Juerd: I guess it depends on the level of imagination applied to that particular sentence.
theorbtwo Apparently, wearing one sock on one's third leg is a stereotypical adolescent male thing to do. 20:33
Juerd theorbtwo: wth?
theorbtwo Juerd: Yeah, I'm not sure I really get the point either.
eric256 stares at theorbtwo 20:34
Juerd Now I am also mildly distr?ur?bed.
kolibrie is glad he was never a stereotypical adolescent male
Juerd theorbtwo: Have you often done this?
theorbtwo: And does it help? (how, and for what?)
theorbtwo I don't think anyone has actually done this outside of bad teen movies. 20:35
I have never done this.
ingy audreyt: please release M::I 20:40
audreyt: also how do i runtime dep on M-I-0.61
use Module::Install 0.61; ?? 20:41
(from inside M::I::PMC)
audreyt that'd do
use Module::Install 0.61 ();
oh wait 20:42
that doesn't work
do a manual check.
chip TimToady: dude. how's tricks?
ingy use Module::Install::Base 0.61; 20:43
TimToady chipmeister. They're pretty how.
audreyt ingy: sure, commit it :)
chip TimToady: I'm told that 'is tieable' is required if you want to let a subroutine tie your var.
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.
Limbic_Region ducks
TimToady But the default could be shifted in a lexical scope.
audreyt is reminded of the "use traits" macro idea again 20:45
eric256 perlbot nopaste
perlbot Paste your code here and #<channel> will be able to view it: sial.org/pbot/<channel>
theorbtwo As in use traits '&' => 'is tieable'
audreyt TimToady: bool::true is bool::True now?
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.
theorbtwo Can we use bool 'True', 'False', if we like being confused?
TimToady Sure. 20:47
audreyt chip: wait... you mean all Integer are by default tieable and mutable
and then we slap non-tieable and immutable proxies over it?
ingy audreyt: should I apply your M::C patches to the release version
audreyt ingy: sure
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
TimToady I'd like the compiler to be able to optimize a $foo to a Parrot N or I register occasionally...
audreyt chip: tie is a runtime operation.
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.
audreyt -O, even
TimToady: S06 claims there is a runtime tie statement.
line 1319
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
of course we can use PMC attrs or something like that
TimToady But what I mean is that there's no tie() with P5 semantics.
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
err - that should have been quoted
20:51 nwc10 joined
audreyt TimToady: ok. you mean the Tieable role dispatch it to the container class. 20:51
fglock back
TimToady *nod*
audreyt chip: under p6 model, compiling to parrot where everything is a container, we'd need one container PMC and one value PMC
always
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." www.debian.org/News/weekl
20:52 larsen joined
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 sial.org/pbot/16319
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?
fglock ruoso: re rules as objects - the initial implementation was functional - PCR API will be plain OO (but it's not yet)
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?
audreyt chip: right, that's because the PMCs already paid the full price for eachone
chip: so there's no additional penalty :)
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
chip (Or you have. But I'm not taking bets on it.) 20:54
audreyt class Scalar is also { method foo () {1} }
class Int is also { method foo () {2} } 20:55
my $x = 1;
variable($x).foo; # 1
$x.foo; # 2
this is, I believe, the current semantic
TimToady 'is instead' maybe is closer to tie()
chip 'variable'?
audreyt variable($x) talks about the X in the lvalue context
chip you mean the distinction between variable and value is actually part of the Perl 6 user-visible spec?
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.
Limbic_Region and if it wasn't originally defined as being tieable then changing it later (runtime) is going to blow up
got it
chip goes to read, prepared for disappointment
audreyt chip: I think you somewhat know where I come from :)
TimToady you're basically talking about swapping out the container's type and installing a different container type
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:57
TimToady adequate for what? 20:58
chip well, if you don't know, I guess we're all in trouble
integral obviously not perl5, considering the number of bugs that appear from missing readonly flags
TimToady we're all in trouble anyway. :)
ingy audreyt: when can you release 0.61?
chip integral: I'm planning to enforce constness with a flyweight proxy, so that mutation operations never even get dispatched. Faster and more secure.
audreyt integral: chip is considering taking the jvalue.org option rather than the CLR option. 20:59
integral needs to go read those...
audreyt ingy: I'm looking at the change. sec
(and I do agree it involves least modification to the PMC concept) 21:00
(but I'll still need to emit two PMCs not one.)
TimToady the proxy idea works nicely for readonly parameters bound to readable objects.
audreyt yup.
ingy: wait.. why do you need a release?
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
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)
TimToady: indeed
chip TimToady: Or, giving you the benefit of all doubts, you've implied a dereferencing operatino on every single naming of a scalar variable.
Heck, this even breaks the Parrot lexical model, unless I've misunderstood. 21:03
audreyt chip: AbsPIR is trying to remedy all of this.
not very easily ;)
21:03 ghenry joined
audreyt (certainly not fast enough.) 21:03
21:04 ludan joined
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
audreyt (during function param binding)
and if no mutable operations happen in the body
all the subsequent function calls are just sharing on PMC*
on a shared value obj
chip audreyt: No wonder I was so confused about your desire for that. You wanted to bypass something I didn't yet know existed.
audreyt chip: I'm glad we are on the same page now. 21:05
Limbic_Region s/same/sane/; # laugh hysterically
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
chip TimToady: the problem is that the distinction requires a level of indirection to maintain.
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
TimToady But we know lexically whether the indirection is necessary, seems to me.
21:07 whiteg joined
nothingmuch that abuse alt key insertion 21:07
e.g. Āµ is 'my '
audreyt TimToady: yes.
nothingmuch and ʒ is 'sub '
audreyt TimToady: all the FETCH calls are inferrable on the static context propagation phase. 21:08
chip TimToady: MY<> and := contradict that conclusion
nothingmuch ʒfoo ĀÆ is 'sub foo { }
chip TimToady: not to mention foo(\$a); sub foo ($a) { tie $$a, ... } # OK?
nothingmuch (there's around 20 of em)
TimToady MY<> is compile time, but I'll grant you := can collide.
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
audreyt but := is just a call on the compile-time created Signature metaobject
21:09 ludan left
TimToady Any binding can refuse to work if typologically bad... 21:10
chip audreyt: OK, given the container/value distinction, := is less problematic
audreyt chip: the c/v distinction was made clear to solve := :)
TimToady: yup.
(and of course not at compile-time. but that's okay. if you want compile-time you'd used ::=)
Juerd I associate desugaring with bad performance. Please tell me that that makes no sense.
audreyt Juerd: makes no sense. 21:11
fglock audreyt: does Pugs::Compiler::PILN makes sense? (maybe some day)
Juerd Thank you
audreyt fglock: yes.. we even have the rules already
fglock: but I'm thinking about avoiding all that with YAML loading the objects :)
fglock: but I'd like a nice rules engine first... and maybe switch pugs's // over to use that
/../ 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.
audreyt well, then you are putting the C level at the pad level... and parrot's pad are untyped
my $x is MyScalar = 2; 21:13
my $y is MyScalar = 2;
s/My/Your/
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
audreyt aha. that means pushing the C level into LexInfo
and into Namespace
chip the information that the C is currently holding, yeah
Namespace? Ah. 21:14
audreyt (there are pkg vars and there are pad vars.)
(most of the time they are aliased with "our")
"sub f {...}" is just "our sub f {...}"
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...
chip Yes, not as straightforward as the lexinfo derivation, but certainly doable
audreyt ok. what about aggregates?
21:15 nwc10 left
ingy audreyt: cpan-upload -mailto [email@hidden.address] -user INGY -password ******** Module-Compile-0.14.tar.gz 21:15
audreyt ingy: woot!
chip: conceptually, @a[0] need to point to such a info also
21:15 ruz joined
chip don't @a[*] share the same C info? 21:16
fglock audreyt: you are PCR comaintainer
audreyt fglock: k
chip variable(@a[0]) would be a transient object that looks in @a for metainfo when needed, I'd think
audreyt chip: arrays in perl are hetergenous... I don't know why you think they can share container info 21:17
@a[0] := something
@a[1] := another
chip yes, but consider, in the c/v model all you're doing there is swapping Vs but leaving the C in place
ingy audreyt: I had an interesting idea. suppose an Inline C section is in the middle of a v6 program (under M::C)
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
21:18 Arathorn joined
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.
chip: unless all aggregates start to maintain Cinfo also.
chip audreyt: no point in that.
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
and only allow simple-name :=
then your scheme works.
chip audreyt: of course that's not OK
ingy so... you put a token of "md5 of inline section"; in place of the inline section until the v6 is done
I think it's prettyt neat 21:20
chip audreyt: is the list of all Scalar container attributes enumerated?
chip can't find it in S12 21:21
audreyt chip: the only relevant ones is readonly and Tieable
ingy night all
audreyt and the "constant $x" declarator
(which currently gets compiled to a .constant in pir)
chip well, now I get it 21:22
you guys have been calling those "container" attributes, but they aren't at all
they're predictor predicates
"if I try this kind of operation, will it work?"
audreyt try explain container classes with that metaphor 21:23
chip like Array and Hash, you mean?
I don't understand what you're asking for, WRT 'explain' 21:24
audreyt ok. you have a LoggedScalar that contains a Point object
the LoggedScalar logs each fetch.
chip well, you're assuming your conclusion
audreyt my $x is LoggedScalar = Point.new
it's part of spec :/
chip remember the "as if" rule! :-) 21:25
audreyt sure.
now I create an array with 3 elements
my @a is LoggedArray;
@a = (...someinit...)
then I bind @a[0] with $x
@a[0] := $x
then I assign into @a[0], triggering a LoggedScalar action but not a Point action. 21:26
end of use-case.
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)
that'd be correct.
then Array and Hash are implicit Ties as well
and I think you are saying we optimize the most common implicit-tie, vanilla Scalar, away.
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
the internal object is the Point that was passed to the LoggedScalar constructor by the Perl6-generated PIR 21:28
so $x.isa(LoggedScalar), but not $x.isa(Point)
audreyt but the spec says $x.isa(Point). 21:29
variable($x).isa(LoggedScalar).
TimToady variable($x).isa(LoggedScalar)
audreyt again, S06 and S12.
TimToady there's an echo in here...
chip OK, modification.
chip cues up the Jeopardy music 21:30
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:31
I think tied() is a better model, WRT polarity. 21:32
"Show me the man behind the curtain" is much better than "let me talk to your supervisor".
TimToady variable() is not a function. 21:33
chip er, cancel that.
chip tries again, playing the Jeopardy music louder
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.
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?
but $x could be := bound in many places...how would variable($x) deal with that?
audreyt eric256: $x is a Scalar of Point
when it's := $x, it acts on the rhs Scalar, not the rhs point
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
the more the merrier
chip Well. 21:37
fglock audreyt: I mean, is it safe to use PadWalker?
audreyt fglock: it's not safe to use any XS module ;)
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
audreyt fglock: but I'd recommend going ahead with it
fglock audreyt: ok
ruoso fglock, did you see the lrep-compiler subtree? 21:38
fglock ruoso: not yet, sorry
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
audreyt that is all entirely correct. 21:39
fglock ruoso: looking
audreyt I wouldn't opposed to the scheme of compiling basic Scalar living only on NS/LexInfo away
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
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.
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
TimToady Er, I thought that's what we did when we said you couldn't tie something without declaring it that way.
audreyt not so if your MY pad is not tyable.
sigh, echo.
and also CALLER.MY is forbidden
they are now CALLER.ENV always 21:42
and those containers get special marks.
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
everything is always tied.
the only question is, by what
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.
audreyt but note that all the lex Scalars are created at compile time
it's just their values that gets shuffled at runtime. 21:44
TimToady: actually, that needs to go into S6 :) 21:45
chip TimToady: finalization isn't good enough
audreyt "builtin container classes are considered finalized at runtime"
chip TimToady: that implies that indirection *must* still be taken
fglock ruoso: would you like to work on Pugs::Compiler::Rule? You are already familiar with the internals
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
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.
TimToady We already restrict any mods to CALLER.MY after CALLER is compiled.
chip And sometimes the consumer of the pad is not even written in Perl.
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.
audreyt chip: it's just slow.
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.
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.
(or ::lexinfo will have the flag and ::lexpad will use it. whatever)
TimToady But the compiler has to be free to optimize the heck out of "my int @array[2000]"
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' ;))
chip: don't forget all hashes are "pads" too, in that sense
chip sub foo { my int $i; bar() } sub bar { print CALLER.MY<$i>; } # error
TimToady autobox 21:51
audreyt it's certainly plausible to declare "env int $i;" autoboxed.
chip: the "my" scope is not seen by callee now
chip: only the vars declared with "env" are
TimToady but yes, error for plain "my"
audreyt and it's fine to special-handle those
chip audreyt: oh, REALLY
audreyt chip: yeah. it's been hashed as lot
and it's okay to make "env" very slow.
I mean CALLER::* 21:52
it's okay to walk back frames
chip well.
audreyt query metaobjects
etc.
it's okay that %CALLER::.keys takes _very_ long time.
PerlJam Don't you guys still have weekly meetings to hash all of this out? :-)
chip and how is variable() to be implemented on Parrot?
audreyt %ENV::.keys takes O(n^2).
PerlJam: yeah, this is post-meeting hysteria 21:53
PerlJam: (the meeting was 1hr ago)
chip three hours
audreyt oh ok. 3hrs.
mm fruit flies like a banana
integral normal meetings decamp to the pub, perl meetings decamp to irc...
audreyt integral: except perl meeting are on irc too
chip this meeting started on irc too. it's weird
svnbot6 r9573 | ruoso++ | 1 more rule: Assigning hash to scalar creates a reference... 1 more line to lrep.p6...
audreyt chip: variable() is not a function. it's a special form.
it's a Var() node in the AST.
it doesn't live in any namespace like &variable 21:54
or anything like that.
TimToady It's the difference between C languages . and -> operators...
audreyt nice metaphor.
lisppaste3 pmurias pasted "whats wrong with this autogenerated rule?" at paste.lisp.org/display/17879
chip yeah, I get that. so with an optimized variable (a normal variable without a C), it evaluates to Scalar ?
audreyt it evaluates to something that .isa Scalar. 21:55
yup
(if it's of the $ sigil)
chip TimToady: I think you mean C++, where operator -> () can be redefined but there is no operator . ()
audreyt: no, you miss my point
TimToady Plain C also distinguishes . from ->
audreyt variable($x).infix:<=>(4) 21:56
integral always thought perl6 should do that :-)
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?
audreyt chip: see my form above
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
audreyt chip: variable($x) can't be just a generic ::Scalar protoobject 21:57
it must be the C metaobject, no matter where it lives.
TimToady variable($a) probably pessimizes $a.
audreyt yup.
21:57 bsb joined
chip and variable($$a)? 21:57
audreyt it can mark it as "slow" pad or something.
chip not legal?
audreyt it's surely legal as far as I can tell. 21:58
$$a := ... # takes this form
basically, I start from the complete C/V model and try to compile away the "simple" static cases.
if there are VObj, the V layer is fast and the C layer can be compensated
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
audreyt for plain scalar, and pessimize it when a ref is taken
chip & # dayjob
audreyt chip: I would like to point out that all CLR-class language and all ML-class language do that :/
integral and look how *fast* they are! 22:00
chip they have Scalar class equivalents that are user-mutable?
audreyt (and that's not ironic, I presume)
integral brushes how slow their optimising compilers are under the carpet
audreyt integral++ # heh
chip <chip> they have Scalar class equivalents that are user-mutable? If not, then the situations are not even remotely comparable 22:01
Sometimes the default behavior does not have to be encased in the same clothing as non-default behavior. Just sayin'. 22:02
chip & # really
audreyt most of those language freezes the container classes and do not allow runtime tampering.
ruoso locked up defining the subroutine call rule... 22:03
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]
audreyt once you can put Any into there, then it's a level of indirection.
yeah, I'm talking about scalars too.
"mutable references" is the term.
because those languages have the idea of a value class :) 22:05
chip but they're OPTIONAL. In Perl 6 they're apparently -mandatory-.
and in those other languages, the container (surely?) is not itself a full-blown object with .isa and other methods
PerlJam senses some deep misunderstanding here. 22:06
But then I havne't been following along too closely
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 sial.org/pbot/16321 22:07
audreyt chip: ok. how about: we declare Scalar finalized and closed by default
chip: and do not allow extension to it without predeclaring to the compiler
chip audreyt: I have a better one for you.
audreyt chip: so all operations are prebound at compile time.
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
you could, if you were feeling particularly puckish, call it "Scalar" 22:09
audreyt my $a; # simple
my @a; # complex
my $a is Scalar; # complex
that's your proposal?
chip but here's the key thing: "my Integer $a" is NOT, repeat NOT, implicitly "my Scalar of Integer $a"
TimToady didn't we just say that?
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
and I guess under your scheme then they are not
@a itself would be
but @a[0] would take another explicit annotaiton.
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
fglock ruoso: looks ok 22:11
ruoso fglock, the rule?
fglock PerlJam: :w doesn't skip #comments
ruoso: the rule looks ok
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
PerlJam fglock: <p6ws> does?
ruoso PerlJam, perl 6 white space
PerlJam, comment is white space
chip audreyt: yeah, but if @a is simple, why should that possibly preclude binding $a[0]?
audreyt it would preclude binding $a[0] if rhs is complex.
it wouldn't preclude binding $a[0] on a simple rhs.
chip in that case, yes
audreyt ok, we are acutally in agreement! 22:13
how quaint :)
ruoso fglock, any idea?
TimToady quit quickly before we disagree again! :)
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.
chip I really can't afford to take any more time on this, anyway. :-)
at least, not right now
audreyt chip: ciao :)
TimToady peace
audreyt TimToady: that has far-reaching consequences though :)
chip live long and ... oh, n/m
fglock ruoso: '$name:=(<ident>)' should be '$<name>:=<ident>' but that's not supported by lrep
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 :)
audreyt mugwump: a container object denotes mutability :)
mugwump: IORef is not wrong, it's explicit
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.
and we get faster performance if you annotate it's either immutable in some way, or fixed in type in some way.
ruoso fglock, I'll try without the named capture
PerlJam ruoso: what are you testing it against? in your rule, the argument list is mandatory.
fglock ruoso: are you using long names (short names not supported yet)
audreyt (at least that's what I thought of perl6's stance on the type-annotation game)
ruoso fglock, hmmm... 22:16
TimToady I expect some arrays allow their elements to be rebound and others don't.
audreyt the question is merely if Array does :)
ruoso fglock, even with long names 22:17
"Getopt::Std::getopts( 'i:o:' , $argsref );" doesn't match
audreyt (*@x) := ($x, $y, $z); # binding of elements. 22:18
that happens, oh, at every other function call :)
ayrnieu eric256 - if you're going to make many perl6 posts on perlmonks, you might index them somewhere. As PM doesn't have tags.
audreyt (though we can say that *@x is declared as Hybrid or something by default
TimToady but it's not trying to bind the existing slots in @x.
audreyt )
PerlJam ruoso: Since I'm not really playing along at home ... does <ident> match colons? Does <list> match "'i:o:', $argsref" ?
ruoso list matchs variables and literals 22:19
with the ,
let me try without parameters...
PerlJam ruoso: where is the definition of <ident> and <list>?
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.
ruoso PerlJam, ok... list is not the problem... removing it still doesnt match..
svnbot6 r9574 | pmurias++ | xgrammar2p6:
r9574 | pmurias++ | + character classes
r9574 | pmurias++ | + begun testing with pge(go to line 3 :)
r9574 | pmurias++ | + work towards use warnnings
mugwump so what happens when $x drops out of scope?
audreyt TimToady: true. and we don't allow 22:21
sub f (@x[4], @x[1]) { ... }
TimToady no, we don't
audreyt so maybe it's okay to say Array doesn't allow element rebinding by default
PerlJam ruoso: I'm looking at ident now it looks okay.
audreyt and you have to explicitly declare them.
ruoso PerlJam, yes... it works on the "use" and "require" rules
TimToady Array of Scalar of ...
audreyt yeah. 22:22
PerlJam ruoso: that just leaves <?p6ws> :-)
mugwump so is an unbindable Array an Array of Any ?
ruoso PerlJam, :)
TimToady s:g/Scalar/Item/
22:22 GabrielVieira joined
audreyt mugwump: a default array would be Array of Any, yes 22:22
mugwump but once you make it an array of Item/Scalar (?) you get bindability 22:23
audreyt sure
TimToady Array of Object would probably do it.
audreyt my @a; @a[0]=variable($x); @a[0]:=3
# woot, rebound
ruoso PerlJam, "\w+\(\)\;" doesn't matches it also... I'm lost...
PerlJam ruoso: Well, \w+ doesn't include : 22:24
audreyt then of course variable() pessimizes the $x declarator
and needs to refer to something that is statically known
ruoso PerlJam: I'm trying now to match "getopts();"
audreyt otherwise it's compile-time failure
that will get chip's semantic.
PerlJam ruoso: oh. Then you've clearly broken something fundamental :)
ruoso he
heh
PerlJam, nah... all tests still working... 22:25
fglock ruoso: \w not implemented - so it would mean "w" :)
PerlJam heh 22:26
ruoso fglock, hmmm... ok
ruoso now trying "getopts();" as rule
mugwump so, can typed scalars be bound? as in, the old my Dog $spot
ruoso to match "getopts();"
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...
fglock ruoso: did you push the new syntax into the statements array?
TimToady "my Dog $spot" is a declaration of the value, not the container type.
ruoso fglock, yes
aaaarrrrrrrghhhh 22:28
push @statemens, \&sub_call;
fglock ruoso: maybe it is matching something less specific - try 'unshift' instead
ruoso fglock, did you notice the missing "t" in @statements?
audreyt TimToady: I thought it also puts a constraint on the scalar.
TimToady yes, that is the effect of it
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
TimToady yep
nothingmuch closes the window
PerlJam well, I guess I wasn't shaky after all :)
fglock ruoso: no :) please fix it - btw, debugging the grammar _is_ hard
PerlJam Just unsure from lack of use.
fglock nothingmuch: too late
ruoso fglock, just worked... 22:30
fglock, the first try was correct...
mugwump but isn't the type constraint X also a property of the container? It just deals with the value
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
fglock ruoso: which try? 22:31
TimToady Kinda, either the container or the compiler has to keep track of it.
audreyt s/either/both/
nothingmuch fglock: he managed to close it after jumping?
that's pretty impressive
audreyt (under an unfinalized/open world, both compiler and the runtime has to have info)
fglock nothingmuch: no, he hit the Wall instead
nothingmuch anyway 22:32
heh
TimToady I beg your pardon.
audreyt (cf. "Hybrid Type Checking")
nothingmuch anyway, good night =)
fglock TimToady: sorry
nothingmuch ... and as much as possible is moved from runtime to compiler
TimToady :)
ruoso fglock, the first rule I wrote was write...
s/write/right/ 22:33
audreyt nothingmuch: actually, sometime you want a very fast compilation.
TimToady ...but no more than is possible.
nothingmuch stops being annoying
TimToady And there's no cat...
audreyt typically when you only run it once.
-e comes to mind.
nothingmuch audreyt: i was teasing ;-)
mugwump if you say $x := $y, you have two containers but one value?
nothingmuch not only -e
actually, for some -e i actually *DO* want good compilation
because it mightr process large chunks of data, but the compilation unit is very small
but for hacking sessions
fixing unit tests
interactive programming shells
22:34 Limbic_Region joined
nothingmuch that's where I want a decent dynamic bytecode that compiles in a jiffy 22:34
but we already know this
so good night =)
22:34 FB|afk is now known as FurnaceBoy
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.
fglock later & 22:36
TimToady The binding is allowed to fail if the types are incompatible.
eric256 mugwump is one of those x or y suppose to be $spot?
mugwump yes :)
my Dog $spot .= new; my $moggy := $spot; $moggy = Cat.new(), what happens?
22:37 fglock left
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)
mugwump ok, for now we assume !Cat.isa(Dog)||Cat.does(Dog) :) 22:38
bah, bad precedence in that. !(Cat.isa(Dog)||Cat.does(Dog))
the question is why does it fail 22:39
does the binding transfer the container properties?
PerlJam mugwump: because a Dog doesn't know how to store a Cat
TimToady s/Dog/Dog container/ would be more accurate
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
TimToady Either that, or it's a Don't Care container, and the assignment succeeds.
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)
yes, which is why the former is probably better
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*
TimToady quack 22:43
what's an elephant *duck*?
LeTo a missing hyphen ;) 22:44
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
TimToady a reference is not really an object but it autoboxes if you treat it like one. 22:46
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:47
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
TimToady Sometimes a void* is enough...
eric256 beings the long wait as 184k records are loaded into his db....hmmm 22:49
22:50 beppu joined
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
in some cases
ok, well anyway, I think that's getting a bit sidetracked. Did we decide that binding copies the container (logically) ? 22:51
svnbot6 r9576 | ruoso++ | sub_call rule... 1 more line to lrep.p6... 22:52
audreyt goes sleep now :)
audreyt waves &
chip hey, that's cute. the container moves with the value. next thing you'll need a container^2
mugwump night audreyt (or morning, I suppose :))
chip relurks
audreyt closing thought: maybe model this with Data::Alias under chip's semantic in p5 :)
&
ayrnieu audrey's latest p6c post confuses me. 22:54
rule Foo {{...}} # isn't special {{..}} synatx, it's just {...} in a rule...
that is, an interpolated closure. But then she immediately shows that she realizes this with her next example. 22:55
(oh, OK, I'm misreading.) 22:56
LeTo puts a red note on the calendar: "she did actually turn off the computer" 22:57
Arathorn lol
ayrnieu arathorn - what amuses you? 22:58
eric256 350 out of 3500 batches down... 23:01
Arathorn the red note :)
eric256: how goes BASIC?
eric256 12 * 10 = another 2 hours?? bah
good. paused working on it to do actualy work
but i got it to parse and execute some simple commands. ;)
Arathorn cool :) 23:02
ayrnieu waiting for interpolated hashes and closures :-) 23:03
Arathorn in basic? ;) 23:11
ruoso is dealing with '$input_filename = %args{i};' 23:12
ayrnieu ?eval [join(*<a b c>), join('a','b','c')] 23:13
ruoso - %args{i} looks like a syntax error.
eric256 what would you expect that to do?
ruoso ayrnieu, in perl 6?
ayrnieu oh, no evalbot.
ruoso - yes.
ruoso ayrnieu, serious? 23:14
ayrnieu ruoso - in perl5, too :-)
ruoso - yes. Unless you've a subroutine named i in scope ...
eric256 {i} should be <i> shouldn't it? or {'i'} ?
ruoso eric256, hmmmm... you got it...
ayrnieu eric - it perl6, in should return ["bac","bac"]; but invocation-with-flattening isn't here yet.
ruoso eric256, it should be a literal
eric256 anyone know why pugs keeps reloading prelude from source? 23:15
ayrnieu eric - it loads the perl6 prelude. 23:17
open("blib6/lib/Prelude.pm.yml.gz", O_RDONLY|O_NONBLOCK|O_NOCTTY|O_LARGEFILE) = 3 , and then again with just O_RDONLY
eric256 instead of loading the precompiled one though it keeps loading from source
Juerd ARGH
ayrnieu maybe a fast-development hack.
Juerd My government is forcing me to participate in a survey. 23:18
eric256 shots Juerd to put him out of his misery
Juerd Which causes me lots and lots of work to calculate stuff.
For which I do not have any tuits.
eric256 just make up some numbers . lol. i like 5 and 6 myself
ayrnieu Juerd - life is suffering.
TimToady A survey like "How much of your money you made last year are you willing to part with?"
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.
ruoso ayrnieu, search.cpan.org/~autrijus/Perl6-Bib...le/E02.pod says opposite
ayrnieu, perl5: $foo{$k} => perl6: %foo{$k}
ayrnieu ruoso - where? 23:20
TimToady E02 is *not* canonical.
ruoso oh
ayrnieu ruoso - um, and what are you saying that 02 says the opposite of?
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."
ayrnieu ruoso - what have I said that it contradicts, rather.
ruoso that it should be $foo{$k} instead of %foo{$k}
ayrnieu ruoso - I never said that. 23:21
ruoso <ayrnieu> ruoso - %args{i} looks like a syntax error.
ayrnieu ruoso - it does.
ruoso - unless you have a subroutine named i
ruoso ayrnieu, oh
ayrnieu, got it
ayrnieu ruoso - contrast with $args{$i}
%args{$i}
ruoso sorry
too tired already
:)
ayrnieu sub { %args{shift} } # needs $args{+shift} disambiguation in perl5. 23:22
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
Juerd It's autoquotation breaking.
23:24 |Jack| joined
ayrnieu Juerd - *shrug*. Point is that perl6 does not have this confusion. 23:24
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:25
ayrnieu accidentally doing %foo<$i> is like doing %foo{$i} in perl5, I suppose. 23:26
it can't be /too/ easy :-)
eric256 except that it works in p5 23:27
Juerd ayrnieu: Has it ever confused you?
TimToady The little sharp pointy things are supposed to alert you to the danger.
ayrnieu no, %foo{$i} doesn't do what you mean in perl5.
Juerd ayrnieu: If so, then do you think autoquoting should be completely gone? We still have it left of =>.
ayrnieu Juerd - ack, no, I love autoquoting.
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
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.
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:29
23:31 Daveman joined
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:32
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.
Juerd $foo{shift} is neither ambiguous nor confusing, OR => is too.
ayrnieu Juerd - I've written $foo{shift} in error. I've never written shift => in error. 23:34
that's a funny idea, though.
svnbot6 r9578 | eric256++ | basic.p6 BASIC implementation in P6....well it wil be eventualy.
TimToady That's why we fixed $foo{shift} but not shift =>.
Juerd So your assymmetry makes the features different? :)
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 =>...
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.
Juerd Note that I do agree with Perl 6's non-autoquoting in {}, because of the closure argument.
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! :-)
Juerd I find the autoquoting-is-confusing argument a rather weak one.
23:36 mako132_ joined
ayrnieu well, my lists. 23:36
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
TimToady doubtless we've introduced other newbie traps, of course...
eric256 TimToady now if we only knew how many were opened in exchange ;)
TimToady hah, beat you. :)
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.
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.
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.
TimToady Juerd: yes, and same argument for interpolating {...} in "" 23:39
Juerd I like {} interpolation.
It's @foo[] and %foo{} interpolation that I'm not so sure about
TimToady ayrnieu: at some point somebody just has to take a guess about the future...
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
Arathorn {} interpolation rocks, imo :) 23:40
Juerd eric256: print "Line ${\$i++}: $line\n" works in Perl 5 already 23:41
It's not THAT revolutionary :)
Arathorn it's a whole lot cleaner, though
Juerd That it is
ayrnieu visually cleaner.
eric256 tries to run evalbot and finds that it needs svn not svk ...
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
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:42
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
ayrnieu so extended q// modifiers are nice.
Juerd ayrnieu: But not something constantly on my mind...
eric256 Juerd sure...but some of use have no idea what that means and just see the result. lol
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? :)
eric256 Juerd or just lack of RTFM :) 23:45
Juerd It's definitely not a lack of RTFM
I've read all TFM there is ATM, and will read all TFM to come.
eric256 lol
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.
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?
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:47
Juerd Actually, in Javascript, I'd want the {} feature, but to be written differently. 23:48
Maybe {{{ }}}
I think I'll get my own quoting operator :)
That's nicer than repeating flags. 23:49
ayrnieu or argument to :c ...
Juerd eric256: I have surprisingly few $ in my javascript :)
eric256 now that would be interesting :c('{{', '}}') hmm 23:51
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.
Juerd So, this would be what, &quotelike:js = &quotelike:q.assuming( :s :c< {{{ }}} > ); ?
eric256 since you have few $ in your javascript wouldn't you want to use that instead of { } which you'll have a aloto of?
TimToady show off
Juerd What's the category for quotelikes?
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...
Juerd eric256: Could be
TimToady: Well, that's a valid perception of what I'd do there: explicitly interpolate something into a piece of code
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
ruoso sad... macros stopped working... 23:55
TimToady Fighting over the brackets in ASC
II is like fighting over the radio spectrum... 23:56
svnbot6 r9579 | ruoso++ | going on... broke at the moment... need to fix macro compilation...
TimToady s/\n//
ruoso I'm going home
TimToady what it something I said?
*was 23:57
darn, I should go home...
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.
ruoso if someone with a good heart wants to take a look why macro compilation stopped working on lrep-compiler, fell free... 23:58
the problem is in Perl6Primitives.p6
ruoso is going home..