»ö« | perl6-projects.org/ | nopaste: sial.org/pbot/perl6 | evalbot: 'perl6: say 3;' | irclog: irc.pugscode.org/ | UTF-8 is your friend!
Set by Tene on 14 May 2009.
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
DanielC 17 functions to connect to a database in the standard library...
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
DanielC: of course! one for every type of database! how else would you possibly do it
DanielC :-)
TimToady we're hoping to have a distribution model that bundles these things in ready-to-use packages 00:02
but it's not the job of "kernel" p6 to provide these distributions
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"
Eevee well, thinking of the pov of $enduser who doesn't care who does what
pmichaud (currently it's a kernel implementation, obviously)
Eevee a broader reliable base library would be nice, however it ends up being distributed 00:04
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
or Microsoft does for Windows :)
DanielC TimToady: Really? You want "distributions" of Perl?
TimToady for some value of "supporting"...
yes, that's been the plan for years 00:06
DanielC ok
TimToady it scales better than the p5 model
perhaps CPAN6 should be viewed as a "distribution" in this sense
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.
TimToady but certainly the current CPAN model has its limitations
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?
DanielC On the other hand, it means it's a novel idea.
TimToady yes, but one group supplies gcc, while another supplies glib
pmichaud Eevee: for most such questions, I substitute "perl 6" with "linux" and see how that works
"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 :)
DanielC TimToady: yes, so there is no "C distribution" that gives you a compiler plus the distributor's favourite C libraries.
Eevee pmichaud: wait 20 years for a particular distribution to become a shining star and overtake the name "linux" in mindshare? :(
TimToady well, arguably cygwin kinda works that way 00:09
pmichaud so does MSVC
Eevee pmichaud: there is still an LSB too
pmichaud and Turbo Pascal certainly worked that way
DanielC ok
unitxt <-- newbie, nuff said....thanks for the 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. :)
Eevee linux-plus-OS and C both have some list of things that ought to work in any distribution
pmichaud unitxt: you're welcome
TimToady unitxt: ditto
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 )
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"; } }
p6eval rakudo 92c78f: OUTPUT«Statement not terminated properly at line 2, near "{ print \"T"␤in Main (src/gen_setting.pm:0)␤»
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?
pmichaud I would say "selecting which libraries to bundle" instead of "own set"
DanielC ok
pmichaud there would be a common cornucopia of libraries, but different distributions would select the subset that best fits their clients' needs. 00:12
and perhaps develop a few special-purpose libraries that can be added to the cornucopia
DanielC subset or superset?
pmichaud subset
I don't know anyone who wants to install all of CPAN
DanielC looks up cornucopia 00:13
pmichaud "universe" could be another term.
DanielC ah
DanielC 's first guess was "core"
Eevee that will be great as long as CPAN6 is perfect 8) 00:14
00:14 patman000 joined
DanielC So Oracle might make Solaris' Perl come with the DBI module. 00:14
Bad example.
Linux distributions already do that sort of thing I'm sure.
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
preg_* uses PCRE, a different regex engine 00:17
DanielC I know...
pmichaud mb_egrep_* is a regex engine that can work on various charsets
DanielC Earlier Evee and I were talking about why PHP is broken :-)
preg_* are supposed to emulate Perl. 00:18
pmichaud different languages just break in different ways.
DanielC "3079 core functions in PHP"
ascent_ so you can give some real example of module that can be other in two distributions? 00:19
00:19 xinming joined
DanielC 15x more than Perl 5 (and Perl 5 makes no particular effort to make the core small) 00:19
ascent_: Maybe a "web developer's" distribution will come with Mason and DBI. 00:20
pmichaud: I don't think PHP is all bad. There are things I like about it (it's a great templating language). 00:22
00:24 amoc left
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:32
So e.g. to load a module you have to find a file, so filesystem stuff should be fully included. 00:33
(Instead of just the minimum FS stuff module loading needs) 00:34
meppl good night 00:36
sjohnson see ya
meppl ;) 00:37
00:38 payload joined 00:40 meppl left 00:42 nihiliad joined 00:48 jferrero left 00:52 eternaleye joined
pugs_svn r26970 | lwall++ | [STD] allow bare v6 as version number 01:02
01:09 cognominal left 01:11 amoc joined 01:12 wayland76 left 01:13 wayland76 joined
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.
PerlJam gets an error that doesn't make much sense: Could not find non-existent sub die
01:18 patman000 left
PerlJam wayland76: except that PHP is ubiquitous because almost every instance of apache comes with mod_php 01:18
(which, in a way, makes it a better templating language than Mason :) 01:19
01:20 amoc left
wayland76 I'd argue that that doesn't make it a better /language/. 01:20
If you put the more general case that PHP is easier to set up than Mason, I'd agree, though 01:21
When I wanted a CMS, I used Drupal 01:22
PerlJam wayland76: you're in oz, right? 01:26
01:28 DanielC left
wayland76 That's right 01:28
sjohnson PHP is not a good scripting language either imo 01:29
if i had a nickel for everytime i had to use (preg_replace and preg_match)...
01:30 DanielC joined
PerlJam wayland76: what part? 01:30
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.
wayland76 Well, maybe a bit more
sjohnson since we're being honest here
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? :-)
lambdabot DanielC: You have 1 new message. '/msg lambdabot @messages' to read it.
wayland76 sjohnson: Two words; legacy code :)
DanielC wayland76: One of these days I'd like to learn Mason and autohandlers and stuff. 01:34
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
sjohnson: *and* they just don't know any better because the don't understand the difference between the coat hanger and the yagi
sjohnson coat hangers are readily available
PerlJam sjohnson: never mind the yagi gives them excellent signal quality and gain, their coat hanger had been working forever :) 01:36
01:39 Chillance left, araujo left
sjohnson PerlJam: you can ask your grandma what a coathanger is, and even she'll heard of it being used 01:40
01:40 DanielC_ joined
DanielC_ Sigh... I hate my wireless connection. 01:40
PerlJam sjohnson: DanielC must be using a coat hanger ;)
DanielC_ is back in the room with the good connection
DanielC_ tries to remember how to get his nick back.
Can anyone remind me how to kill DanielC so I can become DanielC again? 01:41
01:42 DanielC is now known as Guest74016 01:43 DanielC_ is now known as DanielC
DanielC Ok, I am me again. 01:43
I guess I missed the PHP bashing session :-) 01:44
PerlJam We can bash PHP all day long, but it doesn't get us anywhere. 01:46
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 Whiteknight left
skids DanielC: www.freeantennas.com/projects/template/ 01:47
DanielC *click*
JDlugosz_ Anyone want to be the first to read my latest ?
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.
I'll tell you the URL in a msg.
a minute before I tell everyone else.
sjohnson anyone here have any experience with Term::ReadKey?
skids haha.
sjohnson i'm trying to just parse a simple keystroke easily
JDlugosz_ <www.dlugosz.com/Perl6/web/lvalues.html> 01:49
skids sjohnson: keys are actually not simple.
sjohnson the cpan module might not be what i need, or is this simple request is buried deep within its man pages
JDlugosz_ Yea, my keys have springs and plastic domes and metal parts in them.
Hmm, I seem to have a _ suffix today.
skids Well, I was referring mainly to keycode mapping tables and modifiers. 01:50
01:50 JDlugosz_ is now known as JDlugosz
JDlugosz I've done key codes in the raw before, on PC hardware. 01:50
Like, 15 years ago.
skids JDlugosz: "$x.meth" doesn't interpolate (at least under rakudo) in first example. 01:53
PerlJam JDlugosz: IMHO, the first part up until the sentence
"That is what we mean by an lvalue" is confusing
JDlugosz Hmm, PerlJam, what is it about it? 01:54
skids: Is it supposed to? I think the rules have changed more than once, re needing parens or whatever.
PerlJam JDlugosz: just too many words to get to the point of lvalue-ness. The words don't seem to serve clarity 01:55
01:55 sri_kraih left
PerlJam $x.meth() should interpolate in double quoted strings. (But probably still doesn't in rakudo) 01:55
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.
DanielC Ok, I'm going to hit the sac.
night y'all
01:57 DanielC left
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:00 Guest74016 left 02:01 davidad left
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:01
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...
skids Have lvalue-returning subs been changed from "is rw" to "is lvalue"? When did that happen?
02:03 dukeleto joined
JDlugosz skids: let me check. 02:03
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)␤»
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?
Whatever. Thanks for catching that.
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)␤»
skids rakudo: my $a = 1; my $b = 1; for ($a, $b) -> $c is rw, $d { $c = 2; }; $a.say; $b.say;
p6eval rakudo 92c78f: OUTPUT«2␤1␤»
skids easier example than a predeclared sub. 02:08
JDlugosz skids: in your rakudo example, $c=2 should be an error, since it is read-only. 02:09
I guess it's output errors is not the point, though.
I see what you mean. 02:10
So is rakudo supposed to catch that at compile time? Maybe the error message was just the wrong one. 02:11
skids The error messages look right to me. 02:12
(?)
JDlugosz "statement not terminated properly" means "you can't assign to a read-only variable"?
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:13
JDlugosz Oh, you need a "do" in front to make it call it. But should just sit there as written. 02:16
Same as writing 2; on a statement by itself. Big deal. But it must parse.
pmichaud isn't following this very well. 02:18
So far rakudo seems to have responded "correctly" (or at least not wrongly) to each of the above.
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.
JDlugosz skids, would that be of some benifit? 02:19
Or should such a choice be invisible to the program? 02:20
skids Better ask an actual implementor on that one :-) 02:21
pmichaud my $b = 5; sub foo($a) { $b++; say $a; }; foo($b); 02:23
rakudo: my $b = 5; sub foo($a) { $b++; say $a; }; foo($b);
p6eval rakudo 92c78f: OUTPUT«6␤»
pmichaud (there's actually a pugs spectest that requires this behavior)
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:24
Yes, you can't change the object through $a but it must realize that it can be changed along a different access path. 02:25
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.
I've just been following the conversation here.
skids Good, then for once you are as confused as everyone else :-)
JDlugosz Thanks for pointing it out. I guess a container is needed.
Does that mean that you want any change in value, e.g. reference assignment, to be reflected in the function's view? 02:28
I guess that's why it's worded the way it is in the synopses.
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:30
JDlugosz skids -- thanks. 02:32
02:33 DemoFreak left
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:34
PerlJam pm: I just had the weirdest experience in the perl6 interactive mode 02:37
See gist.github.com/120337 02:38
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:39
skids Or some variation on that theme, yes. 02:40
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.
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?
pmichaud PerlJam: looking. 02:47
PerlJam: that's.... weird. 02:48
it might be because foo() keeps getting redefined. 02:49
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: gist.github.com/120338 02:50
JDlugosz I thought rackudo forgets between lines.
pmichaud JDlugosz: it forgets lexicals, yes.
but the subs aren't lexical.
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.
JDlugosz OK, then you get an error to redefine it if it wasn't {...}.
PerlJam JDlugosz: try "class A {}" on two separate lines in the iteractive mode :) 02:51
pmichaud correct, we should be getting an error.
JDlugosz re @a[1] you mean the read-only "copy" actually copies all the lvalues?
pmichaud Rakudo doesn't yet have a good way to detect sub redefinitions outside of the same eval string.
JDlugosz What's the point?
If you want to prevent shifiting or extending ONLY, why describe it as a copy?
pmichaud PerlJam: here's what I get: gist.github.com/120339 02:52
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.
JDlugosz I updated the page. Care to refresh your cache, skids?
PerlJam pm: I mean that "Could not find ..." part was accidental but that it is apparently integral to the error
skids JDlugisz: Synopes? :-) 02:54
PerlJam skids: it sounds like you just described "is ref" rather than "is copy"
pm: if I do it by itself as you did, it works as expected.
JDlugosz hmm, I wonder why the spell checker didn't catch that. Can't blame that one on the Brits. 02:55
PerlJam: why would ref prevent some kinds of modification to the container?
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.
JDlugosz I'm pretty sure, from discussion long long time ago, that the point of ref is an optional rw. 02:56
skids: better draw a picture.
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.
I used InkScape for portability.
And I hope browsers will handle SVG images properly some day. Maybe before Perl 6 is finished, at this rate.
skids First example, you migh want to put the expected output of the say in a comment there. 02:58
JDlugosz I think nobody fully understands it. At least nobody has publicly explained it all with no contradictions. 02:59
output: OK.
skids I'm sure there's a good explanation hidden back in the IRC log or p6l somewhere.
JDlugosz BTW, do you like my style sheets? Subtle style on comments, yellow marker, etc.
skids Looks fine. 03:00
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:01
03:02 pjcj left
JDlugosz Ah! 03:03
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
Why do you use VAR anyway, except to figure out what's going on here?
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.
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 :-)
Cat is a lazy string.
JDlugosz A lazy Str needs a different type, but a lazy Array doesn't?
dalek kudo: 7d75524 | pmichaud++ | build/PARROT_REVISION:
Bump PARROT_REVISION to get some more speed improvements.
JDlugosz Oh, the lazy Array is the Dog.
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)
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
Well, I've got to do something else for a while.
Thanks for the feedback and the discussion.
skids no problem.
Thanks for writing. 03:08
03:18 andreasg_ joined
wayland76 pmichaud: Did you get that Makefile stuff done that (IIRC) put pmc and ops stuff in dynext? 03:21
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
so that's one of my goals for the weekend now.
wayland76 ok, just checking 03:25
03:26 wayland76 left 03:33 wayland76 joined 03:35 jonh left 03:36 skids left 03:39 synth joined 03:44 kcwu joined
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?
(I haven't carefully checked, but I assumed he had)
Personally, if I'm contributing somewhere, it will be to Software::Packager 03:55
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
(sorry, per-format, not per-package)
I'm expecting that the Perl Metadata spec will be completely independant, and will have to be translated into Software::Packager metadata 03:57
03:57 justatheory joined
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
As far as dependencies go, exherbo.org/docs/exheres-for-smarti...pendencies is interesting
_Very_ flexible syntax
wayland76 Ok, well, dependencies are definitely something that Software::Packager has to worry about 03:58
I'll read it
eternaleye It even permits annotating dependencies with descriptions, etc
wayland76 S22 is a draft. If you want to go hacking on the Metadata in it, be my guest
eternaleye So an optional or select-one-provider dependency could have a description of the advantages
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
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?
eternaleye wayland76: Yep
wayland76: Although, some distros have _only_ a meta-manager
wayland76 Such as?
eternaleye Exherbo 04:01
wayland76 Ok
eternaleye Gentoo, to a degree
wayland76 But you saw how I wanted the thing more modular?
eternaleye Yeah
wayland76 And wanted the dependancy resolver to be swappable for something highly configurable? (Not sure if I wrote that in...) 04:02
dalek kudo: 764684b | pmichaud++ | src/builtins/op.pir:
Fix cross-meta for user-defined infix ops.
wayland76 That link you sent me doesn't make sense. Can I put a couple of questions to you? 04:03
eternaleye wayland76: Sure
wayland76 Looking at the first "code snippit"...
What is foo/bar?
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
wayland76: Gentoo and Exherbo name packages as category/package-version
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?
No, wait...
eternaleye wayland76: More like games-roguelike/nethack-4.42
wayland76 Ah, ok, I see
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:06
wayland76 RPM uses Group, but it wouldn't be part of a unique package spec that way 04:07
(back in 3 minutes)
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:08
04:09 Kisu left
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:10
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
wayland76 I'm sure of _ - and . but not of anything else
eternaleye: Well, change S22 then :). 04:12
Do you have access?
eternaleye ENOCOMMITBIT
wayland76 Ok, we need to fix that. I'm in favour of you having access
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: www.gentoo.org/proj/en/qa/pms.xml
wayland76 remember even
eternaleye (that's a boilerplate page for a PDF)
wayland76 I'm looking at the HTML version 04:14
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
eternaleye *auth
wayland76: It works because no existing packages (for any lang, AFAIK) have doubled dashes _in_ any field
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.
eternaleye wayland76: And we can forbid them going forward
wayland76 Although what c/c-- is going to do I don't know :)
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:18
wayland76: Also, phenny++ is more reliable than lambdabot these days, it seems 04:19
wayland76 Maybe we could use ¡ as a separator :) 04:20
phenny: tell moritz_ Can eternaleye have a commit bit for the Specs so he can work on S22 please?
phenny wayland76: I'll pass that on when moritz_ is around.
eternaleye wayland76: Wasn't there some haskell package with a complex version number?
wayland76 Maybe, but I don't know anything about it :) 04:21
eternaleye Oh wait, that's an inverse exclamation not an i
TimToady that wasn't an I
eternaleye EBADFONT
wayland76 Or something else... ¤€¼½¾¹¯£˛ 04:22
eternaleye Also, good evening TimToady
wayland76 Any of those would be a fine separator
TimToady: Who do we ask to get eternaleye a commit bit?
eternaleye wayland76: UTF-8 or UTF-16?
TimToady as soon as you move into Latin-1, POSIX is not your friend
eternaleye Commas!
wayland76 Yah, I'm being silly again :) Sorry
eternaleye Actually, commas might be really good 04:23
TimToady anything that is a shell meta tends to be a problem
wayland76 TimToady++ 04:24
That's why I'm thinking that eternaleye's original idea of double dashes is probably our best bet
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
TimToady well, just inside {} 04:25
eternaleye oof, forgot that
TimToady and I use , for a history char, but that's idiosyncratic
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
TimToady you have to shift !, but not ,
so it's easier :)
wayland76 I use Ctrl+R to deal with history, usually 04:27
eternaleye ditto
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
wayland76 Anyway, I'm going to be afk for a bit
eternaleye s1n: vi's my favorite editor, but I like my modifier keys sometimes 04:29
s1n eternaleye: see your PM 04:33
04:36 justatheory left, FurnaceBoy left 04:39 hercynium joined 04:44 araujo joined
s1n Tene: ping 04:48
05:07 hercynium left 05:18 azawawi joined
azawawi fabulous morning :) 05:19
05:21 bkeeler left, azawawi left 05:22 finanalyst joined
wayland76 I don't know any fables about this particular morning :) 05:22
PerlJam wayland76: that's your cue to invent one. 05:24
05:26 brunov left
wayland76 Well, the fable is that it's morning, because it's 3:32 in the afternoon :) 05:35
pugs_svn r26971 | azawawi++ | [S:H:P6] version 0.59 contains the latest STD 05:41
Tene s1n: pong 05:42
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:01
eternaleye JDlugosz: Yes, but will the shell a.) split on it (whitespace) b.) use it as a metacharacter (i.e. any of <, >, [, ], {, }, (, ), ;, ', ", |, \, etc) 06:07
(and the metacharacter list was nowhere near comprehensive) 06:08
JDlugosz So it's not being processed as data?
eternaleye JDlugosz: `cpan install <package>`
from the commandline
Making them escape the string is a usability nightmare
06:11 justatheory joined
JDlugosz install --name xxx --version yyy --platform zzz 06:11
No need to encode the internal encoding manually.
06:18 c9s left, c9s joined
eternaleye JDlugosz: But that's a good bit more typing than `cpan i p5--Lingua-Romana-Perligata--1.1--cpan:dconway` 06:19
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`
Very verbose, that
JDlugosz Yes, isn't that so much better?
eternaleye JDlugosz: I type.
wayland76 Can I make a suggestion?
I like JDlugosz's idea, but 06:21
eternaleye JDlugosz: Also, we were discussing filenames for the archives of source, rather than commandlines
JDlugosz Do you run everything together for _all_ commands?
wayland76 I think the "name" should be a positional, rather than a named parameter
Also, I think there should be defaults
JDlugosz Oh, eternaleye, I see. IN that case, a 40-character SHA1 hash of the contents is the only way to go.
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.
JDlugosz Seriously, if it is internal concern rather than command line, why not use URI encoding for non-alpha characters?
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:23
JDlugosz I would think the server stores it however it likes, and indexes them. That should be opaque. 06:24
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:25
So that (frequent!) use case /requires/ a shell-sensible naming convention 06:26
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:27
06:29 justatheory left
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:29
eternaleye JDlugosz: But the database is _required_ by the Perl 6 standard because of multi-version and multi-authority needs 06:32
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.
eternaleye I can clone the entire archive with one rsync command, and have a local mirror
JDlugosz Ah, so you are interested in all implementations using the same file-based storage system.
Therefore, it needs to be specified. 06:34
eternaleye JDlugosz: For distribution, yes. For already installed modules, that's out-of-scope
JDlugosz I still like using URI encoding to get rid of anything non-alphanumeric.
That way you don't have to worry about Unicode chars on whatever platform. 06:35
And stupid distrabutions (cough "Activestate") that decide that Unicode file names support is unnecessary in Perl.
eternaleye JDlugosz: And that's perfectly doable. However, the main concerns here are a.) unambiguity b.) usability c.) functionality (not necessarily in that order)
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
eternaleye Where functionality means enabling automatic distro-specific packaging etc 06:36
JDlugosz usability: it rsyncs, across platforms, without encoding issues. 06:37
You don't type those names when using the front end to submit or install.
eternaleye JDlugosz: But % is a shell metacharacter, which needs escaped
JDlugosz You don't type those into the commands. So why is the shell bothered?
eternaleye JDlugosz: Then how do you unambiguously identify a unicode name on the commandline? 06:38
If we allow unicode names, the need to be specifiable everywhere
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
eternaleye ...and _that_ is very, very user-hostile (especially since \ is a shell metacharacter too!) 06:39
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.
Is there anything that's not an escape on somebody's shell?
eternaleye But the shell gets first whack at it - before the perl executable is even run!
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.
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
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.
TimToady screw the shell :)
eternaleye o.0
eternaleye meeps
JDlugosz I have no trouble with backslashes in my shell. After all, they are in every file name.
eternaleye JDlugosz: On windows only. 06:43
In _every_ unix/posix/etc system, backslashes are the symbol used to escape everything else.
JDlugosz What about VMS?
eternaleye JDlugosz: Never used it, coulnd't say
JDlugosz Or pre-unix Macs. 06:44
eternaleye They used colons.
AS path identifiers.
same as Unix uses / and windows uses \
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:45
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.
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
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.
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.
eternaleye TimToady: Agreed. I want at least one module with a heart in the name.
TimToady at least from the viewpoint within P6
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
eternaleye ACME::<heart>, the only one that doesn't blow up in the Coyote's face
JDlugosz So you would use quotes in the "use" statement, and any package variables, etc. 06:50
That would make it difficult to use it as a type.
TimToady and there's always "use ::('♥')"
06:51 beggars joined
JDlugosz ACME::Bleach could be renamed to something that only has invisible characters in it, like the different typographic space chars. 06:51
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 :)
eternaleye wayland76: You evil person you
JDlugosz Hmm, you can stack the combining marks as high as you want. Make a veritcal name. 06:53
and put the whole thing in a surrounding circle.
wayland76 Well, I seem to have picked up bits of Unicode somewhere; not sure how
06:53 LadyLuna1y joined
JDlugosz I was born with it. My name is not ASCII. 06:53
So, nobody knows how to pronouce it unless I'm in a Polish community. 06:54
wayland76 Οη ωελλ
(apologies for Greeklish :) )
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
wayland76 That would be aμsing 06:56
JDlugosz But my "extreme" is my wife's newspaper.
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 日本語
Tene use Ferma͒ta; 06:58
JDlugosz "Japanese", written in simplified Chinese.
06:58 Muixirt joined
eternaleye JDlugosz: Also as written in Japanese, funny enough 06:58
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
JDlugosz It must natively look more like Simplified than Traditional? 07:00
TimToady much though it gives them heartburn
simplified would be 日本语 07:01
JDlugosz Ah, sorry. I'm out of practice.
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.
Strangely enough, most signs are bilingual. They have English everywhere in China.
TimToady same in Japan
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.
TimToady troo
JDlugosz But China is supposed to be hostile now, right?
TimToady some of that was the olympics
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.
eternaleye sleep?
ENOPURL
<purl> sleep is for the weak
JDlugosz I don't just mean in 北京. Every city, even off the beaten path. 07:05
Patterner DESTROY::كافر
eternaleye Patterner: Arabic? 07:06
Patterner kinda
wayland76 Is that destroy the infidel>
?
eternaleye Farsi? Urdu?
wayland76 םוךג נק שמטאיןמע ֲ֝
Patterner wayland76: kinda :)
eternaleye wayland76: Hm, the diacritics aren't composing properly here 07:07
wayland76 eternaleye: I've had IRC clients like that
TimToady yeah, well, gnome-term isn't exactly using pango...
JDlugosz "complex layout" languages need special support. The app must use the right API, not just TextOut.
wayland76 The one I'm using now for example, won't let the keyboard do it
eternaleye Quassel _should_ do it right, but I guess not :( 07:08
JDlugosz ChatZilla.
Does as well as web pages.
wayland76 May have to look into it
TimToady but does ChatZilla run under screen? :) 07:09
eternaleye TimToady: X11 over SSH!
07:09 LadyLunacy left
TimToady yeah, right 07:09
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
QT4, works on everything, etc
07:10 wayland76_ joined
wayland76_ Well, this thing doesn't like Unicode, anyway 07:11
TimToady ah well, google will just turn it all into a wave
wayland76_ Even the topic has it confused
07:11 wayland76_ left 07:14 chromis joined 07:16 cognominal left 07:17 chromis left 07:19 iblechbot joined
TimToady another camelia: >ᵖö⁶< 07:20
wayland76 I'm getting a box with an X in it 07:24
Maybe I should try different fonts again 07:25
Tene it's >, superscript P, o with .. over it, superscript 6, <
wayland76 Ok, I'm missing the superscript P 07:26
(The rest came through)
07:28 frew|work left
TimToady 休む、よ! 07:32
ℤℤℤ & 07:33
wayland76 'night!
08:02 mberends left 08:15 DanielC joined
DanielC o/ 08:16
wayland76 time?
ENOPURL
DanielC: What time is it there?
DanielC 10:17 AM 08:17
wayland76 ok
You missed TimToady by about 45 minutes, that's all :) He was going to bed
So I was just checking :) 08:18
DanielC ah
TimToady is in California, isn't he?
wayland76 That's right
DanielC Btw, I commented on S22, which I believe you are in charge of (email to the list).
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
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
(it being S22) 08:21
DanielC nods
wayland76 Anyway, I'm being called for food, so I'll disappear for a bit
DanielC k
wayland76 Oh, nice. My Rakudo RPM build just finished; I should have libraries in it now :) 08:22
afk &
08:24 davidad1 joined 08:25 DemoFreak joined 08:27 iblechbot left 08:30 sjohnson left 08:35 sjohnson joined
eternaleye wayland76++ # RPM building (even though I don't use RPM) 08:37
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:43
wayland76: Oh, right, you are afk... :-) 08:44
08:49 alexn_org joined 09:06 beggars left
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
09:09 snarkyboojum joined
DanielC ok 09:09
finanalyst rakudo: rule x {'name =' $<capt> = .*? $ }; 'name = aperlhacker' ~~ /<x>/;say $/<capt>
p6eval rakudo 764684: OUTPUT«Use of uninitialized value␤␤»
DanielC figures out who eternaleye is
eternaleye Alex
DanielC yeah :) 09:10
eternaleye rakudo: rule x {'name =' $<capt> = (.*?) $ }; 'name = aperlhacker' ~~ /<x>/;say $/<capt>
p6eval rakudo 764684: OUTPUT«Use of uninitialized value␤␤»
DanielC What is your role in the Perl 6 world? I'm still learning who is who.
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
finanalyst is my syntax wrong?
eternaleye rakudo: rule x {'name =' $<capt> = (.*?) $ }; 'name = aperlhacker' ~~ /<x>/;say $/<x> 09:12
p6eval rakudo 764684: OUTPUT«Use of uninitialized value␤␤»
eternaleye rakudo: rule x {'name =' $<capt> = (.*?) $ }; 'name = aperlhacker' ~~ /<x>/;say $<x>
p6eval rakudo 764684: OUTPUT«Use of uninitialized value␤␤»
eternaleye I know why now!
DanielC eternaleye: Ok. I use Ubuntu, so I'm DEB-biased.
eternaleye rakudo: rule x {'name ='$<capt>=(.*)$}; 'name = aperlhacker' ~~ /<x>/;say $/<x> 09:13
p6eval rakudo 764684: OUTPUT«name = aperlhacker␤»
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?
eternaleye rakudo: rule x {'name ='$<capt>=(.*)$}; 'name = aperlhacker' ~~ /<x>/;say $/<x><capt>
p6eval rakudo 764684: OUTPUT« aperlhacker␤»
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.
eternaleye rakudo: rule x {'name = '$<capt>=(.*)$}; 'name = aperlhacker' ~~ /<x>/;say $/<x><capt>
p6eval rakudo 764684: OUTPUT«aperlhacker␤»
finanalyst also i used .*?
09:15 blas joined
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
rakudo: rule x {'name = '$<capt>=(.*?)$}; 'name = aperlhacker' ~~ /<x>/;say $/<x><capt>
p6eval rakudo 764684: OUTPUT«Method 'postcircumfix:{ }' not found for invocant of class 'Failure'␤»
eternaleye Eh?
rakudo: rule x {'name = '$<capt>=(.*?)$}; 'name = aperlhacker' ~~ /<x>/;say $/<x> 09:16
p6eval rakudo 764684: OUTPUT«Use of uninitialized value␤␤»
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:17
finanalyst rakudo: rule x {'name = '$<capt>= (.*) $}; 'name = aperlhacker' ~~ /<x>/;say $/<x><capt> 09:20
p6eval rakudo 764684: OUTPUT«Use of uninitialized value␤␤»
finanalyst rakudo: rule x {'name = '$<capt>=(.*)$}; 'name = aperlhacker' ~~ /<x>/;say $/<x><capt> 09:21
p6eval rakudo 764684: OUTPUT«aperlhacker␤»
09:21 ZuLuuuuuu joined
finanalyst i find the significance of white space in this context to be odd 09:21
09:29 pjcj joined 09:38 DanielC is now known as DanielC_away
finanalyst STD: rule x {'name = '$<capt>=(.*)$}; 'name = aperlhacker' ~~ /<x>/;say $/<x><capt> 09:40
09:47 hanekomu joined 09:50 davidad1 left
wayland76 Back for a while 09:55
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
For example, I'm interested in working on the generic package managing stuff
MarkOv seems to mostly be interested in the server software 09:57
I'm not quite sure where eternaleye and DanielC_away fit in yet :)
eternaleye wayland76: I'm interested in the actual metadata format and the automation machinery of conversion 09:59
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
wayland76 But I could be wrong
eternaleye where <.ws> is a non-capturing rule that matches any whitespace
wayland76 But <.ws>+ not <.ws>*
10:01 tulcod joined
wayland76 eternaleye: I'd started guessing that. 10:01
finanalyst rakudo: rule x { 'name = ' $<capt>=(.*)$ }; 'name = aperlhacker' ~~ /<x>/; say $/<x><capt>
p6eval rakudo 764684: OUTPUT«aperlhacker␤»
wayland76 And it seems DanielC_away is interested in the format that the files will be layed out in inside the package
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 perlcabal.org/syn/S05.html#Regexes_...ot_strings
finanalyst whitespace is not significant in rule (currently?) except where there is an assignment to a named variable
eternaleye Actually, it may well be the reverse 10:03
rakudo: rule x { 'name = ' $<capt> = (.*?)$}; 'name = aperlhacker' ~~ /<x>/;say $/<x>
p6eval rakudo 764684: OUTPUT«Use of uninitialized value␤␤»
eternaleye rakudo: rule x { 'name = '$<capt> = (.*?)$}; 'name = aperlhacker' ~~ /<x>/;say $/<x>
p6eval rakudo 764684: OUTPUT«Use of uninitialized value␤␤»
eternaleye rakudo: rule x {'name = '$<capt> = (.*?)$}; 'name = aperlhacker' ~~ /<x>/;say $/<x>
p6eval rakudo 764684: OUTPUT«Use of uninitialized value␤␤»
eternaleye rakudo: rule x {'name = '$<capt>=(.*?) $}; 'name = aperlhacker ' ~~ /<x>/;say $/<x>
p6eval rakudo 764684: OUTPUT«Use of uninitialized value␤␤»
eternaleye Weird
I guess I don't have my head wrapped around the new regexes yet 10:04
10:04 mberends joined
finanalyst eternaleye: you are using .*? which doesnt work well 10:04
eternaleye Ah
finanalyst or it might be working well, but i dont understand why. its the whitespace that seems inconsistent 10:05
rakudo: rule x { 'name = ' $<capt>=(.*)$ }; 'name = aperlhacker' ~~ /<x>/; say $/<x><capt>
p6eval rakudo 764684: OUTPUT«aperlhacker␤»
finanalyst rakudo: rule x { 'name = ' $<capt> = (.*)$ }; 'name = aperlhacker' ~~ /<x>/; say $/<x><capt>
p6eval rakudo 764684: OUTPUT«Use of uninitialized value␤␤»
10:06 M_o_C joined
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␤»
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␤»
eternaleye For me, I prefer subrules rather than assignments
Same result, cleaner syntax in my view 10:08
finanalyst wayland76: is the .parse method for a grammar defined somewhere in the setting specs? 10:10
eternaleye finanalyst: 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:11
finanalyst so what does .parse return? 10:12
eternaleye A Match object, IIRC. Same as m//
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'␤»
finanalyst what if there is not a match?
eternaleye rakudo: grammar Stuff { token var { \w+ }; token lval { \w+ }; rule TOP {^<var> '=' <lval>$}; }; my $foo = Stuff.parse('name = aperlhacker' ); say $foo
p6eval rakudo 764684: OUTPUT«name = aperlhacker␤»
eternaleye rakudo: grammar Stuff { token var { \w+ }; token lval { \w+ }; rule TOP {^<var> '=' <lval>$}; }; my $foo = Stuff.parse('name = aperlhacker' ); say $foo<lval>
p6eval rakudo 764684: OUTPUT«aperlhacker␤»
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()␤»
eternaleye rakudo: grammar Stuff { token var { \w+ }; token lval { \w+ }; rule TOP {^<var> '=' <lval>$}; }; my $foo = Stuff.parse('name = aperlhacker' ); say $foo.^WHAT
p6eval rakudo 764684: OUTPUT«too many arguments passed (4) - 1 params expected␤in Main (/tmp/mDrRzBdNzw:2)␤»
eternaleye rakudo: grammar Stuff { token var { \w+ }; token lval { \w+ }; rule TOP {^<var> '=' <lval>$}; }; my $foo = Stuff.parse('name = aperlhacker' ); say $foo.HOW.WHAT
p6eval rakudo 764684: OUTPUT«Stuff()␤»
eternaleye rakudo: grammar Stuff { token var { \w+ }; token lval { \w+ }; rule TOP {^<var> '=' <lval>$}; }; my $foo = Stuff.parse('name = aperlhacker' ); say $foo ~~ Match
p6eval rakudo 764684: OUTPUT«1␤» 10:15
eternaleye So the grammer is a subclass of Match, and returns an instance of itself IIUC
*grammar
Or at least 'does Match'
10:19 alexn_org left 10:25 pmurias joined
eternaleye Oh hai, pmurias 10:25
10:30 DanielC_away left
wayland76 pmichaud lu_zero, mugwump (?) and others: The Rakudo-on-installed-Parrot-as-RPM bug is now rt.perl.org/rt3/Ticket/Display.html?id=63360 10:31
10:34 hanekomu left
pmurias eternaleye: hi 10:39
10:41 payload left 10:50 sjohnson1 joined, sjohnson left, makkabutta left
eternaleye I wonder if Inverse Japhs will catch on 10:51
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('')
p6eval rakudo 764684: OUTPUT«HM Zlpb GKcdbdull0UigqX d ␤» 10:52
wayland76 eternaleye: No, they're too easy for people like Damian 10:54
If you don't believe me, see Selfgol 10:55
eternaleye wayland76: I have seen SelfGOL. What has been seen cannot be unseen!
Also, that argument is invalid - Japhs semm to be just as easy to Damian 10:56
10:58 eMaX joined
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:03
11:04 mikehh joined
wayland76 Does anyone have any tips on matching all works not surrounded by quotes? 11:04
With a regex in P5?
Ah, I think I know; don't worry 11:05
11:05 jferrero joined
wayland76 Wait, I'm not so sure. 11:06
pmurias std: map( sub ($failure) { },self.failures); 11:07
p6eval std 26971: OUTPUT«ok 00:02 38m␤»
eternaleye wayland76: if you could paste an example with comments on what should/shouldn't match, I can make one
wayland76 No, I've got it 11:08
eternaleye 'kay
wayland76 s/{(.*?)}/$t = $1; $t =~ s#([\w"]+)#$u = $1; $u =~ m!^"! ? $u : "<$u>"#eg; "{$t}"/e
Takes rule SimpleForClause { "for" "$" VarName .... 11:09
And transforms it to rule SimpleForClause { "for" "$" <VarName>
Note the angle brackets around VarName
eternaleye cool 11:10
wayland76 Anyway, I had 72 lines of the stuff to do, so I did that
I'm transforming the XPath BNF grammar into a Perl Grammar 11:11
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
wayland76 That was a one-liner. That's not my usual in-file programming style :) 11:15
lichtkind cheers
wayland76 hiphip HOORAY! :) 11:16
lichtkind :)
where there any changes in syntax on more basic level in last year beside Meta R, prefix<=> => .lines method and the : twigil ? 11:17
wayland76 Don't know -- try maybe moritz_ 11:19
11:20 sri_kraih joined
eternaleye lichtkind: XopX => Xop 11:21
lichtkind eternaleye: thanks that i know but forgot :)
any other? 11:22
11:26 iblechbot joined 11:28 skids joined 11:30 jlaire left
wayland76 Does anyone know what the business with the ( --> Chaining ) stuff in STD.pm is? 11:31
lichtkind nope never looked into working p6 code :) 11:35
pmurias jnthn: is the parrot metamodel described somewhere? 11:39
s/parrot/rakudo/
11:42 eMaX left
jnthn pmurias: No single place, but see in Parrot P6object.pir which is a lot of the core of it. 11:51
pmurias: A lot is in the process of getting refactored at the moment though.
Want to support writing custom meta-classes (knowhow) in the not too distant future. 11:53
11:55 fridim_ joined
skids wayland: Chaining: A > B >= C 11:56
wayland76 skids: Was that directed at lichtkind? 11:57
Oh, no I see
What I want to know is, the part that says "( --> Chaining )" -- is that valid syntax 11:58
(you'd have to see it -- search for eg. where the === operator is defined)
skids I don't know. But --> is usually return value.
11:59 fridim_ left
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.
wayland76 And I don't see it specced anywhere in S05
skids Well, regexe are subs
wayland76 And it could be useful
ah, ok
So does that mean that it returns one value of type "Chaining"?
jnthn wayland76: Aye, and I guess that is related to: 12:00
class Chaining does PrecOp { our %o = %chaining;
}
wayland76 Ah, yes, I just found that
Great. That's fairly cool :).
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
(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 :)
jnthn wayland76: Don't worry, nor do I. :-) 12:04
skids constant %chaining = (:dba('chaining') , :prec<m=>, :assoc<chain>, :diffy, :iffy); 12:06
That ought to clear things up >-)
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. :-)
skids Ah, but that clears up what happens to Chaining::o at least :-) 12:10
12:11 xinming left 12:13 beggars joined
jnthn slept all morning...and feels a lot better for having done so 12:15
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.
skids: However, I'd always seen --> as a type check rather than a coercion. 12:18
skids: It may be something in the operator precedence parser that calls coerce.
12:21 azawawi joined
azawawi hello 12:21
jnthn use.perl.org/~korpenkraxar/journal/ is rather distressing... 12:25
skids jnthn: S06 uses "coerce" . Though I seem to remember seeing a more verbose paragraph than what is in S06 somewhere. 12:28
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:29
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.
jnthn (OK, it is performance too. But I'd imagine fixing the leak might help with the performance issue too.)
skids Leaked memory really shouldn't result in the >1s runtimes, since leaked memory just sits there harmlessly. 12:31
(never pulled into cache) 12:32
12:32 xinming joined
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:33
Also, Rakudo has an epic fail when run under -G. 12:34
:-S
Oh, we already did ticket that issue. 12:35
*sigh*
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, sri_kraih left
azawawi jnthn: feather.perl6.nl/~azawawi/padre-perl6-exe.png 12:39
jnthn azawawi: a funguje teraz? 12:41
oh gah
azawawi: Does it work now?
Oh, I see the output pane.
The awesome!
azawawi jnthn: it generates but the executable is broken :) 12:42
jnthn azawawi: I think I might just know why.
skids anyone know if I can stop adding --gen-parrot-options=--optimize yet?
azawawi jnthn: see rt.perl.org/rt3/Public/Bug/Display.html?id=65994
jnthn azawawi: Once I get done with the dispatcher refactor, I'll have a crack at fixing it. 12:43
azawawi: Yeah. It appears the PIR we generate is actually missing .loadlib directives.
Or something. 12:44
Anyway, will try and hunt it down. Just wanna get the current big refactor done first.
12:45 kate21de joined, payload joined 12:46 Whiteknight joined
azawawi jnthn: a useful thing to have is to annotate generated pir with the perl6 code (as comments) 12:46
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:47
azawawi jnthn: yeah i know; i was thinking to do it on the padre perl6 plugin side. 12:51
jnthn: where can i find more information about parrot debugging (to build a simple perl6 debugger)?
jnthn azawawi: I'm really not so sure what the state of debugging stuff with HLLs is just yet. 12:52
azawawi: There is a program pdb.exe I think, which is the Parrot debugger.
Or maybe it's parrot_debug these days.
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:53
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;
p6eval rakudo 764684: OUTPUT«Syntax error at line 2, near "'class A {"␤in Main (src/gen_setting.pm:0)␤»
skids rakudo: class A { has $!v is rw; multi method infix:<=> (Int $a) { $!v = +$a; } }; my $f of A = A.new; $f = 4;
p6eval rakudo 764684: OUTPUT«Type mismatch in assignment; expected something matching type A but got something of type Int()␤in Main (/tmp/mriqMaHXGk:2)␤»
jnthn azawawi: Right. That's how behind I am on it. ;-) 12:55
13:08 meppl joined, snarkyboojum left
wayland76 o/ bye for a while 13:13
13:13 wayland76 left 13:14 kate21de left 13:15 Patterner left 13:16 Whiteknight left
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«␤»
skids hrm, evalbot doesn't show segv's?
13:21 pjcj left
pmichaud good morning, #perl6 13:22
skids hola.
jnthn ahoj
13:24 Psyche^ joined, Psyche^ is now known as Patterner 13:28 beggars left
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:31
13:32 jferrero left
pmichaud azawawi: the problem isn't that we're missing .loadlib directives, the problem is that Parrot isn't loading them. 13:33
(and jnthn)
jnthn pmichaud: Oh?
pmichaud we generate "load_bytecode 'perl6.pbc'" 13:34
jnthn pmichaud: That's too late.
pmichaud: Or at least, it's going to be if it isn't already.
pmichaud it's not too late at present
jnthn pmichaud: OK, it's about to become too late. :-)
pmichaud I'm a little concerned about that, then.
I don't want Parrot loading the libraries multiple times.
jnthn I'd rather hope Parrot is smart enough not to... 13:35
pmichaud I wouldn't assume that is the case.
jnthn Then some sense must be beaten into the bird's thick skull.
pmichaud why will that be too late, ooc ?
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:36
Soon we'll have one that is emitted. 13:37
pmichaud Hmm.
is that the only reason, or are there others?
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)␤»
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.
(those = dynpmcs)
pmichaud but every generated PIR would need that :immediate block
yes?
jnthn Yeah, I'd figured as much. 13:39
Well
The other option is that the immediate block is what load_btyecode's perl6.pbc
And then we don't have to worry aobut the multiple loading problem, perhaps.
pmichaud yes, I was just thinking of that. I think I like that much better.
jnthn Yeah, there's more than one way to do it. :-)
skids rakudo: class A { our $cvar = "foo"; has $!v; method infix:<+> ($d) { $!v }; };
.oO(that last one doesn't hose rakudo back here...)
pmichaud wait, I don't think that helps.
p6eval rakudo 764684: ( no output )
pmichaud iirc, :immediate blocks don't get stored in the bytecode. 13:40
skids rakudo: class A { has $!v; method infix:<=> ($d) { $!v }; };
p6eval rakudo 764684: ( no output )
13:40 rindolf joined
jnthn pmichaud: Oh, no, they don't. 13:40
rindolf Hi all.
jnthn pmichaud: So it only solves half of the problem. :-|
pmichaud oh, hey! 13:41
azawawi im back from lunch :)
pmichaud mapping Perl6MultiSub is already built-in.
as part of the pmclass definition
pmclass Perl6MultiSub extends MultiSub maps MultiSub hll perl6 ... { 13:42
jnthn pmichaud: If that stkill works yes.
pmichaud I'm pretty sure it must work, as partcl uses it.
jnthn pmichaud: Still leaves us the dynops.
rindolf What's up, everybody? 13:45
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:46
pmichaud works on speeding up assign.t 13:47
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.
I released a new version of Games-Solitaire-Verify, with support to Simple Simon. 13:50
s/support to/support for/
13:50 abra joined 13:52 iblechbot left
jnthn pmichaud: Have you got a good idea of why assign.t is so slow? 13:54
14:01 om454545445 joined
om454545445 hi 14:02
guys i need help with a script
can anyone help me understand this because it never works when i configure it. 14:03
skids perl5 or perl6?
14:03 alester joined
pmichaud jnthn: unicode 14:03
rindolf om454545445: is this script written in Perl 6? 14:04
om454545445 #!/usr/bin/perl
use vars qw(%config %category %form);
use strict;
#-###########################################################################
#
# In accordance with the GPL, this copyright notice MUST remain intact:
#
# EveryAuction Release Version 1.53 (2/17/02)
rindolf om454545445: don't flood.
om454545445 # Copyright (C) 2000-2002 EverySoft
# Registered with the United States Copyright Office, TX5-186-526
# www.everysoft.com/
#
#-###########################################################################
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
14:04 om454545445 was kicked by pmichaud (flooding, use nopaste!)), omega was kicked by jnthn (please don't flood))
jnthn oh fuck 14:04
skids oopsie
jnthn @tell omega sorry, tab completion fail... 14:05
lambdabot Consider it noted.
pmichaud /kick jnthn please be careful about kicking! :-)
azawawi flood victims :)
pmichaud "collateral damage"
14:05 om454545445 joined
om454545445 sorry 14:05
pmichaud om454545445: try pasting to gist.github.com
then give us the url here
om454545445 try pasting at gist.github.com
skids also, it looks like perl5 so you might get better help on channel #perl
om454545445 what is this website 14:06
pmichaud yes, this channel is primarily for Perl 6 discussions
andreasg_ þw 8
om454545445 so where should i go
pmichaud try #perl
om454545445 ok
bye
skids It is a place to paste things, then just paste the URL back in IRC
14:06 alester left 14:08 pjcj joined 14:13 barney joined
pmichaud jnthn: (assign.t) check out line 7 of assign.t -- there's a non-breaking space in "Perl 5" (more) 14:19
Because of that non-breaking space, the string remains encoded as utf8 when parsed
14:20 abra left
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 !!!
pmichaud (that's the only non-ascii character in the file)
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.
jnthn oh, nice :-)
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 :-)
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.
jnthn Will there be a big performance difference between going to ucs-2 always and skipping trying ASCII? 14:24
That is, does ucs-2 carry sufficient overhead that it's worth trying ASCII first?
Or just the "ASCII is a common enough case" thing?
pmichaud it's not performance so much as that ucs-2 doesn't work without icu present
jnthn Oh.
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?
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. :-)
oh, wait, I think I can measure it now. 14:27
oops, no I can't.
(wrong option processing)
jnthn OK, was just curious. :-) 14:28
jnthn cranks up the Opeth and digs into fixing up delegation.t
14:37 azawawi left 14:53 om454545445 left, LadyLunacy joined
skids
.oO(we need a builtin sub OHAI { "OH HAI".say })
15:01
jnthn use LOL6; 15:03
skids
.oO(default in evalbot...)
15:04
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'␤»
jnthn rakudo: class A { multi method postfix:<++> is export () {"OHAI".say}}; A.new++;
p6eval rakudo 764684: OUTPUT«Method 'succ' not found for invocant of class 'A'␤»
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 LadyLuna1y left
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.
pmichaud wtf?
jnthn yarly 15:10
pmichaud I know that postcircumfix:<( )> is supported, but postfix:?
jnthn Been wanting to fix that for *ages*.
pmichaud: I think so.
pmichaud I can't find any information about it in the spec.
jnthn I'm sure I've see such things...
pmichaud beyond that, I have no clue how we're supposed to turn $a++ into both a method call and a sub call. 15:11
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.
pmichaud: I didn't expect it to work without that.
And yes, that would just add it to the multi-sub as a candidate. 15:13
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++
pmichaud okay, I can accept that.
jnthn skids: Yes, that one is because it's dispatched as a method call.
15:14 beggars joined
pmichaud fwiw, I think we have a problem in our import routine with respect to that 15:15
oh, perhaps not -- let me look
eval.pir:245 15:16
$S0 = shift it
$P0 = export_ns[$S0]
import_ns[$S0] = $P0
is the keyed access to import_ns smart enough to add a MultiSub instead of replacing ?
or is that just clobbering whatever MultiSub might have been there already?
jnthn pmichaud: I *think* the logic to be smart about that stuff is in NameSpace 15:18
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:19
pmichaud I thought we were doing 2 already. 15:20
as in, I thought I added it.
can't remember now.
15:22 barney left
jnthn I don't remember us ever having it. 15:23
pmichaud I think I did it shortly after NPW.
Looking.
jnthn rakudo: class Foo { multi method m() { } }; say &Foo::m.signature.perl 15:24
p6eval rakudo 764684: OUTPUT«undef␤»
jnthn rakudo: class Foo { multi method m() { } }; say &Foo::m.candidates>>.signature.perl
15:24 Chillance joined
p6eval rakudo 764684: OUTPUT«[:(Object self)]␤» 15:24
pmichaud okay, guess not. 15:25
is that something we can easily put into !add_implicit_self ? 15:26
jnthn Well, really we need a way to get at the proto-object for the class 15:27
e.g. $?CLASS
pmichaud maybe pass it to !add_implicit_self ?
jnthn Well, yes, that's easy enough apart from we aren't setting $?CLASS yet AFAIK.
pmichaud no, I mean from actions.pm 15:28
not as a lexical lookup
jnthn And I worry how it'll look lexically
Oh, you mean look it up at runtime?
by name?
pmichaud that, or pass the metaclass object
jnthn Remember it's in the loadinit for the signature that we have this.
pmichaud exactly
thus the metaclass object
jnthn ?
Isn't that just available in the :load :init that sets up the class? 15:29
pmichaud oh.
jnthn It's not a lexical, just a register, iirc.
pmichaud yes, perhaps.
I'm already thinking the loadinits are combined :-|
jnthn If you write the thingummy to smash 'em all into one then...yes. ;-)
pmichaud (which they aren't, and which I'd not like to rely upon)
oh, duh! 15:30
Just use the sub's namespace
(the one we're attaching the signature to)
jnthn Is the proto findable from that?
We can get the parrotclass...
pmichaud yes, the proto is always findable from the parrotclass 15:31
jnthn OK.
That'll work.
15:34 om454545445 joined
pmichaud time to process ascii version of assign.t: 30.287 sec 15:34
time to process utf8 version of assign.t: 2m28.611
time to process utf8 version of assign.t transcoded to ucs2: 30.667 sec 15:35
jnthn :-O
\o/
skids pmichaud++
pmichaud looks like a win if we pass the spectests :-)
15:36 om454545445 left
skids And it'll be the first application to ever run faster ith ICU support compiled in :-) 15:36
jnthn yeay, damm, now I want ICU 15:37
pmichaud: Is actions.pm something we did as ASCII? 15:38
pmichaud jnthn: I'm pretty sure it's ASCII, yes.
jnthn Or do we win on that too?
pmichaud just a sec
jnthn Ah, OK.
jnthn had been hoping for a win on that
pmichaud It's ASCII already.
jnthn aww. 15:39
pmichaud now to make spectest both with and without icu (sigh) 15:43
15:48 FurnaceBoy joined
pmichaud darn, epic fails. 15:52
jnthn :-(
pmichaud time to track those down.
jnthn My handles handling hasn't exactly worked it first time either.
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:53
but I'm guessing I'm likely to uncover a bunch of nasty Parrot string-handling bugs here, too :-| 15:54
jnthn :-( 15:56
Yes, worth pursuing.
pmichaud oh, "make realclean" seems to have cleared it up.
jnthn oh, nice
pmichaud oh, spoke too soon.
got a failure.
and another...
uh oh 15:57
I think string_equal is failing when comparing ucs2 versus ascii
jnthn oh hrovno. 15:58
pmichaud oh, that's not entirely it.
hrm.
TimToady \⚉ 16:00
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
16:03 DanielC_away joined 16:04 DanielC_away is now known as DanielC
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.
TimToady as long as they're not libelous
sbp 16:34 <pmichaud> time to process ascii version of assign.t: 30.287 sec
16:34 <pmichaud> time to process utf8 version of assign.t: 2m28.611
DanielC TimToady: Ok. 16:06
TimToady or violate community standards of decency...
sbp pmichaud: dunno if it'd help, but a friend of mine came up with a devastatingly fast utf-8 decoder
skids Or solicit donations :-)
sbp pmichaud: bjoern.hoehrmann.de/utf-8/decoder/dfa/
TimToady wait, I could use some donations...
sbp maybe that's something the parrot folk need though
DanielC i won't do any of the above :-) I just want to write about the CPAN package format.
skids TimToady: then take camelia over to cafe press.
TimToady tis an idea 16:07
pmichaud sbp: the cost isn't in decoding
skids You have to work on that trademark defense anyway, right>
TimToady do they do mugs too?
skids Yep
pmichaud sbp: the cost is in indexing to the middle of a utf8 string
16:07 Chillance left
sbp aha 16:07
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?
pmichaud I'd be happy to set up a few camelia mugs on CafePress and send TimToady the proceeds :-)
(I already have an account, although I've not used it)
TimToady yes, and corpulent Europe too 16:09
maybe even Antarctica, if you can find any corpuscular entities there
funny how the continental congress was not on the same continent as most continentals 16:12
skids
.oO(incontinental congress?)
16:14
jnthn
.oO( never mis-parse corpulent again )
16:15
pmichaud jnthn: in C, any ideas about the best way to get a ucs2 string into a cstring? 16:16
(assume the ucs2 string only has ASCII codepoints) 16:17
16:17 brunov joined
jnthn Did you try string_to_cstring? 16:18
sbp TimToady, or whoever: what's the license of camelia.pdf?
jnthn erm, string_to_cstring_nullable
but looking at it, hmm
sbp I've converted it to SVG; I was thinking about adorning wikipedia:Perl6 with it
jnthn pmichaud: Actually more likely Parrot_str_to_cstring 16:19
pmichaud jnthn: that's what I'm using now.
jnthn pmichaud: But it appears to just give you the buffer and do no transcoding.
pmichaud right.
and ICU wants an ASCII cstring.
(for looking up character names) 16:20
skids sbp: /pugs/misc/camelia.txt
jnthn pmichaud: Ah, I see. 16:21
skids Isn't that a bit hypocritical of ICU?
sbp skids: yeah, saw that. seems to say it's at least usable for the moment
but also neglects to mention a license
(need to be specific when uploading to Wikimedia Commons) 16:22
(can't just say "yeah, yeah, it's free, get off my case, [handwaving]")
skids "permission is 16:23
granted for non-exclusive use to label anything related to Perl 6,
provided the image is labeled as a trademark when used as a main logo
on a page." <-- license?
sbp oh, Artistic License 2.0. thanks 16:24
I must be looking at a mouldy old revision of camelia.txt
skids++
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:25
jnthn pmichaud: It's maybe not the intended purpose but 16:28
Parrot_str_escape_truncate looks like it might do what you want ;)
pmichaud will look at it
jnthn pmichaud: Maybe more sensible is Parrot_str_change_charset 16:29
or Parrot_str_change_encoding
lichtkind TimToady: do macros can change vars permanently, that are defined outside of their scope ? 16:32
pmichaud jnthn: probably has to be Parrot_str_change_charset 16:33
does it throw an exception?
TimToady they can change anything a BEGIN block can change, but they can't add variables to a completed lexical scope
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:34
sbp there, done 16:35
despite WC's fiery hoops
lichtkind TimToady: you say i cant define our variables inside a macro? 16:36
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?
pmurias even normal subs can define our variables
TimToady there's really no such thing as a public instance variable in p6 16:38
it's an illusion 16:39
ZuLuuuuuu all instance variables behave as private by default then?
and we write getters and setters to reach them?
TimToady the only real instance variable is $!name, and that is of course private
$.name is the name of a rw accessor
so you can use the accessor as if it were a variable 16:40
we don't separate getter from setter at that level
ZuLuuuuuu TimToady: then we can reach it both with $.name and $!name inside methods right?
TimToady and accessor establishes *identity*, not lvalue vs rvalue
reach "it" means two different things here 16:41
lichtkind no our in p6 ? strange
ZuLuuuuuu I mean to use it as lvalue for example
TimToady $!name reaches a concrete storage location
$.name reaches an abstract storage location that a derived class could override 16:42
lichtkind ah it was no answer fo me :)
TimToady my answer was to you
package variables aren't lexical, so what I said doesn't apply 16:43
rindolf Hi all.
TimToady: have you seen www.reddit.com/r/programming/commen...heosis_of/ ?
16:43 eMaX joined
ZuLuuuuuu I guess I understood, thanks 16:44
16:44 Psyche^ joined
TimToady rindolf: at least in Perl 6, we could name it G-d :) 16:44
sbp “The best way to get god is via rubygems” 16:45
rindolf TimToady: heh.
sbp not a sentence I expected to see today
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...
sbp heh
rindolf TimToady: no-one expects the Spanish inquisition!
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.
jnthn Gah.
TimToady rindolf: nope, I show my reverence in (hopefully) more productive ways, like being a creator created in God's image
jnthn The problem when you stop lying is that you've gotta start dealing with the truth...
class A { has $.x handles * }; A.new(x => -1).abs.say
rindolf TimToady: ah, that's good.
jnthn If it handles * does it also handle the new? I'm figuring not...
araujo wonders if Perl6 got God blessing
rindolf I hate the word "G-d" with a passion.
TimToady lichtkind: yes 16:48
sbp rindolf: some friends of mine were trying to get the tetragrammaton added to unicode
rindolf: see std.dkuug.dk/JTC1/sc2/WG2/docs/n1740/n1740.htm
pmichaud I thought that handles * handles those things that aren't already defined
rindolf "All truth is God's truth"
jnthn pmichaud: Yeahbut defined where?
sbp rindolf: didn't go through though
pmichaud jnthn: "anywhere"?
jnthn pmichaud: In the curernt class, or in teh current class or any parent class?
pmichaud jnthn: basically, if method dispatch would otherwise fail?
jnthn pmichaud: OK. So does that apply to all handles expressions then?
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?
DanielC Does anyone know how to highlight something in red in the Perl foundation wiki?
TimToady one whose block has finished parsing the closing }, or equiv
jnthn ah, from the spec 16:50
Wildcard matches are evaluated only after it has been determined that
there's no exact match to the method name anywhere.
TimToady this tends to be more of an issue for eval than for macros though
pmichaud ah, so my "anywhere" was directly from the spec then. :-P
jnthn pmichaud: :-P
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:51
16:52 jferrero joined
pmichaud These days I almost always re-read the spec, if only because the spec changes. :-) 16:55
and often the changes make the resulting code much easier to deal with :-)
TimToady \⚉/
16:56 Patterner left, Psyche^ is now known as Patterner 16:57 jferrero left
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.
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.
sbp DanielC: and it was completely rubbish and didn't tell me anything
DanielC: so I didn't pass on the bad news :-)
DanielC pmichaud: I certainly don't like it, but I figure that I wouldn't help by making a page on my own site...
sbp for what it's worth, it was here:
www.socialtext.net/help-en/index.cg...formatting
DanielC pmichau: Is the wiki the best option if I want to write a proposal for the new CPAN package format? 17:00
sbp: *click*
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)
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?
Is it better? Can I use that one directly?
pmichaud oh, I guess github wikis are per-repository.
But we could certainly set up a repository and use its wiki :-) 17:02
DanielC perl6-examples is already there, would that work?
sbp why isn't the perlfoundation wiki using November? :-)
pmichaud for example: wiki.github.com/perl6/perl6-examples
DanielC: sure, that could work.
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.
s/sue/use/
DanielC pmichaud: Ok, sounds good, if it's not a lot of trouble.
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
*another* possibility would be to put your proposal into the pugs repo 17:04
and link to it there.
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
DanielC Hmm... do you know where the documentation for the github wiki is? 17:06
pmichaud I don't know which of the available wikis has the best features. 17:07
I'd use the github wiki, though.
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
hobix.com/textile/quick.html
it does support red text :-)
and preformatted
DanielC Excellent. I'll take it.
jnthn delegation.t all passes again. \o/
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++
pmichaud because it's written in (egads!) PHP! Aiiiiigh! 17:10
DanielC :)
jnthn So, that means my re-written dispatcher is feature complete. 17:11
Which "just" leaves working out the various remaining bits of collateral damage.
ZuLuuuuuu does emacs have perl 6 syntax highlighting? 17:12
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.
I'll just call it "misc" for now. :-) 17:14
DanielC ok
17:16 ejs joined, jferrero joined
pmichaud wiki.github.com/perl6/misc 17:17
DanielC thanks
pmichaud time for lunch here 17:18
bbiaw
lichtkind TimToady: does that return 4? macro a4 {$a = 4}; my $a = 3; a4; say $a; 17:30
TimToady: excuse but no implementation touches that 17:31
17:32 eMaX left 17:34 sjohnson1 is now known as sjohnson 17:41 sjohnson1 joined 17:42 sjohnson left, sjohnson1 left, sjohnson joined
jnthn gist.github.com/120573 # current dispatcher progress 17:43
17:44 sjohnson left
jnthn -> dinner 17:46
17:50 beggars left 17:51 alanhaggai joined
pochi rakudo: say :2<1.1> 18:07
p6eval rakudo 764684: OUTPUT«1␤»
pochi rakudo: say +":2<1.1>"
p6eval rakudo 764684: OUTPUT«1.5␤»
18:13 Chillance joined 18:15 unitxt_ joined 18:26 unitxt left 18:28 iblechbot joined 18:29 beggars joined
TimToady lichtkind: no, that wouldn't work at all, a macro must either return a string or an AST 18:35
so you could say macro a4 { '$a = 4' } though that wouldn't be hygienic 18:36
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?
TimToady yes
in either case
lichtkind thanks a lot i slowly get it
TimToady but setting outer vars like that is not good practice
lichtkind im currently reading into the slang stuff 18:38
TimToady: of cource not but i comprehend things by stressing edges
TimToady usually it's better to use state vars if you can
lichtkind i had no practical usage in mind 18:39
thanks
TimToady note that by default a4 would likely parse as a listop 18:40
you can force it differently with macro term:<a4> and such 18:41
or with "is parsed"
18:41 sjohnson joined
TimToady not that anyone really implements that yet 18:41
lichtkind why would it parse as listop? 18:42
i know 18:43
TimToady pochi: you should rakudobug that 18:47
18:49 Chillance left
TimToady pugs: say :2<1.1> 18:51
p6eval pugs: OUTPUT«1.5␤»
TimToady pugs: say +":2<1.1>"
p6eval pugs: OUTPUT«0␤»
TimToady pugs has the opposite problem :)
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
use MONKEY_TYPING 18:53
that's funnier than MONKEY_PATCHING, so we should change it 18:54
18:54 sjohnson left
jnthn ;-) 18:54
TimToady and it's supposed to be a joke on DUCK_TYPING anyway
18:55 sjohnson joined
sjohnson èè 18:55
jnthn Well, you has a commit bit. ;-)
(Plus we didn't implement MONKEY_PATCHING yet in Rakudo ;-))
pugs_svn r26972 | masak++ | [S05-regex.pod] moved ending paren for clarity 18:56
18:59 wknight8111 joined
pugs_svn r26973 | lwall++ | s/MONKEY_PATCHING/MONKEY_TYPING/ because it's funnier, and goes with duck typing 19:00
19:01 kate21de joined
pochi it seems the :N<...> has a long way to go before it complies to the spec 19:01
rakudo: say pi - e
p6eval rakudo 764684: OUTPUT«0.423310825130748␤»
TimToady but then how does + do it?
pochi rakudo say e - pi 19:02
rakudo: say e - pi
p6eval rakudo 764684: OUTPUT«2.71828182845905␤»
TimToady rakudo: say e() - pi 19:03
p6eval rakudo 764684: OUTPUT«-0.423310825130748␤»
TimToady there's your bug
e is a sub, not a value
not suposed to look for arguments
rakudo: say pi()
p6eval rakudo 764684: OUTPUT«3.14159265358979␤»
TimToady that should fail, really
say 3.14() 19:04
rakudo: say 3.14()
p6eval rakudo 764684: OUTPUT«invoke() not implemented in class 'Float'␤in Main (/tmp/FCUa04pOcY:2)␤»
TimToady rakudo: say e(pi) 19:05
p6eval rakudo 764684: OUTPUT«2.71828182845905␤»
TimToady rakudo: say e(-pi)
p6eval rakudo 764684: OUTPUT«2.71828182845905␤»
TimToady say e("what is the signature of e?")
pochi rakudo: say pi(1)
p6eval rakudo 764684: OUTPUT«too many arguments passed - 0 params expected␤in Main (/tmp/ud1JiCDIDV:2)␤»
TimToady rakudo: say e("what is the signature of e?")
p6eval rakudo 764684: OUTPUT«2.71828182845905␤»
TimToady still, pi should parse as a listop even if it's a sub () 19:06
perl 6 doesn't play parsing tricks on normal subs like perl 5 does 19:07
sub foo ($) isn't a unary prefix like it is in p5
anyway, pi and e should be parsing as terms, not function calls 19:08
pochi seems like it's known: ## XXX: cheat until we get term:pi, term:rand, term:undef, etc. 19:10
19:11 masak joined
masak does a somersault, and lands on his feet in #perl6 19:11
MONKEY_TYPING++ 19:12
jnthn: ping
19:12 renormalist joined
jnthn masak: ahoj! 19:13
masak: or, "hej hej" :-)
masak jnthn: whoz op? weather still rainy?
jnthn Well, not rainy as much as forecast today.
19:13 [particle]2 left
jnthn But still not invitingly sunny. 19:14
masak jnthn: the weather is forecast today? I should hope so! :P
19:14 renormalist left
masak jnthn: anyway, what I really wanted to bug you about was this new change to bless. 19:14
TimToady: and maybe you, depending on whether you're involved. :) 19:15
jnthn masak: OK. :-)
masak jnthn: the simplest question first: is the description on bless in S29 out-of-date? 19:16
(S29:236)
er, S29:263...
jnthn masak: I only updated S12 and didn't know S29 has a reference so most probably
let me confirm 19:17
masak: yes
masak ok.
I can fix...
jnthn Actually very wrong
masak ...provided you explain to me what changed. :)
jnthn C<bless> is only available as a method which can be called on a prototype
object
Muixirt are multidimensional arrays on the horizon? 19:18
jnthn You can call bless on anything, so far as I'm aware.
our Object multi method bless( Object::RepCandidate $candidate )
That's...eww.
OK, bless is not multi
masak Muixirt: have you checked docs/ROADMAP? 19:19
jnthn method bless(Object::RepCandidate $candidate, *@protos, *%init_args)
Muixirt last time i looked there was nothing
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.
masak Muixirt: pmichaud updated the ROADMAP before the release last Thursday.
jnthn: that's nice.
jnthn masak: But the big thing is that you can't not pass a candidate now.
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.
masak I see.
probably for the best anyway.
jnthn: btw, do we have BUILD yet in any usable sense?
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.
masak ok.
jnthn BUILD is less broken but still wrong.
masak jnthn++
jnthn I did one refactor that was needed to be able to do BUILD right.
But BUILD itself now needs fixing.
masak aha. 19:23
jnthn The dispatcher refactor is going to land soonish, I hope.
I've done on features, just tracking down bugs.
masak ok, I'll go ahead and change S29 now as per your clarifications.
jnthn I've get deference working reasonably well now.
masak jnthn: I always have problems with deference. :P 19:24
jnthn nextsame/nextwith/callsame/callwith etc
:-P
masak ooh, nextsame! \o/
jnthn It defers up the hierarchy but also through the multi candidates. :-)
As in, both.
And lazily builds the deference list too.
So we only have to go produce it when someone does nextsame etc. 19:25
masak that's nice.
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.
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:29
er, thus far. 19:30
19:30 jan_ joined
jnthn tries not to spoil it 19:30
19:31 unitxt_ left
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:33
Tene masak: :) 19:34
jnthn Great. :-)
19:34 unitxt joined
masak jnthn: the *@protos param in the new bless signature, wut's it do? 19:34
masak makes some rooibos 19:35
jnthn masak: Holds things like Animal{ :blood<warm> }
masak: Basically auto-vivifying protos used to initialize parent classes. 19:36
masak whoa, so that's not just syntactic sugar? :)
jnthn No. 19:37
masak jnthn: does that restrict the order of pairs given? must one pass the *@protos args first?
19:37 sjohnson left, sjohnson joined
jnthn masak: It's just a call, so whatever the normal answer is for arg passing. :-) 19:39
I think you would need them first but I can't remember exactly.
masak I think so too...
at least, you wouldn't be allowed to mix them, I'm pretty sure of that... 19:40
19:41 sjohnson left, sjohnson joined 19:42 synth left 19:43 synth joined
masak jnthn: so, an Object::RepCandidate is some sort of starting state of a not-yet-blessed object? 19:44
jnthn: I've written self.CREATE() there in all three calls in Druid. 19:45
is there a good example of when I would want to write something else?
jnthn masak: That's probably not really right either.
masak jnthn: well, it worked.
mberends teleports between computers
jnthn When you wanted a different underlying representation.
19:45 mberends left
jnthn Rather than P6opaque 19:45
masak jnthn: yes, but when would that be?
19:46 mberends joined
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
masak aha. that's very social of Perl 6.
jnthn Right.
TimToady or a PyDict, or whatever
jnthn It doesn't Just Happen right off of course, there's an (implementaiton specific) representation API. 19:47
TimToady or a Cstruct
Matt-W I hadn't thought of using a GObject as the underlying object type for bindings there
I kind of assumed you'd have a member which points to the GObject and proxy to it
TimToady we're trying to avoid the P5 difficulty of having to translate objects back and forth
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?
Matt-W Yes indeed, why not
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
TimToady me too, which is why p6 is different :)
Matt-W :)
masak :)
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:51
19:52 finanalyst left
pugs_svn r26974 | masak++ | [S29-functions] chasing spec changes to C<bless> 19:52
Matt-W mmm
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
and are also generated from gobject introspection data, of course :)
masak mberends: bless you, sir.
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
jnthn oops, I meant Matt-W :-) 19:55
mberends stops frowning ;)
jnthn At least I wasn't doing /kick this time when I got the wrong nick. :-/
Matt-W the curse of the m<tab> strikes again
yes I think kicking is a slightly severe penalty for mentioning javascript
jnthn Yeah, then I just tried ma<tab> and got masak :-P 19:56
Matt-W sorrrrry
masak it's too crowded here at M.
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.
Matt-W woops
19:56 Matt-W is now known as maw
TimToady masak: there are a couple of bugs noted about an hour ago, if you're in bug submission withdrawal 19:56
maw no that doesn't help 19:57
19:57 maw is now known as mw
masak TimToady: oi, denk je wel! 19:57
TimToady rakudo: say :2<1.1>
p6eval rakudo 764684: OUTPUT«1␤»
masak TimToady: that's the bug? 19:58
TimToady rakudo: say pi("wtf")
p6eval rakudo 764684: OUTPUT«too many arguments passed - 0 params expected␤in Main (/tmp/oECZKc8km6:2)␤»
TimToady rakudo: say e("twf")
p6eval rakudo 764684: OUTPUT«2.71828182845905␤»
TimToady that one
masak twf?
TimToady yes, vs
rakudo: say +":2<1.1>"
p6eval rakudo 764684: OUTPUT«1.5␤»
TimToady which is correct
masak oh.
masak submits that one
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
both, really
masak I see.
masak submits one more
TimToady but e seems to have a sig of ($) or some such
pochi I think that is RT#56366
TimToady rakudo: say e(1,2)
p6eval rakudo 764684: OUTPUT«2.71828182845905␤»
TimToady actually, probably no sig
so *@_, but that's wrong too 20:00
20:00 mw is now known as Matt-W
TimToady rakudo: say e - pi 20:00
p6eval rakudo 764684: OUTPUT«2.71828182845905␤»
masak pochi: aye, you're right. I'll put it under that #56366.
TimToady thanks
pochi masak: e can be "fixed" in the same way as pi has been fixed
mberends is that being evaluated as e( - pi ) ?
TimToady yes 20:01
mberends thx :)
pochi I tried playing with the grammar rules, but couldn't figure it out :)
20:01 sjohnson left
TimToady they need to parse as a simple term, like type names 20:01
20:01 sjohnson joined
TimToady only they happen to be defined 20:02
masak they remind me a lot about some kind of singletons. 20:04
pochi rakudo: say :2<3>
p6eval rakudo 764684: OUTPUT«3␤»
pmichaud in earlier versions of the spectests, both e() and pi() were treated as functions.
TimToady yes, brainrot carried over from p5 :)
pmichaud so rakudo implemented that way. 20:05
We haven't updated to avoid that yet.
TimToady rakudo: say True - True
p6eval rakudo 764684: OUTPUT«0␤»
TimToady they should work like enums too
rakudo: say True()
p6eval rakudo 764684: OUTPUT«invoke() not implemented in class 'Boolean'␤in Main (/tmp/FrHCVeoCrC:2)␤»
TimToady good
pmichaud rakudo: True = 4; say True; 20:06
p6eval rakudo 764684: OUTPUT«4␤»
pmichaud :-P
TimToady so basically pi is a singleton enum
Matt-W blinks
pmichaud Matt-W: they're just not constants yet :-)
TimToady rakudo: constant Foo = 3; Foo = 4; say Foo
p6eval rakudo 764684: OUTPUT«Cannot assign to readonly variable.␤in Main (/tmp/6esXlNKQMN:2)␤»
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.
pmichaud: I know there are already tickets about constants.
(and their current inconstancy.)
pmichaud I can fix True/e/pi to be readonly, no problem.
masak "constants aren't what they used to be..."
TimToady anyway, these are all implemented differently, and they should tend to converge
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
sbp rakudo: say 3.sign
p6eval rakudo 764684: OUTPUT«Method 'sign' not found for invocant of class 'Int'␤»
pmichaud I think it's Pisces :-)
20:08 sjohnson left
TimToady not since we got into Aquarius 20:08
sbp hehe
rakudo: say sign(3) 20:09
p6eval rakudo 764684: OUTPUT«1␤»
sbp ah, there we go
20:09 sjohnson joined, alanhaggai left
sbp oh, chuckle 20:09
sign(...) is implemented in src/builtins/math.pir
and apparently so is sin(...), which I've been tracking down 20:10
but it's commented in the code as being "conjectural"
pmichaud sbp: I'd be very happy to see those move into setting/
sbp I like that. conjectural-sin
pmichaud: what is setting/ for?
masak rakudo: say sign(1i)
p6eval rakudo 764684: OUTPUT«1␤»
pmichaud Perl 6 encoded representations of builtin functions.
masak we still haven't fixed that. :/
sbp pmichaud: oh, you want to migrate from .pir -> .p6? 20:11
rakudo: say roots(5)
p6eval rakudo 764684: OUTPUT«No applicable methods.␤in Main (/tmp/oYo7rZacuR:2)␤»
20:11 abra joined
sbp rakudo: say roots(25) 20:12
p6eval rakudo 764684: OUTPUT«No applicable methods.␤in Main (/tmp/olrvXwlQB7:2)␤»
sbp hmm
masak mberends: I look forward to not having to overload our .new methods at all in proto. (and in Druid)
sbp rakudo: use Math::Basic;
p6eval rakudo 764684: OUTPUT«Can't find ./Math/Basic in @*INC␤in Main (src/gen_setting.pm:438)␤»
pochi rakudo: say roots(25,2)
p6eval rakudo 764684: OUTPUT«5+0i-5+0i␤»
sbp ah
rakudo: say roots(i, 2)
p6eval rakudo 764684: OUTPUT«Could not find non-existent sub i␤»
sbp rakudo: say roots(1i, 2) 20:13
p6eval rakudo 764684: OUTPUT«0.707107+0.707107i-0.707107-0.707107i␤»
20:13 viklund joined
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)␤»
viklund masak: is proto supposed to work with release?
masak viklund: yes, especially the one it downloads... 20:14
viklund masak: well, it doesnt :/
masak rakudo: say 1i.sign()
p6eval rakudo 764684: OUTPUT«Statement not terminated properly at line 2, near ".sign()"␤in Main (src/gen_setting.pm:0)␤»
masak viklund: nopaste?
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.
viklund my guess is it's mberends latest commit...
sbp oh hey, pi is in here too:
.sub 'pi'
.param pmc x :slurpy
## 0-argument test, RT#56366
the bug's already noted inline
jnthn pmichaud: Well, Perl6MultiSub goes to some effort.
TimToady slurpy!?!
jnthn pmichaud: Only in the ambiguous case though.
masak viklund: oh, you're right, of course.
pmichaud Yes, slurpy :-)
mberends viklund, masak: yes, it's this bless change :/ 20:16
masak viklund: the jnthn++ changes were post-release.
pmichaud Parrot doesn't give us a way to detect when a 0-arg sub is called with arguments.
sbp for what it's worth, here's e:
.sub 'e'
$N0 = exp 1
.return ($N0)
.end
pmichaud So pi() was doing a slurpy, and throwing an exception if called with args
masak mberends: we need to, um, revert that improvement. :/
pmichaud that's why
rakudo: pi(3)
p6eval rakudo 764684: OUTPUT«too many arguments passed - 0 params expected␤in Main (/tmp/Hopgsh7MWn:2)␤»
pmichaud and
viklund oh well.
masak mberends: or we move it to a branch.
pmichaud rakudo: e(3)
p6eval rakudo 764684: ( no output )
jnthn PCC SUCKS!
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?
pmichaud Fortunately I can eliminate it all and just make them constants now.
jnthn :-)
masak jnthn: PCC? is that a political party?
viklund masak, you could have a bleeding branch that you merge over at every release
jnthn masak: Parrot Calling Conventions
TimToady so maybe you should just register pi the way you register True
masak viklund: yes, let's try that.
pmichaud TimToady: right. As I said, we just hadn't gotten around to that yet.
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
pmichaud Which I'm not sure they did yet :-|
masak jnthn: I hear those conventions can be quite lively. but it's nothing people want to be reminded of afterwards. :P
mberends: master is the release branch per default.
mberends nod
masak right now, November and proto target Rakudo releases. 20:19
(for somewhat different reasons)
viklund I'll fix that
masak viklund++
viklund with proto
masak nod.
suggested branch name: 'bleeding'
jnthn pmichaud: I'm getting weird exit-time segfaults in a few tests.
mberends whoz proto op rite nao ? 20:20
pmichaud jnthn: it's possible, yes.
masak mberends: I think the pumpkin sort of got lost, and re-materialized at your place when you made your last commit...
jnthn pmichaud: I'm not sure if it's my dispatcher work that's triggered them or if they indicate something wrong in it.
pmichaud jnthn: Lots of stuff happening in parrot-land that might be a cause
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
masak sbp: :)
sbp hmm. perhaps it should be 1i for imaginary values, and 1i+1 for complex values? 20:22
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
argand, even
aragand was a LotR character. or something
masak sbp: well, I'd argue that if one wants something like that, one shouldn't call the method 'sign'.
sbp okay; then why return anything for complex values at all? 20:24
masak sbp: my thought exactly.
sbp hmm
masak sbp: 'undef' would suit my expectations.
because the meaning of 'sign' for a complex value is kind of not very defined.
pmichaud probably should fail somehow. 20:25
(as in "return a failure condition")
masak good idea.
is that !FAIL in PIR?
pmichaud I suspect that Parrot's sign operation is returning a value
so I wonder if it should fail in Parrot :-)
masak pmichaud: it does a cmp_num.
rakudo: say 1i <=> 0 20:26
pmichaud so, it thinks that 1i > 0
p6eval rakudo 764684: OUTPUT«Multiple Dispatch: No suitable candidate found for 'cmp_num', with signature 'PP->I'␤in Main (/tmp/v090QWXFmg:2)␤»
mberends viklund, masak: proto patch pushed for Rakudo Stockholm release
masak interesting...
sbp hmm
masak viklund: seems mberends beat you to it.
mberends pumpkin++ 20:27
masak 哈哈
sbp masak: check this out:
en.wikipedia.org/wiki/Negative_and_...m_function
viklund ahh, well maybe he doesn't run tests.
TimToady rakudo: say +1i
p6eval rakudo 764684: OUTPUT«0+1i␤»
masak sbp: I've seen that.
sbp: note the wording "it's possible to..."
TimToady rakudo: say Num(1i)
p6eval rakudo 764684: OUTPUT«invoke() not implemented in class 'Float'␤in Main (/tmp/Dw0RMuchEN:2)␤»
pmichaud we don't do coercers like that yet
rakudo: say +1i > 0 20:28
p6eval rakudo 764684: OUTPUT«1␤»
TimToady well, but if + is coercing to Num, how does it make a complex?
masak sbp: I'd prefer to think about what people will use 'sign' for, rather than how it can be beautifully extended.
pmichaud TimToady: I don't know what Parrot is doing with Complex numbers at the moment.
masak sbp: myself, I'll probably use 'sign', expecting -1, 0, or 1. and nothing beyond that.
sbp masak: well the problem is that you can use csgn for sgn tasks too
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
masak sbp: :P
sbp: someone will write a module that re-allows sign to work on complex numbers, and everyone will be happy.
sbp :-)
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
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.
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
TimToady some people are never happy unless they have something to be unhappy about
jnthn lol
pmichaud jnthn: yes, exactly.
TimToady sbp: that's what 'use *' is for
masak o_O
sbp use *? is this like STAR? 20:31
pmichaud wants a "use happy;" directive. Oh wait, we already have that -- it's "use v6;"
masak :D
sbp [[[
Seriously, it's durn near impossible for one language to be better than
another language at absolutely everything. My favorite language is
call STAR. It's extremely concise. It has exactly one verb '*', which
does exactly what I want at the moment. You know, kinda like the
control box for Gigantor.
]]] - groups.google.com/group/comp.lang.p...4ae85fcbe4
mberends that's DWIM in Perl, not (fully) implemented yet, but P6 gets close :) 20:32
masak Perl 6's DWIM is more refined than Perl 5's. 20:33
pmichaud jnthn: okay, I'm totally and utterly confused.
masak it's a posh kind of DWIM.
pmichaud jnthn: when I switch Rakudo to use ucs2 for parsing instead of utf8
jnthn: then "use Test; plan 10;" outputs "1..1"
jnthn wtf 20:34
pmichaud yeah.
20:34 lichtkind_ joined
TimToady 1\00 20:34
something cheating on the bytes
pmichaud TimToady: sure, I get that part.
jnthn pmichaud: I can see what would cause some...failures... :-S
pmichaud But I'm totally lost as to what would be cheating on the bytes.
Because when we compile the code, the ucs2-ness "goes away"
jnthn pmichaud: The emitted PIR is incorrect, right? 20:35
pmichaud jnthn: I can't see where.
ohhhhh wait, yes I can.
jnthn Oh.
pmichaud I know what it is.
jnthn So this happens when we run it?
Ah, OK.
pmichaud TimToady++ FTW
Rakudo doesn't know how to numify ucs2 strings.
jnthn Oh.
Oops. 20:36
TimToady types, who needs 'em...
jnthn And doesn't check the encoding of the thing it's numifying?
pmichaud jnthn: right.
jnthn Encodings. Who needs 'em.
masak apparently not Rakudo. 20:37
masak ducks
TimToady monkeys
pmichaud I wonder if I can get Latin-1 to work.
sbp ugh, heathen encoding 20:38
pochi concurs
TimToady no, not heathen, just infidel
masak likes heaths
pochi aims and shoots
sbp .ety infidel
phenny "1460 (adj., n.), from M.Fr. infidèle, from L. infidelis 'unfaithful,' later 'unbelieving,' from in- 'not' + fidelis 'faithful' (see fidelity)." - etymonline.com/?term=infidel 20:39
masak .ety heathen
phenny "O.E. hæðen 'not Christian or Jewish,' merged with O.N. heiðinn." - etymonline.com/?term=heathen
pmichaud In my weak defense, I don't think Parrot can numify ucs2 strings either, and I cargo-culted my code from Parrot. 20:40
confirmed. 20:41
TimToady you shouldn't parrot Parrot
pmichaud I think I'm going to put that on my wall.
from one Wall to another.
masak pmichaud: you have a Wall wall?
pmichaud masak: I will soon.
20:42 lichtkind__ joined, rindolf left
pmichaud gist.github.com/120630 # ucs2 encoding FAIL 20:42
jnthn FAIL 20:43
pmichaud files parrotbug 20:44
jnthn pmichaud: maybe it'd be good to quickly commet on 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.
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. :-)
pmichaud Agreed totally.
thanks for the excellent suggestion.
jnthn OK, I'm down - other than the exit crash bug - to two test files with failures. 20:47
One fails in a minor way (2 tests fail and I think it shouldn't be so hard to debug why). 20:48
The other gets two tests in to its plan of 70 and segfaults.
So that could be rather harder to debug.
mberends re parrot optimization - does anyone ever test Rakudo on faster parrots? should it work? 20:49
pmichaud if Parrot works then Rakudo should.
I've often found Parrot's optimized form to be not entirely stable on anything but x86 (32-bit) 20:50
FurnaceBoy :|
mberends ok, I'll give some of those parrot flags a try.
pmichaud much appreciated.
FurnaceBoy pmichaud, that's borne out by test suite,right?
jnthn I don't build optimized because AFAIK I can choose between faster or having debug symbols 20:51
And I kinda like to have the latter handy. :-)
pmichaud FurnaceBoy: how do you mean?
FurnaceBoy pmichaud, that should be observable in test results? 20:52
pmichaud, or is it anecdotal? just curious
pmichaud FurnaceBoy: that's my (anecdotal) experience when trying to use Parrot on 64-bit
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?
pmichaud FurnaceBoy: I suspect yes, but I don't know if that's the case.
FurnaceBoy ah
ok thx:)
pmichaud We just need people on 64-bit platforms to try Parrot with the --optimize flag and see what happens, I guess.
Last time I tried --optimize on a 64-bit platform, Parrot didn't even build. 20:54
YMMV
FurnaceBoy hell I could do that if I knew what to run to exercise it :)
FurnaceBoy has access to sparc64 and amd64
pmichaud in a parrot directory
make realclean; perl Configure.pl --optimize; make # I think
FurnaceBoy oh, and ppc64
pmichaud look at the options to Parrot's Configure.pl for more details
the parrot binary also has a -O flag, I think -- to use it: 20:55
"parrot/parrot -O perl6.pbc hello.p6"
jnthn afk for a bit 20:57
mberends that may be --output-pbc. -O is Optimize according to parrot/docs/running.pod 20:59
oh, -O means same as -O1 (optimizations without life info (e.g. branches)) 21:01
21:03 ZuLuuuuuu left, lichtkind left 21:05 fridim_ joined 21:10 cognominal joined
pmichaud jnthn: use.perl.org/comments.pl?sid=43083&cid=68873 21:10
21:11 lichtkind_ left
mberends pmichaud: more on features than speed, surely 21:12
pmichaud mberends: see my reply to my own comment at the bottom :-)
(I already caught that, but too late to edit it ) 21:13
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, amoc left
DanielC mberends: Which typo? 21:15
mberends features <-> speed
DanielC ah
masak mberends: I assume that you've also been following the recent installer/packager CPAN-replacement discussiong with some interest.
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.
masak mberends: indeed. :) 21:17
pmichaud that's what I get for writing a post while I had three other things going on :-|
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
mberends: it would be another thing entirely if proto did the version/author tricks that S11 promises.
but it doesn't. and I doubt it ever will.
DanielC pmichaud: Is the postfix thing fixed? Or is it something the devs still need to look at? 21:20
s/postfix/postfix:<++>/
masak -> sleep 21:22
21:22 masak left
pmichaud DanielC: not fixed yet -- I'll look at it later tonight or early tomorrow. 21:25
21:25 abra left
DanielC ok 21:25
pmichaud: It's amazing that ++ would have such a drastic effect in performance.
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
DanielC: well, it only slows down Rakudo in those places where Rakudo heavily depends on ++
that's not as much as you might think :-)
DanielC Does that include substr() and regexes by any chance? Those are dog slow on Rakudo. 21:27
21:27 dfort joined
pmichaud in this case postfix:<++> dominated the time simply because there aren't that many operations in the program 21:27
a much larger program that doesn't use postfix:<++> wouldn't see as significant a slowdown
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 payload left
DanielC I noticed the problem when I wrote k-nucleotide benchmark (which is all about substr). 21:29
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.
DanielC perl6-examples/shootout/k-nucleotide.* 21:31
21:31 wknight8111 left
DanielC perl6 k-nucleotide.p6.pl < k-nucleotide.input 21:31
The benchmarks all include the Perl 5 version so you can compare. 21:33
pmichaud why the .subst?
$sequence = $sequence ~ lc $line.subst(/\n/,''); 21:34
DanielC To get rid of \n characters.
pmichaud lines from input are autochomped
DanielC No they are not.
pmichaud then that's a bug.
DanielC Remove the .subs and add a "say $sequence"
pmichaud well sure, say outputs a newline 21:35
DanielC no, no no
I mean it will output a newline for every line of input.
pmichaud okay, checking.
(I need to rebuild rakudo first)
DanielC k 21:36
21:36 explorer__ joined
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:36
pmichaud yes, .substr will be very slow in this case because we're dealing with large utf8 strings. 21:39
heh
*and* we're using ++ 21:40
DanielC :-)
indeed
Will += 1 run faster? 21:41
pmichaud it might, but let me fix ++ first
DanielC yeah
pmichaud the big speed improvement would come from switching to ascii instead of utf8
DanielC how do you do that?
pmichaud I'm not sure there's a way to do that yet.
DanielC ok 21:42
pmichaud But we can add one.
when I remove the .subst, it still comes out as all one line. 21:43
DanielC ???
DanielC tests
pmichaud gist.github.com/120644 21:44
DanielC I don't understand... 21:45
pmichaud are you on win, mac, or linux?
DanielC I swear that I had \n's before.
Linux, and the \n's are gone.
pmichaud okay then.
DanielC Wait, does $*IN.slurp retain the \n's?
pmichaud yes.
DanielC ah
pmichaud .slurp gives the entire file. 21:46
.get and .lines autochomp
DanielC I added that .subst earlier on, when I was using .slurp
pmichaud also, it might be quicker to do the lc at the end instead of on each input line
21:46 amoc joined
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.
pmichaud reading the file runs reasonably quickly on my system
DanielC Reading the file is not the slow part of the program. It's the rest. 21:47
I trimmed the input by 80%, don't forget that. 21:48
pmichaud right, I'm not forgetting it.
DanielC is waiting for the program to finish
Ok on my system it takes... 112.66s user 1.92s system 80% cpu 2:22.13 total 21:50
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
pmichaud (and this is my slow computer :-)
DanielC My machine is probably slower than yours.
pmichaud well, I'm sure perl will be a lot faster at the moment. :-)
okay, let's see if I can fake ascii encoding.
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
pmurias perl6: role Foo {has $!foo}
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'␤
..STD_red/prelude.rb:52:i…
..pugs, rakudo 764684: ( no output )
21:53 jferrero left
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␤»
pmurias rakudo: role Foo {has $!foo;method hi {say $!foo}};class Bar does Foo {has $.foo};Bar.new(foo=>"hi").hi;
p6eval rakudo 764684: OUTPUT«Conflict of attribute '$!foo' in composition of role ''␤in Main (/tmp/mnWzvOMvYg:2)␤»
pmichaud hmmm, switching the encoding didn't change things much.
DanielC pmichaud: My bad, Perl 5 is only 2,680 times faster. 21:55
pmichaud: re ascii: :-(
pmichaud I'm very surprised it didn't make a difference. 21:56
That means something else is slowing it down.
21:56 meppl left 21:57 jan_ left
pmichaud it wouldn't surprise me too much if it's the ranges that are slowing things down 21:57
checking.
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
pmichaud I guess I'll have to clean up postfix:++ when I return :-)
DanielC heh
pmichaud mberends++ # thanks, that's what I suspected
(we're about to leave for dinner in 10 min)
DanielC pmichaud++ for finding the problem.
enjoy your meal 21:59
21:59 ejs1 joined
DanielC It really annoys me when Mark O. implies that I'm being lazy by not reading his papers. 22:04
When I post a proposal, I try very hard to be succinct and clear, and not waste the reader's time. 22:05
He also gives me the impression that he has already decided everything and is just waiting for people to follow along. 22:06
22:08 explorer__ left
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
viklund ahh, finally, now there's a "bleeding" branch of proto 22:13
22:15 tulcod left
mberends viklund: had proto been broken for you on other occasions before today? 22:16
viklund mberends: might have happened, yes 22:18
no, it has definitely happened
can't say exactly when or how though, I've always fixed it by changing to bleeding... 22:19
22:19 ejs1 left
mberends guessed so. glad a branch will help :) 22:19
viklund I'm thinking of making the default config file for the bleeding branch set Rakudo revision to bleeding aswell 22:20
mberends that makes sense 22:21
viklund yes, I commited that too now... 22:22
viklund thinks that sweden is too hot right now... 22:24
DanielC viklung: What's the temperature? Where in Sweden are you?
viklund oh, today it was around 25 degrees Celsius here in Uppsala 22:25
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.
jnthn 25 dry and 25 humid can be quite different though. :-)
DanielC true
viklung: 25 dry or 25 humid? 22:27
viklund it's not particularly humid here
jnthn :-)
viklund I like it when I can clothe meself, ~17 is the sweetspot
colder is ok
warmer, not so much
DanielC I like ~17 a lot.
jnthn viklund: I kinda know how you feel. I'm starting to think I prefer cold weather to hot weather.
DanielC I definitely prefer cold weather to hot weather. 22:28
jnthn What I do _not_ like is wet weather.
Where snow only half counts as wet. ;-)
But rain...bleh.
DanielC My favourite is the 15-20 region.
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
20ish is fine for that.
viklund wet is ok as long as it's raining and the temperature is above 15
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.
jnthn I holidayed in Arizona in July once.
That was...hot. 22:30
viklund I've been thinking of moving to Bergen, they almost bet their rainrecord a couple of years ago
jnthn Bergen is very pretty.
But the rain would drive me nuts.
viklund over 100 consecutive days of raining 22:31
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.
mberends Edinburgh gets only about 5 totally dry days per year
viklund no I tell a lie, it was 85 days
jnthn Much more so than the temperatures.
DanielC jnthn: I lived in Britain for 2 years. It rains a lot more in Washington D.C.
hate it 22:33
22:33 xinming_ joined
DanielC It felt like it rained every other day 22:33
jnthn DanielC: I lived in Britain for 22 years, and can only imagine...
Actually closer to 23...
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
So the rain really affected me.
But I still think that D.C. is worse.
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.
DanielC May I ask why you can't have a car? 22:35
Technically I don't have a car either, but my fiancee has a car, so I get most of the benefit.
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
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.
ah
jnthn Mine is genetic, so I've always had it. Thankfully, so far, it's been stable.
DanielC my one is very different (my retina is getting very thin, so it could one day detach)
jnthn Yes, very different. 22:39
DanielC y
afk 22:40
viklund good night 22:47
22:47 viklund left 22:54 LadyLuna1y joined 23:01 LadyLunacy left 23:02 xinming left 23:07 fridim_ left 23:10 beggars left 23:14 mberends left 23:15 snarkyboojum joined, Muixirt left 23:26 [particle] left, FurnaceBoy_ joined, iblechbot left, [particle] joined 23:27 icwiener left, pmurias left
lichtkind__ when i see something like "...".perl , will be there a command like " ... ".ruby inside a rakudo program? 23:29
good night 23:30
23:30 lichtkind__ is now known as lichtkind
Khisanth seems like that would be something a separate module would provide ... 23:31
23:32 kate21de1 joined
jnthn Aye, it could easily monkey type and add a .ruby to everything... ;-) 23:32
23:35 meppl joined, kate21de left 23:39 sjohnson left, sjohnson joined 23:42 FurnaceBoy left 23:52 FurnaceBoy_ left
lichtkind jnthn: what means monkey type? 23:52
23:53 [particle]1 joined
jnthn lichtkind: Adding methods to an existing class. 23:55
lichtkind why sounds that term that bad :) ? 23:56
23:56 [particle] left
lichtkind isnt what roles are for? :) 23:56
23:56 M_o_C left