»ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo: / pugs: / std: , or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend!
Set by wolfe.freenode.net on 30 October 2009.
quietfanatic How is that like class data? 00:00
jnthn If the accessors are inherited, why isn't that enough?
quietfanatic rakudo: class X {our $.x is rw = 5}; class Y is X {}; Y.x = 6; say X.x
masak rakudo: role R[$data] { method foo { say $data } }; class A is R[42] {}; A.new.foo 00:01
00:01 _eMaX_ left
p6eval rakudo 830e2c: ( no output ) 00:01
00:01 _eMaX_ joined
masak rakudo: role R[$data] { method foo { say $data } }; class A does R[42] {}; A.new.foo 00:01
quietfanatic At my machine, the fomer code prints 6
p6eval rakudo fe6dd2: ( no output )
jnthn quietfanatic: Yes, that's what I'd expect...
00:01 xinming joined
quietfanatic the accessor modifies X's x not Y's 00:01
jnthn When you inherit an instance attribute, it's not like there's one copy of it for an instance of X and another copy for the parent Y though. 00:02
quietfanatic Y doesn't have even have a $x variable
yeah
jnthn Right, but that only matches the semantics of normal inheritance.
quietfanatic what I want is something like 'our' but inherits like 'has' 00:03
jnthn I don't see how has works differently.
quietfanatic has creates a copy of that variable for every instance of that class
jnthn When you instantiate the subclass, there's still one common storage location.
Yes.
quietfanatic I only want one copy per class 00:04
jnthn Oh
I see what you're getting at.
Hm.
masak quietfanatic: maybe what you want is a hash table where the keys are classes.
quietfanatic but it needs to be potentially different for each class
yeah, I sorta have that for something else in this program
maybe I can modify it for this use
masak quietfanatic: that doesn't automatically give you an inheritance mechanism, though.
quietfanatic Yes, which is why I want a hook that'll run when my class is subclassed, so I can pretend it's inheriting 00:05
That might not be entirely necessary though
jnthn Uff. Hook when the class is subclassed is...fun. 00:06
You could always implement such a thing by wrapping the appropriate candidate of trait_mod:<is>. 00:07
quietfanatic There's no other way to reliably do what I want to do
Well, what I want to do in this case doesn't require it, but
The general case of implementing inheritable class data requires this.
Hmm, I didn't think about that 00:08
(jnthn:)
jnthn I'm not sure we need a way in core. But I expect it's writable as a module. :-)
TimToady seems like a design smell to me
you sure you're not doing an XY here? 00:09
00:10 beggars left
TimToady jnthn: is there a reliable way in rakudo to get from a class to its associated package? 00:16
00:16 colomon joined
jnthn TimToady: Only if .WHO is implemented... 00:17
If it's not, it'll be easy to add.
That is what .WHO does, yes?
TimToady that's still the package of the object, not the package of the current class
jnthn Oh, wait, do you mean the package of the class we're currently in? 00:18
TimToady if there were a $?PACKAGE then you could just $?PKGAGE::<$myvar> or some such in an rw accessor
yes, lexically
er, no
nevermind, that won't work either
jnthn I seem to have vague recollections of implementing $?PACKAGE
rakudo: class Foo { say $?PACKAGE } 00:19
p6eval rakudo fe6dd2: Symbol '$?PACKAGE' not predeclared in <anonymous> (/tmp/rJNqazbyIh:2)␤in Main (file <unknown>, line <unknown>)␤
jnthn aww, fail.
rakudo: class Foo { say ::?PACKAGE }
TimToady what we need is in $fido.MAMMAL::speak() to find out MAMMAL
p6eval rakudo fe6dd2: ResizablePMCArray: Can't pop from an empty array!␤in Main (file <unknown>, line <unknown>)␤
TimToady and that's neither the type of $fido nor the lexical type
jnthn Oh! Error is srsly bad! Has to have exclamation mark!
TimToady it's the effective type as seen by submethods
jnthn Where MAMMAL is? 00:20
Parent class?
jnthn is confused by the "as seen by submethods" comment 00:21
TimToady $fido.MAMMAL::myvar = 42; # set $MAMMAL's $myvar, not $fido's
when you do a BUILDALL, it's calling BUILD submethods on the actual "current" type
00:21 Whiteknight joined
jnthn Ah, OK. 00:21
00:23 dukeleto joined
dukeleto parrot github mirror is synced again! 00:23
jnthn rakudo: class Foo { method bar { say 42 } }; class Baz is Foo { method bar { say 100 } }; Baz.new.bar; Baz.new.Foo::bar
Something like this? 00:24
...
p6eval rakudo fe6dd2: ( no output )
jnthn ...evalbot fail...
TimToady how does the default BUILD work if a class doesn't define one? 00:25
jnthn Magically... Let me check. 00:26
oh heh
Essentially, BUILDALL sets $*CLASS.
And it goes off introspection metadata.
TimToady if it calls Object::BUILD, the way that Object::BUILD knows it's in Foo:: rather than Baz or Object is the kind of magic we're looking for 00:27
jnthn Yeah
Well, in this case BUILDALL puts the current thing it is inside a contextual variable, and Object::BUILD just looks that up. 00:28
TimToady if *that* piece of info can be traced to Foo's package, then we can store quietfanatic's class variables in it
and have a single accessor in the base class that knows which class it was invoked on behalf of
a contextual would be sufficient for this, I suspect 00:29
what's the name of it?
jnthn At the moment, it's just stored as $class - it actually pre-dates Rakudo having proper context var support.
TimToady something on the order of effective class...
jnthn erm, $CLASS
TimToady ECLASS maybe 00:30
like egid etc
jnthn I'd have to call it $*CLASS - but again, it only solves the issue for build.
Yeah.
But where would it be set?
That is, what would set $*ECLASS?
jnthn thinks he's missing something
I mean, in the case of BUILD, BUILDALL is setting it.
TimToady presumably the dispatcher, but maybe only the .* dispatcher
or the .? dispatcher... 00:31
jnthn Or .+
Hmm
Yeah
"Which class did I find this in?"
TimToady the dispatcher has to know which parent class it's poking around in anyway
not which class I found it in
or you have to write the same method in all the classes 00:32
jnthn Ah
TimToady it's the class I'm looking in
assuming I can inherit one method to do it for every class
that might be a bad assumption, of course
jnthn So in class A { method foo { } }; class B is A { }; B.foo
So here, inside foo, in this call $*ECLASS would be B? 00:33
But that'd just we self.WHAT...
So I think I'm still missing the point.
TimToady unless you say B.A::foo() 00:34
and then it's A
jnthn Right, cus then we grabbed A and did the dispatch from it's point of view.
TimToady but maybe we're talking about a replicated submethod rather than normal inheritance here
or some role that mixes into each child class 00:35
jnthn Hmm
Unless this can become a generalization of some kind, it really feels to me like it belongs in a module.
TimToady which makes a little more sense, since roles are more about implementation, and use of inheritance to share implementation is kinda bogus anyhow 00:36
jnthn Yeah
A way of saying "do this role, but also anyone who subclasses me should individually do it themselves too"
TimToady yes 00:37
that feels a lot cleaner to me somehow
jnthn That's a more interesting general mechanism.
Yeah
I mean, I can actually see how I'd implement that sanely.
Wolfman2000 *yawn* evening. I'll get back to grammar in a few minutes
jnthn The $*ECLASS was like...argh...I don't want to make every dispatch pay to set up this...
TimToady nodnod
00:38 orafu left, orafu joined
jnthn It does beg the question of whether the HOW API would want to include a "oh hai you just got subclassed" hook... 00:39
TimToady or maybe it's a different declaration, supermethod or some such instead of submethod
clubmethods :)
jnthn genecitmethod
('cus all your kids get it too)
TimToady as in 'join the club!' 00:40
jnthn Hmm
TimToady or I'll club you
jnthn :-)
00:40 zaphar_ps left
jnthn After the phasers, no name we come up with today is going to seem good anyway. :-) 00:40
Thing is though 00:41
It's not just a method we want.
It's some state too I guess.
I mean, sure, a method could use a state var for that.
The "a role mixed into all" gives possibility to mix in state as well though.
TimToady troonuff 00:42
diakopter UR_PREGNANT
00:46 Whiteknight left
Wolfman2000 Alright, silly question. feather.perl6.nl's page says that we can update the website to improve it. I can't seem to do so without an a PUGS svn account. I mainly want to keep the website validated properly. How can I do so? 00:48
Juerd You could ask for a Pugs commit bit. 00:49
Wolfman2000 ...alright, I'll bite.
Juerd: Can I please have a commit bit for Pugs?
TimToady /msg your email and preferred svn nick
Wolfman2000 TimToady: to who? You or Juerd? 00:50
TimToady me works
Wolfman2000 Alright
Juerd I seem to have misplaced my password
Wolfman2000 Ouch...not good 00:51
Juerd Depends on whether I actually misplaced it, or just forgot :)
TimToady sent
Wolfman2000 Nice...I can set my own password instead of being told what mine is for the world to see
TimToady it's customary to add yourself to AUTHORS as a first commit to test it
Wolfman2000 TimToady: Let me find the AUTHORS page then 00:52
TimToady in the top dir
jnthn Wolfman2000: It's just AUTHORS in the root of the Pugs SVN repo, IIRC.
Wolfman2000 ...wow...what was my CPAN id?
TimToady I don't remember mine...
Wolfman2000 okay, found mine. Now if only I remembered how to log ON to cpan 00:53
ah: pause.perl.org 00:54
Juerd I, I knew my password but not my email address :) 00:55
pugs_svn r29011 | jafelds++ | Traditional first commit: mainly here to keep the website validated and such.
Juerd Anyone else want a commit bit? :D
Wolfman2000 ...oh joy. My password can only be stored unencrypted 00:56
Juerd That's why you chose a unique password that doesn't look like any other password you're using, right? 00:57
Wolfman2000 I'd rather not answer that question.
pugs_svn r29012 | jafelds++ | The start of better validation. 00:59
01:00 cdarroch left
Wolfman2000 ...I must realized. no karma will be attributed to me for this. oh well. I'll earn it 01:01
jnthn Wolfman2000++ 01:02
;-)
Wolfman2000: I think carlin++ is working on a karmabot that will allow linking of multiple nicks. 01:03
Wolfman2000 jnthn++: thanks anyway. I'll have to let my Perl 6 work do the talking.
jnthn: That's...interesting to hear.
jnthn Wolfman2000: Most interesting is that he's writing it in Perl 6. :-)
Wolfman2000 I don't think my copy of XChat will work with Perl6 01:04
jnthn Wolfman2000: No, no - the bot just connects to the channel. 01:07
Like lambdabot that tracks karma today.
But it doesn't know the multiple nicks trick. 01:08
Wolfman2000 ...okay, I know the end of the index page said it syncs itself every five minutes...it's been nearly 10, and I'm not seeing my change.
jnthn perl6.org/about/ says 15 01:09
pugs_svn r29013 | jafelds++ | Every 15 minutes according to jnthn++. 01:10
01:10 hercynium joined
Wolfman2000 ...sure seems to hate me right now 01:17
TimToady CAN NOT HAZ UPDATE 01:20
Wolfman2000 TimToady: in non lol cats speak, correct. 01:21
Tene masak: ping 01:22
masak Tene: pong.
Wolfman2000 okay, seriously going to grammar now. I think I know of something simple to do.
Tene masak: i see you blog posts about proto... looks like you're trying to use proto to install rakudo, and it's not working, or something? I'm wondering why you don't just use plumage instead. 01:23
TimToady you'd think feather2 would be able to update from feather... 01:24
TimToady suspects perl6.org's updater is busticationalized 01:25
Wolfman2000 TimToady: In plain english, you mean not working? 01:26
TimToady what is this plain english of which you speak? :)
masak Tene: actually, I'm helping mberends++ land his branch in proto.
TimToady we may need to hunt down someone with feather2 access 01:27
Wolfman2000 ...and why am I not surprised? S05 is not helping me
TimToady well, S05 was half written by an Aussie...
masak Tene: I know too little about plumage. does it install the 42 projects proto installs?
TimToady and the other half is just random notes to ourselves... 01:28
Wolfman2000 I'll start with a simple one (hopefully). What's the difference between a rule and a token?
TimToady a rule defaults to :sigspace, a token doesn't
both rules and tokens default to :ratchet, but a regex doesn't do either of those
Wolfman2000 And what is the :sigspace adverb? 01:29
TimToady makes whitespace to smart matching instead of being ignored
Tene No, but it does install several Parrot extensions. It would be really cool to get the proto people and the plumage people talking together sometime. Plumage wants to be able to install HLL libraries eventually, iirc.
masak Wolfman2000: when I learned that, I made everything 'regex' until I realized I needed 'token' somewhere. and then I kept them as 'token' until I realized they should be 'rule'. with more experience, one can take shortcuts, of course.
Tene: yes. I believe a lot more in plumage than in proto, long-term. 01:30
japhb Tene, masak: Plumage has a WIP proto importer. It's basically stalled on proto's installed modules branch.
Tene Heh, nice.
masak japhb: wow! excellent!
japhb When that branch lands, I can then finish the proto importer, and foom! ;-)
jnthn Wolfman2000: I did write some slides on some basic Perl 6 regex / grammar bits. From slide 78 in www.jnthn.net/papers/2009-npw-perl6...slides.pdf 01:31
Wolfman2000 The Perl 6 express
nice title and picture
alright, may as well see the rest of your slides
jnthn Wolfman2000: It was a talk I wrote to cover lots of Perl 6 ground quite quickly.
Wolfman2000 lol: beer price versus Scandinavia 01:32
Juerd I've had a look on feather2 and can't see anything weird.
japhb masak, I noticed your last couple blog posts were on proto. Are you planning to drive that branch to completion in the next couple days?
Juerd It uses svn
Wolfman2000 ah, so that's what PIL is. The intermediate language...in semi assembler.
Juerd What's changed on perl6.org? 01:33
Wolfman2000 Juerd: just index.html
masak japhb: dunno. if there's a great desire for it, maybe. my real focus is on November, but some tasks really depend on that branch landing. see use.perl.org/~masak/journal/39825
Wolfman2000 did some HTML validation cleanup, and made it say it syncs itself every 15 minutes (thank jnthn for that one)
Juerd It does sync, but from svn
masak hm. that post didn't really explain what I thought it would. 01:34
Wolfman2000 I don't think I'm following. It does syncing after committing...how come my browser isn't showing my changes? 01:35
masak anyway, having the installed-modules branch land would mean that we can start doing nightly test smokes of all Perl 6 applications.
pugs_svn r29014 | lwall++ | [S05] remove :panic
Juerd Wolfman2000: Apparently your change didn't get into svn somehow
japhb Nodnod
Wolfman2000 even with pugs_svn claiming it did?
japhb masak, which would be a very good thing
TimToady Juerd: I saw it show up here
under svn
Juerd Strange. Did you change source/index.html? 01:36
Wolfman2000 Juerd: no. That wasn't the file that contained the text 01:37
TimToady docs/feather/index.html
Juerd Er
I thought you were editing perl6.org :)
Don't know where I got that idea from
Wolfman2000 I'll clean up that page later if I have to 01:38
for now, starting small
masak japhb: yes, and fun!
jnthn Oh, I'd thought it was perl6.org too :-)
Oops.
masak japhb: presently, we catch those regressions manually. imagine a smoke test doing it for us. :)
Wolfman2000 ...
I'm not editing perl6.org just yet. I'm not that crazy. 01:39
Take it a step at a time
japhb imagines smoke tests for not only all Rakudo projects, but all *Parrot* projects .... 01:40
Juerd feather.perl6.nl runs on feather1, not feather2
And to be honest, I really have no idea how that works
Even though I built it originally.
Wolfman2000 So...we have no way of knowing how long it takes to sync 01:41
Because it's been over 40 minutes
Juerd I can't find how it's supposed to be synced 01:42
Wolfman2000 Hopefully I didn't break it 01:43
Juerd Last change was januari 11.
Wolfman2000 ...and it's close to January on the other end
Juerd The files in this directory (and any sub-directoris) from the website
feather.perl6.nl and are automatically sync'd by the feather
server. So any updates committed here will be applied in 5 minutes or so.
says README
...but how?
TimToady lost cron entry, perhaps 01:44
Juerd TimToady: Even then, I'd expect a .svn directory or something like it.
TimToady was it setup before feather split up?
jnthn Juerd: Maybe it svn exports into the directory.
Well, maybe it did. ;-) 01:45
Wolfman2000 ...wasn't expecting to help out in this regard.
Juerd jnthn: Possible, but from where? :)
TimToady: Long before. 01:46
TimToady maybe it was a symlink once upon a time, and got duped?
Juerd and it was changed by someone, at some point in time, because the way I had done it was ugly.
It's still a symlink
lrwxrwxrwx 1 root oot 31 aug 23 2006 www -> /home/audreyt/pugs/docs/feather
TimToady did you look at audreyt's crontab? 01:47
Wolfman2000 ...we can each have our own crontab?
TimToady yes
Juerd I'll svk up audreyt's ~/pugs and see if that helps
TimToady say "crontab -l"
Wolfman2000 I'm liking Feather more and more.
no crontab for me 01:48
TimToady you can make one with crontab -e
Juerd Wolfman2000: The problem with all these freedoms is that when something breaks and the person who originally made it work is no longer around, we're in trouble because everything's under-documented by default :)
Wolfman2000 ...
VI!!!!!!!!!!!!!!!!!!!!!
Juerd And sometimes the one who built it is still around but nobody remembers who it was, including the original creator :) 01:49
Wolfman2000: 6?
Heh. 35 conflicts found.
TimToady Wolfman2000: you can set VISUAL or EDITOR to something else
Juerd audreyt's pugs dir sure hasn't changed in a long while.
Wolfman2000 TimToady: I'll have to now.
jnthn Wolfman2000: The most important command you need to do is :q 01:50
If that doesn't work, :!q
Wolfman2000 jnthn: I remembered that one at least
Juerd Okay
jnthn If that doesn't work, panic.
:-)
Juerd So, er... index.html has changed
TimToady well, ZZ works fine too
if you have to remember one
Juerd If someone would like to sort out this mess and figure out a way to get things syncing again... yes, please! :)
jnthn wonders if the first thing most people learn about vi is how on earth to get out of it when they unexpectedly landed there. :-) 01:51
Wolfman2000 jnthn: probably
jnthn It was for me!
Juerd jnthn: At least vim *says* how to get out, on first start.
jnthn Juerd: Wow, it really is improved! :-)
Wolfman2000 Juerd: I didn't get that
Juerd Wolfman2000: Which that would that be?
Wolfman2000 didn't get told how to quit when I loaded up vi via crontab 01:52
Juerd I said vim, not vi
Vim is vi-improved :)
Wolfman2000 will just keep his nano.
If you're going to get me to learn any of those, it will be emacs. I at least found that one semi workable 01:53
TimToady Juerd: I think it only does that if you start it without arguments
Juerd You will some day encounter a system with nothing but vi, and 'nano' aliased to vi, 'emacs' aliased to vi, etcetera.
Better learn how to use it :)
TimToady I used to use emacs, but my pinky finger wore out
Juerd TimToady: Oh, it seems it does.
TimToady: Which digit do you use for Esc then? 01:54
Wolfman2000 So among the things I will learn from this room...Perl 6, Web.pm, Grammars, Classes, and Vi(m)
Juerd uses his middle finger for Esc
Wolfman2000 Shall I add more to this list?
jnthn Lol speak.
TimToady actually, I type CAPSLOCK-[ for that, Juerd
Wolfman2000 jnthn: ...right
Juerd TimToady: Funny- I have my capslock mapped to the compose key
jnthn :-) 01:55
Juerd grew up with Ctrl in the wrong place, and got used to that
TimToady that's right menu key for me :)
Juerd jnthn: :þ
TimToady thorn makes a great tongue
Juerd TimToady: I used to have it there and then I started using laptop keyboards.
TimToady this *is* a laptop... 01:56
Juerd TimToady: And my first Thinkpad didn't have any windows keys. So I started using the right Alt instead
TimToady I've used that in the past
Juerd Recently, I found that I could have the Esperanto letters ĉĵĝŝĥŭ with altgr, but it meant I had to move the Multi_key/compose thing to another key.
TimToady Wolfman2000: you will also learn linguistics, probably 01:57
Juerd This laptop has a menu key but it's really small and none of my fingers really likes it.
Wolfman2000 My laptop is a Macbook Pro: I can get many characters by holding Alt and typing a key.
TimToady I just wish I could get my windows-waving-flag button to do something sane 01:58
Wolfman2000 «+» I will have to take advantage of the meta operators like that on the left
Juerd This layout has dead keys in the right alt, and now esperanto letters too.
TimToady: Anything sane?
TimToady: I find it the perfect key for moving windows.
I used to use the default setting, alt, for that, but then Inkscape had some trick that required the alt key. 01:59
Wolfman2000 Hmm...the regex syntax has changed slightly
Juerd Wolfman2000: Only slightly ;)
Wolfman2000 rakudo: regex Year { \d{4} }; if "2009" ~~ /<Year>/ { say "Good to go!"; } else { say "BAD Wolfman!"; } 02:00
p6eval rakudo fe6dd2: Confused at line 2, near "4} }; if \""␤in Main (file <unknown>, line <unknown>)␤
Wolfman2000 rakudo: regex Year { \d**4 }; if "2009" ~~ /<Year>/ { say "Good to go!"; } else { say "BAD Wolfman!"; }
p6eval rakudo fe6dd2: Good to go!␤
masak Wolfman2000: \d ** 4
Wolfman2000 I thought ** was supposed to be exponent?
masak Wolfman2000: yes, outside of regexes. 02:01
Wolfman2000: inside them, they mean repetition.
Juerd What's \d to the power of 4? :)
masak \d\d\d\d :)
Wolfman2000 Right, right...okay, is it still possible to declare at least x but not more than y somehow?
masak one of those examples of 'strange consistence'.
Juerd Wolfman2000: **{x,y}
TimToady this might be one situation where it would make sense to read the original Apocalypse first, since regex change was fairly radical 02:02
that would be dev.perl.org/perl6/doc/design/apo/A05.htm
er, html
masak Juerd: **{x .. y}, surely?
Wolfman2000 rakudo: regex Year { \d**{4} }; if "2009" ~~ /<Year>/ { say "Good to go!"; } else { say "BAD Wolfman!"; }
p6eval rakudo fe6dd2: Good to go!␤
Juerd masak: Oh! Yes!
Wolfman2000 ah...that explains that
masak or without the braces, **x..y
Juerd That feels... wrong.
Wolfman2000 without the braces? Agreed
masak to each his own. :) 02:03
02:03 stephenlb left
TimToady but the closure actually executes code, so the braceless form is better for constants 02:03
Wolfman2000 And I've already forgotten who gave the Perl 6 express slides...it barely talks about grammars
jnthn Not me, because I woudln't give you anything that's not useful.
Wolfman2000 The slides are useful: don't get me wrong 02:04
Juerd Don't get me wrong, I love that there's a way to get rid of those ugly {}.
jnthn Wolfman2000: OK, here's the secret.
Wolfman2000 it just has a section for regex and grammars, yet barely talks of the latter
Juerd And I will use it a lot.
Wolfman2000 a secret? ooh...
jnthn Wolfman2000: You now know from the slides that you can write regexes with names, and you can call one from another, yes?
Juerd But the precedence is not the most intuitive. I'll get used to it :)
Wolfman2000 jnthn: yes
jnthn Wolfman2000: If you think about the relationship between a method and a class, then it's the same here. A grammar is essentialy just a collection of named regexes, like a class is a collection of named methods. 02:05
Wolfman2000 ...we just now have the ability to store regexes into their own variables. 02:06
jnthn OK, but you can also do inheritance of grammars.
So you can take a collection of rules to parse something and extend it.
Wolfman2000 ...wait. if a grammar is a collection of regexes/tokens...how do I know which is the main regex that is parsed? 02:07
jnthn You call it TOP.
That is then the "entry point" to the grammar.
TimToady or call .parse with an arg that says where to start
jnthn So if you do Grammar.parse($text) it'll start at the TOP rule. 02:08
And give you back a parse tree.
Juerd Why was it called TOP, not MAIN?
Or why was MAIN not called TOP? :)
TimToady to avoid confusion with MAIN
Wolfman2000 jnthn: all it said back was my variable name.
TimToady to avoid confusion with TOP :P
jnthn Wolfman2000: The other interesting thing I can point you at is github.com/perl6/book/blob/master/s...ammars.pod - it's from a work in progress book. 02:09
Juerd Hmm
I have to think about this.
Good night :)
Wolfman2000 jnthn: I have that book right now
TimToady sleep on it!
Juerd On top?
TimToady mainly
Wolfman2000 Juerd: I'm guessing the website syncing is still busted...that's fine: I can wait.
Juerd Wolfman2000: Yes, it is.
Wolfman2000: I've synced manually
jnthn Wolfman2000: The regexes chapter is also probably interesting for you. :-)
Wolfman2000: By the way, any typos or issues you spot in the text are very worth reporting. 02:10
Wolfman2000 Juerd: Please let me know when automatic syncing comes back.
Juerd Someone who feels competent enough can request sudo access to fix it permanently
Wolfman2000 jnthn: Haven't found any yet.
jnthn :-)
Wolfman2000 is not THAT competent.
Juerd Wolfman2000: I have no idea when it will. I'm not going to do it :)
This is one of those things that looks simple. Too simple.
TimToady he didn't say you had to be that competent, just feel that competent :) 02:11
Wolfman2000 TimToady: I may feel competent, but I don't want to be the one that hoses everything.
Juerd Don't you want to be remembered by an entire community? :)
Wolfman2000 Juerd: Not in a bad way. 02:12
TimToady another thing we usually point out when handing out commit bits is that we run on Forgiveness Rather Than Permission here
Juerd We have backups, Wolfman2000
TimToady that's why it's under svn :)
Juerd If you screw up royally, I'll just set back the time for those folders.
Wolfman2000 The other thing...I'm not too familiar with syncing automatically. No clue if it's cron or something else that does it
sjohnson rakudo: my $str = "moose"; if $str ~~ m/^[^se]/ { print "good"; }
p6eval rakudo fe6dd2: ( no output )
sjohnson rakudo: my $str = "moose"; if $str ~~ m/^{^se}/ { print "good"; } 02:13
p6eval rakudo fe6dd2: Syntax error at line 2, near "}/ { print"␤in Main (file <unknown>, line <unknown>)␤
Juerd TimToady: Actually fixing this requires messing around in unversioned parts of the system. That's also why there's no log of how these things are done (!@#!@$!%!#@%!@)
Of course, the one who fixes it could choose to expand the influence of revision control on feather :)
TimToady std: my $str = "moose"; if $str ~~ m/^{^se}/ { print "good"; }
02:13 pointme left, icwiener left
p6eval std 29014: Undeclared routine:␤ se used at line 1␤ok 00:02 114m␤ 02:13
02:13 zaslon left
Juerd But there's a small chicken/egg problem involved then. 02:14
02:14 eiro left, pointme joined, zaslon joined, mubot joined
TimToady sjohnson: you're looking for <-[se]> I think 02:15
sjohnson you are probably right... whatever [^se] in p5 was
zaslon loljnthnhazblogged! jnthn++ 'More Rakudo ng hacking': use.perl.org/~JonathanWorthington/j...6?from=rss
jnthn TimToady: Does [^...] have some special meaning?
std: /[^se]/
p6eval std 29014: ok 00:01 103m␤
TimToady sure, it match beginning of string followed by 'se' 02:16
jnthn Oh!
My excuse is that it's 3:15am. :-)
02:16 frederico left
sjohnson TimToady: i was hoping for a "not s" and "not e" 02:16
TimToady that's what <-[se]> means
jnthn sjohnson: That's <-[se]> now - [...] is for grouping, not character class, in Perl 6. 02:17
sjohnson thanks
[a|b|c]
jnthn (it'd woulda been correct Perl 5)
[a|b|c] and <[abc]> are equivalent (probably always...)
TimToady sjohnson: that's almost backportable to Perl 5, if you don't mind matching | too :)
lisppaste3 wolfman2000 pasted "Need to re-learn the tokens. How do I select either dash or space?" at paste.lisp.org/display/89925
Wolfman2000 Well, hopefully I will get this figured out. 02:18
jnthn Wolfman2000: (' ' | '-') would do it.
sjohnson TimToady: this new regex system is pretty sweet. i was considered the $1 and $2 forced "stuffing" when using normal (a|b|c) regex a bit unwanted
Wolfman2000 jnthn: compilation failed 02:19
sjohnson now it looks like i can grab $0 vars with () and match or's with [] without saving the contents
02:19 eiro joined
sjohnson <3 02:19
Juerd afk & # z
jnthn orly?
std: token sep { (' ' | '-')**{1} };
p6eval std 29014: ok 00:01 107m␤
Wolfman2000 perl6regex parse error: Error in closure quantifier at offset 59, found ' ' 02:20
TimToady um **{1} is a no-op
sjohnson jnthn: yip yip yip
jnthn Wolfman2000: Yeah, actually you could just have token sep { ' ' | '-' } :-)
Wolfman2000 still get the parse error 02:21
probably my TOP is wrong then
jnthn Oh, maybe it's the TOP rule that has the error?
Wolfman2000 it's the same error as what I just said
token TOP { <U5>(<sep><U4>)**{0 .. 1} } <-- that's my TOP
jnthn Try **0..1 (without the closure)
sjohnson Q: is it true, that if we dont have unicode french quotes handy, we can type two angle brackets, <<, instead? 02:22
TimToady try ?
sjohnson for word boundaries?
Wolfman2000 jnthn: no errors, but...I didn't get my zip code back
TimToady ? means **0..1
jnthn TimToady: Well, and that. :-)
jnthn really isn't helping much here.
Wolfman2000 TimToady++: The ? seemed to have done it 02:23
It wasn't liking **0 .. 1
TimToady probably wants ** 0..1
no spaces around the ..
02:23 am0c joined
TimToady otherwise it thinks you're trying to match two dots 02:23
Wolfman2000 Is there a quick list of the \whatevers for Perl 6? I don't think all are the same from Perl 5 02:24
TimToady S05:1718
Wolfman2000 ...and here's the part where I have check the log 02:26
...how did \p become all alpha characters? 02:27
TimToady std: /\p/
p6eval std 29014: ===SORRY!===␤Unrecognized regex backslash sequence at /tmp/JsIPul2izx line 1:␤------> /\⏏p/␤FAILED 00:01 104m␤
TimToady beats me
Wolfman2000 BTW:chrome script keeps on trying to continue even after I tell it to stop 02:28
jnthn OK, sleep time for me. 02:29
Night all
TimToady it's not written clearly, it's trying to point out that p5's \pL is like <alpha>
Wolfman2000 ...wait. I can just use <alpha> to match A..Za..z? 02:30
TimToady niteynite
rakudo: say "123abc456" ~~ /<alpha>+/
p6eval rakudo fe6dd2: abc␤
TimToady but, of course, that's in the previous section that you didn't read yet :P 02:31
if you want to write grammars, I'd suggest at least skimming the first half of S05 completely 02:32
lisppaste3 wolfman2000 annotated #89925 "feather/jafelds/grammars/postal.pl here. Let's see you guys improve this one." at paste.lisp.org/display/89925#1 02:33
sjohnson TimToady: will [a|b|c] in p6 actually match the pipes?
TimToady in perl 5 02:34
not in perl 6
sjohnson sounds good to me ^_^
TimToady Wolfman2000: if you're using <alpha> you probably want <digit> just for consistency 02:35
Wolfman2000 TimToady: I only used <alpha> because I couldn't remember the \{whatever} needed for alpha
Still...good point
TimToady there isn't a \whatever for alpha in Perl 6
in any case <alpha><digit><alpha> reads better, I think 02:36
Wolfman2000 saved on feather 02:37
And with that...my first grammar. :)
TimToady stylistically, it's a bit top-heavy 02:38
sjohnson TimToady: can you do : while my $thing (<READ>) { } in p6?
can't seem to do that in p5, yet $_ is still generated
TimToady I'd probably make a <us> and a <ca> rule
for $handle.lines -> $thing {...} 02:39
Wolfman2000 Hmm...probably a good idea. I'll do that shortly
masak sjohnson: I think you want for $fh.lines -> $thing { ... }
TimToady I think someone left a loopback on the phoneline... 02:40
02:40 eternaleye joined
carlin mubot: link Wolfman2000 jafelds 02:41
mubot jafelds is now an alias for Wolfman2000 (Wolfman2000 will gain any karma given to jafelds)
carlin mubot: karma jafelds
mubot Wolfman2000 has a karma of 2
Wolfman2000 ...seems like I lost karma then
mubot: karma
mubot zev: 2 | yo: 2 | yitz: 2 | yi: 2 | xmonad: 2 | xkcd: 2 | wormhole: 1 | wollmers: 19 | wli: 3 | whiteknight: 6 | wayland76: 10 |
Wolfman2000 mubot: karma wolfman2000
mubot wolfman2000 is of an unknown quantity
carlin ignore that output :-)
Wolfman2000 mubot: karma Wolfman2000
mubot Wolfman2000 has a karma of 2
sjohnson ok 02:42
Wolfman2000 oh well
carlin @karma Wolfman2000
lambdabot Wolfman2000 has a karma of 3
sjohnson is excited for new perl6 paradigms
Wolfman2000 ...that explains that
too many bots
carlin They're taking over
TimToady maybe we could get them in a recursive loop
carlin begins writing SkyNet in Perl 6 02:43
lisppaste3 wolfman2000 annotated #89925 "Is this light enough for you TimToady++?" at paste.lisp.org/display/89925#2
masak carlin: release early, release often.
sjohnson @karma 02:46
lambdabot You have a karma of 3
Wolfman2000 While I get a quick refreshment...question for you guys. With Perl (5 or 6), what's your best syntax highlighter? What colors work best with what words/phrases? I'm curious on this one...
carlin mubot: karma sjohnson 02:47
mubot sjohnson has a karma of 3
sjohnson how does karma work?
mubot: karma carlin 02:49
mubot carlin has a karma of 63
masak sjohnson: our actions ultimately reflect back on ourselves. that's the essence of it, I think.
sjohnson hmm, 3 karma might mean i've been bad :( 02:50
Wolfman2000 I'm relatively new, and I have 2 or 3 (depending on which bot)
sjohnson cursed to be reborn again, programming in PHP and javascript only
(´ー` )
masak sjohnson: I don't think you're bad. I also think you know what attracts karma, and what doesn't. 02:51
sjohnson: I can tell you about the first time I got a masak-- :) 02:52
it was not because I forgot to run the spectests before pushing making a Rakudo commit; something I often do. 02:55
Tene what was it for? 02:56
masak sending this to p6eval (at that time, with Pugs): my $lang = "perl"; $lang++ for ^45565; say $lang; 02:58
rightfully subtracted karma, in retrospect. :P 02:59
sjohnson @karma TimToady 03:00
lambdabot TimToady has a karma of 75
carlin mubot: karma TimToady
mubot TimToady has a karma of 77
carlin Ha!
Wolfman2000 doesn't care too much about karma...at least in terms of rankings anyway
carlin .oO ( I wonder how that happened? ) 03:01
Wolfman2000 Hmm...alright, I see that svk is mentioned on feather. What I'm not understanding...if rakudo normally pulls parrot via svn, why is it suggested we pull parrot via svk?
masak Wolfman2000: svk used to be all the rage before git. 03:05
Wolfman2000 masak: Should I just stick with svn for pugs then?
masak Wolfman2000: I think you can do that, yes. 03:06
at least for now.
I have a select few subdirectories checked out via git-svn, but that's just because I expect to make changes there.
03:06 SmokeMachine joined
Wolfman2000 At least this way, I can stay synced with the bot in here 03:06
Now if only I can actually build pugs...
I don't think there is anything wrong with having both rakudo and pugs, but...it wants me to use $PAGER ./INSTALL, and I don't know what env variable that's supposed to be 03:07
masak & # going offline for a while, starting Firefox...
03:07 masak left, xp_prg left
sjohnson cya masak 03:11
oops
pugs_svn r29015 | jafelds++ | Remove commented/outdated code. Save the bandwidth of others. 03:12
Wolfman2000 ...is there a way we can make pugs_svn report the files that are changed?
colomon mubot: karma colomon 03:13
mubot colomon has a karma of 48
03:17 masak joined 03:20 NorwayGeek_ joined 03:32 _jaldhar joined 03:36 NorwayGeek left 03:40 seanstickle joined 03:41 colomon left 03:46 am0c left 03:55 SmokeMachine left 04:13 meppel joined
quietfanatic rakudo: class X {has $.x = 5}; multi trait_mod:<is> ($newclass, X) {say 'Yes'; nextsame}; class Y is X {}; say Y.new.x; 04:18
p6eval rakudo fe6dd2: ( no output ) 04:19
quietfanatic # prints 5
rakudo: multi trait_mod:<is> (3, 4) {say 7}; 3 is 4 04:20
p6eval rakudo fe6dd2: Confused at line 2, near "is 4"␤in Main (file <unknown>, line <unknown>)␤
quietfanatic rakudo: multi trait_mod:<is> ($x, 4) {say 7}; my $x is 4
p6eval rakudo fe6dd2: Confused at line 2, near "is 4"␤in Main (file <unknown>, line <unknown>)␤
Wolfman2000 Turning 3 into 4? 04:21
quietfanatic rakudo: multi trait_mod:<is> ($x, Int) {say 7}; my $x is Int
p6eval rakudo fe6dd2: 7␤
quietfanatic just looks like it
That works.
Wolfman2000 Not familiar with trait mods yet
quietfanatic rakudo: multi trait_mod:<is> ($x, Int) {say 7}; class X is Int {};
Wolfman2000 time out
p6eval rakudo fe6dd2: ( no output )
Wolfman2000 ...holy crap, didn't time out
04:21 meppl left
quietfanatic no output. my trait_mod:<is> wasn't called 04:22
04:24 frew left
Wolfman2000 argh...I thought grammars would be easier than this. Paste coming. 04:27
quietfanatic rakudo: class X is 4 {}
p6eval rakudo fe6dd2: Unable to parse class definition at line 2, near "is 4 {}"␤in Main (file src/gen_setting.pm, line 1559)␤
quietfanatic rakudo: class X is asdfghk {}
p6eval rakudo fe6dd2: ( no output )
quietfanatic What happened to "no candidates found for dispatch to trait_mod:<is>? 04:28
lisppaste3 wolfman2000 pasted "IP4Base1 isn't working for some reason. Haven't tested IP4Base2 yet." at paste.lisp.org/display/89930
masak quietfanatic: could it be that the 'is' of class declarations is handled by some special code path?
quietfanatic masak: That's what I'm thinking 04:29
masak given that that 'is' is much older than user-definable traits, it feels probable. 04:30
quietfanatic Wolfman2000: you could have a few more spaces in there for readability 04:31
masak Wolfman2000: I'm thinking some of those parentheses can be removed.
quietfanatic Wolfman2000: But I don't see anything wrong with IP4base1
Wolfman2000 quietfanatic: If nothing was wrong, I would have gotten $ip back on say
masak Wolfman2000: basically, all the parentheses that surround the entire expression inside the braces can be removed.
quietfanatic Wolfman2000: Are the (0..4) and (0..5) trying to be <[0..4]> and <[0..5]>? 04:33
Wolfman2000 quietfanatic: ...possibly. Still mixing up my syntax a bit it seems. 04:34
masak seems like it. but that rule is never used anyway in the test.
quietfanatic rakudo: say "yes" if "12" ~~ /<digit>**1..2/ 04:35
masak I still don't see the error.
p6eval rakudo fe6dd2: yes␤
quietfanatic That part works
Wolfman2000 quietfanatic: Your suggestion did not work for IP4Base2
masak rakudo: token IP4Base { <digit>**1..2 }; say '103' ~~ IP4Base
04:35 xenoterracide_ is now known as xenoterracide
p6eval rakudo fe6dd2: too few positional arguments: 0 passed, 1 (or more) expected␤in Main (file <unknown>, line <unknown>)␤ 04:35
masak oh, right.
Wolfman2000 rakudo: say "yes" if "192" ~~ /1<digit>**2/;
p6eval rakudo fe6dd2: yes␤
masak rakudo: token IP4Base { <digit>**1..2 }; say '103' ~~ /<IP4Base>/
p6eval rakudo fe6dd2: 10␤
masak rakudo: token IP4Base { 1<digit>**1..2 }; say '103' ~~ /<IP4Base>/
p6eval rakudo fe6dd2: 103␤
Wolfman2000 ...not taking on my file. 04:36
quietfanatic That's another thing: you probably want ^ and $ around TOP to make it match the whole string only
masak rakudo: token IP4Base { <digit> ** 1..2 }; token IP4Base1 { 1<digit>**1..2 }; say '0.103' ~~ /<IP4Base>\.<IP4Base1>/
p6eval rakudo fe6dd2: 0.103␤
04:37 envi^home joined
lisppaste3 wolfman2000 annotated #89930 "Revised stuff so far. Last two tokens still borked on my end." at paste.lisp.org/display/89930#1 04:37
Wolfman2000 ...I wasn't expecting this to be this hard 04:39
masak it's trial and error, like everything else. 04:40
Wolfman2000: now the TOP rule looks a little suspicious.
04:40 tak11 joined
masak Wolfman2000: surely you mean to put <IP4>|<IP4> inside [] brackets? 04:41
otherwise the ^ will match only with <IP4> and the $ only with <IP6>.
Wolfman2000 token TOP { ^(<IP4>|<IP6>)$ }; <-- that's how it is now
masak or use [].
Wolfman2000 masak: I only want one <IP4> 04:42
masak since you're not going to use the numbered capture $0 for anything anyway.
Wolfman2000: the only difference between [] and () is that () captures its content into $0, $1, $2, etc.
Wolfman2000 ...oh great. don't tell me feather is going down again
masak++: Hmm...good point. *goes to change* 04:43
quietfanatic If only rakudo supported it, you could probably say "token IP4Block { <digit> ~~ 0..255 }"
*<digit>+
Wolfman2000 quietfanatic: ...you mean that is normally allowed?
quietfanatic Putting ~~ in a regex does another match inside a regex 04:44
and matching a number against a range checks that it's in that range
masak wonders whether nqo-rx will make that possible
quietfanatic But we can't do that yet
Wolfman2000 rakudo: token IP4Block { <digit>+ ~~ 0..255 }; say "yes" if "234" ~~ /<IP4Block>/; 04:45
p6eval rakudo fe6dd2: ( no output )
Wolfman2000 :(
masak Wolfman2000: patience. :) 04:46
pmichaud++ and jnthn++ are working on their ng refactor. 04:47
basically, it's the big refactor which will make all the big promises for April/Rakudo Star possible to fulfill.
Wolfman2000 masak: the big refactor that is supposed to take place either this weekend or next?
rakudo: token Low { <[0..4]><digit> }; say "yes" if "43" ~~ /<Low>/; 04:48
p6eval rakudo fe6dd2: yes␤
masak Wolfman2000: it's taking place all the time, in a branch.
Wolfman2000 ...better have multiple tokens
masak Wolfman2000: it actually started over a month ago, when pmichaud went away to work on nqp-rx.
Wolfman2000 rakudo: token High { 5<[0..5]> }; say "yes" if "53" ~~ /<High>/; 04:49
p6eval rakudo fe6dd2: yes␤
Wolfman2000 ...how often should I update and recompile rakudo anyway, assuming master/main branch?
I wonder if a recent commit has this working
masak has what working? 04:50
Wolfman2000 yeah
masak no, I'm asking you. :) 04:51
quietfanatic I think your bug is a bug in Rakudo's regex engine
04:51 xpika joined
Wolfman2000 whose engine? p6eval's or mine? 04:51
quietfanatic Rakudo's
lisppaste3 wolfman2000 annotated #89930 "Focusing on IP4Base2: IRC works fine individually, my version does not." at paste.lisp.org/display/89930#2
masak quietfanatic: what makes you think that?
quietfanatic rakudo: token D { 1 <digit> <digit> | <digit> ** 1..2 }; say 123 ~~ /^<D>$/
p6eval rakudo fe6dd2: 123␤
quietfanatic but... 04:52
rakudo: token D { <digit> ** 1..2 | 1 <digit> <digit> }; say 123 ~~ /^<D>$/
p6eval rakudo fe6dd2: ␤
masak ooh!
masak submits rakudobug
Wolfman2000 ...huh?
masak quietfanatic++
quietfanatic The order of terms around the | shouldn't matter
it should pick the longest one
Wolfman2000 ...they're in a different order...
quietfanatic but clearly here it is working in one order and not the other, so it's a bug 04:53
Wolfman2000 quietfanatic: Aren't both the same length when it deals with 123 though?
masak quietfanatic: Rakudo's engine doesn't pick the longest one yet.
quietfanatic <digit> ** 1..2 doesn't even match 123
well it does
but not the whole thing
Wolfman2000 quietfanatic: <digit>**1..2 should match 10-99
quietfanatic so I'm guessing it feels satisfied that it's matched the "12"
and pulls out of that token
masak Wolfman2000: actually, 00-99 04:54
Wolfman2000 masak: right, right...brain fart
quietfanatic only to find that there's no \. so it needs to backtrack into the token
Wolfman2000 ...AHA!
quietfanatic but token don't allow backtracking
04:54 base_16 joined, NorwayGeek_ left
masak quietfanatic: there you go. 04:54
so, not a bug after all?
Wolfman2000 I still think it's a bug
let me get my next pastebin out
quietfanatic It wouldn't be a bug if it was || instead of | 04:55
I'm thinking since Rakudo can't do longest-token-matching, maybe | should fail at compile-time.
masak quietfanatic: well, Rakudo treats those two the same currently.
lisppaste3 wolfman2000 annotated #89930 "Have to have <IP4Base2> before <IP4Base>. I suspect this is a bug." at paste.lisp.org/display/89930#3
quietfanatic (as unimplemented)
Wolfman2000 Also...I've taken a look at the IPv6 spec. They're going to allow for too many shortcuts to make it easy to grammar it. 04:56
Guess that's part of the challenge
quietfanatic But it appears that your grammar does work when the order is changed. 04:57
Wolfman2000 But the order shouldn't matter. 04:58
quietfanatic So for now you have to make sure you put the things that'll be the longest first in your alternations
Wolfman2000 masak: Resume your rakudobug'ing
masak Wolfman2000: what quietfanatic said.
quietfanatic If it were me, I'd use || for all of them instead of |, to make sure I remember it's not longest-token matching 04:59
Wolfman2000 I recall | being "or" for regexing 05:00
I think I should stick with |
pmichaud ...bug in rakudo's regex engine? hmm?
quietfanatic | is supposed to pick the longest one
pmichaud oh yes, known bug. 05:01
quietfanatic || tries the first one first and if it doesn't match it goes to the next
pmichaud rakudo doesn't implement longest token semantics yet. never has.
lisppaste3 wolfman2000 annotated #89930 "Apparently the last block on IP6 addresses can contain <IP4>. *shrug*" at paste.lisp.org/display/89930#4
quietfanatic Actually a lot like the difference between | and || in regular Perl 6 code
masak quietfanatic: aye. I guess that's why | was changed the way it was. 05:02
Wolfman2000 masak, quietfanatic: let's settle this. Am I using | wrong?
pmichaud masak: yes, that's exactly why
quietfanatic No.
pmichaud Wolfman2000: you're not using | wrong
Wolfman2000: rakudo doesn't match the longest version (yet)
quietfanatic (Wolfman2000:)
pmichaud rakudo treats | exactly like || at the moment
Wolfman2000 ah 05:03
quietfanatic Rakudo is using | wrong :)
pmichaud so, it's up to you to put them in the correct sequence (if one is possible :-)
Wolfman2000 ...making a correct sequence for IP6 proper will be tricky
That could be a good teamwork assignment 05:04
en.wikipedia.org/wiki/IPv6#Addressing
quietfanatic Ah, pmichaud: does Rakudo skip calling trait_mod:<is> when executing "class X is Y {...}"? 05:05
pmichaud quietfanatic: no, I think it explicitly calls trait_mod:<is> when executing that 05:07
quietfanatic Hmm
pmichaud you'd have to ask jnthn++
quietfanatic alright 05:08
pmichaud but I'm pretty sure he made inheritance go through trait_mod:<is>
I'm certain he's done so in the ng branch
eternaleye \o/ 05:09
quietfanatic cool, I'm gonna have to get my paws on that sometime soon 05:10
masak ditto. 05:11
I've already compiled it once... but it's getting more interesting by the day.
Wolfman2000 ...yeah, I'll need assistance to implement IP6 grammars properly. IP4, I've got. URLs are simple. It will be the IP6 protocol that is the toughie. 05:12
quietfanatic pmichaud: oh you're right it does call that, I just wasn't specific enough in my overloading
Wolfman2000 I'd have to be able to have groups of normal blocks, at most one ::, and then more groups, but no more than a certain number on both sides.
quietfanatic nextsame doesn't work in it though :| 05:13
Wolfman2000 moritz_: I must apologize to you again. I thought IP addresses would be simple.
eternaleye Wolfman2000: Might I interest you int this beautiful and shiny <?{ ... }> ?
Wolfman2000: It's a code assertion - it fails the match if the code segment returns false 05:14
pmichaud (the ng branch will have <?{...}> very soon. nqp already has it)
quietfanatic rakudo: 3 ~~ /<digit> <?{1}>/
Wolfman2000 eternaleye: Looks like a normal pair of braces...or a closure.
p6eval rakudo fe6dd2: Confused at line 2, near "?{1}>/"␤in Main (file <unknown>, line <unknown>)␤
quietfanatic bbrpt
eternaleye Wolfman2000: No, no, the <> and ? are part of the syntax for it 05:15
Wolfman2000 eternaleye: I assume you saw the wikipedia link I pasted in here.
Well...right now apparently rakudo doesn't offer that.
eternaleye you call it like / <digit>+ <?{ $<digit> <= 255 }> /
Wolfman2000: Yeah, but it should be there soon via the ng branch 05:16
pmichaud definitely rsn
Wolfman2000 masak: At this rate, I'm wondering if Web.pm will be simpler. ;)
masak Wolfman2000: hardly. :)
Wolfman2000 masak: I meant simpler compared to the grammar struggles I've been having. Partly due to my lack of experience, and partly due to rakudo bugs 05:17
masak Wolfman2000: I'm going home to bake bread soon. did you see the extra two pages in the tutorial?
Wolfman2000 masak: I did not
eternaleye Wolfman2000: One way to do it would be /<ip6regex> <?{ $<ip6regex>.Str.split( /':'+/ ).elems <= $max_groups }>/ 05:19
Wolfman2000 eternaleye: unsure if splitting by the plain ':' will work: '::' is technically made up of 2 or more consecutive 0 groups. 05:20
eternaleye Wolfman2000: so add in an if $<ip6regex> ~~ /'::'/ to decide what $max_groups shoul be 05:22
If true, $max_groups -= 1
Wolfman2000 I said 2 or more, not 2 05:23
masak take care, people. see you tomorrow!
pmichaud later, masak!
Wolfman2000 bye masak
05:23 masak left
pmichaud wonders what "tomorrow" means in this context 05:23
eternaleye Wolfman2000: That's what 'max' means - an upper bound, not the actual number
Wolfman2000 If your look behind/ahead thing works eternaleye, it seems like we'd have to split each : after splitting ::, could THOSE groups, and then pull --oh
05:24 seanstickle left
eternaleye Wolfman2000: You can also call subs in <?{...}> - arbitrary compexity is yours for the taking ;D 05:24
*complexity
Wolfman2000 eternaleye: If possible, explain all of this to me another day...when rakudo has it implemented and I'm not feeling a bit tired again. 05:25
eternaleye Wolfman2000: Also, lookahead is spelled <before $stuff> now
<?{...}> is a zero-width code assertion
pmichaud (... <?before $stuff> ... ) 05:26
eternaleye pmichaud: Thank you, I thought I was forgetting something 05:27
pmichaud <before $stuff> works also, but you end up with a $<before> named capture. :) 05:28
Wolfman2000 closes up Feather for the night
quietfanatic rakudo: class X {has $.x = 5}; multi trait_mod:<is> (Class $newclass, ::X $y) {say "Yes"; &trait_mod:<is>.grep({.signature.params[0].type === Object and .signature.params[1].type === Object}).[0].($newclass, ::X)}; class Y is X {}; say Y.new.x; 05:30
p6eval rakudo fe6dd2: ( no output ) 05:31
quietfanatic ...
Wolfman2000 ...that's a lot
quietfanatic It worked at my end, printing "Yes\n5\n"; showing that it not only called the hook but also did the proper inheriting
But yeah, for want of a working nextsame() I had to grep the candidates by hand. 05:32
pmichaud it might've timed out on p6eval
quietfanatic Possibly
diakopter yes; I disabled the timeout notice earlier today 06:05
06:09 xpika left 06:15 mubot left 06:16 mubot joined 06:26 justatheory left 06:49 Chillance left 06:58 xinming_ joined
pugs_svn r29016 | carlin++ | [t/spec/S32-io] Make this pass 07:14
07:14 xinming left 07:35 xinming_ is now known as xinming 07:41 fax left 08:01 tak11 left 08:02 synth left, synth joined 08:08 hicx174 left
carlin 08:10
carlin fails at Irssi and screen 08:13
08:16 iblechbot joined 08:24 zloyrusskiy joined, zloyrusskiy left 08:27 synth left, synth joined 08:28 synth left, synth joined, synth left 08:29 synth joined 08:57 hicx174 joined 09:02 [synth] joined 09:08 synth left, synth joined 09:11 reid05 left 09:12 reid05 joined 09:25 Su-Shee joined 09:26 shachaf left
Su-Shee good morning. 09:26
moritz_ good morning 09:28
09:28 [synth] left 09:30 shachaf joined
moritz_ rakudo: say 123.split(2).perl 09:42
p6eval rakudo fe6dd2: ["1", "3"]␤
10:10 jaffa8 joined 10:36 NorwayGeek joined, synth left 10:38 envi^home left 11:09 whooosh joined 11:16 mberends joined 11:24 am0c joined 11:29 am0c left
jnthn quietfanatic: Yes, inheritance in master should go through trait_mod:<is> too. 11:48
quietfanatic: See src/setting/traits.pm (in master).
11:54 colomon joined
pugs_svn r29017 | carlin++ | [t/spec/S32-io] Make these tests run on solaris, confirmed passing 12:05
12:05 synth joined 12:08 whooosh left 12:09 payload joined 12:14 synth left 12:18 synth joined 12:38 xabbu42 joined 12:43 Su-Shee left 12:46 Su-Shee joined 12:49 Whiteknight joined 13:00 xinming_ joined 13:13 icwiener joined 13:16 xinming left 13:22 IllvilJa left 13:24 envi^home joined, envi^home left
pmichaud good morning, #perl6 13:26
jnthn morning, pmichaud
colomon morning!
pmichaud jnthn: whatever is causing actions.pm to compile slow appears to be specific to nqp-rx
not sure how, though.
13:27 rgrau left, rgrau joined
colomon can that be profiled with the parrot profiler? seems like something us mere mortals could help you with... 13:28
pmichaud short answer: yes
jnthn pmichaud: That's...odd.
pmichaud longer answer: I tried profiling the code, and it points to a problem in POST::Compiler.pir
and within that to PCT::Node.iterator 13:29
colomon ah, so what I could do is already done, more or less
pmichaud chromatic, cotto, and I have good reason to believe that the profiler is not being entirely accurate here
well, the profiler _did_ point out a place where Parrot is definitely being suboptimal 13:30
but I'm not sure it can account for a factor-of-10 slowdown, and it really doesn't explain why nqp-rx would be slow when the old nqp isn't
colomon: there is a place you could help 13:33
colomon is listening... 13:34
13:34 explorer left
pmichaud I'm curious to know if the test files for nqp-rx also exhibit the same slow compile characteristics 13:34
(I have to leave for a soccer game in 5 mins)
what I need to know is this
given an nqp test file
1. How long does it take to compile with --target=past
2. How long does it take to compile with --target=pir 13:35
3. the above for both the old nqp compiler and the new nqp-rx one
(knowing the details for the new nqp-rx one is more important)
I've been using:
colomon just to be clear, is that an nqp test file or a nqp-rx test file?
pmichaud use the test files from nqp-rx
colomon gotcha. 13:36
pmichaud but many/most of the test files should work in both
(if a file doesn't compile under the old nqp, we ignore it. But the two languages are virtually identical, especially with respect to the test files)
the command I've been using is
$ time ./nqp --target=pir t/nqp/xx-somefile.t
$ time ./nqp --target=past t/nqp/xx-somefile.t
I don't need all files done, just a few representative ones 13:37
colomon okay, I'll see what I can do.
pmichaud what I would normally expect to see is that the time needed for --target=pir is only fractionally longer than --target=past
what jonathan noticed yesterday is that --target=pir is taking as much as 10x longer than --target=past 13:38
at least, it's doing that for Actions.pm
I could use confirmation of that result on other nqp files
if you wanted to run the profiler on a few of those and send me the *.out* files, that would be awesome also 13:39
colomon check.
grabbing a clean rakudo now for ng build.
pmichaud you probably don't need a rakudo for this -- an nqp-rx checkout would be sufficient. but either works 13:40
okay, I gotta go 13:41
bb in a couple of hours
13:44 meppel left 13:55 NorwayGeek left, synth left 14:08 Su-Shee_ joined 14:10 Su-Shee left 14:15 synth joined, markmont joined 14:22 Su-Shee_ is now known as Su-Shee 14:23 rgrau left, jrockway left, nbrown left, iblechbot left
colomon jnthn: you out there? 14:25
jnthn colomon: I am - may be a bit slow to answer at the moment, but go ahead. :-) 14:26
14:26 hercynium left, mberends left 14:27 xinming_ is now known as xinming
colomon pmichaud referred to an Actions.pm that was 10x slower in pir than past, and there are at least Actions.pm in the nqp-rx tree... any idea which he was talking about? 14:27
jnthn The one I measured yesterday and got that reading for is src/Perl6/Actions.pm in Rakudo's ng branch. 14:29
colomon ah, of course, the one I haven't tried yet. :)
jnthn Actually the 10x slower thing I should clarify a little.
colomon danke.
jnthn Basically, with --target=post, it runs in X seconds. However, going from POST to PIR takes more like 10X seconds. 14:30
colomon post not past?
jnthn Correct.
14:30 rgrau joined, jrockway joined, nbrown joined
jnthn POST is the step between PAST and PIR. 14:30
It's like a tree representation of PIR. 14:31
colomon ah, pmichaud had me looking at past.
jnthn That's fine
Oh, comparing time for --target=past with the full thing?
Or with --target=pir?
colomon past versus pire 14:32
pir
jnthn That's fine.
When I compared --target=past and --target=post they were *very* close.
Compared to the difference between either of those and --target=pir
So it'll still give us the info we need.
colomon I'm thinking I may throw together a Perl 5 script to do a mass comparison and report. 14:33
jnthn Cool 14:35
That'd be great.
14:35 bpetering joined
colomon WOW! just tried your Actions.pm. That's the first big difference I've seen so far. 14:36
14:36 envi^home joined, envi^home left, nbrown left, jrockway left, rgrau left, icwiener left 14:37 icwiener joined 14:38 muixirt joined
Wolfman2000 *yawn* morning 14:39
muixirt gives Wolfman2000 a cup of coffee 14:40
Wolfman2000 Not much of a coffee drinker, but thanks 14:41
14:41 Su-Shee left 14:42 payload left 14:43 rgrau joined, jrockway joined, nbrown joined 14:45 rgrau left, rgrau joined 14:50 SmokeMachine joined, abra joined 14:59 nihiliad joined, abra left 15:00 Bzek joined, abra joined
colomon jnthn, pmichaud: Unfortunately being taken shopping by wife in a minute, so may not get a chance to get the harness program running. 15:03
my early observations -- my impression is the longer nqp-rx takes to run, the bigger the relative difference between past and pir. 15:04
seems like maybe an O(N^2) issue kicking in?
15:05 payload joined
colomon should have more time to work on this after lunch. 15:05
15:05 nbrown left 15:06 nbrown joined
colomon Errr... anyone have an idea how I can capture the output of the "time" command? (As in "time command execution" on OS X, not "what is the currenttime".) 15:11
jnthn Where are you calling it from? 15:13
A Perl script?
colomon yes
jnthn 5 or 6?
colomon 5
I don't want 6's issues messing with my timing.
jnthn Can't you just use my $output = `time ... `;
colomon system "time ./nqp --target=pir $file >& colomon-frip";
jnthn And then parse $output 15:14
colomon jnthn: tried that, it sent time to stdout.
stderr, I mean.
so I captured everything but the time.
jnthn oh heh
base_16 "time cmd 2>&1" ?
colomon the system command above did the same.
base_16 you have to redirect stderr as well 15:15
jnthn Aye, that should work.
colomon as far as I can tell, 2>&1 doesn't help either.
wonder if this is an os x quirk?
nope, doesn't work in linux either. 15:16
sigh.
got to go.
15:17 nbrown left, nbrown joined
base_16 this works for me 15:17
system "{ time ls 2>&1;} >output"
15:21 masak joined
masak good subjective morning, #perl6. 15:21
Wolfman2000 same
masak backlogs 15:22
15:23 spooneybarger joined, spooneybarger left 15:24 Psyche^ joined
pmichaud back again 15:25
masak I think it's slightly funny that, once we start profiling things, the first thing that happens is that the profiler is less than truthful with us. :) 15:26
pmichaud it's a brand new profiler
masak ah.
15:26 Patterner left, Psyche^ is now known as Patterner, payload left
masak a bit of 'who watches the watchers' then, maybe. 15:26
pmichaud the profiler isn't really set up to handle tail recursion, and pct uses a lot of that 15:28
masak it got distracted chasing tail, eh? 15:29
I think I can sympathise with that.
15:33 NorwayGeek joined 15:34 [synth] joined 15:37 fax joined 15:39 lichtkind joined
Wolfman2000 alright...just had breakfast. now to hopefully get the answer to the question I didn't get last night. Are there any syntax highlighers for Perl any of you guys like a lot? When I actually build my Perl website, I think syntax highlighting would be useful. 15:42
pmichaud padre is an ide
Wolfman2000 ...I'm asking the wrong question. 15:43
I don't need an IDE necessarily.
What colors do you prefer for the many keywords and phrases and stuff?
...wait a second. I never heard of this one before...free? both Perl 5 AND Perl 6? SOLD 15:44
bpetering Wolfman2000: which one? 15:46
Wolfman2000 bpetering: padre
15:46 synth left
Wolfman2000 Of course, I have to install this the old fashioned way...but then again, I should be used to this by now 15:48
bpetering Wolfman2000: maybe there's a better way? 15:50
masak Wolfman2000: have people told you about the vim and Emacs syntax highlighters?
Wolfman2000 masak: Can you tell me how to get those syntax highlighters without having to run said programs? 15:51
masak Wolfman2000: ah, so that's your goal?
jnthn masak: You doing jetlag without the jet? :-)
Wolfman2000 masak: yeah. I want to use a popular syntax highlighter for my webpage, even if I have to hand code each keyword manually via CSS.
Granted, Padre does look like it can be useful even on its own, so I'm getting that anyway. 15:52
masak jnthn: I'm taking an active stance against my insomnia. :) 15:53
moritz_ Wolfman2000: for my websites I use the Vim Perl 6 syntax hilighting plus Text::ViimColor
erm, Text::VimColor
that's a perl 5 syntax hilighting module that uses vim under the hood
masak Wolfman2000: azawawi did some experiments with Perl 6 syntax highlighting.
bpetering masak: anesthesia? :)
masak Wolfman2000: but I suspect that's the code that got incorporated into Padre.
moritz_ you can see some examples of it in perlgeek.de/en/article/mutable-gram...for-perl-6
s/in/on/
masak bpetering: no, staying awake through the night. :) 15:54
Wolfman2000 moritz_: I don't know how well a Perl module will work...on the base feather user pages. Plus, I plan on using Web.pm, Perl 6, on the custom apache page, and I don't exactly know how well Perl 5 modules can be used in Perl 6.
bpetering masak: isn't that like, err, sleeping with the enemy? ;) 15:55
moritz_ Wolfman2000: just want to give you some options, not try to convince you to do something specific 15:56
masak bpetering: yes, but it works wonders for calling forth natural sleepiness. :)
15:56 [synth] left
Juerd I'm a bit concerned with the focus on apache :) 15:56
masak bpetering: right now it feels a bit like this: xkcd.com/320/
bpetering masak: true, sleep every second night and you'll sleep like a baby :) 15:57
masak ouch. I don't think I could pull that off. :)
I'm not 20 anymore.
Wolfman2000 Juerd: care to explain? You gave us Apache for us to use perl scripting on the web, right? 15:58
bpetering masak: heh... i don't think it's recommended even for 20-year-olds
Juerd Wolfman2000: I'm not *giving* apache. It's available, just like any other thing you want installed :) 15:59
pmichaud oddly, that seems to match my sleep schedule
pmichaud prepares to go searching for source of slowness again
Juerd Wolfman2000: You could use lighttpd, for example. I'm not saying you should.
I'm just not sure if I should keep the apache advise, or maybe add some other web server to the mix. 16:00
Wolfman2000 Juerd: Look into nginx then.
Juerd Nah, if I'm installing something extra it'll be lighttpd :) 16:01
Wolfman2000 *shrugs* worth a shot. Long as Web.pm will work on it, I won't complain.
Juerd No, that's not correct
If I'm *going to write instructions* for something extra, it'll be lighttpd
pmichaud okay, looks like src/NQP/Actions.pm is a nice medium-size test case 16:02
Juerd If you want nginx, I'll install it right away. Do you want it?
Wolfman2000 Juerd: No need at this point, but thanks anyway.
I'll use what's available.
Juerd Hm, let's do a dist-upgrade on feather
Warning: breakage ahead.
Wolfman2000 ...good thing I'm not on feather right now
Juerd Oh, I am 16:03
I use irssi on feather
<3 screen + irssi
Wolfman2000 I meant...if you're going to upgrade, it's a good thing I'm offline so I don't collude or something.
Juerd Nah
You won't notice a thing *cough*
Wolfman2000 ...I'm busy trying to get Padre set up on my local Mac right now, so don't worry.
have fun with the upgrade. 16:04
Juerd 452 upgraded, 17 newly installed, 4 to remove and 0 not upgraded.
See? That's nothing.
Wolfman2000 That sure seems like a lot
Juerd It might be :)
It's 406 MB of archive files.
Restarted for libc upgrade: vsftpd spamassassin ssh rsync openbsd-inetd dovecot cron atd apache 16:10
Existing ssh connections are kept.
masak Juerd++ 16:18
Juerd Damn. 16:19
udev needs upgrading, but that udev needs a new kernel.
New kernel means new xen.
Wolfman2000 and...what's wrong with upgrading?
Juerd Wolfman2000: Downtime and reboots. 16:20
Oh, and more work than I had anticipated.
Wolfman2000 no time like the present
Juerd The system will have to keep itself up at least until tomorrow
Wolfman2000 meaning it will be updating itself until tomorrow, or you will just do the updates tomorrow? 16:21
Juerd The current dist-upgrade I'll finish today
But I can't upgrade Xen (which I shouldn't do remotely) until tomorrow.
Wolfman2000 ah
Juerd So there'll be a discrepancy between the running kernel and running udev
Which could mean devices become unavailable. 16:22
16:22 justatheory joined 16:23 lmc joined
Wolfman2000 it's strange to install Padre on Mac OS X. The Doc will keep on vibrating during some of the tests due to the GUI related tests apparentl. 16:24
...and wxPerl won't install
...my perl is outdated anyway.
Alright guys...be honest. I'm already testing out Perl 6 effectively. For my primary computer, should I go to 5.10.1 or 5.11.1? I know 5.even is generally more stable than 5.odd 16:26
moritz_ 5.10.1 would get my vote 16:27
Juerd 5.10.1
5.11 is dev
16:29 IllvilJa joined 16:38 Whiteknight left
Juerd dist-upgrade done 16:38
Feather email is back online 16:42
16:44 abra left
Wolfman2000 I forgot about the interactive ./Configure for Perl 16:45
made it interesting to work with
moritz_ ./Configure -de # there you go, no tiring interaction
Wolfman2000 moritz_: I actually liked the interaction. I changed some of the defaults.
moritz_ I liked it in the beginning, and hated it after the 10th question or so 16:46
Wolfman2000 I'll admit it's partly an aquired taste 16:47
bpetering ./Configure --read-my-mind # d:-) 16:48
but interaction does give a nice customized Perl. :) 16:50
moritz_ <rant>and those people with customized perls then sent obscure cpan testers FAIL reports</rant> 16:51
masak grrr! "Expected Callable but got Code instead"!
moritz_ rakudo. say Code ~~ Callable 16:52
rakudo: say Code ~~ Callable
p6eval rakudo fe6dd2: 1␤
moritz_ pmichaud++ # Adding END phasers to Rakudo, Captain. Set for STUNNING.
pmichaud :) 16:53
carlin rakudo: say Callable ~~ Code
pmichaud highlight of my week, that.
p6eval rakudo fe6dd2: 0␤
moritz_ somebody does read those commit messages
frettled My goodness, did you guys really go around shooting phasers? :D
masak better believe it.
moritz_ try to think of fun phaser games for next YAPC 16:54
masak moritz_: you're coming to the next YAPC?! \o/
moritz_ good that we didn't have tests for the :panic regex modifier - it's gone anyway
bpetering is scared at the thought of masak with a phaser. yikes. :)
moritz_ masak: I very much hope so
masak bpetering: I'm dangerous even without one. :P 16:55
16:55 envi^home joined
pmichaud moritz_: you saw the message... did you see the commit? ;-) 16:55
bpetering masak: I do believe it.
16:55 juerd_cgiirc joined
juerd_cgiirc Yay \o/ 16:55
moritz_ pmichaud: aye; it's beatiful 16:56
Juerd Okay, so we have webmail and webirc back too
bpetering yay for beautiful code! :)
Juerd What an organic mess is that apache config on feather :)
moritz_ it should either never be touched again, or seriously refactored ;-) 16:57
Juerd Agreed.
That was true before I changed something today though :)
16:57 juerd_cgiirc left 16:58 iblechbot joined
bpetering moritz_: are there parts of the test suite that need work, and which have few bits likely to disappear? 16:59
*also have (clearer) 17:00
Juerd I wonder if people want to use feather imap
moritz_ bpetering: yes 17:01
bpetering: for example recent commits added 'quitely' and 'note' to the spec
bpetering: you could test those with Test::Util (lives in t/spec/packages), which spawns another perl 6 process and captures its output and STDERR 17:02
r28528 was the relevant commit to the spec
warn() also needs tests 17:03
oh
we have tests for quietly already
moritz_ wasn't aware of them
pmichaud I think they were quietly added :) 17:04
moritz_ KyleHa++ for them
bpetering hehe :)
KyleHa++ # lots of awesome test suite work 17:05
moritz_ indeed
pugs_svn r29018 | moritz++ | [t/spec/TODO] we have tests for note/quietly, KyleHa++
moritz_ I guess r28150 and r28151 are fairly isolated, and not yet tested
bpetering moritz_: thanks for the advice, i'll have a look. it's only the 100th thing i've promised people here, but hopefully i can find an optimal learning path which gets me up to speed quickest. 17:06
a path through the promised projects, i mean :) 17:07
moritz_ :-)
Juerd Wolfman2000: nginx and lighttpd are now installed on feather :)
Wolfman2000 Juerd: I'd cheer...if my Perl 5.10.1 installation didn't suddenly break. I can't run cpan!
Juerd Why were you installing from source anyway? 17:08
Wolfman2000 Juerd: I did that for 5.10.0 awhile ago. May as well stay consistent
Juerd Good reason
lisppaste3 wolfman2000 pasted "For those that care, error with cpan. Probably have to reinstall this too." at paste.lisp.org/display/89946 17:09
bpetering +1
moritz_ elf: print [1, 2, 3] 17:10
p6eval elf 29018: ARRAY(0x1468268)
moritz_ rakudo: print [1, 2, 3]
p6eval rakudo fe6dd2: 1 2 3
moritz_ perl6: print ~[1, 2, 3] 17:11
p6eval pugs, rakudo fe6dd2: 1 2 3
..elf 29018: 123
moritz_ now that's weird
the print() doesn't use the stringification
lisppaste3 masak pasted "Is there an easier way to do this? (CPS-style tree traversal)" at paste.lisp.org/display/89947
diakopter but say does?
masak: 'splain moar 17:13
easier way to do what
masak diakopter: ok, so I want to have the cake and eat it, it seems.
moritz_ elf: say [1, 2, 3];
p6eval elf 29018: 123␤
masak diakopter: I want a tree traversal, but I want to be able to jump into any point of it and resume it.
diakopter: so it seems to me I cannot use ordinary recursion for this.
diakopter: what I wrote there is the first attempt I get working at all. 17:14
I'm thinking maybe there's a pattern to this that I'm unaware of.
17:14 am0c joined
diakopter Interpreter pattern ? 17:15
masak 'splain moar.
diakopter wikipedia it? 'cept trampolined..
:)
masak: do you read javascript?
masak diakopter: sure. 17:16
it's just a hybrid of C and Scheme. :)
diakopter apollo2.pastebin.com/d6bc26fc6
that's the PAST interpreter
oh wait 17:17
heh; minified
masak ugh.
diakopter har
masak diakopter: I'm sorry, the Interpreter Pattern (as described by Wikipedia) looks like ordinary Recursive Descent parsing to me. 17:18
arnsholt masak: I don't think there's an elegant way to do it, apart from continuations 17:19
diakopter masak: except if you make them continuations, like arnsholt said... 17:20
masak well, that's essentially what I did in my code.
expect that Perl 6 doesn't have continuations.
so I had to emulate CPS on the call stack.
arnsholt Yeah, I think that's the only way 17:21
diakopter jsint.pastebin.com/d3c168713 17:22
masak arnsholt: oh well. this works. I'm glad you at least know what I'm talking about. this feels like a rather esoteric thing to want to do.
pugs_svn r29019 | moritz++ | [t/spec] rewrite S16-io/say-and-ref.t to use Test::Util, KyleHa++
arnsholt masak: Essentially what you want is an iterator for your tree 17:23
bpetering Wolfman2000: I could be way off track, but it looks like you're getting a conflict with the installed perl and the version you're installing...?
arnsholt Not really an esoteric thing. It's just that the good way to do it is a bit obscure =)
masak arnsholt: aye. that's essentially what it is.
moritz_ masak: I think you can do that without continuations, by passing a state object around
masak moritz_: good point. 17:24
Wolfman2000 bpetering: ignore it right now. Installed CPANPLUS...have to now set that up to send reports on pass/fail
diakopter moritz_: ok, but you can't use the normal 'return', in that case
arnsholt That's essentially what continuations do, though. They encapsulate the current state of your function to be resumed later
moritz_ arnsholt: right, the only difference is the callable wrapper around the state object
arnsholt Yah
masak right. moritz_'s solution would turn things inside-out.
bpetering Wolfman2000: np 17:25
masak it's a question of what works best with the rest of the design.
diakopter moritz_: but you can't use 'return' 17:26
b/c it wouldn't return to the right place
Wolfman2000 Argh...I always forget this. Can CPANPLUS use CPAN-Reporter?
moritz_ diakopter: unless you do it all by block attributes instead of routines ;-)
diakopter hrm 17:27
moritz_ and in real Perl 6 (not Rakudo yet) return() is tied to the sub it's in, lexically
diakopter what do you mean 17:28
(as opposed to the obvious)
moritz_ so you might have a chance to pass in a block which returns its argument to the invoking routine
diakopter but that's still using the stack recursively 17:29
the call stack
moritz_ rakudo: sub b($x) { $x() }; sub a { my $x = { return 5 }; say b($x) }; say a()
p6eval rakudo fe6dd2: 5␤1␤
moritz_ that's wrong
masak I love this type of discussion.
moritz_ and known. (me glances at masak)
masak oh yes. 17:30
17:30 icwiener_ joined 17:31 icwiener left
pmichaud okay, time to study what has happened to code generation in parrot. :-| 17:31
masak in fact, I've promised myself that when this gets implemented right, I'll be the first one to try and trigger the "already returned from this routine" error. :)
pmichaud makes mental note to self: "Wait to implement lexical return until masak is on vacation."
masak :) 17:32
bpetering masak: vacation time! :)
pugs_svn r29020 | moritz++ | [t/spec] rename import.t to importing.t, because we now have a prefix:<import> but it is not tested in here
pmichaud moritz_: can we also start eliminating underscores? ;-)
diakopter what's lexical return
17:32 b0nk left
masak vacation just meant more than 50% time for Perl 6. 17:32
moritz_ pmichaud: sure, any time 17:33
pmichaud diakopter: 17:27 <moritz_> and in real Perl 6 (not Rakudo yet) return() is tied to the sub it's in, lexically
pugs_svn r29021 | moritz++ | [t/spec] move defines.t to import.t
moritz_ diakopter: see also the example I gave above
pugs: sub b($x) { $x() }; sub a { my $x = { return 5 }; say b($x) }; say a()
p6eval pugs: 5␤1␤
moritz_ same problem.
pmichaud answer should be just 5, iiuc 17:34
moritz_ right
the first say() never runs, because the evaluation of its argument throws a (control) exception
rakudo: say 3, die(5) 17:35
p6eval rakudo fe6dd2: 5␤in Main (file /tmp/5Ik0Y8xIU1, line 0)␤
moritz_ line 0. Bah.
masak (line 0)-- 17:36
jnthn Meh
diakopter what
I mean: what. 17:37
jnthn I could just hack the code to not bother outputting any "in" line if the line number is zero.
diakopter sub b($x) { $x() }; sub a { my $x = { return 5 }; say b($x) }; say a()
"return 5" throws a control exception? 17:38
moritz_ aye
diakopter which does what 17:39
17:39 Bzek left
moritz_ unless the optimizer can prove that no CONTROL { } block can come in its way 17:39
diakopter: unrolls the stack until either a CONTROL block is found, or the current routine is reached
and returns its argument
diakopter what is the "current routine"?
moritz_ the routine it's in, lexically 17:40
diakopter the routine _what_ is in
moritz_ the return()
so in your example above &a
diakopter this is [one of] what distinguishes Block from Routine? 17:41
moritz_ yes
diakopter '{ return 5 }' is a Block, but 'sub a {}' is a Routine?
moritz_ yes
diakopter when did 'lexical return' come about 17:42
moritz_ dunno, but I think it was in when I joined the crowd 17:43
so 2006 or 2007
diakopter pugs: sub b($x) { $x() }; sub a { my $x = { 5 }; say b($x) }; say a() # so this is correct?
p6eval pugs: 5␤1␤
diakopter pugs: sub b($x) { $x() }; sub a { my $x = sub { 5 }; say b($x) }; say a() # so this is correct?
p6eval pugs: 5␤1␤
diakopter the 2nd one 17:44
moritz_ no
diakopter I mean, with "return"
pugs: sub b($x) { $x() }; sub a { my $x = sub { return 5 }; say b($x) }; say a() # so this is correct?
p6eval pugs: 5␤1␤
diakopter how is it not correct? 17:45
moritz_ no; the say() in a should not be executed
diakopter why not
moritz_ because the evaluation of its argument throws an exception
just like say(die()) doesn't execute the say()
diakopter you must not have read what I typed
I added 'sub' before { return 5 } 17:46
moritz_ oh
then it's fine
sorry for the confusion
masak nod.
diakopter (why would I repeat the same question verbatim)
masak that's the difference.
moritz_ dunno ;-)
diakopter well, you're the one who assumed it
moritz_ wants a word diff for subsequent p6eval lines
masak I think of 'sub' as adding an extra layer of return-exception catching.
bpetering thinks that would be a cool project :) 17:47
moritz_ an extra column to the IRC logs, enabled by javascript? ;-)
bpetering moritz_: heh... dunno if anyone actually uses that. if they do i need to fix some bugs :) 17:49
moritz_ bpetering: I don't use it because it's unusable :( 17:50
I can't scroll down to select the nick I want
bpetering moritz_: wouldn't it be possible to emulate STD's output - color insertions green, deletions red?
moritz_ it would, possibly 17:51
afk
17:52 sharada joined
bpetering moritz_: (by which i mean just use the ANSI color codes, avoiding the logs) 17:53
moritz_: as for the "conversation mode", i'll fix that stupid bug and rename the link to "don't click this" 17:55
17:56 envi^home left
bpetering std: don't () parse me 17:58
p6eval std 29021: ===SORRY!===␤Two terms in a row at /tmp/c8uUA32v9U line 1:␤------> don't () ⏏parse me␤ expecting any of:␤ bracketed infix␤ infix stopper␤ standard stopper␤ statement modifier loop␤ terminator␤Undeclared routine:␤ don't used at line
..1␤FAILED 00:01 10…
bpetering thanks std! :) 17:59
17:59 fax left 18:00 sharada is now known as fax
diakopter so a Block *doesn't* create a new lexical scope? 18:03
(otherwise you couldn't call it a "lexical return"
)
(and be consistent about the use of "lexical") 18:04
no? 18:09
masak I think it might be more about lexical scoping than about lexical scopes as such. 18:14
just a thought.
colomon pmichaud: sorry about disappearing there. should be more or less available the rest of the afternoon. 18:17
diakopter masak: but how?
masak diakopter: the 'return' is bound to the lexical scope it's in. from that scope (and outwards), the return exception is thrown. 18:18
it gets handled by the first routine exception handler that sees it. 18:19
i.e. the surrounding sub (or method, or submethod).
diakopter masak: hence my question.
does a Block create a new lexical scope
masak in my view, yes.
but I think I just clarified why there's no actual confusion of concepts. 18:20
diakopter sub a { my $x = { my $x = 5 }; say $x }
std: sub a { my $x = { my $x = 5 }; say $x }
p6eval std 29021: ok 00:01 109m␤
diakopter right, std thinks it does..
so the "lexical scope" of 'my $x = 5' is the Block 18:21
not the Routine
masak each block creates a new lexical scope, with its own pad etc.
diakopter: no, you're confusing it again.
diakopter I don't see how
masak oh, wait. no, you're right. the Block.
same with the 'return'.
diakopter right. 18:22
jnthn As I tend to see it, a block has a lexical scope.
diakopter right......................................
jnthn That is - a storage place for lexicals.
diakopter my point was that 'lexical return' is thus a misnomer
jnthn That knows its outer scope.
Well
masak diakopter: and my point was that it isn't.
jnthn This is Perl 6. You can't expect words to be used for just one specific thing. ;-)
masak diakopter: it returns from that scope.
diakopter b/c the lexical scope of the return statement is the (inner) Block, not the enclosing Routine 18:23
masak diakopter: case in point, you could return a variable from that very lexical pad.
jnthn I mean, yes, there's a "lexpad" which is the storage place for lexically scoped things.
But also there is the general notion of "lexically scoped" which tends to relate to following the static chain, not the dynamic one.
diakopter didn't mention lexpads.
jnthn That's the deal with lexical return.
masak diakopter: so the return really does take place from the Block.
diakopter that's fine... 18:24
jnthn We don't follow the dynamic chain (e.g. caller) to find an exception handler.
We follow the static chain instead.
diakopter but that doesn't distinguish 'lexical return' from normal 'return'
jnthn It only gets interesting in situations where the caller and the outer diverge accross a routine boundary. 18:25
diakopter ok, but no one is addressing my point/question
yes, "the return really does take place from the Block", but so do all returns (subs or otherwise), in that respect
masak you have a point. 18:26
jnthn It's not about where the return takes place, it's about how we find the return exception handler.
diakopter I'm taking issue with labeling it 'lexical return' because 'lexical' isn't what makes it special
jnthn I'd disagree. To me "lexical" = word we use when talking about stuff that happens with the static chain. Finding the return exception handler is decidedly something that's meant to be done by following that chain. 18:27
moritz_ "lexical" is what distinguishes it from simply throwing and catchiing control exceptions
18:27 Achilles joined, Achilles is now known as Achilles333
diakopter oh 18:27
jnthn sub foo { my $x = { return 42 }; $x }; sub bar { my $a = foo(); $a() } 18:28
The return statement will throw an exception, and we then find the exception handler in foo, not the one in bar. 18:29
diakopter yes, we've already been through an example.
jnthn foo is in' the lexical scope of the block.
18:30 Achilles333 left
diakopter wait, what 18:30
jnthn Oops
s/lexical scope/static chain/
18:30 nihiliad left
jnthn I got 'em the wrong way around. The block is lexically enclosed within foo. 18:31
The only bit to add on this is that a routine implies a return exception handler.
A block that's not a routine doesn't.
diakopter sub foo { my $x = { return 42 }; $x; CATCH { say 'CAUGHT' }; }; sub bar { my $a = foo(); $a() }; bar # this should output "CAUGHT"????????????? 18:32
jnthn s/CATCH/CONTROL/ and I'd guess so.
diakopter oh
jnthn Control exceptions are not meant to be handled by CATCH.
We get that wrong in Rakudo too. Last I checked (but maybe it's changed) the spec wasn't clear if there was a differentiation by type in some way. 18:33
diakopter ok, s/CATCH/CONTROL/. so... CONTROL can't assume that anything in its surroundings has been executed 18:34
18:34 NorwayGeek_ joined, NorwayGeek|Away joined, NorwayGeek|Away left
jnthn I guess my next question is, while I understand how we find the exception handler, why has it been designed this way in Perl 6. :-) 18:35
I'm quite sure there's a *good* reason, but I'm kinda missing it.
diakopter I'm not as sure
masak still lots of failures in t/01-sanity/ in the ng branch. does that mean that the ng refactor is insanely great? :) 18:36
jnthn masak: Yes!
masak thought so.
jnthn masak: Actually there's a more boring reason, which is that we're tending to put back a lot of underlying conceptual stuff first. 18:37
Wolfman2000 ......note to self. Next computer I get, be very careful about hosing the perl setup.
masak: How many more failures must be eliminated before ng can come to the main branch? 18:38
18:38 tak11 joined
moritz_ it's not about build failures; it's about putting features back in 18:40
18:41 NorwayGeek left 18:42 tak11 left
jnthn moritz_: Wolfman2000 might have meant test failures. :-) 18:44
18:44 SmokeMachine left
moritz_ afk, movie 18:45
18:45 SmokeMachine joined 18:46 bpetering left
jnthn moritz_: enjoy :-) 18:46
lisppaste3 colomon pasted "pir versus past timings in nqp-rx" at paste.lisp.org/display/89951 18:50
colomon I'll attempt to build a summary table next. :)
diakopter to where does CONTROL {} return control? 18:55
lexically or dynamically?
sub foo { my $x = { return 42 }; $x; CONTROL { say 'HERE0' }; say 'HERE1' }; sub bar { my $a = foo(); $a() }; bar; say 'HERE2'; 18:56
what's the output
or, better
sub baz { sub foo { my $x = { return 42 }; $x; CONTROL { say 'HERE0' }; say 'HERE1' }; sub bar { my $a = foo(); $a() }; { bar; say 'HERE2' }; CONTROL { say 'HERE3' } }; baz 18:57
18:58 am0c__ joined, am0c__ left
Wolfman2000 ...while it's on my mind...does cpan or cpanplus work for Perl 6 yet? 19:01
diakopter nyope
Wolfman2000 is there an equivalent?
jnthn Closest is proto 19:02
diakopter well, I guess it could if the Perl 6 modules were wrapped as Perl 5 ones, and knew where to install themselves to make themselves available to a perl6
Wolfman2000 haven't tried proto yet...
I'm guessing proto is something that has to be installed. *goes to find where it can be downloaded* 19:07
masak Wolfman2000: github.com/masak/proto
Wolfman2000 masak: just found that
diakopter masak: oh look, someone used your name to make a github repo... and made a bunch of Perl 6 stuff under it!
Wolfman2000 ...huh. Proto is not to be taken seriously in any way. It is not a full-fledged module installation system. It is a protptype. 19:08
masak diakopter: I'm still trying to track down whoever did that.
Wolfman2000 ...right, should ahve realized.
masak Wolfman2000: those are the breaks. :)
Wolfman2000: you're welcome to write the real thing.
nbrown masak: I keep meaning to talk to you about proto, I tried to make the installed-moduels branch work on windows
Wolfman2000 masak: not that skilled, nor do I have the time. 19:09
...can't we just copy a lot of what CPAN.pm does instead?
masak nbrown: oh, cool! you should also talk to mberends++, he made that branch.
nbrown masak: but I'm running into issue with qqx not returning the output
masak Wolfman2000: well, we can, and we should.
nbrown masak: I know, I've just been distracted from perl6 for a while
masak Wolfman2000: but Perl 6 also does a few other things where CPAN is not enough.
nbrown: that's a Rakudo-level issue, I fear. 19:10
Wolfman2000 masak: such as...?
nbrown masak: do you know anyone who's trying to run it on windows?
masak Wolfman2000: S11.
nbrown: no.
19:10 nwc10 joined
masak all my friends run other OSes. :) except jnthn, and he only tried proto once. 19:10
nbrown I figured, but I can't replicate it in a simple reduced issue and so I thought I'd ask if anyone else was playing with it
masak not that I know. 19:11
Wolfman2000 The modules synopsis... *reads*
masak Wolfman2000: notably, :auth and :ver.
nbrown masak: yeah, I can make it work on OSX and my linux box, but I decided to play on windows for a bit this summer. It's been interesting
masak nbrown: it's good that someone tries things on Windows as well. I hear some people still use that OS. 19:12
masak grins
nbrown grins too
19:12 nwc10 left
nbrown I'm limited some places, so I tend to dabble 19:12
i guess maybe it's time to give up on windows and get my linux box up and running again 19:15
colomon errr.... how do you write a Perl 6 regex to detect a / ? 19:17
rakudo: "this/is/a/path" ~~ / \/ /; say $0; 19:19
p6eval rakudo fe6dd2: Use of uninitialized value␤␤
colomon rakudo: say this/is/a/path" ~~ / \/ /;
p6eval rakudo fe6dd2: Confused at line 2, near "\" ~~ / \\/ "␤in Main (file <unknown>, line <unknown>)␤
colomon rakudo: say "this/is/a/path" ~~ / \/ /; 19:20
p6eval rakudo fe6dd2: /␤
colomon rakudo: given "this/is/a/path" { when / \/ / { say "found"; }; say "not found"; };
p6eval rakudo fe6dd2: found␤ 19:21
colomon hmmm. why doesn't that work in my script, then?
masak colomon: because you're not doing the exact same thing? :P 19:27
colomon har. 19:28
ah, problem was in my action, not my when clause.
19:30 frew joined 19:31 nihiliad joined
pmichaud back 19:34
here's where I am on measuring stuff right now: pmichaud.com/sandbox/pnotes.txt 19:36
(That file is acting as my log book or forensic notes or whatever... :) 19:37
19:39 pnate2 left, pnate2 joined 19:45 TSa joined
masak food & 19:46
19:46 masak left
zaslon lolmasakhazblogged! masak++ 'November 7 2009 -- hasten the process of de-branchification': use.perl.org/~masak/journal/39858?from=rss 19:48
19:58 payload joined, am0c left 20:01 frew left 20:37 NorwayGeek_ left 20:39 pmurias joined
lisppaste3 colomon pasted "past versus pir summary, sorted by past" at paste.lisp.org/display/89956 20:41
pmichaud colomon: wow 20:42
colomon that's all in nqp-rx.
pmichaud very.... interesting
right
colomon I'm assuming the pir being slightly faster normally is some sort of pre-fetching from the hard drive issue.
pmichaud no, it's likely that dumping the pir is much faster than dumping past or post 20:43
colomon ah, okay.
pmichaud i.e., you're seeing the difference in output times there
--target=past == cost to generate past + cost to display it
colomon any idea how much startup time is involved?
pmichaud --target=pir == cost to generate past + cost to generate post + cost to generate pir + cost to display it
but cost to display past >>> cost to display pir 20:44
colomon funky.
pmichaud well, the pir is a simple string
the past is a fairly deep tree structure
so it's entirely possible for cost to display past to be more than the cost of displaying pir + generating post + generating pir 20:45
colomon huh. so ideally we'd like to figure out how to factor out the displaying cost in each case, and whatever initial startup time there is as well.
pmichaud maybe, but it's not that important 20:46
20:46 NorwayGeek joined
colomon That is to say, it seems to me the question is whether the slowdown effect is present but swamped by those other times, or if it only shows up in longer files. 20:46
pmichaud I think it must be related to longer files 20:47
can you also run your benchmark on pmichaud.com/sandbox/b.pm ?
so I can get timings/ratios for it?
colomon sure, give me a sec
pmichaud great
although it'll take more than one sec :)
(it's currently running 55 sec on my box)
colomon though I'm not sure why my figures would be better than yours. :) 20:48
pmichaud you have more of them at the moment
and the figures for the */*/Actions.pm files are interesting
colomon ah, and machine / OS make a difference.
pmichaud so I want to see how b.pm compares
right
also, my machine is likely to be preoccupied for the next hour crunching the profiling output :) 20:49
colomon should I also do the rakudo actions.pm?
okay, for b.pm: past 10.766s, pir 27.629s, ratio 2.5 20:52
pmichaud right
20:52 SquireOfGothos joined
pmichaud it gets worse as we get bigger 20:52
jnthn may have found it
colomon yeah.
pmichaud it's likely .lineof on a unicode string
er, utf8 20:53
jnthn colomon: I found that gist.github.com/228877 helps massively.
pmichaud given that I suspected unicode at the outset, this all makes sense 20:54
er, utf8
colomon want me to install that patch and try again?
20:54 TSa left
pmichaud if you'd like, but I've got a 95% confidence that this is the current issue 20:54
jnthn Provided someone other than me can re-produce the effects of the patch, I think we're fine.
(And if pm already has, then...)
pmichaud I haven't, but if the string is indeed unicode it explains it almost immediately 20:55
jnthn Well, we're "fine" in that we may have narrowed it down.
pmichaud just a bit...
(working)
colomon is it a real patch or just a hack to demonstrate the probable source of the problem?
pmichaud hack to avoid the problem
jnthn colomon: it just goto's over the code that I think is the problem. 20:56
pmichaud (by turning off the capability that is likely the source)
jnthn Because we can "get away" with not doing it.
(we lose source line number annotations)
colomon :O Is it scanning the entire file to find the line number or something? 20:58
pmichaud close
it does do some caching of information, yes.
but on utf8 encoding strings, even if we know the starting location (by character position) we still have to go back to the beginning of the string to compute the offset
....which argues for precomputing the entire string, actually. 20:59
laziness is of little benefit (well, it still has some, but not as much)
diakopter wins 21:00
pmichaud better still might be to try to make sure the string doesn't become utf8 in the first place
but that's not always possible/likely
colomon it's going through all the file so far at every line? 21:02
pmichaud no, but it's an O(n**2) operation 21:03
let's suppose that we're asking for line 99
colomon but what's n?
pmichaud the number of characters/lines in the file
colomon nod.
pmichaud it can be linear, but only if we have a way to restart scanning at a known position 21:04
but the way Parrot's structures are set up, we always have to restart scanning at the beginning
so, if we do a single scan all-at-once at the beginning, it's a linear operation, and we incur a memory cost of O(m) (where 'm' is the number of lines in the string) 21:05
eternaleye pioto: huludesktop doesn't install any files on my amd64 mqachine (both 0.9.6.1 and and 0.9.4.1)
pmichaud hmmmmmmmm 21:06
oh, wait, I tested the wrong string
21:07 SquireOfGothos left
pmichaud yes, the source strings are all utf8 21:07
they're supposed to get transcoded down to ascii/fixed8 if possible, I wonder why that's not happening
eternaleye Ergh, EWRONGCHANNEL 21:12
pmichaud Oh. 21:16
Okay, I see what changed now.
21:16 meppl joined
pmichaud yes, this explains it all. 21:16
the old nqp transcodes the source string down to iso-8859-1 before processing it 21:17
nqp-rx _thought_ it was doing it, but had overloaded the code that actually does the transcoding
so no transcoding taking place, and we've been parsing utf8 strings all along
which means slower than we'd like
okay. I have to do grocery shopping now, then will fix lineof and transcoding when I return 21:18
thanks to everyone for helping me track this down
21:19 xinming left 21:21 seanstickle joined
markmont Question about how things should work in Perl 6... should a builtin's (e.g., die()'s) caller always have a lexpad? Or are there some situations where it is expected not to? I'm looking at a case where $P0['lexpad';1] gives a NULL PMC and wondering if this is a sign of a bug. 21:22
phenny markmont: 26 Oct 17:23Z <moritz_> tell markmont I've sent you a pugs commit bit, so that you can apply patches to the spectests yourself (for future patches ;-)
21:24 lucs joined 21:25 lucs left
jnthn markmont: It can happen if die is called from one of the PIR routines, which doesn't have a lexpad. 21:26
It's more an implementation detail though. 21:27
markmont jnthn: Great. I'm looking at the use of set_global '$!' in die() that you thought was iffy a few weeks back. I'll see if I can figure out the correct thing to do in this situation. 21:29
21:37 xp_prg joined 21:43 frew joined, synth joined 21:44 xinming joined 21:50 ted__ joined
moritz_ what should $! really be? a contextual? 22:05
22:10 xp_prg left
jnthn Oh 22:12
Probably, yes.
spinclad transcoding down doesn't seem like a permanent solution; if i have kanji identifiers all over the place, it won't help at all. 22:14
22:15 tak11 joined
tak11 ? 22:15
spinclad a permanent solution would be a .pos that knows multiple offsets: byte offset as well as the various character levels; and parrot support for scanning from such a .pos 22:17
sjohnson ? what
spinclad this might make parsing utf8 nearly as fast as fixed8, so no transcoding needed. 22:19
(uninformed speculation on my part, of course)
spinclad has errand, must err & 22:20
markmont Now that I thought to look it up, S02/Names says, "$_, $! and $/ are always contextual" 22:21
pmichaud transcoding helps in the cases where we can, it's not a solution for all cases 22:25
eventually parrot will switch to fixed-width strings for unicode, then speed won't be nearly an issue
it's just the variable width encoding that makes things unbearably slow
still, by precomputing the entire .lineof list we'll help the kanji folks as well :-)
afk, have to go to the grocery store *again* :-( 22:26
Tene can't you just write a groceries compiler in nqp-rx? 22:27
pmichaud probably, but I don't think it'll be ready in time.
afk again for a while... bbl
22:53 frew left 22:58 seanstickle left 23:09 iblechbot left 23:11 seanstickle joined 23:29 pmurias left 23:34 eternaleye left 23:35 icwiener_ left 23:36 seanstickle left 23:37 eternaleye joined 23:52 emma joined
emma Pardon me. Does perl6 have anything to do with perl? Are they two different languages? 23:53
Tene Depends on how you look at it. ;)
emma I was just told by the people in #perl that they are not the same language.
Tene Perl 6 doesn't share any code with Perl 5. It's a complete reimplementation, break of compatibility, etc.
emma I find this state of affairs needlessly confusing and if perl came first then naming your language perl6 is just rude.
How would you like it if we made yet anther language called Perl6.0 just to confuse people and steal your success? 23:54
jnthn emma: Larry Wall, who created Perl from version 1, is the creator of Perl 6.
emma Why did he go and cause confusion like that?
jnthn I don't see the confusion.
emma Why didn't he make a new name or else work on Perl that he started?
Tene It takes a rather narrow view of "perl" to say that only Perl 5 is Perl.
jnthn Indeed. 23:55
emma Perl6 is not perl.
Tene emma: Many languages have breaks in compatibility between major versions.
emma I can tell you that in #perl they do not think that Perl6 is Perl.
jnthn emma: I think you'll find plenty of people who will say Perl 6 *is* Perl.
Tene Perl 6 is not Perl 5. Perl 6 is Perl.
fax emma watch Audreys thingy on google video if you get time!
she is talking about the language design
<video.google.com/videoplay?docid=-3...39772#> 23:56
jnthn emma: I for one feel that way.
huf but then, perl is not Perl :)
Tene ;) 23:57
jnthn I regularly switch between 5 and 6, and it's not that big a deal. Yes, Perl 6 breaks backward compability, but what Tene said earlier - that's nothing that other languages haven't done.
Tene emma: Perl 6 is the community's rewrite of Perl. Look into the history of Perl 6.
emma Which language do you write irssi scripts in? 23:58
Tene The Perl 6 design process started with RFCs from the community, on what they'd like to see fixed and improved in Perl.
Can you write irssi scripts in Perl 1?
Is Perl 1 not Perl?
emma Well what is going on in #perl then, what are they all doing there? 23:59
Wolfman2000 Evening. Simple question. Sushi: great, or "ugh, raw"?
emma: We're planning the next big language.
Perl 5 will still see big use for awhile.