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, "elike:js = "elike: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.. |