Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2009-05-30

Perl 6 | Reference Documentation | Rakudo

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

All times shown according to UTC.

Time Nick Message
00:00 Eevee but with say python you get set/odict/defaultdict, datetime, miscellaneous math/functional stuff, pickle, zlib, curses, a dozen different protocols, etc
00:00 TimToady but really, there ought to be a link from "rot13" to caesar somewhere that can teach these folks
00:00 DanielC 17 functions to connect to a database in the standard library...
00:01 Eevee perl those would all be different tiny cpan modules, which are all tiny potential points of failure with possibly unsynchronized releases etc
00:01 Eevee DanielC: of course!  one for every type of database!  how else would you possibly do it
00:01 DanielC :-)
00:02 TimToady we're hoping to have a distribution model that bundles these things in ready-to-use packages
00:02 TimToady but it's not the job of "kernel" p6 to provide these distributions
00:03 pmichaud TimToady: that's a conversation that came up this last month -- do you have an opinion on whether rakudo should aim to be a kernel p6 implementation or a distribution?
00:03 TimToady one of these distributions should be "what any ISP should install"
00:03 Eevee well, thinking of the pov of $enduser who doesn't care who does what
00:03 pmichaud (currently it's a kernel implementation, obviously)
00:04 Eevee a broader reliable base library would be nice, however it ends up being distributed
00:05 DanielC PHP's == operator is not transitive...  It doesn't guarantee that if $a == $b and $b == $c then $a == $c...
00:05 TimToady certainly, we want eventually to have organizations supporting distributions like RedHat, Ubuntu do for linux
00:05 TimToady or Microsoft does for Windows :)
00:05 DanielC TimToady: Really? You want "distributions" of Perl?
00:05 TimToady for some value of "supporting"...
00:06 TimToady yes, that's been the plan for years
00:06 DanielC ok
00:06 TimToady it scales better than the p5 model
00:06 TimToady perhaps CPAN6 should be viewed as a "distribution" in this sense
00:07 TimToady or a bunch of distributions
00:07 DanielC It seems a bit odd. I can't think of any other language that does that. A language like C may have multiple compilers, but those are not distributions.
00:07 TimToady but certainly the current CPAN model has its limitations
00:07 Eevee TimToady: how would this work in practice?  if I, joe developer, just want to get perl 6 and don't care what that means, what can I be sure I'm getting?
00:07 DanielC On the other hand, it means it's a novel idea.
00:07 TimToady yes, but one group supplies gcc, while another supplies glib
00:07 pmichaud Eevee: for most such questions, I substitute "perl 6" with "linux" and see how that works
00:08 pmichaud "if I, joe developer, just want to get linux and don't care what that means..."
00:08 TimToady it's only novel to navel gazers :)
00:08 DanielC TimToady: yes, so there is no "C distribution" that gives you a compiler plus the distributor's favourite C libraries.
00:08 Eevee pmichaud: wait 20 years for a particular distribution to become a shining star and overtake the name "linux" in mindshare?  :(
00:09 TimToady well, arguably cygwin kinda works that way
00:09 pmichaud so does MSVC
00:09 Eevee pmichaud: there is still an LSB too
00:09 pmichaud and Turbo Pascal certainly worked that way
00:09 DanielC ok
00:09 unitxt <-- newbie, nuff said....thanks for the http://rakudo.org/how-to-get-rakudo link...wrote my 1st p6 program and smiled....thanks for that resource everyone...that's all i wanted to say. :)
00:09 Eevee linux-plus-OS and C both have some list of things that ought to work in any distribution
00:09 pmichaud unitxt: you're welcome
00:09 TimToady unitxt: ditto
00:10 sjohnson rakudo:  $A = 'MOOSEHEAD'; $B = 'MOOSEHEAD'; my @B_array; push (@B_array, $B); foreach (@B_array) { print "Testing [$_]\n"; if (grep(/$_/, @A)) { print "true"; } else { print "false"; } }
00:10 p6eval rakudo 92c78f:  ( no output )
00:10 sjohnson rakudo:  $A = 'MOOSEHEAD'; $B = 'MOOSEHEAD'; my @B_array; push (@B_array, $B); for(@B_array) { print "Testing [$_]\n"; if (grep(/$_/, @A)) { print "true"; } else { print "false"; } }
00:10 p6eval rakudo 92c78f: OUTPUT«Statement not terminated properly at line 2, near "{ print \"T"␤in Main (src/gen_setting.pm:0)␤»
00:11 sjohnson we should stick a Perl5 interpreter up here too
00:11 DanielC TimToady: So you are thinking of things like ActiveState Perl having their own set of libraries?
00:11 pmichaud I would say "selecting which libraries to bundle" instead of "own set"
00:11 DanielC ok
00:12 pmichaud there would be a common cornucopia of libraries, but different distributions would select the subset that best fits their clients' needs.
00:12 pmichaud and perhaps develop a few special-purpose libraries that can be added to the cornucopia
00:12 DanielC subset or superset?
00:12 pmichaud subset
00:12 pmichaud I don't know anyone who wants to install all of CPAN
00:13 * DanielC looks up cornucopia
00:13 pmichaud "universe" could be another term.
00:13 DanielC ah
00:13 * DanielC 's first guess was "core"
00:14 Eevee that will be great as long as CPAN6 is perfect  8)
00:14 patman000 joined #perl6
00:14 DanielC So Oracle might make Solaris' Perl come with the DBI module.
00:14 DanielC Bad example.
00:14 DanielC Linux distributions already do that sort of thing I'm sure.
00:16 DanielC Eevee: PHP has all those egrep* vs preg_* functions. What's up with that? And then they added mb_egrep*
00:16 pmichaud egrep_*  uses one regex engine
00:17 pmichaud preg_* uses PCRE, a different regex engine
00:17 DanielC I know...
00:17 pmichaud mb_egrep_* is a regex engine that can work on various charsets
00:17 DanielC Earlier Evee and I were talking about why PHP is broken :-)
00:18 DanielC preg_* are supposed to emulate Perl.
00:18 pmichaud different languages just break in different ways.
00:18 DanielC "3079 core functions in PHP"
00:19 ascent_ so you can give some real example of module that can be other in two distributions?
00:19 xinming joined #perl6
00:19 DanielC 15x more than Perl 5 (and Perl 5 makes no particular effort to make the core small)
00:20 DanielC ascent_: Maybe a "web developer's" distribution will come with Mason and DBI.
00:22 DanielC pmichaud: I don't think PHP is all bad. There are things I like about it (it's a great templating language).
00:32 skids Well, my 2 cents is it would be really silly to package stripped down versions of those parts of the functionality that is needed anyway to load modules.  Might as well have those  parts fully functional.
00:33 skids So e.g. to load a module you have to find a file, so filesystem stuff should be fully included.
00:34 skids (Instead of just the minimum FS stuff module loading needs)
00:36 meppl good night
00:36 sjohnson see ya
00:37 meppl ;)
00:38 payload joined #perl6
00:42 nihiliad joined #perl6
00:52 eternaleye joined #perl6
01:02 pugs_svn r26970 | lwall++ | [STD] allow bare v6 as version number
01:11 amoc joined #perl6
01:13 wayland76 joined #perl6
01:17 wayland76 @tell DanielC PHP is not as good a templating language as Mason, due to lack of autohandlers and dhandlers
01:17 lambdabot Consider it noted.
01:17 * PerlJam gets an error that doesn't make much sense: Could not find non-existent sub die
01:18 PerlJam wayland76: except that PHP is ubiquitous because almost every instance of apache comes with mod_php
01:19 PerlJam (which, in a way, makes it a better templating language than Mason :)
01:20 wayland76 I'd argue that that doesn't make it a better /language/.
01:21 wayland76 If you put the more general case that PHP is easier to set up than Mason, I'd agree, though
01:22 wayland76 When I wanted a CMS, I used Drupal
01:26 PerlJam wayland76: you're in oz, right?
01:28 wayland76 That's right
01:29 sjohnson PHP is not a good scripting language either imo
01:29 sjohnson if i had a nickel for everytime i had to use (preg_replace and preg_match)...
01:30 DanielC joined #perl6
01:30 PerlJam wayland76: what part?
01:32 wayland76 PerlJam: About an hour from Melbourne
01:32 PerlJam sjohnson: PHP is just not a good language.  It's got lots of foibles.  But it is good enough apparently.
01:32 wayland76 Well, maybe a bit more
01:32 sjohnson since we're being honest here
01:33 sjohnson may i say that using PHP as opposed to Perl for scripting is like using a coathanger for a 2.4ghz wifi router antenna compared to a yagi
01:33 DanielC PerlJam: Are we talking about PHP again? :-)
01:33 lambdabot DanielC: You have 1 new message. '/msg lambdabot @messages' to read it.
01:33 wayland76 sjohnson: Two words; legacy code :)
01:34 DanielC wayland76: One of these days I'd like to learn Mason and autohandlers and stuff.
01:35 PerlJam sjohnson: yeah, but a coat hanger is something that the masses can relate to.  They've seen it before.  If they need to adjust their signal strength, they wiggle and bend the hanger.  Et cetera.  :-)
01:35 PerlJam sjohnson: *and* they just don't know any better because the don't understand the difference between the coat hanger and the yagi
01:35 sjohnson coat hangers are readily available
01:36 PerlJam sjohnson: never mind the yagi gives them excellent signal quality and gain, their coat hanger had been working forever :)
01:40 sjohnson PerlJam: you can ask your grandma what a coathanger is, and even she'll heard of it being used
01:40 DanielC_ joined #perl6
01:40 DanielC_ Sigh... I hate my wireless connection.
01:40 PerlJam sjohnson: DanielC must be using a coat hanger  ;)
01:40 * DanielC_ is back in the room with the good connection
01:40 * DanielC_ tries to remember how to get his nick back.
01:41 DanielC_ Can anyone remind me how to kill DanielC so I can become DanielC again?
01:43 DanielC Ok, I am me again.
01:44 DanielC I guess I missed the PHP bashing session :-)
01:46 PerlJam We can bash PHP all day long, but it doesn't get us anywhere.
01:47 JDlugosz_ On "Make TV" on PBS they showed how to make a real antenna, suitable for Hi-def, out of coat hangers.
01:47 sjohnson heh
01:47 skids DanielC: http://www.freeantennas.com/projects/template/
01:47 DanielC *click*
01:47 JDlugosz_ Anyone want to be the first to read my latest ?
01:48 skids How can I be sure I'll be the very first?  :-)
01:48 JDlugosz_ I _just_ pushed it up to my web site.  Not linked in to the content yet, just getting reviews and discussion.
01:48 JDlugosz_ I'll tell you the URL in a msg.
01:48 JDlugosz_ a minute before I tell everyone else.
01:48 sjohnson anyone here have any experience with Term::ReadKey?
01:48 skids haha.
01:48 sjohnson i'm trying to just parse a simple keystroke easily
01:49 JDlugosz_ <http://www.dlugosz.com/Perl6/web/lvalues.html>
01:49 skids sjohnson: keys are actually not simple.
01:49 sjohnson the cpan module might not be what i need, or is this simple request is buried deep within its man pages
01:49 JDlugosz_ Yea, my keys have springs and plastic domes and metal parts in them.
01:49 JDlugosz_ Hmm, I seem to have a _ suffix today.
01:50 skids Well, I was referring mainly to keycode mapping tables and modifiers.
01:50 JDlugosz I've done key codes in the raw before, on PC hardware.
01:50 JDlugosz Like, 15 years ago.
01:53 PerlJam JDlugosz: IMHO, the first part up until the sentence
01:53 skids JDlugosz: "$x.meth" doesn't interpolate (at least under rakudo) in first example.
01:53 PerlJam "That is what we mean by an lvalue" is confusing
01:54 JDlugosz Hmm, PerlJam, what is it about it?
01:54 JDlugosz skids:  Is it supposed to?  I think the rules have changed more than once, re needing parens or whatever.
01:55 PerlJam JDlugosz: just too many words to get to the point of lvalue-ness.  The words don't seem to serve clarity
01:55 PerlJam $x.meth() should interpolate in double quoted strings.  (But probably still doesn't in rakudo)
01:57 PerlJam JDlugosz: anyway, you can use this:   say "My Dog's name is {$d.get_name}";
01:57 JDlugosz The issue, why the explaination, is because "changed" can mean different things.
01:57 DanielC Ok, I'm going to hit the sac.
01:57 DanielC night y'all
01:59 JDlugosz Ah, found it in S02.  Needs parentheses.
01:59 PerlJam JDlugosz: maybe if you just started with a simple assignment rather than subs and instantiating objects and calling methods and such.
02:01 davidad left #perl6
02:01 JDlugosz It would be difficult to make a non-lvalue without using a parameter list.  Would need to introduce more concepts.  And functions are so common.
02:02 skids The examples seem to have bits in them that don't serve to advance the point.
02:02 JDlugosz Maybe I can streamline them some.  Might be left over from earlier editing...
02:02 skids Have lvalue-returning subs been changed from "is rw" to "is lvalue"? When did that happen?
02:03 dukeleto joined #perl6
02:03 JDlugosz skids:  let me check.
02:05 skids rakudo: my $a = 1; my $b = 1; ($a, $b) -> $c, $d { $c = 2; }; $a.say; $b.say;
02:05 p6eval rakudo 92c78f: OUTPUT«Statement not terminated properly at line 2, near "-> $c, $d "␤in Main (src/gen_setting.pm:0)␤»
02:05 JDlugosz Yes, S06 shows is rw.  Maybe I remembered wrong.  Maybe changed to that a long time ago... ambiguous to have a trait that may be applied to a routine or the type if using the "returns" (now "of") form?
02:05 JDlugosz Whatever.  Thanks for catching that.
02:07 skids rakudo: my $a = 1; my $b = 1; for ($a, $b) -> $c, $d { $c = 2; }; $a.say; $b.say;
02:07 p6eval rakudo 92c78f: OUTPUT«Cannot assign to readonly variable.␤in Main (/tmp/Re84l0a1X3:2)␤»
02:07 skids rakudo: my $a = 1; my $b = 1; for ($a, $b) -> $c is rw, $d { $c = 2; }; $a.say; $b.say;
02:07 p6eval rakudo 92c78f: OUTPUT«2␤1␤»
02:08 skids easier example than a predeclared sub.
02:09 JDlugosz skids:  in your rakudo example, $c=2 should be an error, since it is read-only.
02:09 JDlugosz I guess it's output errors is not the point, though.
02:10 JDlugosz I see what you mean.
02:11 JDlugosz So is rakudo supposed to catch that at compile time?  Maybe the error message was just the wrong one.
02:12 skids The error messages look right to me.
02:12 skids (?)
02:12 JDlugosz "statement not terminated properly"  means  "you can't assign to a read-only variable"?
02:13 skids That first one was a bad attempt -- it didn't like just ($a,$b) -> $c, $d without the for loop.  Not sure if that's right, but the others look OK.
02:16 JDlugosz Oh, you need a "do" in front to make it call it.  But should just sit there as written.
02:16 JDlugosz Same as writing 2; on a statement by itself.  Big deal.  But it must parse.
02:18 * pmichaud isn't following this very well.
02:18 pmichaud So far rakudo seems to have responded "correctly" (or at least not wrongly) to each of the above.
02:18 skids I don't think it's specced that ro parameters inside a function are containerless.  I think implementations are free to wrap in a new readonly container.
02:19 JDlugosz skids, would that be of some benifit?
02:20 JDlugosz Or should such a choice be invisible to the program?
02:21 skids Better ask an actual implementor on that one :-)
02:23 pmichaud my $b = 5;  sub foo($a) { $b++; say $a; };  foo($b);
02:23 pmichaud rakudo: my $b = 5;  sub foo($a) { $b++; say $a; };  foo($b);
02:23 p6eval rakudo 92c78f: OUTPUT«6␤»
02:23 pmichaud (there's actually a pugs spectest that requires this behavior)
02:24 JDlugosz I'm trying to separate the way any real implementation might choose to do things from the view from inside the Perl 6 program.  that is, what can you perceive using Perl itself, using the accessors provided to chase the data structures?
02:25 JDlugosz Yes, you can't change the object through $a but it must realize that it can be changed along a different access path.
02:26 JDlugosz Ah, you mean that since the Int is immutable, that would not happen as I drew it.
02:26 pmichaud oh, I hadn't looked at the page yet.
02:26 pmichaud I've just been following the conversation here.
02:26 skids Good, then for once you are as confused as everyone else :-)
02:26 JDlugosz Thanks for pointing it out.  I guess a container is needed.
02:28 JDlugosz Does that mean that you want any change in value, e.g. reference assignment, to be reflected in the function's view?
02:28 JDlugosz I guess that's why it's worded the way it is in the synopses.
02:30 skids "If you are annoyed that you can’t assign to the parameter, this is what you need." -- might want to add "but do not want to change the caller's copy of it"
02:32 JDlugosz skids -- thanks.
02:34 skids wrt is ref -- it makes more sense if you think of passing the is ref paramter through to another call to an multi than can distinguish between is rw anf is ro.
02:37 PerlJam pm: I just had the weirdest experience in the perl6 interactive mode
02:38 PerlJam See http://gist.github.com/120337
02:39 JDlugosz skids:  You mean foo calls bar, which is multi, and foo also reads the value but doesn't care about trying to change it?
02:40 skids Or some variation on that theme, yes.
02:42 skids On the "is copy" part I think S06 is trying to distinguish the behavior of @a is copy ... @a[1]="foo"; from @a is copy shift @a.
02:42 JDlugosz OK.
02:43 skids Doubtless some of that is going over my head, too, though :-)
02:43 JDlugosz If the array is copied, how does @a[1] do anything to the original?
02:47 pmichaud PerlJam: looking.
02:48 pmichaud PerlJam: that's.... weird.
02:49 pmichaud it might be because foo() keeps getting redefined.
02:50 PerlJam That "Could not find non-existent sub die" part was a stray mouse click.  When I tried to replicate it more simply, I get this: http://gist.github.com/120338
02:50 JDlugosz I thought rackudo forgets between lines.
02:50 pmichaud JDlugosz: it forgets lexicals, yes.
02:50 pmichaud but the subs aren't lexical.
02:50 skids JDlugusz: I think the point might be that @a[1] is pointing to the same thing, not a copy of that thing, but then when you assign to @a[1] it is no longer.
02:50 JDlugosz OK, then you get an error to redefine it if it wasn't {...}.
02:51 PerlJam JDlugosz: try "class A {}" on two separate lines in the iteractive mode :)
02:51 pmichaud correct, we should be getting an error.
02:51 JDlugosz re @a[1] you mean the read-only "copy" actually copies all the lvalues?
02:51 pmichaud Rakudo doesn't yet have a good way to detect sub redefinitions outside of the same eval string.
02:51 JDlugosz What's the point?
02:51 JDlugosz If you want to prevent shifiting or extending ONLY, why describe it as a copy?
02:52 pmichaud PerlJam: here's what I get:   http://gist.github.com/120339
02:53 pmichaud so I'm a little suspicious of your build.
02:53 skids No I think the opposite happens.  I dunno, I'll defer to the experts.  But I think it's saying it copies the structure of @a but not the stuff inside it.
02:53 JDlugosz I updated the page.  Care to refresh your cache, skids?
02:53 PerlJam pm: I mean that "Could not find ..." part was accidental but that it is apparently integral to the error
02:54 skids JDlugisz: Synopes? :-)
02:54 PerlJam skids: it sounds like you just described "is ref" rather than "is copy"
02:54 PerlJam pm: if I do it by itself as you did, it works as expected.
02:55 JDlugosz hmm, I wonder why the spell checker didn't catch that.  Can't blame that one on the Brits.
02:55 JDlugosz PerlJam: why would ref prevent some kinds of modification to the container?
02:55 skids No, is ref would be just a pointer to the buckets, as opposed to a copy of the buckets, as opposed to a copy of the buckets and the water inside the buckets.
02:56 JDlugosz I'm pretty sure, from discussion long long time ago, that the point of ref is an optional rw.
02:56 JDlugosz skids:  better draw a picture.
02:57 skids What, you think I fully understand it? :-)
02:57 JDlugosz Oh, if you want to work over any of my pics, the SVG is the same url name as the png but with the different extension.
02:57 JDlugosz I used InkScape for portability.
02:57 JDlugosz And I hope browsers will handle SVG images properly some day.  Maybe before Perl 6 is finished, at this rate.
02:58 skids First example, you migh want to put the expected output of the say in a comment there.
02:59 JDlugosz I think nobody fully understands it.  At least nobody has publicly explained it all with no contradictions.
02:59 JDlugosz output: OK.
02:59 skids I'm sure there's a good explanation hidden back in the IRC log or p6l somewhere.
02:59 JDlugosz BTW, do you like my style sheets?  Subtle style on comments, yellow marker, etc.
03:00 skids Looks fine.
03:01 JDlugosz Back in the day, I had editors to do that kind of stuff, at magazines.  But now I have complete creative freedom.  And it means more work to make a final presentation tht looks good.
03:03 JDlugosz Ah!
03:04 JDlugosz The R-O proxy does need to be more invisible.  Example: what should VAR($d) give you?  Object #1, not object #5.  Right?
03:04 JDlugosz Why do you use VAR anyway, except to figure out what's going on here?
03:04 skids Just to prevent more of them, if you are ever tempted to use Dog and Cat, don't because Cat is actually a builtin type in Perl6.
03:05 JDlugosz What is the built-in Cat?
03:05 skids What has made searching for references to the builtin type in the synopsis a bit annoying :-)
03:05 skids Cat is a lazy string.
03:05 JDlugosz A lazy Str needs a different type, but a lazy Array doesn't?
03:05 dalek rakudo: 7d75524 | pmichaud++ | build/PARROT_REVISION:
03:05 dalek rakudo: Bump PARROT_REVISION to get some more speed improvements.
03:05 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/7d75524aebd74fbd6dc512475dc0ea67b20eee96
03:05 JDlugosz Oh, the lazy Array is the Dog.
03:06 JDlugosz Do I have to write functions to take (Str|Cat) ?
03:06 skids Cat eagers in Str context probably (don't quote me on that)
03:07 JDlugosz So, what is the more general Role when you don't care what it is and don't want to force eagerness?
03:07 JDlugosz Well, I've got to do something else for a while.
03:07 JDlugosz Thanks for the feedback and the discussion.
03:07 skids no problem.
03:08 skids Thanks for writing.
03:18 andreasg_ joined #perl6
03:21 wayland76 pmichaud: Did you get that Makefile stuff done that (IIRC) put pmc and ops stuff in dynext?
03:22 pmichaud wayland76: I was going to work on it this morning, but ended up having to fix Parrot instead (as Rakudo was getting lots of errors)
03:22 pmichaud so that's one of my goals for the weekend now.
03:25 wayland76 ok, just checking
03:33 wayland76 joined #perl6
03:39 synth joined #perl6
03:44 kcwu joined #perl6
03:54 eternaleye wayland76: Do you think it would be a good idea to try and get a quick-n-dirty 'throw-away' metadata spec for CPAN 6 packaging drawn up, so we can put it into source control and let people hammer out a description of what fields are needed, how to represent dependencies, etc?
03:54 wayland76 Has MarkOv not done that?
03:54 wayland76 (I haven't carefully checked, but I assumed he had)
03:55 wayland76 Personally, if I'm contributing somewhere, it will be to Software::Packager
03:56 wayland76 Software::Packager will try to support everything that could reasonably be supported by more than one package manager, and allow extra metadata on a per-package basis
03:56 wayland76 (sorry, per-format, not per-package)
03:57 wayland76 I'm expecting that the Perl Metadata spec will be completely independant, and will have to be translated into Software::Packager metadata
03:57 justatheory joined #perl6
03:57 eternaleye wayland76: Some of it, but other parts (like the syntax for dependencies) seems totally uncovered outside of S22, which seems to be stagnant (last edited Dec 08)
03:57 eternaleye As far as dependencies go, http://exherbo.org/docs/exheres-for-smarties.html#dependencies is interesting
03:57 eternaleye _Very_ flexible syntax
03:58 wayland76 Ok, well, dependencies are definitely something that Software::Packager has to worry about
03:58 wayland76 I'll read it
03:58 eternaleye It even permits annotating dependencies with descriptions, etc
03:58 wayland76 S22 is a draft.  If you want to go hacking on the Metadata in it, be my guest
03:58 eternaleye So an optional or select-one-provider dependency could have a description of the advantages
03:59 eternaleye s/$/ fo each option/
03:59 wayland76 I want to avoid scope creep on S22 (it shouldn't define everything), but Metadata definitely belongs there if anything does
04:00 eternaleye wayland76: It does specify a syntax for dependencies, but it's a rather minimalistic system with little flexibility
04:00 wayland76 Have you read my document on Package Meta-managers?
04:00 eternaleye wayland76: Yep
04:00 eternaleye wayland76: Although, some distros have _only_ a meta-manager
04:00 wayland76 Such as?
04:01 eternaleye Exherbo
04:01 wayland76 Ok
04:01 eternaleye Gentoo, to a degree
04:01 wayland76 But you saw how I wanted the thing more modular?
04:01 eternaleye Yeah
04:02 wayland76 And wanted the dependancy resolver to be swappable for something highly configurable?  (Not sure if I wrote that in...)
04:02 dalek rakudo: 764684b | pmichaud++ | src/builtins/op.pir:
04:02 dalek rakudo: Fix cross-meta for user-defined infix ops.
04:02 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/764684b042379b0c0da26e456141ee07e3a3fbf4
04:03 wayland76 That link you sent me doesn't make sense.  Can I put a couple of questions to you?
04:03 eternaleye wayland76: Sure
04:03 wayland76 Looking at the first "code snippit"...
04:03 wayland76 What is foo/bar?
04:04 wayland76 A package?  A path?  A "service" provided?  Something else?
04:04 eternaleye wayland76: That link is pretty sparse, the Package Manager Specification for Gentoo explains some underlying concepts, but Exherbo and Gentoo have diverged on a few points
04:04 eternaleye wayland76:  Gentoo and Exherbo name packages as category/package-version
04:05 eternaleye wayland76:  That could be changed for CPAN 6 to use any separator, though
04:05 wayland76 Ok, so foo/bar would be something like Applications/Games or something?
04:05 wayland76 No, wait...
04:05 eternaleye wayland76: More like games-roguelike/nethack-4.42
04:05 wayland76 Ah, ok, I see
04:06 eternaleye wayland76: One interesting thing with that method is that this enables multipart category and package names, whereas the naming system in S22 limits namespace and such to single atoms due to using the same separator everywhere
04:07 wayland76 RPM uses Group, but it wouldn't be part of a unique package spec that way
04:07 wayland76 (back in 3 minutes)
04:08 eternaleye S22 says: <prefix>-<package-name>-<version>-<authority>.<extension>, but perhaps better would be using a different separator between parts and allowing hyphens within parts. No ambiguity that way, allows numeric names, etc
04:10 eternaleye With S22's naming conventions, if I had a module named ACME::1337 and it was version 4, that would be p6-ACME-1337-4-cpan+ETERN.jib, which is ambiguous: does it mean ACME version 1337-4 (I'd read that as revision 4) or ACME::1337 version 4?
04:11 wayland76 Well, we also have to take into account what characters are allowed in filenames on all systems
04:11 eternaleye Even just using _doubled_ dashes as the field separators would solve it
04:11 wayland76 I'm sure of _ - and . but not of anything else
04:12 wayland76 eternaleye: Well, change S22 then :).
04:12 wayland76 Do you have access?
04:12 eternaleye ENOCOMMITBIT
04:12 wayland76 Ok, we need to fix that.  I'm in favour of you having access
04:13 wayland76 I can't reemmber who to ask, though, except moritz_
04:13 eternaleye wayland76: A lot of the stuff in the link I posted earlier has its grounding in this document: http://www.gentoo.org/proj/en/qa/pms.xml
04:13 wayland76 remember even
04:13 eternaleye (that's a boilerplate page for a PDF)
04:14 wayland76 I'm looking at the HTML version
04:15 eternaleye wayland76: Also, S22 is slightly out of sync wrt the use-spec stuff (aut being cpan+NAME as opposed to cpan:NAME)
04:15 wayland76 Double dashes are a good idea, though
04:15 eternaleye *auth
04:15 eternaleye wayland76: It works because no existing packages (for any lang, AFAIK) have doubled dashes _in_ any field
04:16 wayland76 lambdabot: @tell moritz_ Can eternaleye have a commit bit for the Specs so he can work on S22 please?
04:16 lambdabot Consider it noted.
04:16 eternaleye wayland76: And we can forbid them going forward
04:16 wayland76 Although what c/c-- is going to do I don't know :)
04:18 eternaleye wayland76: Well, since C-- is a subset of C (and is really only useful to compilers as an output language AFAIK) we may be able to lump them in together
04:19 eternaleye wayland76: Also, phenny++ is more reliable than lambdabot these days, it seems
04:20 wayland76 Maybe we could use ¡ as a separator :)
04:20 wayland76 phenny: tell moritz_ Can eternaleye have a commit bit for the Specs so he can work on S22 please?
04:20 phenny wayland76: I'll pass that on when moritz_ is around.
04:20 eternaleye wayland76: Wasn't there some haskell package with a complex version number?
04:21 wayland76 Maybe, but I don't know anything about it :)
04:21 eternaleye Oh wait, that's an inverse exclamation not an i
04:21 TimToady that wasn't an I
04:21 eternaleye EBADFONT
04:22 wayland76 Or something else...  ¤€¼½¾¹¯£˛
04:22 eternaleye Also, good evening TimToady
04:22 wayland76 Any of those would be a fine separator
04:22 wayland76 TimToady: Who do we ask to get eternaleye a commit bit?
04:22 eternaleye wayland76: UTF-8 or UTF-16?
04:22 TimToady as soon as you move into Latin-1, POSIX is not your friend
04:22 eternaleye Commas!
04:22 wayland76 Yah, I'm being silly again :)  Sorry
04:23 eternaleye Actually, commas might be really good
04:23 TimToady anything that is a shell meta tends to be a problem
04:24 wayland76 TimToady++
04:24 wayland76 That's why I'm thinking that eternaleye's original idea of double dashes is probably our best bet
04:24 eternaleye TimToady: Yeah. That's why we were discussing doubled dashes, although I don't think commas are a metacharacter in any shell I know of
04:25 TimToady well, just inside {}
04:25 eternaleye oof, forgot that
04:25 TimToady and I use , for a history char, but that's idiosyncratic
04:26 wayland76 After all, you could use € for a history char :)
04:26 eternaleye TimToady: publish your .*shrc somewhere, and there will be a community among whom it becomes idiomatic ;D
04:26 TimToady you have to shift !, but not ,
04:26 TimToady so it's easier :)
04:27 wayland76 I use Ctrl+R to deal with history, usually
04:27 eternaleye ditto
04:28 s1n set -o vi
04:28 eternaleye Using ^ and ! requires remembering what you typed in that terminal last, and I usually have enough terminals (and am absentminded enough) that I can't
04:28 wayland76 Anyway, I'm going to be afk for a bit
04:29 eternaleye s1n: vi's my favorite editor, but I like my modifier keys sometimes
04:33 s1n eternaleye: see your PM
04:39 hercynium joined #perl6
04:44 araujo joined #perl6
04:48 s1n Tene: ping
05:18 azawawi joined #perl6
05:19 azawawi fabulous morning :)
05:22 finanalyst joined #perl6
05:22 wayland76 I don't know any fables about this particular morning :)
05:24 PerlJam wayland76: that's your cue to invent one.
05:35 wayland76 Well, the fable is that it's morning, because it's 3:32 in the afternoon :)
05:41 pugs_svn r26971 | azawawi++ | [S:H:P6] version 0.59 contains the latest STD
05:42 Tene s1n: pong
06:01 JDlugosz The best separator is a control char with no ligimate reason for being used in a name.  In fact, some separates were invented in the ancient days and used in ASCII.  Names like "Unit Separator", etc.
06:07 eternaleye JDlugosz: Yes, but will the shell a.) split on it (whitespace) b.) use it as a metacharacter (i.e. any of <, >, [, ], {, }, (, ), ;, ', ", |, \, etc)
06:08 eternaleye (and the metacharacter list was nowhere near comprehensive)
06:08 JDlugosz So it's not being processed as data?
06:08 eternaleye JDlugosz: `cpan install <package>`
06:08 eternaleye from the commandline
06:08 eternaleye Making them escape the string is a usability nightmare
06:11 justatheory joined #perl6
06:11 JDlugosz install --name xxx --version yyy --platform zzz
06:11 JDlugosz No need to encode the internal encoding manually.
06:18 c9s joined #perl6
06:19 eternaleye JDlugosz: But that's a good bit more typing than `cpan i p5--Lingua-Romana-Perligata--1.1--cpan:dconway`
06:20 JDlugosz Yuck.  You have to "encode" a string that really consists of multiple fields.  Really, who types?  I click on the list on the installer, or a link from a web page.
06:20 eternaleye JDlugosz: Your way would be `install --lang p5 --name Lingua-Romana-Perligata --version 1.1 --auth cpan:dconway`
06:20 eternaleye Very verbose, that
06:20 JDlugosz Yes, isn't that so much better?
06:20 eternaleye JDlugosz: I type.
06:20 wayland76 Can I make a suggestion?
06:21 wayland76 I like JDlugosz's idea, but
06:21 eternaleye JDlugosz: Also, we were discussing filenames for the archives of source, rather than commandlines
06:21 JDlugosz Do you run everything together for _all_ commands?
06:21 wayland76 I think the "name" should be a positional, rather than a named parameter
06:21 wayland76 Also, I think there should be defaults
06:21 JDlugosz Oh, eternaleye, I see.  IN that case, a 40-character SHA1 hash of the contents is the only way to go.
06:22 wayland76 so that "install Lingua-Romana-Perligata" picks the recommended version and installs it
06:22 eternaleye JDlugosz: And if you want to manually extract an archive so you can modify it for your own authority? Also, sha1 hashes are non-reversible, so you can't tell the server what categories you want it put in while you upload. This complicates creating modules.
06:22 JDlugosz Seriously, if it is internal concern rather than command line, why not use URI encoding for non-alpha characters?
06:23 eternaleye JDlugosz: It's best to be consistent in multiple environments. If we have five ways of encoding the name of a module, who will remember when to use which one?
06:24 JDlugosz I would think the server stores it however it likes, and indexes them.  That should be opaque.
06:25 eternaleye JDlugosz: Then how does uploading a new package work? If there's a canonical, single-string naming convention, you can just upload everything with wget using a POST command. VERY simple for people who live on the commandline. Also, one major use environment is on servers, which often have no GUI at all and _must_ be used via the commandline
06:26 eternaleye So that (frequent!) use case /requires/ a shell-sensible naming convention
06:27 JDlugosz So you manage the directory yourself using file tools because the database isn't opaque enough or provide the tools to do it.
06:29 JDlugosz I would think that I would give it the package, and the metadata to associate with it, and it sucks it in and stores it in some way that's none of my business to mess with directly.
06:32 eternaleye JDlugosz: But the database is _required_ by the Perl 6 standard because of multi-version and multi-authority needs
06:33 eternaleye JDlugosz: One main advantage of the current CPAN online archive system _is_ its transparency.
06:33 JDlugosz So you're designing a portable concrete application, not an abstraction.
06:33 eternaleye I can clone the entire archive with one rsync command, and have a local mirror
06:33 JDlugosz Ah, so you are interested in all implementations using the same file-based storage system.
06:34 JDlugosz Therefore, it needs to be specified.
06:34 eternaleye JDlugosz: For distribution, yes. For already installed modules, that's out-of-scope
06:34 JDlugosz I still like using URI encoding to get rid of anything non-alphanumeric.
06:35 JDlugosz That way you don't have to worry about Unicode chars on whatever platform.
06:35 JDlugosz And stupid distrabutions (cough "Activestate") that decide that Unicode file names support is unnecessary in Perl.
06:35 eternaleye JDlugosz: And that's perfectly doable. However, the main concerns here are a.) unambiguity b.) usability c.) functionality (not necessarily in that order)
06:36 finanalyst pmichaud: ping
06:36 JDlugosz Unambiguity.  All chars that are not ASCII letters and numbers are URI encoded, except for the field delimeters.
06:36 sparc joined #perl6
06:36 eternaleye Where functionality means enabling automatic distro-specific packaging etc
06:37 JDlugosz usability:  it rsyncs, across platforms, without encoding issues.
06:37 JDlugosz You don't type those names when using the front end to submit or install.
06:37 eternaleye JDlugosz: But % is a shell metacharacter, which needs escaped
06:37 JDlugosz You don't type those into the commands.  So why is the shell bothered?
06:38 eternaleye JDlugosz: Then how do you unambiguously identify a unicode name on the commandline?
06:38 eternaleye If we allow unicode names, the need to be specifiable everywhere
06:39 eternaleye If you can install package <unicodename> froma GUI but not from the shell, that's REALLY bad
06:39 JDlugosz The command program could take escape sequences.  Anything perl does, actually: \x[nnnn] or character names.
06:39 cognominal joined #perl6
06:39 eternaleye ...and _that_ is very, very user-hostile (especially since \ is a shell metacharacter too!)
06:40 eternaleye So you'd need to escape your escapes
06:40 JDlugosz Easy enough to first take the parameter you got from the user and run it through Perl's literal stuff.  Then put it into normalized form.
06:40 JDlugosz Is there anything that's not an escape on somebody's shell?
06:40 eternaleye But the shell gets first whack at it - before the perl executable is even run!
06:41 TimToady limiting the module names to ASCII is p6-user-hostile
06:41 eternaleye JDlugosz: Alphanum, hyphens, underscores, commas (usually), colons, slashes (although they may be OS path identifiers), and that's about it.
06:42 TimToady we need to drag unix systems kicking and screaming into the 21st century
06:42 eternaleye TimToady: I agree, but we need a shell-friendly way of escaping unicode
06:42 JDlugosz The front-end program should be configurable as to what the esape char is.  It will vary by platform and culture, and be handy as different things on different shells.
06:42 TimToady screw the shell :)
06:42 eternaleye o.0
06:42 * eternaleye meeps
06:42 JDlugosz I have no trouble with backslashes in my shell.  After all, they are in every file name.
06:43 eternaleye JDlugosz: On windows only.
06:43 eternaleye In _every_ unix/posix/etc system, backslashes are the symbol used to escape everything else.
06:43 JDlugosz What about VMS?
06:44 eternaleye JDlugosz: Never used it, coulnd't say
06:44 JDlugosz Or pre-unix Macs.
06:44 eternaleye They used colons.
06:44 eternaleye AS path identifiers.
06:44 eternaleye same as Unix uses / and windows uses \
06:45 JDlugosz Point is:  be configurable.  If the front-end UI command line is portable in terms of running, it still needs to be culture-aware in terms of taking input from the user.
06:46 eternaleye JDlugosz: The problem then is that someone who uses Windows and Linux needs to learn two syntaxes
06:46 JDlugosz So I'll type \x[2603] on my command line if I'm not at my regular keyboard, but you might prefer <ctrl-g>2603<ctrl-g> (that being ctrol char, not angle literals), etc.
06:47 TimToady interfaces that don't support Unicode properly should be made to suffer :)
06:47 eternaleye No matter how we slice it, there'll be a loss somewhere. It's really something that needs community bikeshedding, probably
06:47 JDlugosz Any given platform and environment might need some mixture of Input Method and shell text processing to get the job done, and they latter should keep from conflicting with the former.
06:48 TimToady the loss *won't* be in limiting Perl 6 module names to some least-common-denominator, if I can help it
06:48 JDlugosz Just assume that the command line UI will be designed to handle Unicode as argument names.  However.  That won't affect the internal structure of the application.
06:48 eternaleye TimToady: Agreed. I want at least one module with a heart in the name.
06:48 TimToady at least from the viewpoint within P6
06:49 JDlugosz Module names don't have to be legal identifier names?  That is, Chinese OK, dingbats not.
06:49 TimToady well, as long as it's in the :<♥> part, it doesn't have to be identifier
06:49 eternaleye ACME::<heart>, the only one that doesn't blow up in the Coyote's face
06:50 JDlugosz So you would use quotes in the "use" statement, and any package variables, etc.
06:50 JDlugosz That would make it difficult to use it as a type.
06:50 TimToady and there's always "use ::('♥')"
06:51 beggars joined #perl6
06:51 JDlugosz ACME::Bleach could be renamed to something that only has invisible characters in it, like the different typographic space chars.
06:52 JDlugosz That will make the first line match the rest of the encoded form better.
06:52 wayland76 Another exciting thing would be to name something as a space followed by a whole bunch of combining diacritics :)
06:52 eternaleye wayland76: You evil person you
06:53 JDlugosz Hmm, you can stack the combining marks as high as you want.  Make a veritcal name.
06:53 JDlugosz and put the whole thing in a surrounding circle.
06:53 wayland76 Well, I seem to have picked up bits of Unicode somewhere; not sure how
06:53 LadyLuna1y joined #perl6
06:53 JDlugosz I was born with it.  My name is not ASCII.
06:54 JDlugosz So, nobody knows how to pronouce it unless I'm in a Polish community.
06:54 wayland76 Οη ωελλ
06:54 wayland76 (apologies for Greeklish :) )
06:55 JDlugosz So:  Extreme Unicode names go into the critical test cases.  Other than that, open issue.
06:55 TimToady for pulling in math operations we could say use μ or some such, just to help with the golf
06:56 wayland76 That would be aμsing
06:56 JDlugosz But my "extreme" is my wife's newspaper.
06:57 wayland76 I've never even been to a non-English-speaking country, unless the English-speaking part of Canada counts :)
06:57 TimToady but certainly it must be possible to have a module named 日本語
06:58 Tene use Ferma͒ta;
06:58 JDlugosz "Japanese", written in simplified Chinese.
06:58 Muixirt joined #perl6
06:58 eternaleye JDlugosz: Also as written in Japanese, funny enough
06:59 TimToady I don't think any of those characters are particularly simplified...
06:59 JDlugosz I guess they don't get their own Unicode block for their use of Han.
06:59 frew|work joined #perl6
07:00 JDlugosz It must natively look more like Simplified than Traditional?
07:00 TimToady much though it gives them heartburn
07:01 TimToady simplified would be 日本语
07:01 JDlugosz Ah, sorry.  I'm out of practice.
07:02 eternaleye Argh, SCIM stopped working, I can't respond in Japanese!
07:02 JDlugosz Bus routes are the hardest to read.  Very compact, just a grid of letterforms.
07:02 JDlugosz Strangely enough, most signs are bilingual.  They have English everywhere in China.
07:02 TimToady same in Japan
07:03 TimToady but it was gratifying to be able to read most of the Japanese signs, nonetheless
07:03 JDlugosz Well, Japan was "occupied", and more reciently was big into English for business.
07:03 TimToady troo
07:03 JDlugosz But China is supposed to be hostile now, right?
07:03 TimToady some of that was the olympics
07:04 * Tene debates between sleep and staying up all night hacking.
07:04 JDlugosz But meanwhile resigning everything to cater to international visitors, using English as the global standard.
07:04 eternaleye sleep?
07:04 eternaleye ENOPURL
07:05 eternaleye <purl> sleep is for the weak
07:05 JDlugosz I don't just mean in 北京.  Every city, even off the beaten path.
07:05 Patterner DESTROY::كافر
07:06 eternaleye Patterner: Arabic?
07:06 Patterner kinda
07:06 wayland76 Is that destroy the infidel>
07:06 wayland76 ?
07:06 eternaleye Farsi? Urdu?
07:06 wayland76 ֪םוךג נק שמטאיןמע ֲ֝
07:06 Patterner wayland76: kinda :)
07:07 eternaleye wayland76: Hm, the diacritics aren't composing properly here
07:07 wayland76 eternaleye: I've had IRC clients like that
07:07 TimToady yeah, well, gnome-term isn't exactly using pango...
07:07 JDlugosz "complex layout" languages need special support.  The app must use the right API, not just TextOut.
07:07 wayland76 The one I'm using now for example, won't let the keyboard do it
07:08 eternaleye Quassel _should_ do it right, but I guess not :(
07:08 JDlugosz ChatZilla.
07:08 JDlugosz Does as well as web pages.
07:08 wayland76 May have to look into it
07:09 TimToady but does ChatZilla run under screen? :)
07:09 eternaleye TimToady: X11 over SSH!
07:09 TimToady yeah, right
07:10 TimToady that runs slow even here on my lan
07:10 eternaleye Quassel is split into client viewer and daemon irc-connector, so it stays online between user absences
07:10 eternaleye QT4, works on everything, etc
07:10 wayland76_ joined #perl6
07:11 wayland76_ Well, this thing doesn't like Unicode, anyway
07:11 TimToady ah well, google will just turn it all into a wave
07:11 wayland76_ Even the topic has it confused
07:14 chromis joined #perl6
07:19 iblechbot joined #perl6
07:20 TimToady another camelia: >ᵖö⁶<
07:24 wayland76 I'm getting a box with an X in it
07:25 wayland76 Maybe I should try different fonts again
07:25 Tene it's >, superscript P, o with .. over it, superscript 6, <
07:26 wayland76 Ok, I'm missing the superscript P
07:26 wayland76 (The rest came through)
07:32 TimToady 休む、よ!
07:33 TimToady ℤℤℤ &
07:33 wayland76 'night!
08:16 DanielC joined #perl6
08:16 DanielC o/
08:16 wayland76 time?
08:16 wayland76 ENOPURL
08:16 wayland76 DanielC: What time is it there?
08:17 DanielC 10:17 AM
08:17 wayland76 ok
08:17 wayland76 You missed TimToady by about 45 minutes, that's all :)  He was going to bed
08:18 wayland76 So I was just checking :)
08:18 DanielC ah
08:18 DanielC TimToady is in California, isn't he?
08:18 wayland76 That's right
08:18 DanielC Btw, I commented on S22, which I believe you are in charge of (email to the list).
08:19 wayland76 Me?  Not really.  I keep people for dumping stuff in it that doesn't belong there, but that's about it
08:19 DanielC ok
08:20 DanielC Well, at least it's related to the stuff we've been talking about recently?
08:20 wayland76 eternaleye has some ideas about the metadata, so I'm getting him a commit bit so he can do stuff to it
08:21 wayland76 (it being S22)
08:21 * DanielC nods
08:21 wayland76 Anyway, I'm being called for food, so I'll disappear for a bit
08:21 DanielC k
08:22 wayland76 Oh, nice.  My Rakudo RPM build just finished; I should have libraries in it now :)
08:22 wayland76 afk &
08:24 davidad1 joined #perl6
08:25 DemoFreak joined #perl6
08:35 sjohnson joined #perl6
08:37 eternaleye wayland76++ # RPM building (even though I don't use RPM)
08:43 DanielC wayland76: Who is working on S22 and the new package format? I thought it would be related to what you are talking about with making the cpan installer produce an RPM/DEB.
08:44 DanielC wayland76: Oh, right, you are afk... :-)
08:49 alexn_org joined #perl6
09:09 eternaleye DanielC: Primarily the discussion seems to be among you, me, wayland76, and Mark Overmeer, with TimToady pointing out things that Are Not Up For Discussion occasionally
09:09 snarkyboojum joined #perl6
09:09 DanielC ok
09:09 finanalyst rakudo: rule x {'name =' $<capt> = .*? $ }; 'name = aperlhacker' ~~ /<x>/;say $/<capt>
09:09 p6eval rakudo 764684: OUTPUT«Use of uninitialized value␤␤»
09:09 * DanielC figures out who eternaleye is
09:09 eternaleye Alex
09:10 DanielC yeah :)
09:10 eternaleye rakudo:  rule x {'name =' $<capt> = (.*?) $ }; 'name = aperlhacker' ~~ /<x>/;say $/<capt>
09:10 p6eval rakudo 764684: OUTPUT«Use of uninitialized value␤␤»
09:10 DanielC What is your role in the Perl 6 world? I'm still learning who is who.
09:11 finanalyst could someone explain why $<capt> isnt being put into $/ ?
09:11 eternaleye DanielC: Mainly lurker until now, but I want to make sure that packaging for distros is easy. I use a source-based distro, so I have some different needs from (the majority of people here) who are using binary distros
09:11 finanalyst is my syntax wrong?
09:12 eternaleye rakudo:  rule x {'name =' $<capt> = (.*?) $ }; 'name = aperlhacker' ~~ /<x>/;say $/<x>
09:12 p6eval rakudo 764684: OUTPUT«Use of uninitialized value␤␤»
09:12 eternaleye rakudo:  rule x {'name =' $<capt> = (.*?) $ }; 'name = aperlhacker' ~~ /<x>/;say $<x>
09:12 p6eval rakudo 764684: OUTPUT«Use of uninitialized value␤␤»
09:12 eternaleye I know why now!
09:12 DanielC eternaleye: Ok. I use Ubuntu, so I'm DEB-biased.
09:13 eternaleye rakudo:  rule x {'name ='$<capt>=(.*)$}; 'name = aperlhacker' ~~ /<x>/;say $/<x>
09:13 p6eval rakudo 764684: OUTPUT«name = aperlhacker␤»
09:13 snarkyboojum hi all, I've downloaded and built parrot '1.2.0-devel built for nojit'  on OS X and am trying to 'make' rakudo, but it's dying in the first step 'make: *** [perl6_s1.pbc] Segmentation fault' - how do I begin to debug?
09:13 eternaleye rakudo:  rule x {'name ='$<capt>=(.*)$}; 'name = aperlhacker' ~~ /<x>/;say $/<x><capt>
09:13 p6eval rakudo 764684: OUTPUT« aperlhacker␤»
09:14 eternaleye finanalyst:  in "rule" and "regex", whitespace is significant. It isn't in "token" and something else I can't remember. Also, capturing nests.
09:14 finanalyst i see.
09:14 eternaleye rakudo:  rule x {'name = '$<capt>=(.*)$}; 'name = aperlhacker' ~~ /<x>/;say $/<x><capt>
09:14 p6eval rakudo 764684: OUTPUT«aperlhacker␤»
09:14 finanalyst also i used .*?
09:15 blas joined #perl6
09:15 eternaleye finanalyst: Yeah, it tries to match as little as possible. With the $ at the end, though, it still would have done the right thing.
09:15 eternaleye rakudo:  rule x {'name = '$<capt>=(.*?)$}; 'name = aperlhacker' ~~ /<x>/;say $/<x><capt>
09:15 p6eval rakudo 764684: OUTPUT«Method 'postcircumfix:{ }' not found for invocant of class 'Failure'␤»
09:15 eternaleye Eh?
09:16 eternaleye rakudo:  rule x {'name = '$<capt>=(.*?)$}; 'name = aperlhacker' ~~ /<x>/;say $/<x>
09:16 p6eval rakudo 764684: OUTPUT«Use of uninitialized value␤␤»
09:17 eternaleye Hm. That's not what I expected. Other people know more about the regex engine, they might be better to ask about that one
09:20 finanalyst rakudo:  rule x {'name = '$<capt>= (.*) $}; 'name = aperlhacker' ~~ /<x>/;say $/<x><capt>
09:20 p6eval rakudo 764684: OUTPUT«Use of uninitialized value␤␤»
09:21 finanalyst rakudo:  rule x {'name = '$<capt>=(.*)$}; 'name = aperlhacker' ~~ /<x>/;say $/<x><capt>
09:21 p6eval rakudo 764684: OUTPUT«aperlhacker␤»
09:21 ZuLuuuuuu joined #perl6
09:21 finanalyst i find the significance of white space in this context to be odd
09:29 pjcj joined #perl6
09:40 finanalyst STD: rule x {'name = '$<capt>=(.*)$}; 'name = aperlhacker' ~~ /<x>/;say $/<x><capt>
09:47 hanekomu joined #perl6
09:50 davidad1 left #perl6
09:55 wayland76 Back for a while
09:56 wayland76 The CPAN discussions seem to be converging nicely, and it seems like many of us are interested in different areas, so hashing out the interfaces between those is what we need to keep working on
09:56 wayland76 For example, I'm interested in working on the generic package managing stuff
09:57 wayland76 MarkOv seems to mostly be interested in the server software
09:57 wayland76 I'm not quite sure where eternaleye and DanielC_away fit in yet :)
09:59 eternaleye wayland76: I'm interested in the actual metadata format and the automation machinery of conversion
10:00 wayland76 finanalyst / eternaleye: I think the significance of the whitespace is that any whitespace = \s+ basically
10:00 eternaleye finanalyst: In "rule" declarations, whitespace inside the rule is taken as a directive to add a call to the <.ws> rule there
10:00 wayland76 But I could be wrong
10:00 eternaleye where <.ws> is a non-capturing rule that matches any whitespace
10:00 wayland76 But <.ws>+ not <.ws>*
10:01 tulcod joined #perl6
10:01 wayland76 eternaleye: I'd started guessing that.
10:01 finanalyst rakudo:  rule x { 'name = '     $<capt>=(.*)$      }; 'name = aperlhacker' ~~ /<x>/;  say $/<x><capt>
10:01 p6eval rakudo 764684: OUTPUT«aperlhacker␤»
10:01 wayland76 And it seems DanielC_away is interested in the format that the files will be layed out in inside the package
10:02 wayland76 So if we can agree on a set of protocols to talk to each other, we should have things fairly well in hand
10:02 eternaleye finanalyst: see http://perlcabal.org/syn/S05.html#Regexes_are_now_first-class_language%2C_not_strings
10:02 finanalyst whitespace is not significant in rule (currently?) except where there is an assignment to a named variable
10:03 eternaleye Actually, it may well be the reverse
10:03 eternaleye rakudo:  rule x { 'name = ' $<capt> = (.*?)$}; 'name = aperlhacker' ~~ /<x>/;say $/<x>
10:03 p6eval rakudo 764684: OUTPUT«Use of uninitialized value␤␤»
10:03 eternaleye rakudo:  rule x { 'name = '$<capt> = (.*?)$}; 'name = aperlhacker' ~~ /<x>/;say $/<x>
10:03 p6eval rakudo 764684: OUTPUT«Use of uninitialized value␤␤»
10:03 eternaleye rakudo:  rule x {'name = '$<capt> = (.*?)$}; 'name = aperlhacker' ~~ /<x>/;say $/<x>
10:03 p6eval rakudo 764684: OUTPUT«Use of uninitialized value␤␤»
10:03 eternaleye rakudo:  rule x {'name = '$<capt>=(.*?) $}; 'name = aperlhacker ' ~~ /<x>/;say $/<x>
10:03 p6eval rakudo 764684: OUTPUT«Use of uninitialized value␤␤»
10:03 eternaleye Weird
10:04 eternaleye I guess I don't have my head wrapped around the new regexes yet
10:04 mberends joined #perl6
10:04 finanalyst eternaleye: you are using .*? which doesnt work well
10:04 eternaleye Ah
10:05 finanalyst or it might be working well, but i dont understand why. its the whitespace that seems inconsistent
10:05 finanalyst rakudo:  rule x { 'name = '     $<capt>=(.*)$      }; 'name = aperlhacker' ~~ /<x>/;  say $/<x><capt>
10:05 p6eval rakudo 764684: OUTPUT«aperlhacker␤»
10:05 finanalyst rakudo:  rule x { 'name = '     $<capt> = (.*)$      }; 'name = aperlhacker' ~~ /<x>/;  say $/<x><capt>
10:05 p6eval rakudo 764684: OUTPUT«Use of uninitialized value␤␤»
10:06 M_o_C joined #perl6
10:06 eternaleye rakudo: token var { \w+ }; token lval { \w+ }; rule assign {^<var> '=' <lval>$}; 'name = aperlhacker' ~~ /<assign>/; say $<assign><lval>
10:06 p6eval rakudo 764684: OUTPUT«aperlhacker␤»
10:07 eternaleye rakudo: token var { \w+ }; token lval { \w+ }; rule assign {^<var> '=' <lval>$}; 'name = aperlhacker' ~~ /<assign>/; say $<assign><var>
10:07 p6eval rakudo 764684: OUTPUT«name␤»
10:07 eternaleye For me, I prefer subrules rather than assignments
10:08 eternaleye Same result, cleaner syntax in my view
10:10 finanalyst wayland76: is the .parse method for a grammar defined somewhere in the setting specs?
10:11 eternaleye finanalyst: http://perlcabal.org/syn/S05.html#Grammars - A string can be matched against a grammar by calling .parse on the grammar, and optionally pass an action object to that grammar
10:12 finanalyst so what does .parse return?
10:12 eternaleye A Match object, IIRC. Same as m//
10:13 eternaleye rakudo: grammar Stuff { token var { \w+ }; token lval { \w+ }; rule TOP {^<var> '=' <lval>$};  }; my $foo = Stuff.parse('name = aperlhacker' ); say $foo<assign><var>
10:13 p6eval rakudo 764684: OUTPUT«Method 'postcircumfix:{ }' not found for invocant of class 'Failure'␤»
10:13 finanalyst what if there is not a match?
10:13 eternaleye rakudo: grammar Stuff { token var { \w+ }; token lval { \w+ }; rule TOP {^<var> '=' <lval>$};  }; my $foo = Stuff.parse('name = aperlhacker' ); say $foo
10:13 p6eval rakudo 764684: OUTPUT«name = aperlhacker␤»
10:13 eternaleye rakudo: grammar Stuff { token var { \w+ }; token lval { \w+ }; rule TOP {^<var> '=' <lval>$};  }; my $foo = Stuff.parse('name = aperlhacker' ); say $foo<lval>
10:13 p6eval rakudo 764684: OUTPUT«aperlhacker␤»
10:14 eternaleye rakudo: grammar Stuff { token var { \w+ }; token lval { \w+ }; rule TOP {^<var> '=' <lval>$};  }; my $foo = Stuff.parse('name = aperlhacker' ); say $foo.WHAT
10:14 p6eval rakudo 764684: OUTPUT«Stuff()␤»
10:14 eternaleye rakudo: grammar Stuff { token var { \w+ }; token lval { \w+ }; rule TOP {^<var> '=' <lval>$};  }; my $foo = Stuff.parse('name = aperlhacker' ); say $foo.^WHAT
10:14 p6eval rakudo 764684: OUTPUT«too many arguments passed (4) - 1 params expected␤in Main (/tmp/mDrRzBdNzw:2)␤»
10:14 eternaleye rakudo: grammar Stuff { token var { \w+ }; token lval { \w+ }; rule TOP {^<var> '=' <lval>$};  }; my $foo = Stuff.parse('name = aperlhacker' ); say $foo.HOW.WHAT
10:14 p6eval rakudo 764684: OUTPUT«Stuff()␤»
10:14 eternaleye rakudo: grammar Stuff { token var { \w+ }; token lval { \w+ }; rule TOP {^<var> '=' <lval>$};  }; my $foo = Stuff.parse('name = aperlhacker' ); say $foo ~~ Match
10:15 p6eval rakudo 764684: OUTPUT«1␤»
10:15 eternaleye So the grammer is a subclass of Match, and returns an instance of itself IIUC
10:15 eternaleye *grammar
10:15 eternaleye Or at least 'does Match'
10:25 pmurias joined #perl6
10:25 eternaleye Oh hai, pmurias
10:31 wayland76 pmichaud lu_zero, mugwump (?) and others: The Rakudo-on-installed-Parrot-as-RPM bug is now http://rt.perl.org/rt3/Ticket/Display.html?id=63360
10:39 pmurias eternaleye: hi
10:50 sjohnson1 joined #perl6
10:51 eternaleye I wonder if Inverse Japhs will catch on
10:51 eternaleye rakudo: my @alnum = 'a'..'z', 'A'..'Z', '0'..'9'; my %trans; %trans{ @alnum } = @alnum.pick(*); say "Just Another Perl 6 Hacker".trans( %trans.pairs.sort ).comb.pick(*).join('')
10:52 p6eval rakudo 764684: OUTPUT«HM Zlpb GKcdbdull0UigqX d ␤»
10:54 wayland76 eternaleye: No, they're too easy for people like Damian
10:55 wayland76 If you don't believe me, see Selfgol
10:55 eternaleye wayland76: I have seen SelfGOL. What has been seen cannot be unseen!
10:56 eternaleye Also, that argument is invalid - Japhs semm to be just as easy to Damian
10:58 eMaX joined #perl6
11:03 wayland76 I guess what I mean is that Japhs are to separate Damian from the rest of us.  Inverse Japhs don't do that
11:04 mikehh joined #perl6
11:04 wayland76 Does anyone have any tips on matching all works not surrounded by quotes?
11:04 wayland76 With a regex in P5?
11:05 wayland76 Ah, I think I know; don't worry
11:05 jferrero joined #perl6
11:06 wayland76 Wait, I'm not so sure.
11:07 pmurias std: map( sub ($failure) { },self.failures);
11:07 p6eval std 26971: OUTPUT«ok 00:02 38m␤»
11:07 eternaleye wayland76: if you could paste an example with comments on what should/shouldn't match, I can make one
11:08 wayland76 No, I've got it
11:08 eternaleye 'kay
11:08 wayland76 s/{(.*?)}/$t = $1; $t =~ s#([\w"]+)#$u = $1; $u =~ m!^"! ? $u : "<$u>"#eg; "{$t}"/e
11:09 wayland76 Takes rule SimpleForClause    { "for" "$" VarName ....
11:09 wayland76 And transforms it to rule SimpleForClause    { "for" "$" <VarName>
11:09 wayland76 Note the angle brackets around VarName
11:10 eternaleye cool
11:10 wayland76 Anyway, I had 72 lines of the stuff to do, so I did that
11:11 wayland76 I'm transforming the XPath BNF grammar into a Perl Grammar
11:11 wayland76 But then I'm going to rip stuff out of it that duplicates functionality that Perl has, and use the rest for my Tree slang
11:15 lichtkind joined #perl6
11:15 wayland76 That was a one-liner.  That's not my usual in-file programming style :)
11:15 lichtkind cheers
11:16 wayland76 hiphip HOORAY! :)
11:16 lichtkind :)
11:17 lichtkind where there any changes in syntax on more basic level in last year beside Meta R, prefix<=> => .lines method and the : twigil ?
11:19 wayland76 Don't know -- try maybe moritz_
11:20 sri_kraih joined #perl6
11:21 eternaleye lichtkind: XopX => Xop
11:21 lichtkind eternaleye: thanks that i know but forgot :)
11:22 lichtkind any other?
11:26 iblechbot joined #perl6
11:28 skids joined #perl6
11:31 wayland76 Does anyone know what the business with the ( --> Chaining ) stuff in STD.pm is?
11:35 lichtkind nope never looked into working p6 code :)
11:39 pmurias jnthn: is the parrot metamodel described somewhere?
11:39 pmurias s/parrot/rakudo/
11:51 jnthn pmurias: No single place, but see in Parrot P6object.pir which is a lot of the core of it.
11:51 jnthn pmurias: A lot is in the process of getting refactored at the moment though.
11:53 jnthn Want to support writing custom meta-classes (knowhow) in the not too distant future.
11:55 fridim_ joined #perl6
11:56 skids wayland: Chaining: A > B >= C
11:57 wayland76 skids: Was that directed at lichtkind?
11:57 wayland76 Oh, no I see
11:58 wayland76 What I want to know is, the part that says "( --> Chaining )" -- is that valid syntax
11:58 wayland76 (you'd have to see it -- search for eg. where the === operator is defined)
11:58 skids I don't know.  But --> is usually return value.
11:59 wayland76 Yeah, I know that.  But I just don't understand what it's achieving in this case
11:59 jnthn Aye, I'm pretty sure it's return value in this context too.
11:59 wayland76 And I don't see it specced anywhere in S05
11:59 skids Well, regexe are subs
11:59 wayland76 And it could be useful
11:59 wayland76 ah, ok
11:59 wayland76 So does that mean that it returns one value of type "Chaining"?
12:00 jnthn wayland76: Aye, and I guess that is related to:
12:00 jnthn class Chaining does PrecOp { our %o = %chaining;
12:00 jnthn }
12:00 wayland76 Ah, yes, I just found that
12:00 wayland76 Great.  That's fairly cool :).
12:00 skids It means that inside the sub, when it gets to return, the stuff it wants to return is coerced to constrained/coerced to Chaining
12:01 skids (before it is returned.)
12:01 wayland76 Ok, thanks.  I still don't understand the class definition, but that can wait for some other time.  Just knowing the possibility is there could be useful :)
12:04 jnthn wayland76: Don't worry, nor do I. :-)
12:06 skids constant %chaining  = (:dba('chaining')        , :prec<m=>, :assoc<chain>, :diffy, :iffy);
12:06 skids That ought to clear things up >-)
12:07 wayland76 It clears up everything except what happens to the === :)
12:07 jnthn skids: Oh, that I follow, it's more what is defined in the class PrecOp that I didn't get my head around yet. :-)
12:10 skids Ah, but that clears up what happens to Chaining::o at least :-)
12:13 beggars joined #perl6
12:15 * jnthn slept all morning...and feels a lot better for having done so
12:17 skids The "===" gets stuffed in the match.  That part of the match is coerced to Chaining.  I don't know if the "coerce" method is called immediately then, or later, but whenever it is called it loads the extra keys from %Chaining::o, into the match object, and also sets the key <kind> to Chaining().
12:17 jnthn skids: That sounds completely plausible.
12:18 jnthn skids: However, I'd always seen --> as a type check rather than a coercion.
12:18 jnthn skids: It may be something in the operator precedence parser that calls coerce.
12:21 azawawi joined #perl6
12:21 azawawi hello
12:25 jnthn http://use.perl.org/~korpenkraxar/journal/ is rather distressing...
12:28 skids jnthn: S06 uses "coerce" .  Though I seem to remember seeing a more verbose paragraph than what is in S06 somewhere.
12:29 skids As far as performance goes, as much as it pains my optimization-loving self I have to admit that Parrot is still at the point where too much optimization would slow progress.
12:30 jnthn skids: I think our problem here is not so much performance as it is an EPIC memory leak.
12:30 skids Just, they do need the GC work badly.  Preferably an out of band one using address math, to keep the caches clean.
12:30 jnthn (OK, it is performance too. But I'd imagine fixing the leak might help with the performance issue too.)
12:31 skids Leaked memory really shouldn't result in the >1s runtimes, since leaked memory just sits there harmlessly.
12:32 skids (never pulled into cache)
12:32 xinming joined #perl6
12:33 jnthn skids: Yes and no. There are things that I think Parrot allocates out of memory pools that it mananges, and it may be hitting pathological cases there too.
12:34 jnthn Also, Rakudo has an epic fail when run under -G.
12:34 jnthn :-S
12:35 jnthn Oh, we already did ticket that issue.
12:35 jnthn *sigh*
12:35 skids dream GC -- 1) you never have to touch a leaf node's memory to do anything GC related to it, 2) it has a throttled visit cycle not just for reaping but also time budgeted to shrink idle structures.
12:38 sri_kraih_ joined #perl6
12:39 azawawi jnthn: http://feather.perl6.nl/~azawawi/padre-perl6-exe.png
12:41 jnthn azawawi: a funguje teraz?
12:41 jnthn oh gah
12:41 jnthn azawawi: Does it work now?
12:41 jnthn Oh, I see the output pane.
12:41 jnthn The awesome!
12:42 azawawi jnthn: it generates but the executable is broken :)
12:42 jnthn azawawi: I think I might just know why.
12:42 skids anyone know if I can stop adding --gen-parrot-options=--optimize yet?
12:42 azawawi jnthn: see http://rt.perl.org/rt3/Public/Bug/Display.html?id=65994
12:43 jnthn azawawi: Once I get done with the dispatcher refactor, I'll have a crack at fixing it.
12:43 jnthn azawawi: Yeah. It appears the PIR we generate is actually missing .loadlib directives.
12:44 jnthn Or something.
12:44 jnthn Anyway, will try and hunt it down. Just wanna get the current big refactor done first.
12:45 kate21de joined #perl6
12:45 payload joined #perl6
12:46 Whiteknight joined #perl6
12:46 azawawi jnthn: a useful thing to have is to annotate generated pir with the perl6 code (as comments)
12:47 jnthn azawawi: It could be done if you have both the PIR and the Perl 6 source because you can just look for .annotate directives in the generated PIR.
12:51 azawawi jnthn: yeah i know; i was thinking to do it on the padre perl6 plugin side.
12:51 azawawi jnthn: where can i find more information about parrot debugging (to build a simple perl6 debugger)?
12:52 jnthn azawawi: I'm really not so sure what the state of debugging stuff with HLLs is just yet.
12:52 jnthn azawawi: There is a program pdb.exe I think, which is the Parrot debugger.
12:52 jnthn Or maybe it's parrot_debug these days.
12:53 jnthn I guess look in the docs directory in Parrot for info. Also #parrot on magnet is probably a good place to find people who would know.
12:54 azawawi jnthn: parrot_debugger.exe
12:54 skids rakudo: 'class A { has $!v is rw; multi method infix:<=> (Int $a) { $!v = +$a; } }; my $f of A = A.new; $f = 4;
12:54 p6eval rakudo 764684: OUTPUT«Syntax error at line 2, near "'class A {"␤in Main (src/gen_setting.pm:0)␤»
12:54 skids rakudo: class A { has $!v is rw; multi method infix:<=> (Int $a) { $!v = +$a; } }; my $f of A = A.new; $f = 4;
12:54 p6eval rakudo 764684: OUTPUT«Type mismatch in assignment; expected something matching type A but got something of type Int()␤in Main (/tmp/mriqMaHXGk:2)␤»
12:55 jnthn azawawi: Right. That's how behind I am on it. ;-)
13:08 meppl joined #perl6
13:13 wayland76 o/ bye for a while
13:18 skids rakudo: class A { has $!v = 5; method Str () { "{$!.v}" }; }; my $a of A = A.new; $a.say; # $!.v is wrong yes I know, just the segv...
13:18 p6eval rakudo 764684: OUTPUT«␤»
13:18 skids hrm, evalbot doesn't show segv's?
13:22 pmichaud good morning, #perl6
13:22 skids hola.
13:22 jnthn ahoj
13:24 Psyche^ joined #perl6
13:31 pmichaud (from backscroll -- specifying modules to install from command line)    Why wouldn't it be:    "install Dog:ver<1.2.1>:auth<cpan:JRANDOM>"  ?
13:33 pmichaud azawawi: the problem isn't that we're missing .loadlib directives, the problem is that Parrot isn't loading them.
13:33 pmichaud (and jnthn)
13:33 jnthn pmichaud: Oh?
13:34 pmichaud we generate "load_bytecode 'perl6.pbc'"
13:34 jnthn pmichaud: That's too late.
13:34 jnthn pmichaud: Or at least, it's going to be if it isn't already.
13:34 pmichaud it's not too late at present
13:34 jnthn pmichaud: OK, it's about to become too late. :-)
13:34 pmichaud I'm a little concerned about that, then.
13:34 pmichaud I don't want Parrot loading the libraries multiple times.
13:35 jnthn I'd rather hope Parrot is smart enough not to...
13:35 pmichaud I wouldn't assume that is the case.
13:35 jnthn Then some sense must be beaten into the bird's thick skull.
13:35 pmichaud why will that be too late, ooc ?
13:36 jnthn Because now we have dynops (which need to be loaded at the time we parse a PIR file) but their appearance has mostly been restricted to within libraries.
13:37 jnthn Soon we'll have one that is emitted.
13:37 pmichaud Hmm.
13:37 pmichaud is that the only reason, or are there others?
13:38 skids rakudo: class A { our $cvar = "foo"; has $!v; method infix:<=> ($d) { $!v }; };
13:38 p6eval rakudo 764684: OUTPUT«No such attribute '$!v'␤in Main (/tmp/jkswgyY4BI:2)␤»
13:38 jnthn Well, in theory once I get the hll_map'd Perl6MultiSub stuff in place we may need to do that too, otoh we can use an :immediate block to load those.
13:38 jnthn (those = dynpmcs)
13:38 pmichaud but every generated PIR would need that :immediate block
13:38 pmichaud yes?
13:39 jnthn Yeah, I'd figured as much.
13:39 jnthn Well
13:39 jnthn The other option is that the immediate block is what load_btyecode's perl6.pbc
13:39 jnthn And then we don't have to worry aobut the multiple loading problem, perhaps.
13:39 pmichaud yes, I was just thinking of that.  I think I like that much better.
13:39 jnthn Yeah, there's more than one way to do it. :-)
13:39 skids rakudo: class A { our $cvar = "foo"; has $!v; method infix:<+> ($d) { $!v }; };
13:39 skids .oO(that last one doesn't hose rakudo back here...)
13:39 pmichaud wait, I don't think that helps.
13:39 p6eval rakudo 764684:  ( no output )
13:40 skids rakudo: class A { has $!v; method infix:<=> ($d) { $!v }; };
13:40 pmichaud iirc, :immediate blocks don't get stored in the bytecode.
13:40 p6eval rakudo 764684:  ( no output )
13:40 rindolf joined #perl6
13:40 jnthn pmichaud: Oh, no, they don't.
13:40 rindolf Hi all.
13:40 jnthn pmichaud: So it only solves half of the problem. :-|
13:41 pmichaud oh, hey!
13:41 azawawi im back from lunch :)
13:41 pmichaud mapping Perl6MultiSub is already built-in.
13:41 pmichaud as part of the pmclass definition
13:42 pmichaud pmclass Perl6MultiSub extends MultiSub maps MultiSub hll perl6 ... {
13:42 jnthn pmichaud: If that stkill works yes.
13:42 pmichaud I'm pretty sure it must work, as partcl uses it.
13:42 jnthn pmichaud: Still leaves us the dynops.
13:45 rindolf What's up, everybody?
13:46 pmichaud Yes, we may be stuck with generating .loadlibs for those.  But we need to make sure that multiple .loadlibs don't cause us an issue.
13:47 * pmichaud works on speeding up assign.t
13:49 skids rindolf: the usual, pmichaud and jnthn talk tech and code, the rest of us dance around them in a circle chanting.
13:49 rindolf skids: ah.
13:50 rindolf I released a new version of Games-Solitaire-Verify, with support to Simple Simon.
13:50 rindolf s/support to/support for/
13:50 abra joined #perl6
13:54 jnthn pmichaud: Have you got a good idea of why assign.t is so slow?
14:01 om454545445 joined #perl6
14:02 om454545445 hi
14:02 om454545445 guys i need help with a script
14:03 om454545445 can anyone help me understand this because it never works when i configure it.
14:03 skids perl5 or perl6?
14:03 alester joined #perl6
14:03 pmichaud jnthn: unicode
14:04 rindolf om454545445: is this script written in Perl 6?
14:04 om454545445 #!/usr/bin/perl
14:04 om454545445 use vars qw(%config %category %form);
14:04 om454545445 use strict;
14:04 om454545445 #-###########################################################################
14:04 om454545445 #
14:04 om454545445 # In accordance with the GPL, this copyright notice MUST remain intact:
14:04 om454545445 #
14:04 om454545445 # EveryAuction Release Version 1.53 (2/17/02)
14:04 rindolf om454545445: don't flood.
14:04 om454545445 # Copyright (C) 2000-2002 EverySoft
14:04 om454545445 # Registered with the United States Copyright Office, TX5-186-526
14:04 om454545445 # http://www.everysoft.com/
14:04 om454545445 #
14:04 om454545445 #-###########################################################################
14:04 om454545445 #
14:04 om454545445 # This program is free software; you can redistribute it and/or
14:04 om454545445 # modify it under the terms of the GNU General Public License
14:04 om454545445 # as published by the Free Software Foundation; either version 2
14:04 was kicked by pmichaud: flooding, use nopaste!
14:04 was kicked by jnthn: please don't flood
14:04 jnthn oh fuck
14:04 skids oopsie
14:05 jnthn @tell omega sorry, tab completion fail...
14:05 lambdabot Consider it noted.
14:05 pmichaud /kick jnthn please be careful about kicking!  :-)
14:05 azawawi flood victims :)
14:05 pmichaud "collateral damage"
14:05 om454545445 joined #perl6
14:05 om454545445 sorry
14:05 pmichaud om454545445: try pasting to gist.github.com
14:05 pmichaud then give us the url here
14:05 om454545445 try pasting at gist.github.com
14:05 skids also, it looks like perl5 so you might get better help on channel #perl
14:06 om454545445 what is this website
14:06 pmichaud yes, this channel is primarily for Perl 6 discussions
14:06 andreasg_ þw 8
14:06 om454545445 so where should i go
14:06 pmichaud try #perl
14:06 om454545445 ok
14:06 om454545445 bye
14:06 skids It is a place to paste things, then just paste the URL back in IRC
14:08 pjcj joined #perl6
14:13 barney joined #perl6
14:19 pmichaud jnthn: (assign.t)   check out line 7 of assign.t -- there's a non-breaking space in "Perl 5"   (more)
14:19 pmichaud Because of that non-breaking space, the string remains encoded as utf8 when parsed
14:20 pmichaud Because of that, assign.t takes 2m36 to compile and run.  With it converted to a normal space, it requires 0m38
14:20 jnthn !!!
14:20 pmichaud (that's the only non-ascii character in the file)
14:21 jnthn pmichaud: What did you make of chromatic's suggestion to transcode to UTF-16 (or whichever it was)?
14:21 pmichaud that's what I'm doing this morning.
14:21 jnthn oh, nice :-)
14:22 pmichaud currently Rakudo attempts to transcode to ascii and use that... but if it fails, it leaves the string alone and works with whatever it has.
14:22 * jnthn hopes for a decent win :-)
14:23 jnthn I'm working on the last missing feature in the dispatcher refactor. Then I'm down to debugging.
14:23 pmichaud I'm going to have it try to transcode to ascii, if that fails try to re-encode to ucs-2, and then if *that* fails we just go with whatever we have.
14:24 jnthn Will there be a big performance difference between going to ucs-2 always and skipping trying ASCII?
14:24 jnthn That is, does ucs-2 carry sufficient overhead that it's worth trying ASCII first?
14:24 jnthn Or just the "ASCII is a common enough case" thing?
14:24 pmichaud it's not performance so much as that ucs-2 doesn't work without icu present
14:24 jnthn Oh.
14:25 pmichaud so on systems without icu, ucs-2 fail would mean everything parses slow.
14:25 lichtkind can hygeniec macros change vars that are not defined in them?
14:26 lichtkind hygienic
14:26 pmichaud beyond that, I suspect that ASCII will be a bit faster.  We'll have an idea of how much faster once I complete this conversion, as I can then measure all three.  :-)
14:27 pmichaud oh, wait, I think I can measure it now.
14:27 pmichaud oops, no I can't.
14:27 pmichaud (wrong option processing)
14:28 jnthn OK, was just curious. :-)
14:28 * jnthn cranks up the Opeth and digs into fixing up delegation.t
14:53 om454545445 left #perl6
14:53 LadyLunacy joined #perl6
15:01 skids .oO(we need a builtin sub OHAI { "OH HAI".say })
15:03 jnthn use LOL6;
15:04 skids .oO(default in evalbot...)
15:07 skids rakudo: class A { method postfix:<++> () {"OHAI".say}}; A.new++; # only postcircumfix got the fix?
15:07 p6eval rakudo 764684: OUTPUT«Method 'succ' not found for invocant of class 'A'␤»
15:07 jnthn rakudo: class A { multi method postfix:<++> is export () {"OHAI".say}}; A.new++;
15:07 p6eval rakudo 764684: OUTPUT«Method 'succ' not found for invocant of class 'A'␤»
15:08 jnthn skids: Oh, I know why that isn't working yet...
15:08 pmichaud I don't think we support operators-as-methods yet
15:09 pmichaud I'm not even sure it's in the spec, though.
15:09 jnthn pmichaud: We do, I added that; it's just that the invocant is not set to the correct type yet.
15:09 pmichaud wtf?
15:10 jnthn yarly
15:10 pmichaud I know that postcircumfix:<( )>  is supported, but postfix:?
15:10 jnthn Been wanting to fix that for *ages*.
15:10 jnthn pmichaud: I think so.
15:10 pmichaud I can't find any information about it in the spec.
15:10 jnthn I'm sure I've see such things...
15:11 pmichaud beyond that, I have no clue how we're supposed to turn    $a++   into  both a method call and a sub call.
15:12 pmichaud one *might* be able to do 'is export' on such a method to get it to appear as part of the mmd sub
15:12 jnthn pmichaud: Oh, I only expected it to work with is export.
15:12 jnthn pmichaud: I didn't expect it to work without that.
15:13 jnthn And yes, that would just add it to the multi-sub as a candidate.
15:14 skids Hrm, is postcircumfix supposed to work without "is export" (because it does, and I was wondering why)
15:14 jnthn pmichaud: Just declaring a method postfix:<++> { } without exporting it would afaik not change $x++
15:14 pmichaud okay, I can accept that.
15:14 jnthn skids: Yes, that one is because it's dispatched as a method call.
15:14 beggars joined #perl6
15:15 pmichaud fwiw, I think we have a problem in our import routine with respect to that
15:15 pmichaud oh, perhaps not -- let me look
15:16 pmichaud eval.pir:245
15:16 pmichaud $S0 = shift it
15:16 pmichaud $P0 = export_ns[$S0]
15:16 pmichaud import_ns[$S0] = $P0
15:16 pmichaud is the keyed access to import_ns smart enough to add a MultiSub instead of replacing ?
15:16 pmichaud or is that just clobbering whatever MultiSub might have been there already?
15:18 jnthn pmichaud: I *think* the logic to be smart about that stuff is in NameSpace
15:19 jnthn pmichaud: The problems we have are 1) when we mix up MultiSub and Perl6MultiSub and 2) not setting type of invocant properly in the signature
15:20 pmichaud I thought we were doing 2 already.
15:20 pmichaud as in, I thought I added it.
15:20 pmichaud can't remember now.
15:23 jnthn I don't remember us ever having it.
15:23 pmichaud I think I did it shortly after NPW.
15:23 pmichaud Looking.
15:24 jnthn rakudo: class Foo { multi method m() { } }; say &Foo::m.signature.perl
15:24 p6eval rakudo 764684: OUTPUT«undef␤»
15:24 jnthn rakudo: class Foo { multi method m() { } }; say &Foo::m.candidates>>.signature.perl
15:24 Chillance joined #perl6
15:24 p6eval rakudo 764684: OUTPUT«[:(Object self)]␤»
15:25 pmichaud okay, guess not.
15:26 pmichaud is that something we can easily put into !add_implicit_self ?
15:27 jnthn Well, really we need a way to get at the proto-object for the class
15:27 jnthn e.g. $?CLASS
15:27 pmichaud maybe pass it to !add_implicit_self ?
15:27 jnthn Well, yes, that's easy enough apart from we aren't setting $?CLASS yet AFAIK.
15:28 pmichaud no, I mean from actions.pm
15:28 pmichaud not as a lexical lookup
15:28 jnthn And I worry how it'll look lexically
15:28 jnthn Oh, you mean look it up at runtime?
15:28 jnthn by name?
15:28 pmichaud that, or pass the metaclass object
15:28 jnthn Remember it's in the loadinit for the signature that we have this.
15:28 pmichaud exactly
15:28 pmichaud thus the metaclass object
15:28 jnthn ?
15:29 jnthn Isn't that just available in the :load :init that sets up the class?
15:29 pmichaud oh.
15:29 jnthn It's not a lexical, just a register, iirc.
15:29 pmichaud yes, perhaps.
15:29 pmichaud I'm already thinking the loadinits are combined :-|
15:29 jnthn If you write the thingummy to smash 'em all into one then...yes. ;-)
15:29 pmichaud (which they aren't, and which I'd not like to rely upon)
15:30 pmichaud oh, duh!
15:30 pmichaud Just use the sub's namespace
15:30 pmichaud (the one we're attaching the signature to)
15:30 jnthn Is the proto findable from that?
15:30 jnthn We can get the parrotclass...
15:31 pmichaud yes, the proto is always findable from the parrotclass
15:31 jnthn OK.
15:31 jnthn That'll work.
15:34 om454545445 joined #perl6
15:34 pmichaud time to process ascii version of assign.t:  30.287 sec
15:34 pmichaud time to process utf8 version of assign.t: 2m28.611
15:35 pmichaud time to process utf8 version of assign.t transcoded to ucs2:  30.667 sec
15:35 jnthn :-O
15:35 jnthn \o/
15:35 skids pmichaud++
15:35 pmichaud looks like a win if we pass the spectests :-)
15:36 om454545445 left #perl6
15:36 skids And it'll be the first application to ever run faster ith ICU support compiled in :-)
15:37 jnthn yeay, damm, now I want ICU
15:38 jnthn pmichaud: Is actions.pm something we did as ASCII?
15:38 pmichaud jnthn: I'm pretty sure it's ASCII, yes.
15:38 jnthn Or do we win on that too?
15:38 pmichaud just a sec
15:38 jnthn Ah, OK.
15:38 * jnthn had been hoping for a win on that
15:38 pmichaud It's ASCII already.
15:39 jnthn aww.
15:43 pmichaud now to make spectest both with and without icu  (sigh)
15:48 FurnaceBoy joined #perl6
15:52 pmichaud darn, epic fails.
15:52 jnthn :-(
15:52 pmichaud time to track those down.
15:52 jnthn My handles handling hasn't exactly worked it first time either.
15:53 pmichaud well, given that the change gives us a ~2 minute win on just one spectest file, it's worth pursuing a bit further :-)
15:54 pmichaud but I'm guessing I'm likely to uncover a bunch of nasty Parrot string-handling bugs here, too :-|
15:56 jnthn :-(
15:56 jnthn Yes, worth pursuing.
15:56 pmichaud oh, "make realclean" seems to have cleared it up.
15:56 jnthn oh, nice
15:56 pmichaud oh, spoke too soon.
15:56 pmichaud got a failure.
15:56 pmichaud and another...
15:57 pmichaud uh oh
15:57 pmichaud I think string_equal is failing when comparing ucs2 versus ascii
15:58 jnthn oh hrovno.
15:58 pmichaud oh, that's not entirely it.
15:58 pmichaud hrm.
16:00 TimToady \⚉
16:03 pmichaud ugh.  Looks like I have to transcode the ucs2 strings back to ascii prior to calling ICU (e.g., for converting Unicode names)
16:03 DanielC_away joined #perl6
16:05 DanielC Is it OK if I add a page to the Perl 6 wiki? I have some ideas I'd like to document.
16:05 skids perfoundation?  I added a bunch.  Nobody complained.
16:05 TimToady as long as they're not libelous
16:05 sbp 16:34  <pmichaud> time to process ascii version of assign.t:  30.287 sec
16:05 sbp 16:34  <pmichaud> time to process utf8 version of assign.t: 2m28.611
16:06 DanielC TimToady: Ok.
16:06 TimToady or violate community standards of decency...
16:06 sbp pmichaud: dunno if it'd help, but a friend of mine came up with a devastatingly fast utf-8 decoder
16:06 skids Or solicit donations :-)
16:06 sbp pmichaud: http://bjoern.hoehrmann.de/utf-8/decoder/dfa/
16:06 TimToady wait, I could use some donations...
16:06 sbp maybe that's something the parrot folk need though
16:06 DanielC i won't do any of the above :-)  I just want to write about the CPAN package format.
16:06 skids TimToady: then take camelia over to cafe press.
16:07 TimToady tis an idea
16:07 pmichaud sbp: the cost isn't in decoding
16:07 skids You have to work on that trademark defense anyway, right>
16:07 TimToady do they do mugs too?
16:07 skids Yep
16:07 pmichaud sbp: the cost is in indexing to the middle of a utf8 string
16:07 sbp aha
16:08 TimToady filling corporate america with a million camelia mugs would be my idea of a cultural hack :)
16:08 jnthn Hey, what about corporate Europe?
16:08 pmichaud I'd be happy to set up a few camelia mugs on CafePress and send TimToady the proceeds :-)
16:08 pmichaud (I already have an account, although I've not used it)
16:09 TimToady yes, and corpulent Europe too
16:09 TimToady maybe even Antarctica, if you can find any corpuscular entities there
16:12 TimToady funny how the continental congress was not on the same continent as most continentals
16:14 skids .oO(incontinental congress?)
16:15 jnthn .oO( never mis-parse corpulent again )
16:16 pmichaud jnthn: in C, any ideas about the best way to get a ucs2 string into a cstring?
16:17 pmichaud (assume the ucs2 string only has ASCII codepoints)
16:17 brunov joined #perl6
16:18 jnthn Did you try string_to_cstring?
16:18 sbp TimToady, or whoever: what's the license of camelia.pdf?
16:18 jnthn erm, string_to_cstring_nullable
16:18 sbp I've converted it to SVG; I was thinking about adorning wikipedia:Perl6 with it
16:18 jnthn but looking at it, hmm
16:19 jnthn pmichaud: Actually more likely Parrot_str_to_cstring
16:19 pmichaud jnthn: that's what I'm using now.
16:19 jnthn pmichaud: But it appears to just give you the buffer and do no transcoding.
16:19 pmichaud right.
16:19 pmichaud and ICU wants an ASCII cstring.
16:20 pmichaud (for looking up character names)
16:20 skids sbp: /pugs/misc/camelia.txt
16:21 jnthn pmichaud: Ah, I see.
16:21 skids Isn't that a bit hypocritical of ICU?
16:21 sbp skids: yeah, saw that. seems to say it's at least usable for the moment
16:21 sbp but also neglects to mention a license
16:22 sbp (need to be specific when uploading to Wikimedia Commons)
16:22 sbp (can't just say "yeah, yeah, it's free, get off my case, [handwaving]")
16:23 skids "permission is
16:23 skids granted for non-exclusive use to label anything related to Perl 6,
16:23 skids provided the image is labeled as a trademark when used as a main logo
16:23 skids on a page." <-- license?
16:24 sbp oh, Artistic License 2.0. thanks
16:24 sbp I must be looking at a mouldy old revision of camelia.txt
16:24 sbp skids++
16:25 pmichaud skids: it's not hypocrticial of ICU -- after all, ICU gives you the tools to be able to change the encoding quickly if you want :-S
16:28 jnthn pmichaud: It's maybe not the intended purpose but
16:28 jnthn Parrot_str_escape_truncate looks like it might do what you want ;)
16:28 pmichaud will look at it
16:29 jnthn pmichaud: Maybe more sensible is Parrot_str_change_charset
16:29 jnthn or Parrot_str_change_encoding
16:32 lichtkind TimToady: do macros can change vars permanently, that are defined outside of their scope ?
16:33 pmichaud jnthn: probably has to be Parrot_str_change_charset
16:33 pmichaud does it throw an exception?
16:33 TimToady they can change anything a BEGIN block can change, but they can't add variables to a completed lexical scope
16:34 jnthn pmichaud: I can only see it doing so if you pass in an invalid charset, but it may call something else that will.
16:35 sbp there, done
16:35 sbp despite WC's fiery hoops
16:36 lichtkind TimToady: you say i cant define our variables inside a macro?
16:37 pmurias you can't add my variables to an already closed scope
16:37 ZuLuuuuuu when we write a class with an instance variable like "has $.name is rw;" then does this variable have any difference than a public instance variable in behaviour?
16:37 pmurias even normal subs can define our variables
16:38 TimToady there's really no such thing as a public instance variable in p6
16:39 TimToady it's an illusion
16:39 ZuLuuuuuu all instance variables behave as private by default then?
16:39 ZuLuuuuuu and we write getters and setters to reach them?
16:39 TimToady the only real instance variable is $!name, and that is of course private
16:39 TimToady $.name is the name of a rw accessor
16:40 TimToady so you can use the accessor as if it were a variable
16:40 TimToady we don't separate getter from setter at that level
16:40 ZuLuuuuuu TimToady: then we can reach it both with $.name and $!name inside methods right?
16:40 TimToady and accessor establishes *identity*, not lvalue vs rvalue
16:41 TimToady reach "it" means two different things here
16:41 lichtkind no our in p6 ? strange
16:41 ZuLuuuuuu I mean to use it as lvalue for example
16:41 TimToady $!name reaches a concrete storage location
16:42 TimToady $.name reaches an abstract storage location that a derived class could override
16:42 lichtkind ah it was no answer fo me :)
16:42 TimToady my answer was to you
16:43 TimToady package variables aren't lexical, so what I said doesn't apply
16:43 rindolf Hi all.
16:43 rindolf TimToady: have you seen http://www.reddit.com/r/programming/comments/8nywa/ruby_programmers_reach_their_apotheosis_of/ ?
16:43 eMaX joined #perl6
16:44 ZuLuuuuuu I guess I understood, thanks
16:44 Psyche^ joined #perl6
16:44 TimToady rindolf: at least in Perl 6, we could name it G-d  :)
16:45 sbp “The best way to get god is via rubygems”
16:45 rindolf TimToady: heh.
16:45 sbp not a sentence I expected to see today
16:46 rindolf TimToady: are you one of those people who call "God" "G-d"?
16:46 TimToady well, more people expect the spanish inquisition than the japanese inquisition...
16:46 sbp heh
16:46 rindolf TimToady: no-one expects the Spanish inquisition!
16:47 lichtkind TimToady: thanks a lot but still chewing on that :" can't add variables to a completed lexical scope" isnz the outer scope still open when macro is called?
16:47 rindolf TimToady: so a negative number of people expect the Japanese one.
16:47 jnthn Gah.
16:47 TimToady rindolf: nope, I show my reverence in (hopefully) more productive ways, like being a creator created in God's image
16:47 jnthn The problem when you stop lying is that you've gotta start dealing with the truth...
16:47 jnthn class A { has $.x handles * }; A.new(x => -1).abs.say
16:47 rindolf TimToady: ah, that's good.
16:47 jnthn If it handles * does it also handle the new? I'm figuring not...
16:47 * araujo wonders if Perl6 got God blessing
16:47 rindolf I hate the word "G-d" with a passion.
16:48 TimToady lichtkind: yes
16:48 sbp rindolf: some friends of mine were trying to get the tetragrammaton added to unicode
16:48 sbp rindolf: see http://std.dkuug.dk/JTC1/sc2/WG2/docs/n1740/n1740.htm
16:48 pmichaud I thought that handles *  handles those things that aren't already defined
16:48 rindolf "All truth is God's truth"
16:48 jnthn pmichaud: Yeahbut defined where?
16:48 sbp rindolf: didn't go through though
16:48 pmichaud jnthn: "anywhere"?
16:48 jnthn pmichaud: In the curernt class, or in teh current class or any parent class?
16:48 pmichaud jnthn: basically, if method dispatch would otherwise fail?
16:48 jnthn pmichaud: OK. So does that apply to all handles expressions then?
16:49 pmichaud (I'm just guessing here -- I'd need to review the spec)
16:49 lichtkind TimToady: so what you mean by completed lexical scope?
16:49 DanielC Does anyone know how to highlight something in red in the Perl foundation wiki?
16:49 TimToady one whose block has finished parsing the closing }, or equiv
16:50 jnthn ah, from the spec
16:50 jnthn Wildcard matches are evaluated only after it has been determined that
16:50 jnthn there's no exact match to the method name anywhere.
16:50 TimToady this tends to be more of an issue for eval than for macros though
16:50 pmichaud ah, so my "anywhere" was directly from the spec then.  :-P
16:50 jnthn pmichaud: :-P
16:51 jnthn pmichaud: Heh. I'd translated the existing code rather than re-read the spec and assumed that I'd bothered to read it at some point int he past. ;-)
16:52 jferrero joined #perl6
16:55 pmichaud These days I almost always re-read the spec, if only because the spec changes.  :-)
16:55 pmichaud and often the changes make the resulting code much easier to deal with :-)
16:55 TimToady \⚉/
16:58 DanielC Can anyone tell me how to do formatting on the wiki? The WYSISYG interface doesn't include support for pre-formatted text or coloured text.
16:58 pmichaud DanielC: I don't think there are many fans of the wiki.
16:59 sbp DanielC: I did look at the official documentation for you
16:59 pmichaud We like the wiki as an idea, but the engine is a pain.
16:59 sbp DanielC: and it was completely rubbish and didn't tell me anything
16:59 sbp DanielC: so I didn't pass on the bad news :-)
16:59 DanielC pmichaud: I certainly don't like it, but I figure that I wouldn't help by making a page on my own site...
16:59 sbp for what it's worth, it was here:
16:59 sbp http://www.socialtext.net/help-en/index.cgi?advanced_formatting
17:00 DanielC pmichau: Is the wiki the best option if I want to write a proposal for the new CPAN package format?
17:00 DanielC sbp: *click*
17:00 pmichaud DanielC: unless you're really hoping people will co-author the text with you, perhaps a page on your site is fine (with a link to that page from the perl6 wiki)
17:01 pmichaud another possibility would be to put it on a wiki that does serve your purposes better (the perl6 wiki at github comes to mind), and link to it from the other perl6 wiki
17:01 DanielC There is another perl 6 wiki at github?
17:01 DanielC Is it better? Can I use that one directly?
17:01 pmichaud oh, I guess github wikis are per-repository.
17:02 pmichaud But we could certainly set up a repository and use its wiki :-)
17:02 DanielC perl6-examples is already there, would that work?
17:02 sbp why isn't the perlfoundation wiki using November? :-)
17:02 pmichaud for example:  http://wiki.github.com/perl6/perl6-examples
17:02 pmichaud DanielC: sure, that could work.
17:03 DanielC CPAN is not related to perl6-examples, but who cares?
17:03 pmichaud or I could create a "spec" or "design" or "docs" repository in the perl6 account and we could sue that.
17:03 pmichaud s/sue/use/
17:03 DanielC pmichaud: Ok, sounds good, if it's not a lot of trouble.
17:03 pmichaud there's been some musings from time to time that we might move some of the docs/design information out of the pugs repos and into the perl6 github account
17:04 pmichaud *another* possibility would be to put your proposal into the pugs repo
17:04 pmichaud and link to it there.
17:04 DanielC I'll use whichever wiki you think has the best features. I'd like pre-formatted text and coloured text (to highlight differences between my proposal an S22).
17:05 icwiener joined #perl6
17:06 DanielC Hmm... do you know where the documentation for the github wiki is?
17:07 pmichaud I don't know which of the available wikis has the best features.
17:07 pmichaud I'd use the github wiki, though.
17:08 DanielC I'll pick the first one that I can find useful documentation for (useful == preformatted text and coloured text)
17:08 pmichaud it appears to use textile
17:08 pmichaud http://hobix.com/textile/quick.html
17:08 pmichaud it does support red text :-)
17:08 pmichaud and preformatted
17:08 DanielC Excellent. I'll take it.
17:08 jnthn delegation.t all passes again. \o/
17:09 pmichaud of course, there's another wiki that I tend to use quite frequently, but it's not really used in the p6 community :-P :-P
17:09 DanielC jnthn++
17:10 pmichaud because it's written in  (egads!)   PHP!   Aiiiiigh!
17:10 DanielC :)
17:11 jnthn So, that means my re-written dispatcher is feature complete.
17:11 jnthn Which "just" leaves working out the various remaining bits of collateral damage.
17:12 ZuLuuuuuu does emacs have perl 6 syntax highlighting?
17:13 DanielC pmichaud: github is good enough. Should I use per6-examples or do you want to make a new docs or spec repository?
17:13 pmichaud I'll make a new repo, just a sec.
17:14 pmichaud I'll just call it "misc" for now.  :-)
17:14 DanielC ok
17:16 ejs joined #perl6
17:16 jferrero joined #perl6
17:17 pmichaud http://wiki.github.com/perl6/misc
17:17 DanielC thanks
17:18 pmichaud time for lunch here
17:18 pmichaud bbiaw
17:30 lichtkind TimToady: does that return 4? macro a4 {$a = 4}; my $a = 3; a4; say $a;
17:31 lichtkind TimToady: excuse but no implementation touches that
17:41 sjohnson1 joined #perl6
17:42 sjohnson joined #perl6
17:43 jnthn http://gist.github.com/120573 # current dispatcher progress
17:46 * jnthn -> dinner
17:51 alanhaggai joined #perl6
18:07 pochi rakudo: say :2<1.1>
18:07 p6eval rakudo 764684: OUTPUT«1␤»
18:07 pochi rakudo: say +":2<1.1>"
18:07 p6eval rakudo 764684: OUTPUT«1.5␤»
18:13 Chillance joined #perl6
18:15 unitxt_ joined #perl6
18:28 iblechbot joined #perl6
18:29 beggars joined #perl6
18:35 TimToady lichtkind: no, that wouldn't work at all, a macro must either return a string or an AST
18:36 TimToady so you could say macro a4 { '$a = 4' } though that wouldn't be hygienic
18:37 TimToady or you could say macro a4 { quasi:COMPILING { $a = 4 } } and that would be hygienic
18:37 lichtkind but the final say would then say 4?
18:37 TimToady yes
18:37 TimToady in either case
18:37 lichtkind thanks a lot i slowly get it
18:37 TimToady but setting outer vars like that is not good practice
18:38 lichtkind im currently reading into the slang stuff
18:38 lichtkind TimToady: of cource not but i comprehend things by stressing edges
18:38 TimToady usually it's better to use state vars if you can
18:39 lichtkind i had no practical usage in mind
18:39 lichtkind thanks
18:40 TimToady note that by default a4 would likely parse as a listop
18:41 TimToady you can force it differently with macro term:<a4> and such
18:41 TimToady or with "is parsed"
18:41 sjohnson joined #perl6
18:41 TimToady not that anyone really implements that yet
18:42 lichtkind why would it parse as listop?
18:43 lichtkind i know
18:47 TimToady pochi: you should rakudobug that
18:51 TimToady pugs: say :2<1.1>
18:51 p6eval pugs: OUTPUT«1.5␤»
18:51 TimToady pugs: say +":2<1.1>"
18:51 p6eval pugs: OUTPUT«0␤»
18:51 TimToady pugs has the opposite problem :)
18:52 jnthn If you feed your code to enough Perl 6 implementations, one of them will probably give the right answer. ;-)
18:52 TimToady throw in a few rands, and one of them will probabl give the right answer eventually
18:53 TimToady use MONKEY_TYPING
18:54 TimToady that's funnier than MONKEY_PATCHING, so we should change it
18:54 jnthn ;-)
18:54 TimToady and it's supposed to be a joke on DUCK_TYPING anyway
18:55 sjohnson joined #perl6
18:55 sjohnson 蜘蛛
18:55 jnthn Well, you has a commit bit. ;-)
18:55 jnthn (Plus we didn't implement MONKEY_PATCHING yet in Rakudo ;-))
18:56 pugs_svn r26972 | masak++ | [S05-regex.pod] moved ending paren for clarity
18:59 wknight8111 joined #perl6
19:00 pugs_svn r26973 | lwall++ | s/MONKEY_PATCHING/MONKEY_TYPING/ because it's funnier, and goes with duck typing
19:01 kate21de joined #perl6
19:01 pochi it seems the :N<...> has a long way to go before it complies to the spec
19:01 pochi rakudo: say pi - e
19:01 p6eval rakudo 764684: OUTPUT«0.423310825130748␤»
19:01 TimToady but then how does + do it?
19:02 pochi rakudo say e - pi
19:02 pochi rakudo: say e - pi
19:02 p6eval rakudo 764684: OUTPUT«2.71828182845905␤»
19:03 TimToady rakudo: say e() - pi
19:03 p6eval rakudo 764684: OUTPUT«-0.423310825130748␤»
19:03 TimToady there's your bug
19:03 TimToady e is a sub, not a value
19:03 TimToady not suposed to look for arguments
19:03 TimToady rakudo: say pi()
19:03 p6eval rakudo 764684: OUTPUT«3.14159265358979␤»
19:03 TimToady that should fail, really
19:04 TimToady say 3.14()
19:04 TimToady rakudo: say 3.14()
19:04 p6eval rakudo 764684: OUTPUT«invoke() not implemented in class 'Float'␤in Main (/tmp/FCUa04pOcY:2)␤»
19:05 TimToady rakudo: say e(pi)
19:05 p6eval rakudo 764684: OUTPUT«2.71828182845905␤»
19:05 TimToady rakudo: say e(-pi)
19:05 p6eval rakudo 764684: OUTPUT«2.71828182845905␤»
19:05 TimToady say e("what is the signature of e?")
19:05 pochi rakudo: say pi(1)
19:05 p6eval rakudo 764684: OUTPUT«too many arguments passed - 0 params expected␤in Main (/tmp/ud1JiCDIDV:2)␤»
19:05 TimToady rakudo: say e("what is the signature of e?")
19:05 p6eval rakudo 764684: OUTPUT«2.71828182845905␤»
19:06 TimToady still, pi should parse as a listop even if it's a sub ()
19:07 TimToady perl 6 doesn't play parsing tricks on normal subs like perl 5 does
19:07 TimToady sub foo ($) isn't a unary prefix like it is in p5
19:08 TimToady anyway, pi and e should be parsing as terms, not function calls
19:10 pochi seems like it's known: ##   XXX: cheat until we get term:pi, term:rand, term:undef, etc.
19:11 masak joined #perl6
19:11 * masak does a somersault, and lands on his feet in #perl6
19:12 masak MONKEY_TYPING++
19:12 masak jnthn: ping
19:12 renormalist joined #perl6
19:13 jnthn masak: ahoj!
19:13 jnthn masak: or, "hej hej" :-)
19:13 masak jnthn: whoz op? weather still rainy?
19:13 jnthn Well, not rainy as much as forecast today.
19:14 jnthn But still not invitingly sunny.
19:14 masak jnthn: the weather is forecast today? I should hope so! :P
19:14 masak jnthn: anyway, what I really wanted to bug you about was this new change to bless.
19:15 masak TimToady: and maybe you, depending on whether you're involved. :)
19:15 jnthn masak: OK. :-)
19:16 masak jnthn: the simplest question first: is the description on bless in S29 out-of-date?
19:16 masak (S29:236)
19:16 masak er, S29:263...
19:16 jnthn masak: I only updated S12 and didn't know S29 has a reference so most probably
19:17 jnthn let me confirm
19:17 jnthn masak: yes
19:17 masak ok.
19:17 masak I can fix...
19:17 jnthn Actually very wrong
19:17 masak ...provided you explain to me what changed. :)
19:17 jnthn C<bless> is only available as a method which can be called on a prototype
19:17 jnthn object
19:18 Muixirt are multidimensional arrays on the horizon?
19:18 jnthn You can call bless on anything, so far as I'm aware.
19:18 jnthn our Object multi method bless( Object::RepCandidate $candidate )
19:18 jnthn That's...eww.
19:18 jnthn OK, bless is not multi
19:19 masak Muixirt: have you checked docs/ROADMAP?
19:19 jnthn method bless(Object::RepCandidate $candidate, *@protos, *%init_args)
19:19 Muixirt last time i looked there was nothing
19:20 masak Muixirt: I just did, and while it doesn't explicitly mention multidimensional arrays, there might be additions (in the past week, I think) that relate to that.
19:20 jnthn And if you pass * for $candidate it'll call self.CREATE() for you.
19:20 masak Muixirt: pmichaud updated the ROADMAP before the release last Thursday.
19:20 masak jnthn: that's nice.
19:20 jnthn masak: But the big thing is that you can't not pass a candidate now.
19:21 masak jnthn: exactly. the errors in Druid yesterday made that quite clear for me.
19:21 jnthn masak: There was just no good way to have it not getting confused with a possible auto-vivifying proto.
19:21 masak I see.
19:21 masak probably for the best anyway.
19:21 masak jnthn: btw, do we have BUILD yet in any usable sense?
19:22 masak hm, maybe I should just try it and see... :)
19:22 jnthn masak: Various other things have been cleaned up in that area too. Once I get this dispatcher refactor checked in, BUILD is very high on my hit list.
19:22 masak ok.
19:22 jnthn BUILD is less broken but still wrong.
19:22 masak jnthn++
19:22 jnthn I did one refactor that was needed to be able to do BUILD right.
19:22 jnthn But BUILD itself now needs fixing.
19:23 masak aha.
19:23 jnthn The dispatcher refactor is going to land soonish, I hope.
19:23 jnthn I've done on features, just tracking down bugs.
19:23 masak ok, I'll go ahead and change S29 now as per your clarifications.
19:23 jnthn I've get deference working reasonably well now.
19:24 masak jnthn: I always have problems with deference. :P
19:24 jnthn nextsame/nextwith/callsame/callwith etc
19:24 jnthn :-P
19:24 masak ooh, nextsame! \o/
19:24 jnthn It defers up the hierarchy but also through the multi candidates. :-)
19:24 jnthn As in, both.
19:24 jnthn And lazily builds the deference list too.
19:25 jnthn So we only have to go produce it when someone does nextsame etc.
19:25 masak that's nice.
19:28 masak aren't "prototype objects" called "type objects" nowadays?
19:28 pmichaud weather is beautiful here today.  I'm not sure why I'm still indoors.
19:29 masak weather is lovely here. I've been out biking for a total of more than an hour, I've helped a colleague move house, and I've had sushi. this might be one of the top 20 best days of my life.
19:30 masak er, thus far.
19:30 jan_ joined #perl6
19:30 * jnthn tries not to spoil it
19:33 masak jnthn: I'm sure you won't. :) yesterday was nice too. I'm aware that the hackathon wasn't too noticeable here in #perl6, but I do think people came away with a very positive picture of Perl 6 and Rakudo.
19:34 Tene masak: :)
19:34 jnthn Great. :-)
19:34 unitxt joined #perl6
19:34 masak jnthn: the *@protos param in the new bless signature, wut's it do?
19:35 * masak makes some rooibos
19:35 jnthn masak: Holds things like Animal{ :blood<warm> }
19:36 jnthn masak: Basically auto-vivifying protos used to initialize parent classes.
19:36 masak whoa, so that's not just syntactic sugar? :)
19:37 jnthn No.
19:37 masak jnthn: does that restrict the order of pairs given? must one pass the *@protos args first?
19:37 sjohnson joined #perl6
19:39 jnthn masak: It's just a call, so whatever the normal answer is for arg passing. :-)
19:39 jnthn I think you would need them first but I can't remember exactly.
19:39 masak I think so too...
19:40 masak at least, you wouldn't be allowed to mix them, I'm pretty sure of that...
19:41 sjohnson joined #perl6
19:43 synth joined #perl6
19:44 masak jnthn: so, an Object::RepCandidate is some sort of starting state of a not-yet-blessed object?
19:45 masak jnthn: I've written self.CREATE() there in all three calls in Druid.
19:45 masak is there a good example of when I would want to write something else?
19:45 jnthn masak: That's probably not really right either.
19:45 masak jnthn: well, it worked.
19:45 * mberends teleports between computers
19:45 jnthn When you wanted a different underlying representation.
19:45 jnthn Rather than P6opaque
19:45 masak jnthn: yes, but when would that be?
19:46 mberends joined #perl6
19:46 jnthn For example, if you were doing some GTK interop thing and wanted to have a GObject rather than a P6opaque
19:46 TimToady or you want a P5hash to share with P5
19:46 masak aha. that's very social of Perl 6.
19:46 jnthn Right.
19:46 TimToady or a PyDict, or whatever
19:47 jnthn It doesn't Just Happen right off of course, there's an (implementaiton specific) representation API.
19:47 TimToady or a Cstruct
19:47 Matt-W I hadn't thought of using a GObject as the underlying object type for bindings there
19:47 Matt-W I kind of assumed you'd have a member which points to the GObject and proxy to it
19:47 TimToady we're trying to avoid the P5 difficulty of having to translate objects back and forth
19:48 Matt-W It's a very interesting idea
19:48 TimToady yes, but if you're going to delegate to another object that's identical in the abstract, why not just *be* that object?
19:48 Matt-W Yes indeed, why not
19:49 TimToady as long as the accessors all work as expected from the outside
19:49 Matt-W I'm used to working in languages where you can't do that though
19:49 TimToady me too, which is why p6 is different :)
19:49 Matt-W :)
19:49 masak :)
19:51 jnthn In Rakudo, the glue code around the object to make it match the repr API will probably be a PMC that has a GObject as its underlying struct in this case, I suspect.
19:52 pugs_svn r26974 | masak++ | [S29-functions] chasing spec changes to C<bless>
19:52 Matt-W mmm
19:53 mberends masak: updated bless calls in proto with self.CREATE()
19:53 Matt-W hopefully it won't prove too difficult to ensure that gobject bindings are usable for all parrot hlls
19:53 Matt-W and are also generated from gobject introspection data, of course :)
19:53 masak mberends: bless you, sir.
19:54 jnthn mberends: Well, if the introspection data there is sufficient to let you look up a method by name, you'd probably not need a binding as such to use it from Perl 6.
19:54 Matt-W it's enough to let the javascript bindings work without having to pregenerate anything at all
19:55 jnthn oops, I meant Matt-W :-)
19:55 * mberends stops frowning ;)
19:55 jnthn At least I wasn't doing /kick this time when I got the wrong nick. :-/
19:55 Matt-W the curse of the m<tab> strikes again
19:55 Matt-W yes I think kicking is a slightly severe penalty for mentioning javascript
19:56 jnthn Yeah, then I just tried ma<tab> and got masak :-P
19:56 Matt-W sorrrrry
19:56 masak it's too crowded here at M.
19:56 jnthn Matt-W: I kicked somebody by accident earlier today because I did /kick, tab complete, had tab-completed them before and knew they were first hit...but pmichaud++ had already kicked them so I kicked somebody else by mistake.
19:56 Matt-W woops
19:56 TimToady masak: there are a couple of bugs noted about an hour ago, if you're in bug submission withdrawal
19:57 maw no that doesn't help
19:57 masak TimToady: oi, denk je wel!
19:57 TimToady rakudo: say :2<1.1>
19:57 p6eval rakudo 764684: OUTPUT«1␤»
19:58 masak TimToady: that's the bug?
19:58 TimToady rakudo: say pi("wtf")
19:58 p6eval rakudo 764684: OUTPUT«too many arguments passed - 0 params expected␤in Main (/tmp/oECZKc8km6:2)␤»
19:58 TimToady rakudo: say e("twf")
19:58 p6eval rakudo 764684: OUTPUT«2.71828182845905␤»
19:58 TimToady that one
19:58 masak twf?
19:58 TimToady yes, vs
19:58 TimToady rakudo: say +":2<1.1>"
19:58 p6eval rakudo 764684: OUTPUT«1.5␤»
19:58 TimToady which is correct
19:58 masak oh.
19:58 * masak submits that one
19:59 masak TimToady: and the pi vs e thing? which one is the bug?
19:59 TimToady neither pi nor e should really be looking for arguments
19:59 TimToady both, really
19:59 masak I see.
19:59 * masak submits one more
19:59 TimToady but e seems to have a sig of ($) or some such
19:59 pochi I think that is RT#56366
19:59 TimToady rakudo: say e(1,2)
19:59 p6eval rakudo 764684: OUTPUT«2.71828182845905␤»
19:59 TimToady actually, probably no sig
20:00 TimToady so *@_, but that's wrong too
20:00 TimToady rakudo: say e - pi
20:00 p6eval rakudo 764684: OUTPUT«2.71828182845905␤»
20:00 masak pochi: aye, you're right. I'll put it under that #56366.
20:00 TimToady thanks
20:00 pochi masak: e can be "fixed" in the same way as pi has been fixed
20:00 mberends is that being evaluated as e( - pi ) ?
20:01 TimToady yes
20:01 mberends thx :)
20:01 pochi I tried playing with the grammar rules, but couldn't figure it out :)
20:01 TimToady they need to parse as a simple term, like type names
20:01 sjohnson joined #perl6
20:02 TimToady only they happen to be defined
20:04 masak they remind me a lot about some kind of singletons.
20:04 pochi rakudo: say :2<3>
20:04 p6eval rakudo 764684: OUTPUT«3␤»
20:04 pmichaud in earlier versions of the spectests, both e() and pi() were treated as functions.
20:04 TimToady yes, brainrot carried over from p5 :)
20:05 pmichaud so rakudo implemented that way.
20:05 pmichaud We haven't updated to avoid that yet.
20:05 TimToady rakudo: say True - True
20:05 p6eval rakudo 764684: OUTPUT«0␤»
20:05 TimToady they should work like enums too
20:05 TimToady rakudo: say True()
20:05 p6eval rakudo 764684: OUTPUT«invoke() not implemented in class 'Boolean'␤in Main (/tmp/FrHCVeoCrC:2)␤»
20:05 TimToady good
20:06 pmichaud rakudo:  True = 4;  say True;
20:06 p6eval rakudo 764684: OUTPUT«4␤»
20:06 pmichaud :-P
20:06 TimToady so basically pi is a singleton enum
20:06 * Matt-W blinks
20:06 pmichaud Matt-W: they're just not constants yet :-)
20:06 TimToady rakudo: constant Foo = 3; Foo = 4; say Foo
20:06 p6eval rakudo 764684: OUTPUT«Cannot assign to readonly variable.␤in Main (/tmp/6esXlNKQMN:2)␤»
20:07 pmichaud right -- another place where a feature came later and we haven't fixed up booleans yet
20:07 masak pmichaud: I won't submit that one.
20:07 masak pmichaud: I know there are already tickets about constants.
20:07 masak (and their current inconstancy.)
20:07 pmichaud I can fix True/e/pi to be readonly, no problem.
20:07 masak "constants aren't what they used to be..."
20:07 TimToady anyway, these are all implemented differently, and they should tend to converge
20:08 pmichaud Rakudo lives by the principle of  "constants arent, variables won't"  :-)
20:08 TimToady all named constant values should pretty much work the same
20:08 sbp rakudo: say 3.sign
20:08 p6eval rakudo 764684: OUTPUT«Method 'sign' not found for invocant of class 'Int'␤»
20:08 pmichaud I think it's Pisces  :-)
20:08 TimToady not since we got into Aquarius
20:08 sbp hehe
20:09 sbp rakudo: say sign(3)
20:09 p6eval rakudo 764684: OUTPUT«1␤»
20:09 sbp ah, there we go
20:09 sjohnson joined #perl6
20:09 sbp oh, chuckle
20:09 sbp sign(...) is implemented in src/builtins/math.pir
20:10 sbp and apparently so is sin(...), which I've been tracking down
20:10 sbp but it's commented in the code as being "conjectural"
20:10 pmichaud sbp:  I'd be very happy to see those move into setting/
20:10 sbp I like that. conjectural-sin
20:10 sbp pmichaud: what is setting/ for?
20:10 masak rakudo: say sign(1i)
20:10 p6eval rakudo 764684: OUTPUT«1␤»
20:10 pmichaud Perl 6 encoded representations of builtin functions.
20:10 masak we still haven't fixed that. :/
20:11 sbp pmichaud: oh, you want to migrate from .pir -> .p6?
20:11 sbp rakudo: say roots(5)
20:11 p6eval rakudo 764684: OUTPUT«No applicable methods.␤in Main (/tmp/oYo7rZacuR:2)␤»
20:11 abra joined #perl6
20:12 sbp rakudo: say roots(25)
20:12 p6eval rakudo 764684: OUTPUT«No applicable methods.␤in Main (/tmp/olrvXwlQB7:2)␤»
20:12 sbp hmm
20:12 masak mberends: I look forward to not having to overload our .new methods at all in proto. (and in Druid)
20:12 sbp rakudo: use Math::Basic;
20:12 p6eval rakudo 764684: OUTPUT«Can't find ./Math/Basic in @*INC␤in Main (src/gen_setting.pm:438)␤»
20:12 pochi rakudo: say roots(25,2)
20:12 p6eval rakudo 764684: OUTPUT«5+0i-5+0i␤»
20:12 sbp ah
20:12 sbp rakudo: say roots(i, 2)
20:12 p6eval rakudo 764684: OUTPUT«Could not find non-existent sub i␤»
20:13 sbp rakudo: say roots(1i, 2)
20:13 p6eval rakudo 764684: OUTPUT«0.707107+0.707107i-0.707107-0.707107i␤»
20:13 viklund joined #perl6
20:13 masak rakudo: 1i.roots(4).say
20:13 p6eval rakudo 764684: OUTPUT«Statement not terminated properly at line 2, near ".roots(4)."␤in Main (src/gen_setting.pm:0)␤»
20:13 viklund masak: is proto supposed to work with release?
20:14 masak viklund: yes, especially the one it downloads...
20:14 viklund masak: well, it doesnt :/
20:14 masak rakudo: say 1i.sign()
20:14 p6eval rakudo 764684: OUTPUT«Statement not terminated properly at line 2, near ".sign()"␤in Main (src/gen_setting.pm:0)␤»
20:14 masak viklund: nopaste?
20:15 TimToady "No applicable methods" could be a lot more forthcoming in what it thought it was doing and why it failed
20:15 pmichaud TimToady: I agree; I wish Parrot gave us a way to do that.
20:15 viklund my guess is it's mberends latest commit...
20:15 sbp oh hey, pi is in here too:
20:15 sbp .sub 'pi'
20:15 sbp .param pmc x               :slurpy
20:15 sbp ## 0-argument test, RT#56366
20:15 sbp the bug's already noted inline
20:15 jnthn pmichaud: Well, Perl6MultiSub goes to some effort.
20:15 TimToady slurpy!?!
20:15 jnthn pmichaud: Only in the ambiguous case though.
20:15 masak viklund: oh, you're right, of course.
20:16 pmichaud Yes, slurpy :-)
20:16 mberends viklund, masak: yes, it's this bless change :/
20:16 masak viklund: the jnthn++ changes were post-release.
20:16 pmichaud Parrot doesn't give us a way to detect when a 0-arg sub is called with arguments.
20:16 sbp for what it's worth, here's e:
20:16 sbp .sub 'e'
20:16 sbp $N0 = exp 1
20:16 sbp .return ($N0)
20:16 sbp .end
20:16 pmichaud So pi() was doing a slurpy, and throwing an exception if called with args
20:16 masak mberends: we need to, um, revert that improvement. :/
20:16 pmichaud that's why
20:16 pmichaud rakudo: pi(3)
20:16 p6eval rakudo 764684: OUTPUT«too many arguments passed - 0 params expected␤in Main (/tmp/Hopgsh7MWn:2)␤»
20:16 pmichaud and
20:16 viklund oh well.
20:16 masak mberends: or we move it to a branch.
20:16 pmichaud rakudo:  e(3)
20:16 p6eval rakudo 764684:  ( no output )
20:16 jnthn PCC SUCKS!
20:17 pmichaud the pi() case does the check.  The e() case didn't do that yet.
20:17 jnthn uh, did I just shout that out loud?
20:17 pmichaud Fortunately I can eliminate it all and just make them constants now.
20:17 jnthn :-)
20:17 masak jnthn: PCC? is that a political party?
20:17 viklund masak, you could have a bleeding branch that you merge over at every release
20:17 jnthn masak: Parrot Calling Conventions
20:17 TimToady so maybe you should just register pi the way you register True
20:17 masak viklund: yes, let's try that.
20:17 pmichaud TimToady: right.  As I said, we just hadn't gotten around to that yet.
20:18 pmichaud And I was also sorta waiting to see how the other boolean issues fleshed out.
20:18 mberends masak, viklund : yes we'll need proto release and bleading branches
20:18 pmichaud Which I'm not sure they did yet :-|
20:18 masak jnthn: I hear those conventions can be quite lively. but it's nothing people want to be reminded of afterwards. :P
20:18 masak mberends: master is the release branch per default.
20:18 mberends nod
20:19 masak right now, November and proto target Rakudo releases.
20:19 masak (for somewhat different reasons)
20:19 viklund I'll fix that
20:19 masak viklund++
20:19 viklund with proto
20:19 masak nod.
20:19 masak suggested branch name: 'bleeding'
20:19 jnthn pmichaud: I'm getting weird exit-time segfaults in a few tests.
20:20 mberends whoz proto op rite nao ?
20:20 pmichaud jnthn: it's possible, yes.
20:20 masak mberends: I think the pumpkin sort of got lost, and re-materialized at your place when you made your last commit...
20:20 jnthn pmichaud: I'm not sure if it's my dispatcher work that's triggered them or if they indicate something wrong in it.
20:20 pmichaud jnthn: Lots of stuff happening in parrot-land that might be a cause
20:21 masak would anyone be terribly displeased if I just changed Num.sign to return something other than '1' for complex values?
20:21 sbp yeah, but I'd soon get over it
20:21 masak sbp: :)
20:22 sbp hmm. perhaps it should be 1i for imaginary values, and 1i+1 for complex values?
20:23 sbp because it'd seem strange making all the degrees of the aragand plane except for the reals a kind of homogenised second class citizen
20:23 sbp argand, even
20:23 sbp aragand was a LotR character. or something
20:23 masak sbp: well, I'd argue that if one wants something like that, one shouldn't call the method 'sign'.
20:24 sbp okay; then why return anything for complex values at all?
20:24 masak sbp: my thought exactly.
20:24 sbp hmm
20:24 masak sbp: 'undef' would suit my expectations.
20:24 masak because the meaning of 'sign' for a complex value is kind of not very defined.
20:25 pmichaud probably should fail somehow.
20:25 pmichaud (as in "return a failure condition")
20:25 masak good idea.
20:25 masak is that !FAIL in PIR?
20:25 pmichaud I suspect that Parrot's sign operation is returning a value
20:25 pmichaud so I wonder if it should fail in Parrot :-)
20:25 masak pmichaud: it does a cmp_num.
20:26 masak rakudo: say 1i <=> 0
20:26 pmichaud so, it thinks that 1i > 0
20:26 p6eval rakudo 764684: OUTPUT«Multiple Dispatch: No suitable candidate found for 'cmp_num', with signature 'PP->I'␤in Main (/tmp/v090QWXFmg:2)␤»
20:26 mberends viklund, masak: proto patch pushed for Rakudo Stockholm release
20:26 masak interesting...
20:26 sbp hmm
20:26 masak viklund: seems mberends beat you to it.
20:27 mberends pumpkin++
20:27 masak 哈哈
20:27 sbp masak: check this out:
20:27 sbp http://en.wikipedia.org/wiki/Negative_and_non-negative_numbers#Complex_signum_function
20:27 viklund ahh, well maybe he doesn't run tests.
20:27 TimToady rakudo: say +1i
20:27 p6eval rakudo 764684: OUTPUT«0+1i␤»
20:27 masak sbp: I've seen that.
20:27 masak sbp: note the wording "it's possible to..."
20:27 TimToady rakudo: say Num(1i)
20:27 p6eval rakudo 764684: OUTPUT«invoke() not implemented in class 'Float'␤in Main (/tmp/Dw0RMuchEN:2)␤»
20:27 pmichaud we don't do coercers like that yet
20:28 pmichaud rakudo: say +1i > 0
20:28 p6eval rakudo 764684: OUTPUT«1␤»
20:28 TimToady well, but if + is coercing to Num, how does it make a complex?
20:28 masak sbp: I'd prefer to think about what people will use 'sign' for, rather than how it can be beautifully extended.
20:28 pmichaud TimToady: I don't know what Parrot is doing with Complex numbers at the moment.
20:28 masak sbp: myself, I'll probably use 'sign', expecting -1, 0, or 1. and nothing beyond that.
20:28 sbp masak: well the problem is that you can use csgn for sgn tasks too
20:29 pmichaud TimToady: earlier in Dec/Jan the whole Parrot MMD system was redone, and our Complex number handling has never recovered.
20:29 sbp so if csgn is supported in future, that'll mean there's more than one way to d... oh, nevermind
20:29 masak sbp: :P
20:29 masak sbp: someone will write a module that re-allows sign to work on complex numbers, and everyone will be happy.
20:29 sbp :-)
20:30 masak except the ones who wanted it to be like that in core, but hopefully those will only be a minority, albeit a vocal one. :P
20:30 sbp I'll be happy as long as π works for pi
20:30 jnthn pmichaud: Heh, and I suspect Parrot's compex number handling might have changed again with the recent "oh yeah those MMD changes made verything slow let's change stuff" work.
20:30 pmichaud and Parrot's MMD handlers are all being changed again (even as we speak -- new commits this morning) so I'm not _too_ eager to try to decipher it
20:30 TimToady some people are never happy unless they have something to be unhappy about
20:30 jnthn lol
20:30 pmichaud jnthn: yes, exactly.
20:30 TimToady sbp: that's what 'use *' is for
20:30 masak o_O
20:31 sbp use *? is this like STAR?
20:31 * pmichaud wants a "use happy;" directive.  Oh wait, we already have that -- it's  "use v6;"
20:31 masak :D
20:31 sbp [[[
20:31 sbp Seriously, it's durn near impossible for one language to be better than
20:31 sbp another language at absolutely everything.  My favorite language is
20:31 sbp call STAR.  It's extremely concise.  It has exactly one verb '*', which
20:31 sbp does exactly what I want at the moment.  You know, kinda like the
20:31 sbp control box for Gigantor.
20:31 sbp ]]] - http://groups.google.com/group/comp.lang.perl/msg/af646f4ae85fcbe4
20:32 mberends that's DWIM in Perl, not (fully) implemented yet, but P6 gets close :)
20:33 masak Perl 6's DWIM is more refined than Perl 5's.
20:33 pmichaud jnthn:  okay, I'm totally and utterly confused.
20:33 masak it's a posh kind of DWIM.
20:33 pmichaud jnthn: when I switch Rakudo to use ucs2 for parsing instead of utf8
20:33 pmichaud jnthn:   then  "use Test;  plan 10;"   outputs "1..1"
20:34 jnthn wtf
20:34 pmichaud yeah.
20:34 lichtkind_ joined #perl6
20:34 TimToady 1\00
20:34 TimToady something cheating on the bytes
20:34 pmichaud TimToady: sure, I get that part.
20:34 jnthn pmichaud: I can see what would cause some...failures... :-S
20:34 pmichaud But I'm totally lost as to what would be cheating on the bytes.
20:34 pmichaud Because when we compile the code, the ucs2-ness "goes away"
20:35 jnthn pmichaud: The emitted PIR is incorrect, right?
20:35 pmichaud jnthn: I can't see where.
20:35 pmichaud ohhhhh wait, yes I can.
20:35 jnthn Oh.
20:35 pmichaud I know what it is.
20:35 jnthn So this happens when we run it?
20:35 jnthn Ah, OK.
20:35 pmichaud TimToady++ FTW
20:35 pmichaud Rakudo doesn't know how to numify ucs2 strings.
20:35 jnthn Oh.
20:36 jnthn Oops.
20:36 TimToady types, who needs 'em...
20:36 jnthn And doesn't check the encoding of the thing it's numifying?
20:36 pmichaud jnthn: right.
20:36 jnthn Encodings. Who needs 'em.
20:37 masak apparently not Rakudo.
20:37 * masak ducks
20:37 * TimToady monkeys
20:37 pmichaud I wonder if I can get Latin-1 to work.
20:38 sbp ugh, heathen encoding
20:38 * pochi concurs
20:38 TimToady no, not heathen, just infidel
20:38 * masak likes heaths
20:38 * pochi aims and shoots
20:38 sbp .ety infidel
20:39 phenny "1460 (adj., n.), from M.Fr. infidèle, from L. infidelis 'unfaithful,' later 'unbelieving,' from in- 'not' + fidelis 'faithful' (see fidelity)." - http://etymonline.com/?term=infidel
20:39 masak .ety heathen
20:39 phenny "O.E. hæðen 'not Christian or Jewish,' merged with O.N. heiðinn." - http://etymonline.com/?term=heathen
20:40 pmichaud In my weak defense, I don't think Parrot can numify ucs2 strings either, and I cargo-culted my code from Parrot.
20:41 pmichaud confirmed.
20:41 TimToady you shouldn't parrot Parrot
20:41 pmichaud I think I'm going to put that on my wall.
20:41 pmichaud from one Wall to another.
20:41 masak pmichaud: you have a Wall wall?
20:41 pmichaud masak: I will soon.
20:42 lichtkind__ joined #perl6
20:42 pmichaud http://gist.github.com/120630   # ucs2 encoding FAIL
20:43 jnthn FAIL
20:44 * pmichaud files parrotbug
20:45 jnthn pmichaud: maybe it'd be good to quickly commet on http://use.perl.org/~korpenkraxar/journal/39051 given you made some progress into working out why it's so slow?
20:45 pmichaud sure, I'll comment.
20:46 pmichaud I was going to reply once I had the bug fixed and had new timings to report, but maybe I'll reply now and then again when we do have the fix in place.
20:46 jnthn OK, just thought it might be good to be responsive-ish. :-)
20:46 pmichaud Agreed totally.
20:46 pmichaud thanks for the excellent suggestion.
20:47 jnthn OK, I'm down - other than the exit crash bug - to two test files with failures.
20:48 jnthn One fails in a minor way (2 tests fail and I think it shouldn't be so hard to debug why).
20:48 jnthn The other gets two tests in to its plan of 70 and segfaults.
20:48 jnthn So that could be rather harder to debug.
20:49 mberends re parrot optimization - does anyone ever test Rakudo on faster parrots? should it work?
20:49 pmichaud if Parrot works then Rakudo should.
20:50 pmichaud I've often found Parrot's optimized form to be not entirely stable on anything but x86 (32-bit)
20:50 FurnaceBoy :|
20:50 mberends ok, I'll give some of those parrot flags a try.
20:50 pmichaud much appreciated.
20:50 FurnaceBoy pmichaud, that's borne out by test suite,right?
20:51 jnthn I don't build optimized because AFAIK I can choose between faster or having debug symbols
20:51 jnthn And I kinda like to have the latter handy. :-)
20:51 pmichaud FurnaceBoy: how do you mean?
20:52 FurnaceBoy pmichaud, that should be observable in test results?
20:52 FurnaceBoy pmichaud, or is it anecdotal? just curious
20:53 pmichaud FurnaceBoy: that's my (anecdotal) experience when trying to use Parrot on 64-bit
20:53 pmichaud I haven't tried recently, but I haven't seen much to indicate that it would have changed.
20:53 FurnaceBoy pmichaud, are there tests which would quantify the failures between platforms?
20:53 pmichaud FurnaceBoy: I suspect yes, but I don't know if that's the case.
20:53 FurnaceBoy ah
20:53 FurnaceBoy ok thx:)
20:53 pmichaud We just need people on 64-bit platforms to try Parrot with the --optimize flag and see what happens, I guess.
20:54 pmichaud Last time I tried --optimize on a 64-bit platform, Parrot didn't even build.
20:54 pmichaud YMMV
20:54 FurnaceBoy hell I could do that if I knew what to run to exercise it :)
20:54 * FurnaceBoy has access to sparc64 and amd64
20:54 pmichaud in a parrot directory
20:54 pmichaud make realclean; perl Configure.pl --optimize; make    # I think
20:54 FurnaceBoy oh, and ppc64
20:54 pmichaud look at the options to Parrot's Configure.pl for more details
20:55 pmichaud the parrot binary also has a -O flag, I think -- to use it:
20:55 pmichaud "parrot/parrot -O perl6.pbc hello.p6"
20:57 * jnthn afk for a bit
20:59 mberends that may be --output-pbc. -O is Optimize according to parrot/docs/running.pod
21:01 mberends oh, -O means same as -O1 (optimizations without life info (e.g. branches))
21:05 fridim_ joined #perl6
21:10 cognominal joined #perl6
21:10 pmichaud jnthn: http://use.perl.org/comments.pl?sid=43083&amp;cid=68873
21:12 mberends pmichaud: more on features than speed, surely
21:12 pmichaud mberends: see my reply to my own comment at the bottom :-)
21:13 pmichaud (I already caught that, but too late to edit it )
21:14 DanielC pmichaud: Rakudo development has been focused on speed??
21:14 mberends pmichaud++ # DanielC, the typo is corrected at the end
21:15 amoc joined #perl6
21:15 DanielC mberends: Which typo?
21:15 amoc left #perl6
21:15 mberends features <-> speed
21:15 DanielC ah
21:15 masak mberends: I assume that you've also been following the recent installer/packager CPAN-replacement discussiong with some interest.
21:16 mberends masak: yes, including an invitation to proto developers to interact with CPAN developers :)
21:16 pmichaud yes, I wish use.perl gave me a way to edit my comment.  Oh well.
21:17 masak mberends: indeed. :)
21:17 pmichaud that's what I get for writing a post while I had three other things going on :-|
21:18 masak mberends: don't know what the CPAN developers might gain from interacting with us, though. maybe they too have been reached by the Nobel Peace Prize disinformation...
21:18 masak mberends: it would be another thing entirely if proto did the version/author tricks that S11 promises.
21:18 masak but it doesn't. and I doubt it ever will.
21:20 DanielC pmichaud: Is the postfix thing fixed? Or is it something the devs still need to look at?
21:20 DanielC s/postfix/postfix:<++>/
21:22 * masak -> sleep
21:25 pmichaud DanielC: not fixed yet -- I'll look at it later tonight or early tomorrow.
21:25 DanielC ok
21:25 DanielC pmichaud: It's amazing that ++ would have such a drastic effect in performance.
21:26 DanielC If you got 80% savings by removing it, then that means it slows down Rakudo by a factor of 5...
21:26 pmichaud DanielC: it's just because the implementation has had several things piled on top of it as the spec has changed
21:26 pmichaud DanielC: well, it only slows down Rakudo in those places where Rakudo heavily depends on ++
21:26 pmichaud that's not as much as you might think :-)
21:27 DanielC Does that include substr() and regexes by any chance? Those are dog slow on Rakudo.
21:27 dfort joined #perl6
21:27 pmichaud in this case postfix:<++> dominated the time simply because there aren't that many operations in the program
21:27 pmichaud a much larger program that doesn't use postfix:<++> wouldn't see as significant a slowdown
21:28 DanielC substr() is *especially* slow on Rakudo. It is incredible.
21:28 pmichaud yes, we know about that.  That's partially due to Parrot's implementation of strings.  It's also partially due to the substr function not being written especially well.
21:29 DanielC I noticed the problem when I wrote k-nucleotide benchmark (which is all about substr).
21:30 DanielC I had to cut the input file by 80% just to make the benchmark run in less than 3 minutes.
21:30 pmichaud where's the benchmark?  That could be another case of where we think the slowdown is is actually somewhere else.
21:31 DanielC perl6-examples/shootout/k-nucleotide.*
21:31 DanielC perl6 k-nucleotide.p6.pl < k-nucleotide.input
21:33 DanielC The benchmarks all include the Perl 5 version so you can compare.
21:33 pmichaud why the .subst?
21:34 pmichaud $sequence = $sequence ~ lc $line.subst(/\n/,'');
21:34 DanielC To get rid of \n characters.
21:34 pmichaud lines from input are autochomped
21:34 DanielC No they are not.
21:34 pmichaud then that's a bug.
21:34 DanielC Remove the .subs and add a "say $sequence"
21:35 pmichaud well sure, say outputs a newline
21:35 DanielC no, no no
21:35 DanielC I mean it will output a newline for every line of input.
21:35 pmichaud okay, checking.
21:35 pmichaud (I need to rebuild rakudo first)
21:36 DanielC k
21:36 explorer__ joined #perl6
21:36 DanielC Just put a "say $sequence; exit;" after the while loop (so you are not left waiting for 3 minutes for the benchmark to finish).
21:39 pmichaud yes, .substr will be very slow in this case because we're dealing with large utf8 strings.
21:39 pmichaud heh
21:40 pmichaud *and* we're using ++
21:40 DanielC :-)
21:40 DanielC indeed
21:41 DanielC Will += 1 run faster?
21:41 pmichaud it might, but let me fix ++ first
21:41 DanielC yeah
21:41 pmichaud the big speed improvement would come from switching to ascii instead of utf8
21:41 DanielC how do you do that?
21:41 pmichaud I'm not sure there's a way to do that yet.
21:42 DanielC ok
21:42 pmichaud But we can add one.
21:43 pmichaud when I remove the .subst, it still comes out as all one line.
21:43 DanielC ???
21:43 * DanielC tests
21:44 pmichaud http://gist.github.com/120644
21:45 DanielC I don't understand...
21:45 pmichaud are you on win, mac, or linux?
21:45 DanielC I swear that I had \n's before.
21:45 DanielC Linux, and the \n's are gone.
21:45 pmichaud okay then.
21:45 DanielC Wait, does $*IN.slurp retain the \n's?
21:45 pmichaud yes.
21:45 DanielC ah
21:46 pmichaud .slurp gives the entire file.
21:46 pmichaud .get and .lines autochomp
21:46 DanielC I added that .subst earlier on, when I was using .slurp
21:46 pmichaud also, it might be quicker to do the lc at the end instead of on each input line
21:46 amoc joined #perl6
21:46 pmichaud but probably not a significant difference here
21:46 DanielC But I found that the two while-loop method made the program run faster.
21:46 pmichaud reading the file runs reasonably quickly on my system
21:47 DanielC Reading the file is not the slow part of the program. It's the rest.
21:48 DanielC I trimmed the input by 80%, don't forget that.
21:48 pmichaud right, I'm not forgetting it.
21:48 * DanielC is waiting for the program to finish
21:50 DanielC Ok on my system it takes... 112.66s user 1.92s system 80% cpu 2:22.13 total
21:51 pmichaud on mine it takes  1m0  real   0m59  user  0m0.8 sys
21:51 DanielC Perl 5 takes 0.04s user 0.01s system 89% cpu 0.053 total
21:51 pmichaud (and this is my slow computer :-)
21:51 DanielC My machine is probably slower than yours.
21:51 pmichaud well, I'm sure perl will be a lot faster at the moment.  :-)
21:51 pmichaud okay, let's see if I can fake ascii encoding.
21:52 DanielC Yeah, Perl 5 will be faster, but a factor of 11,266 times faster is a bit more than I'd expect. :)
21:52 pmichaud it's not more than I'd expect
21:52 pmurias perl6: role Foo {has $!foo}
21:52 p6eval elf 26974: OUTPUT«Parse error in: /tmp/Eps0ETju5z␤panic at line 1 column 10 (pos 10): Missing right brace␤WHERE: role Foo {has $!foo}␤WHERE:          /\<-- HERE␤  STD_red/prelude.rb:99:in `panic'␤  STD_red/std.rb:255:in `_block_rest'␤  STD_red/std.rb:242:in `block in block'␤
21:52 p6eval ..STD_red/prelude.rb:52:i…
21:52 p6eval ..pugs, rakudo 764684:  ( no output )
21:54 pmurias rakudo: role Foo {method hi {say $!foo}};class Bar does Foo {has $.foo};Bar.new(foo=>"hi").hi;
21:54 p6eval rakudo 764684: OUTPUT«hi␤»
21:54 pmurias rakudo: role Foo {has $!foo;method hi {say $!foo}};class Bar does Foo {has $.foo};Bar.new(foo=>"hi").hi;
21:54 p6eval rakudo 764684: OUTPUT«Conflict of attribute '$!foo' in composition of role ''␤in Main (/tmp/mnWzvOMvYg:2)␤»
21:54 pmichaud hmmm, switching the encoding didn't change things much.
21:55 DanielC pmichaud: My bad, Perl 5 is only 2,680 times faster.
21:55 DanielC pmichaud: re ascii:  :-(
21:56 pmichaud I'm very surprised it didn't make a difference.
21:56 pmichaud That means something else is slowing it down.
21:57 pmichaud it wouldn't surprise me too much if it's the ranges that are slowing things down
21:57 pmichaud checking.
21:58 pmichaud actually, the way ranges are handled now, it's even *more* postfix:++
21:58 mberends rakudo 'make test' using parrot -O1 perl6.pbc is not significantly faster, and -O2 fails many tests
21:58 pmichaud I guess I'll have to clean up postfix:++ when I return :-)
21:58 DanielC heh
21:58 pmichaud mberends++  # thanks, that's what I suspected
21:58 pmichaud (we're about to leave for dinner in 10 min)
21:58 DanielC pmichaud++ for finding the problem.
21:59 DanielC enjoy your meal
21:59 ejs1 joined #perl6
22:04 DanielC It really annoys me when Mark O. implies that I'm being lazy by not reading his papers.
22:05 DanielC When I post a proposal, I try very hard to be succinct and clear, and not waste the reader's time.
22:06 DanielC He also gives me the impression that he has already decided everything and is just waiting for people to follow along.
22:10 Khisanth how else are you going to get people to implement stuff you don't have time for? :)
22:10 DanielC :-)
22:12 payload joined #perl6
22:13 viklund ahh, finally, now there's a "bleeding" branch of proto
22:16 mberends viklund: had proto been broken for you on other occasions before today?
22:18 viklund mberends: might have happened, yes
22:18 viklund no, it has definitely happened
22:19 viklund can't say exactly when or how though, I've always fixed it by changing to bleeding...
22:19 * mberends guessed so. glad a branch will help :)
22:20 viklund I'm thinking of making the default config file for the bleeding branch set Rakudo revision to bleeding aswell
22:21 mberends that makes sense
22:22 viklund yes, I commited that too now...
22:24 * viklund thinks that sweden is too hot right now...
22:24 DanielC viklung: What's the temperature? Where in Sweden are you?
22:25 viklund oh, today it was around 25 degrees Celsius here in Uppsala
22:26 mberends having worked in Riyadh at 50 deg Celsius, hot Sweden is hard for me to imagine :)
22:26 DanielC 25 isn't so bad... its warm, but tolerable.
22:26 jnthn 25 dry and 25 humid can be quite different though. :-)
22:26 DanielC true
22:27 DanielC viklung: 25 dry or 25 humid?
22:27 viklund it's not particularly humid here
22:27 jnthn :-)
22:27 viklund I like it when I can clothe meself, ~17 is the sweetspot
22:27 viklund colder is ok
22:27 viklund warmer, not so much
22:27 DanielC I like ~17 a lot.
22:27 jnthn viklund: I kinda know how you feel. I'm starting to think I prefer cold weather to hot weather.
22:28 DanielC I definitely prefer cold weather to hot weather.
22:28 jnthn What I do _not_ like is wet weather.
22:28 jnthn Where snow only half counts as wet. ;-)
22:28 jnthn But rain...bleh.
22:28 DanielC My favourite is the 15-20 region.
22:29 jnthn For me: warm enough to be able to sit outside, in a t-shirt, and enjoy a beer without feeling boiling but without feeling chilly, is just nice.
22:29 jnthn 20ish is fine for that.
22:29 viklund wet is ok as long as it's raining and the temperature is above 15
22:29 DanielC For my honey moon we are going to Venezuela (where all my family is). Close to sea level the temperature is 35 or so.
22:29 jnthn I holidayed in Arizona in July once.
22:30 jnthn That was...hot.
22:30 viklund I've been thinking of moving to Bergen, they almost bet their rainrecord a couple of years ago
22:30 jnthn Bergen is very pretty.
22:30 jnthn But the rain would drive me nuts.
22:31 viklund over 100 consecutive days of raining
22:32 DanielC jnthn: I never thought I'd mind rain much, but after living 3 years in Washington D.C. (a swamp region) I got to realize how much I truly hate regular rain.
22:32 jnthn DanielC: The rain was one of the things that irked me most about British weather.
22:32 mberends Edinburgh gets only about 5 totally dry days per year
22:32 viklund no I tell a lie, it was 85 days
22:32 jnthn Much more so than the temperatures.
22:32 DanielC jnthn: I lived in Britain for 2 years. It rains a lot more in Washington D.C.
22:33 DanielC hate it
22:33 xinming_ joined #perl6
22:33 DanielC It felt like it rained every other day
22:33 jnthn DanielC: I lived in Britain for 22 years, and can only imagine...
22:33 jnthn Actually closer to 23...
22:34 DanielC My perception may be skewed by the fact that in D.C. I used my bicycle to go everywhere (I didn't have a car).
22:34 DanielC So the rain really affected me.
22:34 DanielC But I still think that D.C. is worse.
22:34 jnthn I don't (can't) have a car, so anywhere I go from home is on foot, at least so far as the tram/bus/train stop.
22:35 DanielC May I ask why you can't have a car?
22:35 DanielC Technically I don't have a car either, but my fiancee has a car, so I get most of the benefit.
22:36 jnthn I have an eye condition (retina rather than lens, so unfixable) that means I don't have sufficient vision to safely drive.
22:36 DanielC ok
22:37 jnthn Basically, a lower density of effective rods/cones than people normally have, so I essentially see in low resolution.
22:37 DanielC I have a retina condition, but it doesn't (yet) prevent me from being able to drive.
22:37 DanielC ah
22:37 jnthn Mine is genetic, so I've always had it. Thankfully, so far, it's been stable.
22:37 DanielC my one is very different (my retina is getting very thin, so it could one day detach)
22:39 jnthn Yes, very different.
22:39 DanielC y
22:40 DanielC afk
22:47 viklund good night
22:54 LadyLuna1y joined #perl6
23:15 snarkyboojum joined #perl6
23:26 FurnaceBoy_ joined #perl6
23:26 [particle] joined #perl6
23:29 lichtkind__ when i see something like "...".perl , will be there a command like " ... ".ruby inside a rakudo program?
23:30 lichtkind__ good night
23:31 Khisanth seems like that would be something a separate module would provide ...
23:32 kate21de1 joined #perl6
23:32 jnthn Aye, it could easily monkey type and add a .ruby to everything... ;-)
23:35 meppl joined #perl6
23:39 sjohnson joined #perl6
23:52 lichtkind jnthn: what means monkey type?
23:53 [particle]1 joined #perl6
23:55 jnthn lichtkind: Adding methods to an existing class.
23:56 lichtkind why sounds that term that bad :) ?
23:56 lichtkind isnt what roles are for? :)

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

Perl 6 | Reference Documentation | Rakudo